Light12306/Web12306/js/platform/profileBinder.js
2014-07-11 18:34:59 +08:00

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();
});
});