diff --git a/src/octoprint/static/js/app/viewmodels/control.js b/src/octoprint/static/js/app/viewmodels/control.js index 4dcd0e61..ec680aa7 100644 --- a/src/octoprint/static/js/app/viewmodels/control.js +++ b/src/octoprint/static/js/app/viewmodels/control.js @@ -155,30 +155,40 @@ $(function() { } if (control.hasOwnProperty("input")) { - for (var i = 0; i < control.input.length; i++) { - if (control.input[i].hasOwnProperty("slider") && typeof control.input[i].slider == "object") { - var param = control.input[i].hasOwnProperty("defaultValue") && !isNaN(control.input[i].defaultValue) && control.input[i].defaultValue != undefined && control.input[i].defaultValue != "" ? - control.input[i].defaultValue : (control.input[i].slider.hasOwnProperty("min") && !isNaN(control.input[i].slider.min) && control.input[i].slider.min != undefined && control.input[i].slider.min != "" ? - control.input[i].slider.min : 0); + correctlyDefined = function (e, key) { + return e.hasOwnProperty(key) && !isNaN(e[key]) && e[key] != undefined && e[key] != ""; + }; + + _.each(control.input, function (element, index, list) { + if (element.hasOwnProperty("slider") && typeof element.slider == "object") { + var correctMin = correctlyDefined(element.slider, "min"); + var correctMax = correctlyDefined(element.slider, "max"); + + var param = 0; + if (correctlyDefined(element, "defaultValue")) { + param = element.defaultValue; + } + else if (correctMin) + param = element.slider.min; if (typeof param == "string") param = parseInt(param); - if (control.input[i].slider.hasOwnProperty("min") && param < control.input[i].slider.min) - param = control.input[i].slider.min; + if (correctMin && param < element.slider.min) + param = element.slider.min; - if (control.input[i].slider.hasOwnProperty("max") && param > control.input[i].slider.max) - param = control.input[i].slider.max; + if (correctMax && param > element.slider.max) + param = element.slider.max; if (typeof param == "string") param = parseInt(param); - control.input[i].value = ko.observable(param); - } else { - control.input[i].slider = false; - control.input[i].value = ko.observable(control.input[i].hasOwnProperty("defaultValue") ? control.input[i].defaultValue : ""); - } - } + element.value = ko.observable(param); + } else { + element.slider = false; + element.value = ko.observable(correctlyDefined(element, "defaultValue") ? element.defaultValue : undefined); + } + }); } var js;