61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
define(function (require, exports, module) {
|
|
var sessMgr = require("../account/sessionMgr.js");
|
|
|
|
var resetInterfaceByUser = function () {
|
|
var user = sessMgr.current;
|
|
if (!user) {
|
|
return;
|
|
}
|
|
|
|
var p = user.options || {};
|
|
$("input[data-option-key],select[data-option-key]").each(function () {
|
|
var type = this.type;
|
|
var value = this.value;
|
|
var svalue = p[this.dataset.optionKey];
|
|
|
|
if (typeof (svalue) === "undefined") {
|
|
return;
|
|
}
|
|
|
|
if (type === "checkbox")
|
|
this.checked = svalue;
|
|
else if (type === "radio") {
|
|
this.checked = svalue == value;
|
|
} else {
|
|
$(this).val(svalue);
|
|
}
|
|
});
|
|
};
|
|
sessMgr.on("sessionChanged", resetInterfaceByUser);
|
|
//初始化状态
|
|
resetInterfaceByUser();
|
|
|
|
$(document).on("change", "input[data-option-key],select[data-option-key]", function () {
|
|
var u = sessMgr.current;
|
|
var p = u.options || (u.options = {});
|
|
var type = this.type;
|
|
var key = this.dataset.optionKey;
|
|
|
|
if (type === "radio") {
|
|
var checked = $("input:radio[name=" + this.getAttribute("name") + "]:checked").val();
|
|
switch (typeof (p[key])) {
|
|
case "number":
|
|
p[key] = parseInt(checked);
|
|
break;
|
|
case "boolean":
|
|
p[key] = checked == 1;
|
|
break;
|
|
default:
|
|
p[key] = checked;
|
|
}
|
|
} else if (type === "checkbox") {
|
|
p[key] = this.checked ^ this.value == "0";
|
|
} else if (type === "number") {
|
|
p[key] = this.valueAsNumber;
|
|
} else {
|
|
p[key] = $(this).val();
|
|
}
|
|
sessMgr.save();
|
|
});
|
|
});
|