62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
define(function(require, exports, module) {
|
|
var sessMgr = require("../account/sessionMgr.js");
|
|
|
|
var resetInterfaceByProfile = function () {
|
|
var user = sessMgr.current;
|
|
if (!user) {
|
|
return;
|
|
}
|
|
|
|
var p = user.currentProfile;
|
|
$("input[data-profile-key],select[data-profile-key]").each(function () {
|
|
var type = this.type;
|
|
var value = this.value;
|
|
var svalue = p[this.dataset.profileKey];
|
|
|
|
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", resetInterfaceByProfile);
|
|
sessMgr.on("currentProfileChanged", resetInterfaceByProfile);
|
|
//初始化状态
|
|
resetInterfaceByProfile();
|
|
|
|
$(document).on("change", "input[data-profile-key],select[data-profile-key]", function () {
|
|
var u = sessMgr.current;
|
|
var p = u.currentProfile;
|
|
var type = this.type;
|
|
var key = this.dataset.profileKey;
|
|
|
|
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();
|
|
});
|
|
});
|