Fixed a bug, and updated some Checks

This commit is contained in:
Marc 2015-04-27 20:53:49 +02:00
parent 80b878f256
commit 0e131e8b00

View File

@ -69,29 +69,42 @@
self._processInput = function (list) { self._processInput = function (list) {
var inputs = []; var inputs = [];
for (var i = 0; i < list.length; i++) { correctlyDefined = function (e, key) {
return e.hasOwnProperty(key) && !isNaN(e[key]) && e[key] != undefined && e[key] != "";
};
_.each(list, function (element, index, l) {
var input = { var input = {
name: ko.observable(list[i].name), name: ko.observable(element.name),
parameter: ko.observable(list[i].parameter), parameter: ko.observable(element.parameter),
defaultValue: ko.observable(list[i].defaultValue != "" ? list[i].defaultValue : undefined), defaultValue: ko.observable(element.defaultValue != "" ? element.defaultValue : undefined),
}; };
if (list[i].hasOwnProperty("slider") && typeof list[i].slider == "object") { if (element.hasOwnProperty("slider") && typeof element.slider == "object") {
input.slider = { input.slider = {
min: ko.observable(list[i].slider.min), min: ko.observable(element.slider.min),
max: ko.observable(list[i].slider.max), max: ko.observable(element.slider.max),
step: ko.observable(list[i].slider.step), step: ko.observable(element.slider.step),
} }
var param = list[i].hasOwnProperty("defaultValue") && !isNaN(list[i].defaultValue) && list[i].defaultValue != undefined && list[i].defaultValue != "" ? list[i].defaultValue : (list[i].slider.hasOwnProperty("min") && !isNaN(list[i].slider.min) && list[i].slider.min != undefined && list[i].slider.min != "" ? list[i].slider.min : 0); 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") if (typeof param == "string")
param = parseInt(param); param = parseInt(param);
if (list[i].slider.hasOwnProperty("min") && param < list[i].slider.min) if (correctMin && param < element.slider.min)
param = list[i].slider.min; param = element.slider.min;
if (list[i].slider.hasOwnProperty("max") && param > list[i].slider.max) if (correctMax && param > element.slider.max)
param = list[i].slider.max; param = element.slider.max;
if (typeof param == "string") if (typeof param == "string")
param = parseInt(param); param = parseInt(param);
@ -100,11 +113,11 @@
} }
else { else {
input.slider = false; input.slider = false;
input.value = ko.observable(!isNaN(list[i].defaultValue) ? list[i].defaultValue : undefined); input.value = ko.observable(correctlyDefined(element, "defaultValue") ? element.defaultValue : undefined);
} }
inputs.push(input); inputs.push(input);
} });
return inputs; return inputs;
} }
@ -155,25 +168,11 @@
var js; var js;
if (control.hasOwnProperty("javascript")) { if (control.hasOwnProperty("javascript")) {
js = control.javascript; control.javascript = control.javascript;
// if js is a function everything's fine already, but if it's a string we need to eval that first
/*if (!_.isFunction(js)) {
control.javascript = function (data) {
eval(js);
};
}*/
} }
if (control.hasOwnProperty("enabled")) { if (control.hasOwnProperty("enabled")) {
js = control.enabled; control.enabled = control.enabled;
// if js is a function everything's fine already, but if it's a string we need to eval that first
/*if (!_.isFunction(js)) {
control.enabled = function (data) {
return eval(js);
}
}*/
} }
control.processed = true; control.processed = true;
@ -512,7 +511,7 @@
} }
self.onSettingsBeforeSave = function () { self.onSettingsBeforeSave = function () {
self.recursiveDeleteProperties(self.controlsFromServer); self.recursiveDeleteProperties(self.controlsFromServer);
self.settingsViewModel.settings.plugins.octoprint_customControl.controls = self.controlsFromServer; self.settingsViewModel.settings.plugins.customControl.controls = self.controlsFromServer;
} }
self.onEventSettingsUpdated = function (payload) { self.onEventSettingsUpdated = function (payload) {