<template>
<div class="control-vector">
    <el-switch v-model="innerSeparate" :active-text="$t('example.vectorSetSeparate')"></el-switch>
    <div v-if="innerSeparate" class="control-vector-group">
        <div v-for="(dim, index) in dimsArr"
            :key="index">
            <label>{{dim}}</label>
            <el-input-number
                v-model="innerValueArr[index]"
                controls-position="right"
                :min="min == null ? -1e4 : +min"
                :max="max == null ? 1e4 : +max"
                :step="step == null ? 1 : +step"
                size="mini"
                @change="onValueChange"
            ></el-input-number>
        </div>
    </div>
    <el-input-number v-else
        v-model="innerValueArr[0]"
        controls-position="right"
        size="mini"
        :min="min == null ? -1e4 : +min"
        :max="max == null ? 1e4 : +max"
        :step="step == null ? 1 : +step"
        @change="onValueChange"
    ></el-input-number>
</div>
</template>

<script>
export default {

    props: ['value', 'separate', 'min', 'max', "step", 'dims'],

    data() {
        return {
            innerSeparate: this.separate === 'true',
            innerValueArr: this.value.split(',').map(val => +val.trim())
        };
    },

    computed: {
        dimsArr() {
            return this.dims
                ? this.dims.split(',').map(dim => dim.trim())
                : this.value.split(',').map(_ => '');
        }
    },

    watch: {
        value(newVal) {
            this.innerValueArr = this.value.split(',').map(val => +val.trim());
        }
    },

    methods: {
        onValueChange() {
            if (!this.innerSeparate) {
                for (let i = 1; i < this.innerValueArr.length; i++) {
                    this.innerValueArr[i] = this.innerValueArr[0];
                }
            }
            this.$emit('change', this.innerValueArr.slice());
        }
    }
}
</script>

<style lang="scss">
.control-vector {
    &>div {
        display: inline-block;
        margin-left: 8px;
        font-size: 12px;
        font-weight: bold;
    }

    .control-vector-group {
        &>div {
            display: inline-block;
            margin-left: 5px;
        }
    }
    .el-input-number {
        width: 90px;
    }

    label {
        text-transform: uppercase;
        margin-right: 5px;
    }
}
</style>