define(function (require, exports, module) { var queryResult = null; var param = require("../data.js"); var tpl = $("#train_table").doT(); var sessMgr = require("../account/sessionMgr.js"); var ticketQuery = require("./../otn/queryticket.js"); var EventObject = require("../platform/EventObject.js"); var mp = require("./widget_message_popup.js"); var tsquery = require("./ui-train-stop.js"); var datebar = require("./widget_datebar.js"); var parser = require("../platform/parser.js"); var autorefresh = require("./ui-autorefresh.js"); var trainSuggest = require("../otn/trainstationsuggest.js"); var suggestionTemplate = $("#suggestion_template").doT(); var utility = require("../utility.js"); var port = require("../platform/extensionPort.js"); var media = require("../platform/media.js"); //引入过滤 require("../otn/trainfilter.js").init(); var TrainListObj = function () { var __ = this; EventObject.apply(this); this.renderResultList = function (data) { data = data || queryResult; $("#result").html(tpl(data, { param: param, parser: parser, utility: utility })); }; this.load = function (ui, from, to, date, stu) { ui = ui === undefined ? true : ui; from = from || sessMgr.currentProfile.fromCode; to = to || sessMgr.currentProfile.toCode; date = date || sessMgr.currentProfile.depDate; stu = stu || sessMgr.currentProfile.studentTicket; var extArg = Array.prototype.slice.call(arguments); __.fireEvent("onload", extArg); datebar.go(date, date); var tip = null; if (ui) { tip = new mp.MessagePopup("loading", "正在查询中..."); tip.show(); } ticketQuery .queryTicket(from, to, date, stu) .done(function () { if (tip) { tip.setState("ok", "完成..."); tip.close(); } queryResult = this; __.renderResultList(); __.fireEvent("onloadsuccess", extArg); }).fail(function () { tip.setState("error", "查票失败..."); tip.delayClose(); __.fireEvent("onloadfailed", extArg); }); }; var init = function () { tsquery.init(); datebar.init(); trainSuggest.TSS.on("trainSuggestion", function (e, d) { $("#suggestion div").html(suggestionTemplate(d)).parent().show(); //track port.track(param.trackTypes.QUERY_SUGGESTION); }); $("#suggestion > header> a").click(function () { $("#suggestion").hide(); }); var setTarget = function (dom, a) { dom.value = a.innerHTML; dom.dataset.code = a.dataset.code; $(dom).change(); media.notify("已经切换站点为 " + a.innerHTML + ",请留意刷票状态以及原站点余票状态。"); }; $(document).on("click", "a.train-suggestion-link-end", function () { setTarget(document.getElementById("to_city"), this); }).on("click", "a.train-suggestion-link-start", function () { setTarget(document.getElementById("from_city"), this); }); datebar.on("requireChangeDate", function (e, d) { autorefresh.stop(); //请求切换时间 $("#dep_date").val(d).change(); sessMgr.save(); __.load(); }); //监听订票请求 $(document).on("click", "a.ticket-block", function () { var id = this.dataset.traincode; var seatcode = this.dataset.seatcode; var train = _.findWhere(queryResult.original, { id: id }); if (!train) return; __.dispatchEvent("requireSubmitOrder", { train: train, seat: seatcode }); }); }; init(); return this; }; TrainListObj.prototype = Object.create(EventObject); TrainListObj.constructor = TrainListObj; module.exports = new TrainListObj(); });