Light12306/Web12306/js/ui/ui-theme-manager.js

116 lines
3.3 KiB
JavaScript

define(function (require, exports, module) {
var ev = require("../platform/EventObject.js");
var widget = require("./widget.js");
var mp = require("./widget_message_popup.js");
var container = $("div.travel-theme-wrap");
var tpl = container.find("script").doT();
var listContainer = container.find("ul");
var sessMgr = require("../account/sessionMgr.js");
var dlg = $("#save-travel-method");
var ThemeManagerUi = function () {
var that = this;
ev.apply(this);
var initList = function () {
listContainer.empty();
if (sessMgr.current && sessMgr.current.savedProfile)
listContainer.html(tpl(_.values(sessMgr.current.savedProfile)));
};
this.init = function () {
$("#travel-theme-select").focus(function () {
$(this).parent().parent().addClass("hover");
}).blur(function () {
$(this).parent().parent().removeClass("hover");
});
$("#btn-save-travel-theme").click(function () {
that.showCreateDlg();
});
$("#save-travel-method button.button-primary").click(function () {
if (that.createProfile(dlg.find(":text").val()))
that.closeCreateDlg();
});
$(document).on("click", ".travel-theme-wrap .fa-times", function () {
var li = $(this).closest("li");
var name = li.attr("data-name");
if (name) {
mp.confirm("出行模式", "确定要删除出行模式【" + name + "】?", function () {
that.removeProfile(name);
});
}
return false;
});
$(document).on("click", ".travel-theme-wrap li", function () {
var li = $(this).closest("li");
var name = li.attr("data-name");
var cp = sessMgr.current.savedProfile[name];
if (cp) {
that.selectProfile(cp);
mp.showMessagePopup("ok", "已加载出行模式【" + name + "】");
}
return false;
});
};
this.selectProfile = function (profile) {
sessMgr.currentProfile = _.clone(profile);
};
this.createProfile = function (name) {
if (that.isProfileExist(name)) {
mp.showMessagePopup("error", "同名的出行模式已经存在了,请换个名字哦。");
return false;
}
var cp = _.clone(sessMgr.currentProfile);
cp.name = name;
if (!sessMgr.current.savedProfile)
sessMgr.current.savedProfile = {};
sessMgr.current.savedProfile[name] = cp;
that.closeCreateDlg();
mp.showMessagePopup("ok", "保存成功");
sessMgr.save();
listContainer.append(tpl([cp]));
return true;
};
this.isProfileExist = function (name) {
return (sessMgr.current.savedProfile && sessMgr.current.savedProfile[name]) || false;
};
this.removeProfile = function (name) {
if (!that.isProfileExist(name)) {
return true;
}
delete sessMgr.current.savedProfile[name];
//从列表移除
container.find("li[data-name='" + name + "']").remove();
sessMgr.save();
return true;
};
this.showCreateDlg = function () {
var cp = sessMgr.currentProfile;
var name = "";
if (cp.fromText && cp.toText)
name = cp.fromText + "-" + cp.toText;
dlg.find(":text").val(name);
widget.showFloatDialog(dlg);
};
this.closeCreateDlg = function () {
widget.hideFloatDialog(dlg);
};
initList();
sessMgr.on("sessionChanged", initList);
return this;
};
ThemeManagerUi.prototype = Object.create(ev);
ThemeManagerUi.constructor = ThemeManagerUi;
return new ThemeManagerUi();
});