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

120 lines
3.5 KiB
JavaScript
Raw Normal View History

2014-07-04 20:57:57 +08:00
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();
2014-07-08 20:11:31 +08:00
if (sessMgr.current && sessMgr.current.savedProfile)
2014-07-29 21:19:06 +08:00
listContainer.html(tpl(_.values(sessMgr.current.savedProfile.list || [])));
2014-07-04 20:57:57 +08:00
};
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");
2014-07-29 21:19:06 +08:00
var cp = _.findWhere(sessMgr.current.savedProfile.list, { name: name });
2014-07-04 20:57:57 +08:00
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 = {};
2014-07-29 21:19:06 +08:00
if (!sessMgr.current.savedProfile.list)
sessMgr.current.savedProfile.list = [];
sessMgr.current.savedProfile.list.push(cp);
2014-07-04 20:57:57 +08:00
that.closeCreateDlg();
mp.showMessagePopup("ok", "保存成功");
sessMgr.save();
listContainer.append(tpl([cp]));
return true;
};
this.isProfileExist = function (name) {
2014-07-29 21:19:06 +08:00
return (sessMgr.current.savedProfile && _.findWhere(sessMgr.current.savedProfile.list, { name: name })) || false;
2014-07-04 20:57:57 +08:00
};
this.removeProfile = function (name) {
if (!that.isProfileExist(name)) {
return true;
}
2014-07-29 21:19:06 +08:00
var p = _.findWhere(sessMgr.current.savedProfile.list, { name: name });
_.removeFromArray(sessMgr.current.savedProfile.list, p);
2014-07-04 20:57:57 +08:00
//从列表移除
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();
});