"use strict";

module.exports = {
    template: "#axis-control-template",
    props: [ "axes", "colors", "enabled", "adjust", "step" ],

    methods: {
        jog: function(axis, ring, direction) {
            const value = direction * this.value(ring);
            this.$dispatch(this.step ? "step" : "jog", this.axes[axis], value);
        },

        back2zero: function(axis0,axis1) {
            this.$dispatch("back2zero",this.axes[axis0],this.axes[axis1]);
        },

        release: function(axis) {
            if (!this.step) {
                this.$dispatch("jog", this.axes[axis], 0);
            }
        },

        value: function(ring) {
            const adjust = [ 0.01, 0.1, 1 ][this.adjust];
            if (this.step) {
                return adjust * [ 0.1, 1, 10, 100 ][ring];
            }
            return adjust * [ 0.1, 0.25, 0.5, 1 ][ring];
        },

        text: function(ring) {
            let value = this.value(ring) * (this.step ? 1 : 100);
            value = parseFloat(value.toFixed(3));
            return value + (this.step ? "" : "%");
        }
    }
};
