linkpi_firmware_history/rootfs/link/web/js/zcfg.js

101 lines
2.4 KiB
JavaScript

// JavaScript Document
var templetMap = new Object();
function zctemplet(name, json) {
var cnt = json.length;
var templet;
if (templetMap[name])
templet = templetMap[name];
else {
templet = $(name).html();
templetMap[name] = templet;
}
$(name).html("");
var html = "";
for (var i = 0; i < cnt; i++) {
html += templet.replace(new RegExp("(\\[#\\])", 'g'), "[" + i + "]");
}
$(name).html(html);
if($(name+" .slider").length >0)
$(name+" .slider").slider()
zcfg(name, json);
}
function zcfg(name, json) {
function zcset(arg, val) {
var jstr = "json." + arg;
if (arg.indexOf("[") == 0)
jstr = "json" + arg;
if ((isNaN(parseInt(val)) || parseInt(val).toString() != val || (val.indexOf(".") != val.lastIndexOf(".")) || (val.lastIndexOf("+") == val.length - 1)) && typeof val != "boolean") {
val = '"' + val + '"';
}
if(typeof val != "boolean") {
val = val.replace(new RegExp("\"","g"),"");
val = val.trim();
val = "\""+val+"\"";
}
if(val == '"true"' || val == '"false"')
return eval(jstr + "=" + JSON.parse(val));
return eval(jstr + "=" + val);
}
function zcparse(arg) {
var jstr = "json." + arg;
if (arg.indexOf("[") == 0)
jstr = "json" + arg;
return eval(jstr);
}
$(name + " [zcfg]").each(function (index, element) {
var name = $(element).attr("zcfg");
var val = "";
if (name.indexOf("*") != name.lastIndexOf("*")) {
var ns = name.split("*");
for (var i = 0; i < ns.length; i += 2) {
val += zcparse(ns[i]);
if (i != ns.length - 1)
val += ns[i + 1];
}
} else {
val = zcparse(name);
}
if ($(element).hasClass("switch")) {
$(element).bootstrapSwitch('state', val, true);
} else if ($(element).hasClass("slider")) {
$(element).slider('setValue', val);
} else {
$(element).val(val);
}
});
$(document).off("change switchChange.bootstrapSwitch", name + " [zcfg]");
$(document).on("change switchChange.bootstrapSwitch", name + " [zcfg]", function (evt) {
var name = $(this).attr("zcfg");
var val = $(this).val();
if ($(this).hasClass("switch")) {
val = $(this).is(":checked");
}
if (name.indexOf("*") != name.lastIndexOf("*")) {
var ns = name.split("*");
var vs = val.split(ns[1]);
for (var i = 0; i < ns.length; i += 2) {
zcset(ns[i], vs[i / 2]);
}
} else {
zcset(name, val);
}
});
}