in packages/maker.js/debug/viewer.js [143:222]
populateParams: function (filename) {
Viewer.Params = [];
var paramsHtml = '';
if (Viewer.Constructor.metaParameters) {
for (var i = 0; i < Viewer.Constructor.metaParameters.length; i++) {
var attrs = makerjs.cloneObject( Viewer.Constructor.metaParameters[i]);
var id = 'input_' + i;
var label = new makerjs.exporter.XmlTag('label', { "for": id, title: attrs.title });
label.innerText = attrs.title + ': ';
var input = null;
switch (attrs.type) {
case 'range':
attrs.title = attrs.value;
input = new makerjs.exporter.XmlTag('input', attrs);
input.attrs['onchange'] = 'this.title=this.value;Viewer.Refresh(' + i + ', makerjs.round(this.valueAsNumber, .001))';
input.attrs['id'] = id;
Viewer.Params.push(attrs.value);
break;
case 'bool':
var checkboxAttrs = {
id: id,
type: 'checkbox',
onchange: 'Viewer.Refresh(' + i + ', this.checked)'
};
if (attrs.value) {
checkboxAttrs['checked'] = true;
}
input = new makerjs.exporter.XmlTag('input', checkboxAttrs);
Viewer.Params.push(attrs.value);
break;
case 'select':
var selectAttrs = {
id: id,
onchange: 'Viewer.Refresh(' + i + ', JSON.parse(this.options[this.selectedIndex].innerText))'
};
input = new makerjs.exporter.XmlTag('select', selectAttrs);
var options = '';
for (var j = 0; j < attrs.value.length; j++) {
var option = new makerjs.exporter.XmlTag('option');
option.innerText = JSON.stringify(attrs.value[j]);
options += option.toString();
}
input.innerText = options;
input.innerTextEscaped = true;
Viewer.Params.push(attrs.value[0]);
break;
}
if (!input) continue;
var div = new makerjs.exporter.XmlTag('div');
div.innerText = label.toString() + input.toString();
div.innerTextEscaped = true;
paramsHtml += div.toString();
}
}
document.getElementById("params").innerHTML = paramsHtml;
},