Обновить переменную sliderStates после изменения min и max значений

после измении минимума и максимума слайдера мне нужно обновить переменную sliderStates c учетом новых значении, как обновить sliderState.

com_aleksei_jscomponent_web_toolkit_ui_slider_SliderServerComponent = function () {
    var connector = this;
    var element = connector.getElement();
    var state = connector.getState();


    $(element).html("<div class=\"main\">\n" +
        "  <input\n" +
        "      type=\"range\"\n" +
        "      class=\"slider\"\n" +
        "      name=\"participants\"\n" +
        "      id=\"rangeId\"\n" +
        "      min=\"1\"\n" +
        "      max=\"100\"\n" +
        "  >\n" +
        "  <span class=\"rangeslider__tooltip\" id =\"range-tooltip\"></span>\n" +
        "<div class=\"mydiv\"></div> \n" +
        "</div> \n"
    );

    setValues();

    const $element = $('input[type="range"]');
    const $tooltip = $('#range-tooltip')

    let sliderStates = [
        {
            name: "low",
            tooltip: "Great, we're confident we can complete your project within <strong>24 hours</strong> of launch.",
            range: _.range(state.minValue, state.maxValue / 3)
        },
        {
            name: "med",
            tooltip: "Looks good! We can complete a project of this size within <strong>48 hours</strong> of launch.",
            range: _.range(state.maxValue / 3, (state.maxValue / 3) * 2)
        },
        {
            name: "high",
            tooltip: "With a project of this size we'd like to talk with you before setting a completion timeline.",
            range: _.range((state.maxValue / 3) * 2, state.maxValue + 1)
        },
    ];

    var currentState;
    var $handle

    $element
        .rangeslider({
            polyfill: false,
            onInit: function () {
                $handle = $('.rangeslider__handle', this.$range);
                updateHandle($handle[0], this.value);
                updateState($handle[0], this.value);
            }
        })
        .on('input', function () {
            updateHandle($handle[0], this.value);
            checkState($handle[0], this.value);
        });

    //update value
    connector.updateValue = function (val) {
        $element.val(val).change();

        sliderStates.val()

    }
    //update min
    connector.updateMin = function (min) {
        let attributeMin = {
            min: min,
        };
        $element.attr(attributeMin).rangeslider('update', true);
    }
    //update max
    connector.updateMax = function (max) {
        let attributeMax = {
            max: max,
        };
        $element.attr(attributeMax).rangeslider('update', true);
    }

    //Set value to slider value
    function setValue(value) {
        $element.val(value).change();
    }

// Update the value inside the slider handle
    function updateHandle(el, val) {
        el.textContent = val;
    }

// Check if the slider state has changed
    function checkState(el, val) {
        // if the value does not fall in the range of the current state, update that shit.
        if (!_.contains(currentState.range, parseInt(val))) {
            updateState(el, val);
        }
    }

    //set values to slider
    function setValues() {
        document.getElementById("rangeId").min = state.minValue;
        document.getElementById("rangeId").max = state.maxValue;
        document.getElementById("rangeId").value = state.value;
    }

// Change the state of the slider
    function updateState(el, val) {
        for (var j = 0; j < sliderStates.length; j++) {
            if (_.contains(sliderStates[j].range, parseInt(val))) {
                currentState = sliderStates[j];
                // updateSlider();
            }
        }

        // Update handle color
        $handle
            .removeClass(function (index, css) {
                return (css.match(/(^|\s)js-\S+/g) || []).join(' ');
            })
            .addClass("js-" + currentState.name);
        // Update tooltip
        $tooltip.html(currentState.tooltip);
    }
}


Ответы (0 шт):