Light12306/Web12306/js/ui/index.js
2014-08-18 23:12:35 +08:00

229 lines
7.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

define(function (require) {
var param = require("../data.js");
var widget = require("./widget.js");
var sessMgr = require("../account/sessionMgr.js");
var datebar = require("./widget_datebar.js");
var parser = require("../platform/parser.js");
var media = require("../platform/media.js");
var mp = require("./widget_message_popup.js");
var stationData = require("../station/station_data.js");
var utility = require("../utility.js");
var port = require("../platform/extensionPort.js");
//会话管理器事件
sessMgr.on("notValidPassengerFound", function () {
mp.showMessagePopup("warn", "您的账户中有未经验证的联系人,将不可为他们订票。");
});
//初始化日期
require("./widget_datedropdown.js").init("input.ui-date");
//预售期提示
require("./widget_sell_notification.js");
//地区选择
var citySelector = require("./widget_cityselector.js");
citySelector.init("input.ui-cityselector");
//验证码
require("./widget_verifycode.js").init();
//登录
var ui_login = require("./ui-login.js");
//结果列表
var ui_result = require("./ui-trainlist.js");
//自动刷新呢
var autorefresh = require("./ui-autorefresh.js");
autorefresh.on("requestQueryTicket", function () {
ui_result.load();
});
//提交订单
var uiOrderProcess = require("./ui-order-submit-process.js");
//查询参数
require("./ui-autosubmitform.js");
//模式管理
require("./ui-theme-manager.js");
//用户配置和选项的加载以及保存
require("../platform/profileBinder.js");
require("../platform/optionBinder.js");
//订票列表交互
ui_result.on("requireSubmitOrder", function (e, d) {
autorefresh.stop();
uiOrderProcess.start(d.train, d.seat, sessMgr.currentProfile, null);
});
autorefresh.on("requireSubmitOrder", function (e, d) {
uiOrderProcess.start(d.data, d.seat, sessMgr.currentProfile, d.passengers);
});
//界面交互初始化
(function () {
$(".order-tips").html("今日可订票:" + utility.formatDate(param.minDate, "MM月dd日") + "" + utility.formatDate(param.maxDate, "MM月dd日") + "车票");
//自动加速关闭
$(".net-tips, .reset-btn").hide();
var resetInterfaceByProfile = function () {
var user = sessMgr.current;
if (!user) {
return;
}
var showMoreOpt = user.options.showMoreOpt !== undefined ? user.options.showMoreOpt : param.moreOptDefault;
var div = $("div.options-param");
!showMoreOpt ? (div.hide(), $(".search-more-option").html("显示更多选项")) : (div.show(), $(".search-more-option").html("隐藏更多选项"));
var p = user.currentProfile;
$("#from_city").val(p.fromText).attr("data-code", p.fromCode);
showSellTime.call(document.getElementById("from_city"));
$("#to_city").val(p.toText).attr("data-code", p.toCode);
document.querySelector("input[name='ticket_type'][value='" + (p.studentTicket ? "1" : "0") + "']").checked = true;
//车次类型
var ptt = p.trainTypes || [];
$("ul.search-traintypes :checkbox").each(function () {
this.checked = !ptt.length || _.indexOf(ptt, this.value) != -1;
});
$("ul.search-traintypes a").html($("ul.search-traintypes :checkbox:not(:checked)").length ? "全选" : "全不选");
//当前日期
if (p.depDate) {
var d = utility.addDays(utility.toDate(p.depDate), 0);
var today = utility.addDays(new Date(), 0);
d = d < today ? today : d;
var datestr = utility.formatDate(d, "yyyy-MM-dd");
datebar.go(d, d);
$("#dep_date").val(datestr);
}
};
$("ul.search-traintypes :checkbox").change(function () {
sessMgr.currentProfile.trainTypes = $.makeArray($("ul.search-traintypes :checkbox:checked").map(function () {
return this.value;
}));
$("ul.search-traintypes a").html($("ul.search-traintypes :checkbox:not(:checked)").length ? "全选" : "全不选");
sessMgr.save();
});
$("ul.search-traintypes a").click(function () {
var checkbox = $("ul.search-traintypes :checkbox");
if (checkbox.filter(":not(:checked)").length) {
checkbox.prop("checked", true);
} else {
checkbox.prop("checked", false);
}
checkbox.eq(0).change();
});
$("#index-tip-body").click(function () {
$(this).next().fadeIn();
});
$("section.search-tips-container i.fa-times").click(function () {
$(this).closest("section.search-tips-container").fadeOut();
});
//登录失效
sessMgr.on("userForcedOut", function () {
mp.showMessagePopup("error", "您的登录出现了问题,请重新登录");
});
$(".search-more-option").click(function () {
var div = $("div.options-param");
div.is(":visible") ? (div.hide(), $(this).html("显示更多选项")) : (div.show(), $(this).html("隐藏更多选项"));
sessMgr.current.options.showMoreOpt = div.is(":visible");
sessMgr.save();
});
$("#from_city").change(function () {
var u = sessMgr.current;
var p = u.currentProfile;
p.fromText = this.value;
p.fromCode = this.dataset.code;
sessMgr.save();
});
$("#to_city").change(function () {
var u = sessMgr.current;
var p = u.currentProfile;
p.toText = this.value;
p.toCode = this.dataset.code;
sessMgr.save();
});
var showSellTime = function () {
var v = this.dataset.code;
if (!v) {
$("div.search-time-tips").hide();
return;
}
var sellTimes = utility.format24hTo12h(stationData.sellTime[v]) || "----";
$("div.search-time-tips").show().find("span:eq(1)").html(sellTimes).end().find("span:eq(0)").html(this.value + "站");
};
$("#from_city").change(showSellTime);
showSellTime.apply(document.getElementById("from_city"));
$("input[name='ticket_type']").click(function () {
sessMgr.currentProfile.studentTicket = this.value === "1";
sessMgr.save();
});
$("div.transfer-city-btn").click(function () {
var f = document.getElementById("from_city");
var t = document.getElementById("to_city");
var txt = f.value;
var code = f.dataset.code;
f.value = t.value;
f.dataset.code = t.dataset.code;
t.value = txt;
t.dataset.code = code;
$("#from_city, #to_city").change();
});
$("#btnQuery").click(function () {
autorefresh.stop();
media.stop();
if (!sessMgr.currentProfile.fromCode || !sessMgr.currentProfile.toCode || !sessMgr.currentProfile.depDate) {
mp.showMessagePopup("error", "亲,还没有设置查询的条件哦。");
return;
}
citySelector.cityui.addCityToRecent(sessMgr.currentProfile.fromCode);
citySelector.cityui.addCityToRecent(sessMgr.currentProfile.toCode);
//检查学生票是否对应
if (sessMgr.currentProfile.studentTicket && sessMgr.currentProfile.passengers && sessMgr.currentProfile.passengers.length) {
if (_.some(sessMgr.currentProfile.passengers, function (p) { return p.passenger_type !== '3'; })) {
mp.confirm("确认", "您选择的是学生票,但是添加的联系人并不全是学生,将无法提交订单,确定继续查票吗?", ui_result.load);
} else {
ui_result.load();
}
} else {
ui_result.load();
}
//track
port.track(param.trackTypes.QUERY_TICKET);
});
sessMgr.on("sessionChanged", resetInterfaceByProfile);
sessMgr.on("currentProfileChanged", resetInterfaceByProfile);
//初始化状态
resetInterfaceByProfile();
})();
//系统级别错误捕捉
(function () {
document.addEventListener("networkOrCertificationError", function () {
//TODO UI
alert("无法访问12306可能是网络错误或证书错误请直接访问12306试试如果正常的话请回来刷新本页");
});
})();
//聊天系统
require("./chat/chatframe.js");
//统计报告
port.track(param.trackTypes.OPEN_PAGE_INDEX);
});