2014-07-08 20:11:31 +08:00
|
|
|
|
define(function (require, exports, module) {
|
|
|
|
|
var sessmgr = require("../account/sessionMgr.js");
|
|
|
|
|
var mp = require("./widget_message_popup.js");
|
|
|
|
|
var query = require("../otn/queryticket.js");
|
|
|
|
|
var data = require("../data.js");
|
|
|
|
|
|
|
|
|
|
var initPassengerEditor = function () {
|
|
|
|
|
//UI组件
|
|
|
|
|
var uiEditor = $("div.passenger-selector-wrap");
|
2014-08-19 23:29:14 +08:00
|
|
|
|
var uiInput = $("#passenger-selector-id");
|
2014-07-08 20:11:31 +08:00
|
|
|
|
var uiDlg = uiEditor.find("section");
|
|
|
|
|
var uiDlgTpl = uiDlg.find("script").doT();
|
|
|
|
|
var uiDlgList = uiDlg.find("ul");
|
|
|
|
|
var uiList = uiEditor.parent();
|
|
|
|
|
var uiListTpl = uiList.find(">script").doT();
|
|
|
|
|
|
|
|
|
|
uiInput.focus(function () {
|
|
|
|
|
uiDlg.show();
|
|
|
|
|
|
|
|
|
|
uiDlg.addClass("loading");
|
|
|
|
|
uiDlg.find(".empty-indicator").hide();
|
2014-08-19 23:29:14 +08:00
|
|
|
|
sessmgr.getPassengers(function (plist) {
|
2014-07-08 20:11:31 +08:00
|
|
|
|
uiDlg.removeClass("loading");
|
2014-08-19 23:29:14 +08:00
|
|
|
|
allpasseengers = plist;
|
2014-07-08 20:11:31 +08:00
|
|
|
|
currentSearchKey = null;
|
2014-08-19 23:29:14 +08:00
|
|
|
|
if (!plist.length) {
|
2014-07-23 17:32:50 +08:00
|
|
|
|
uiDlgList.empty();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
uiDlg.find(".empty-indicator").show();
|
|
|
|
|
}
|
|
|
|
|
performSearch();
|
|
|
|
|
});
|
|
|
|
|
uiInput.select();
|
|
|
|
|
}).blur(function () {
|
|
|
|
|
uiDlg.hide();
|
|
|
|
|
});
|
|
|
|
|
uiDlg.mousedown(function (e) {
|
|
|
|
|
if (e.target && e.target.tagName === "LI") {
|
|
|
|
|
//选定
|
|
|
|
|
var id = e.target.dataset.id;
|
|
|
|
|
var p = _.findWhere(allpasseengers, { key: id });
|
2014-08-19 23:29:14 +08:00
|
|
|
|
if (p) {
|
2014-07-08 20:11:31 +08:00
|
|
|
|
uiInput.trigger("selectPassenger", p);
|
2014-08-19 23:29:14 +08:00
|
|
|
|
if (p.selected)
|
|
|
|
|
$(e.target).addClass("selected");
|
|
|
|
|
else {
|
|
|
|
|
$(e.target).removeClass("selected");
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-07-08 20:11:31 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var currentSearchKey = null;
|
|
|
|
|
var currentList = null;
|
|
|
|
|
var currentPageIndex = 1;
|
|
|
|
|
var allpasseengers = null;
|
|
|
|
|
var pagesize = 12;
|
|
|
|
|
var totalpage = 0;
|
|
|
|
|
var performSearch = function (key) {
|
|
|
|
|
key = key || uiInput.val();
|
|
|
|
|
if (key !== currentSearchKey) {
|
|
|
|
|
currentSearchKey = key.toUpperCase();
|
|
|
|
|
currentList = currentSearchKey ? _.filter(allpasseengers, function (p) { return p.key.indexOf(currentSearchKey) != -1 || p.first_letter.indexOf(currentSearchKey) != -1; }) : allpasseengers;
|
|
|
|
|
currentPageIndex = 1;
|
|
|
|
|
totalpage = Math.ceil(currentList.length / pagesize);
|
|
|
|
|
}
|
|
|
|
|
renderPage();
|
|
|
|
|
};
|
|
|
|
|
var renderPage = function () {
|
|
|
|
|
if (currentPageIndex > totalpage)
|
|
|
|
|
currentPageIndex = totalpage;
|
|
|
|
|
else if (currentPageIndex < 1)
|
|
|
|
|
currentPageIndex = 1;
|
|
|
|
|
|
2014-07-31 21:30:48 +08:00
|
|
|
|
var renderList = currentList.slice((currentPageIndex - 1) * pagesize, currentPageIndex * pagesize);
|
2014-07-08 20:11:31 +08:00
|
|
|
|
uiDlgList.html(uiDlgTpl(renderList, {
|
|
|
|
|
isSelected: function (p) {
|
|
|
|
|
return sessmgr.currentProfile && sessmgr.currentProfile && _.findWhere(sessmgr.currentProfile.passengers, { key: p.key }) || false;
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
uiDlg.find("button.passenger-pager-prev").prop("disabled", currentPageIndex < 2);
|
2014-07-31 21:30:48 +08:00
|
|
|
|
uiDlg.find("button.passenger-pager-next").prop("disabled", totalpage - 1 < currentPageIndex);
|
2014-07-08 20:11:31 +08:00
|
|
|
|
};
|
|
|
|
|
uiDlg.find("button.passenger-pager-prev").click(function () {
|
|
|
|
|
currentPageIndex--;
|
|
|
|
|
renderPage();
|
|
|
|
|
});
|
|
|
|
|
uiDlg.find("button.passenger-pager-next").click(function () {
|
|
|
|
|
currentPageIndex++;
|
|
|
|
|
renderPage();
|
|
|
|
|
});
|
|
|
|
|
uiInput.keyup(function () {
|
|
|
|
|
performSearch();
|
|
|
|
|
});
|
|
|
|
|
uiInput.on("selectPassenger", function (e, p) {
|
2014-08-19 23:29:14 +08:00
|
|
|
|
p.selected = exports.addPassengerToList(p);
|
2014-07-08 20:11:31 +08:00
|
|
|
|
});
|
|
|
|
|
uiList.on("click", ".optional-block .close", function (e) {
|
|
|
|
|
var span = $(this).closest(".optional-block");
|
|
|
|
|
var key = span[0].dataset.id;
|
|
|
|
|
var cpl = sessmgr.currentProfile.passengers;
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < cpl.length; i++) {
|
|
|
|
|
if (cpl[i].key === key) {
|
|
|
|
|
cpl.splice(i, 1);
|
|
|
|
|
sessmgr.save();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-07-23 17:32:50 +08:00
|
|
|
|
span.remove();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
}).on("click", ".optional-block", function (e) {
|
|
|
|
|
//添加儿童票
|
|
|
|
|
var span = $(this).closest(".optional-block");
|
|
|
|
|
var key = span[0].dataset.id;
|
|
|
|
|
var cpl = sessmgr.currentProfile.passengers;
|
|
|
|
|
|
|
|
|
|
var p = _.findWhere(cpl, { key: key });
|
|
|
|
|
if (!p)
|
|
|
|
|
return;
|
2014-08-01 21:54:26 +08:00
|
|
|
|
if (p.passenger_type !== '1') {
|
|
|
|
|
mp.showMessagePopup("error", "亲,学生无法带着儿童上车哦");
|
|
|
|
|
return;
|
|
|
|
|
}
|
2014-07-08 20:11:31 +08:00
|
|
|
|
p = _.clone(p);
|
|
|
|
|
p.passenger_type = 2;
|
|
|
|
|
p.key += "$" + (Math.random() + '').substr(3, 4);
|
|
|
|
|
exports.addPassengerToList(p);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var resetList = function () {
|
|
|
|
|
uiList.find(">span").remove();
|
|
|
|
|
if (sessmgr.currentProfile.passengers) {
|
|
|
|
|
uiList.append(uiListTpl(sessmgr.currentProfile.passengers));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (sessmgr.currentProfile) {
|
|
|
|
|
resetList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sessmgr.on("sessionChanged", resetList);
|
|
|
|
|
sessmgr.on("currentProfileChanged", resetList);
|
|
|
|
|
|
|
|
|
|
exports.addPassengerToList = function (p) {
|
|
|
|
|
var cp = sessmgr.currentProfile;
|
|
|
|
|
if (!cp)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
cp.passengers = cp.passengers || [];
|
|
|
|
|
|
2014-08-19 23:29:14 +08:00
|
|
|
|
var tmpObj = _.findWhere(cp.passengers, { key: p.key });
|
|
|
|
|
if (tmpObj) {
|
|
|
|
|
uiList.find(".optional-block[data-id='" + p.key + "']").remove();
|
|
|
|
|
_.removeFromArray(cp.passengers, tmpObj);
|
2014-07-08 20:11:31 +08:00
|
|
|
|
return false;
|
2014-08-19 23:29:14 +08:00
|
|
|
|
}
|
2014-07-08 20:11:31 +08:00
|
|
|
|
if (cp.passengers.length >= 5) {
|
|
|
|
|
mp.showMessagePopup("error", "只能添加五个人喔。");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cp.passengers.push(p);
|
|
|
|
|
uiList.append(uiListTpl([p]));
|
|
|
|
|
sessmgr.save();
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var initTrainSelectEditor = function () {
|
|
|
|
|
var container = $(".options-train-selectorwarp");
|
|
|
|
|
var listTpl = container.find("script:eq(1)").doT();
|
|
|
|
|
var queryTpl = container.find("script:first").doT();
|
2014-07-29 21:19:06 +08:00
|
|
|
|
var advTrainTpl = container.find("script:eq(2)").doT();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
var inputObj = container.find(":text");
|
|
|
|
|
var queryTable = container.find(">div");
|
2014-07-29 21:19:06 +08:00
|
|
|
|
var queryErrorRow = queryTable.find("table tr:eq(4)");
|
|
|
|
|
var queryLoadingRow = queryTable.find("table tr:eq(2)");
|
|
|
|
|
var queryTipRow = queryTable.find("table tr:eq(3)");
|
2014-07-08 20:11:31 +08:00
|
|
|
|
var traindata;
|
|
|
|
|
|
2014-07-29 21:19:06 +08:00
|
|
|
|
queryTable.find("table tr:eq(0) td").html(advTrainTpl(data.tagMap));
|
2014-08-01 21:54:26 +08:00
|
|
|
|
queryTable.find(".options-seat-type-advlink").click(function () {
|
2014-07-29 21:19:06 +08:00
|
|
|
|
exports.addTrainToList($(this).text());
|
|
|
|
|
});
|
|
|
|
|
|
2014-07-08 20:11:31 +08:00
|
|
|
|
var currentKey = null;
|
|
|
|
|
|
2014-08-19 23:29:14 +08:00
|
|
|
|
var filterTrainNormal = function (list) {
|
|
|
|
|
var filter = sessmgr.currentProfile && sessmgr.currentProfile.trainTypes;
|
|
|
|
|
if (!filter || !filter.length)
|
|
|
|
|
return list;
|
|
|
|
|
|
|
|
|
|
return _.filter(list, function (t) {
|
|
|
|
|
var code = t.code[0];
|
|
|
|
|
|
|
|
|
|
if (_.indexOf(filter, code) !== -1)
|
|
|
|
|
return true;
|
|
|
|
|
if (_.indexOf(filter, '1') !== -1) {
|
|
|
|
|
if (code === 'L' || /\d/.test(code))
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var hightlightSelected = function () {
|
|
|
|
|
var rows = queryErrorRow.nextAll().removeClass("selected");
|
|
|
|
|
|
|
|
|
|
var trains = sessmgr.currentProfile && sessmgr.currentProfile.selectedTrain;
|
|
|
|
|
if (!trains || !trains.length)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
rows.each(function () {
|
|
|
|
|
var code = $.trim($(this).find("td:eq(0)").text());
|
|
|
|
|
if (_.indexOf(trains, code) !== -1)
|
|
|
|
|
$(this).addClass("selected");
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2014-07-08 20:11:31 +08:00
|
|
|
|
var showDropDown = function () {
|
|
|
|
|
queryErrorRow.hide();
|
|
|
|
|
queryLoadingRow.hide();
|
|
|
|
|
queryTipRow.hide();
|
|
|
|
|
|
|
|
|
|
var cp = sessmgr.currentProfile;
|
|
|
|
|
if (!cp)
|
|
|
|
|
return;
|
|
|
|
|
|
2014-08-19 23:29:14 +08:00
|
|
|
|
var checkKey = cp.fromCode + cp.toCode + cp.depDate + cp.studentTicket + (cp.trainTypes || []).join("");
|
|
|
|
|
if (checkKey !== currentKey) {
|
2014-07-08 20:11:31 +08:00
|
|
|
|
//需要重新查询
|
|
|
|
|
currentKey = checkKey;
|
|
|
|
|
|
|
|
|
|
queryErrorRow.nextAll().remove();
|
|
|
|
|
if (!cp.fromCode || !cp.toCode || !cp.depDate) {
|
|
|
|
|
queryTipRow.show();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
queryLoadingRow.show();
|
2014-07-23 17:32:50 +08:00
|
|
|
|
queryErrorRow.hide();
|
2014-07-14 18:13:46 +08:00
|
|
|
|
query.queryTicket(cp.fromCode, cp.toCode, cp.depDate, cp.studentTicket, true)
|
2014-07-08 20:11:31 +08:00
|
|
|
|
.done(function () {
|
|
|
|
|
traindata = this;
|
|
|
|
|
if (!this.original.length) {
|
|
|
|
|
queryErrorRow.show();
|
|
|
|
|
} else {
|
2014-08-19 23:29:14 +08:00
|
|
|
|
queryErrorRow.after(queryTpl(filterTrainNormal(this.original)));
|
2014-07-08 20:11:31 +08:00
|
|
|
|
}
|
2014-08-19 23:29:14 +08:00
|
|
|
|
hightlightSelected();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
}).fail(function () {
|
|
|
|
|
queryErrorRow.show();
|
|
|
|
|
}).always(function () {
|
|
|
|
|
queryLoadingRow.hide();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
queryTable.show();
|
2014-08-19 23:29:14 +08:00
|
|
|
|
hightlightSelected();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
};
|
|
|
|
|
var initialLoad = function () {
|
|
|
|
|
var cp = sessmgr.currentProfile;
|
|
|
|
|
container.find(">span").remove();
|
|
|
|
|
if (cp && cp.selectedTrain) {
|
|
|
|
|
container.append(listTpl(cp.selectedTrain));
|
|
|
|
|
}
|
|
|
|
|
};
|
2014-08-19 23:29:14 +08:00
|
|
|
|
var filterList = function() {
|
|
|
|
|
var key = inputObj.val();
|
|
|
|
|
if (!key) {
|
|
|
|
|
queryErrorRow.nextAll().show();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var rows = queryErrorRow.nextAll().hide();
|
|
|
|
|
var test = new RegExp(key, "i");
|
|
|
|
|
|
|
|
|
|
rows.each(function () {
|
|
|
|
|
var code = $.trim($(this).find("td:eq(0)").text());
|
|
|
|
|
if (test.test(code))
|
|
|
|
|
$(this).show();
|
|
|
|
|
});
|
|
|
|
|
};
|
2014-07-08 20:11:31 +08:00
|
|
|
|
initialLoad();
|
|
|
|
|
sessmgr.on("sessionChanged", initialLoad);
|
|
|
|
|
sessmgr.on("currentProfileChanged", initialLoad);
|
|
|
|
|
|
|
|
|
|
inputObj.focus(function () {
|
|
|
|
|
showDropDown();
|
|
|
|
|
}).blur(function () {
|
|
|
|
|
queryTable.hide();
|
|
|
|
|
}).keydown(function (e) {
|
|
|
|
|
if (e.keyCode == 13) {
|
|
|
|
|
var s = this.value;
|
|
|
|
|
if (s)
|
|
|
|
|
exports.addTrainToList(s);
|
|
|
|
|
this.value = "";
|
|
|
|
|
}
|
2014-08-19 23:29:14 +08:00
|
|
|
|
}).on("input", function() {
|
|
|
|
|
filterList();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
queryTable.mousedown(function (e) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
}).on("click", "tr[data-id] td", function () {
|
|
|
|
|
var tr = $(this).closest("tr");
|
|
|
|
|
var id = tr[0].dataset.id;
|
|
|
|
|
var t = _.findWhere(traindata.original, { id: id });
|
|
|
|
|
if (!t)
|
|
|
|
|
return;
|
|
|
|
|
|
2014-08-19 23:29:14 +08:00
|
|
|
|
tr.toggleClass("selected");
|
2014-07-08 20:11:31 +08:00
|
|
|
|
exports.addTrainToList(t.code);
|
|
|
|
|
});
|
|
|
|
|
container.on("click", ".optional-block", function () {
|
|
|
|
|
var obj = $(this).closest("span[data-code]");
|
|
|
|
|
exports.removeTrainFromList(obj[0].dataset.code);
|
2014-07-23 17:32:50 +08:00
|
|
|
|
obj.remove();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
exports.addTrainToList = function (t) {
|
|
|
|
|
var cp = sessmgr.currentProfile;
|
|
|
|
|
if (!cp)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
cp.selectedTrain = cp.selectedTrain || [];
|
2014-08-19 23:29:14 +08:00
|
|
|
|
var idx = _.indexOf(cp.selectedTrain, t);
|
|
|
|
|
if (idx !== -1) {
|
|
|
|
|
cp.selectedTrain.splice(idx, 1);
|
|
|
|
|
container.find("span.optional-block[data-code='" + t + "']").remove();
|
|
|
|
|
} else {
|
|
|
|
|
cp.selectedTrain.push(t);
|
|
|
|
|
container.append(listTpl([t]));
|
|
|
|
|
}
|
2014-07-08 20:11:31 +08:00
|
|
|
|
|
|
|
|
|
sessmgr.save();
|
|
|
|
|
};
|
|
|
|
|
exports.removeTrainFromList = function (t) {
|
|
|
|
|
var cp = sessmgr.currentProfile;
|
|
|
|
|
if (!cp || !cp.selectedTrain)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < cp.selectedTrain.length; i++) {
|
|
|
|
|
if (cp.selectedTrain[i] === t) {
|
|
|
|
|
cp.selectedTrain.splice(i, 1);
|
|
|
|
|
sessmgr.save();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var initDateLoop = function () {
|
|
|
|
|
//UI
|
|
|
|
|
var container = $("#date_loop_editor");
|
|
|
|
|
var tpl = container.find(">script").doT();
|
|
|
|
|
var input = container.find("input");
|
|
|
|
|
|
|
|
|
|
var cp = sessmgr.currentProfile;
|
|
|
|
|
sessmgr.on("sessionChanged", function () {
|
|
|
|
|
cp = sessmgr.currentProfile;
|
|
|
|
|
initProfile();
|
|
|
|
|
});
|
|
|
|
|
sessmgr.on("currentProfileChanged", function () {
|
|
|
|
|
cp = sessmgr.currentProfile;
|
|
|
|
|
initProfile();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var initProfile = function () {
|
|
|
|
|
container.find(">span").remove();
|
|
|
|
|
if (cp && cp.dateloop) {
|
2014-07-23 17:32:50 +08:00
|
|
|
|
var filteredDate = _.filter(cp.dateloop, data.isValidDate);
|
|
|
|
|
if (filteredDate.length !== cp.dateloop.length) {
|
|
|
|
|
cp.dateloop = filteredDate;
|
|
|
|
|
sessmgr.save();
|
|
|
|
|
}
|
|
|
|
|
container.append(tpl(_.filter(cp.dateloop, data.isValidDate)));
|
2014-07-08 20:11:31 +08:00
|
|
|
|
}
|
2014-08-19 23:29:14 +08:00
|
|
|
|
input.data("selectedDate", (cp && cp.dateloop) || []);
|
2014-07-08 20:11:31 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
exports.addDateToLoopList = function (d) {
|
|
|
|
|
if (!d) return;
|
|
|
|
|
cp.dateloop = cp.dateloop || [];
|
|
|
|
|
|
2014-08-19 23:29:14 +08:00
|
|
|
|
var idx = _.indexOf(cp.dateloop, d);
|
|
|
|
|
if (idx !== -1) {
|
|
|
|
|
//已经有了则删除
|
|
|
|
|
cp.dateloop.splice(idx, 1);
|
|
|
|
|
container.find(">span[data-date='" + d + "']").remove();
|
|
|
|
|
sessmgr.save();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
return;
|
2014-08-19 23:29:14 +08:00
|
|
|
|
}
|
2014-07-08 20:11:31 +08:00
|
|
|
|
cp.dateloop.push(d);
|
|
|
|
|
sessmgr.save();
|
|
|
|
|
//add to list
|
|
|
|
|
container.append(tpl([d]));
|
|
|
|
|
};
|
|
|
|
|
exports.removeDateFromLoopList = function (d) {
|
|
|
|
|
if (!cp || !cp.dateloop)
|
|
|
|
|
return;
|
|
|
|
|
var idx = _.indexOf(cp.dateloop, d);
|
|
|
|
|
if (idx == -1)
|
|
|
|
|
return;
|
|
|
|
|
cp.dateloop.splice(idx, 1);
|
|
|
|
|
sessmgr.save();
|
|
|
|
|
container.find(">span[data-date='" + d + "']").remove();
|
|
|
|
|
};
|
|
|
|
|
|
2014-08-19 23:29:14 +08:00
|
|
|
|
input.change(function (e) {
|
2014-07-08 20:11:31 +08:00
|
|
|
|
if (this.value)
|
|
|
|
|
exports.addDateToLoopList(this.value);
|
|
|
|
|
this.value = "";
|
|
|
|
|
});
|
|
|
|
|
container.on("click", ">span[data-date]", function () {
|
|
|
|
|
exports.removeDateFromLoopList(this.dataset.date);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
initProfile();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var initSeatOrder = function () {
|
|
|
|
|
var seatDisplayOrder = "O319PM6420".split('');
|
|
|
|
|
var recommand = ["O", "3", "1"];
|
|
|
|
|
|
|
|
|
|
var container = $("dd.options-seat-type");
|
|
|
|
|
var ddTpl = container.find(">script:eq(0)").doT();
|
|
|
|
|
var input = container.find(":text");
|
|
|
|
|
var listTpl = container.find(">script:eq(1)").doT();
|
|
|
|
|
var dropDown = null;
|
|
|
|
|
var cp = null;
|
|
|
|
|
|
|
|
|
|
var initDropDown = function () {
|
|
|
|
|
container.append(ddTpl({
|
|
|
|
|
order: seatDisplayOrder,
|
|
|
|
|
isSelected: function () { return false; },
|
|
|
|
|
isRecommand: function (seat) { return _.indexOf(recommand, seat) != -1; },
|
|
|
|
|
getName: data.toSeatTypeName
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
dropDown = container.find("ul");
|
2014-07-11 18:34:59 +08:00
|
|
|
|
dropDown.mousedown(function (e) {
|
2014-07-08 20:11:31 +08:00
|
|
|
|
e.stopPropagation();
|
|
|
|
|
e.preventDefault();
|
2014-07-11 18:34:59 +08:00
|
|
|
|
}).click(function () {
|
2014-07-08 20:11:31 +08:00
|
|
|
|
input[0].focus();
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
var initProfile = function () {
|
|
|
|
|
cp = sessmgr.currentProfile;
|
2014-07-29 21:19:06 +08:00
|
|
|
|
container.find("span.optional-block").remove();
|
2014-08-01 21:54:26 +08:00
|
|
|
|
dropDown.find(":checkbox").prop("checked", false);
|
2014-07-11 18:34:59 +08:00
|
|
|
|
if (!cp || !cp.selectedSeatType)
|
2014-07-08 20:11:31 +08:00
|
|
|
|
return;
|
|
|
|
|
container.append(listTpl({
|
|
|
|
|
order: cp.selectedSeatType,
|
|
|
|
|
isSelected: function () { return false; },
|
|
|
|
|
isRecommand: function () { return false; },
|
|
|
|
|
getName: data.toSeatTypeName
|
|
|
|
|
}));
|
2014-08-01 21:54:26 +08:00
|
|
|
|
cp.selectedSeatType.forEach(function (code) {
|
2014-07-14 18:28:52 +08:00
|
|
|
|
dropDown.find(":checkbox[value='" + code + "']").prop("checked", true);
|
|
|
|
|
});
|
2014-07-08 20:11:31 +08:00
|
|
|
|
};
|
|
|
|
|
exports.addSeat = function (code) {
|
|
|
|
|
if (!code || !cp)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
cp.selectedSeatType = cp.selectedSeatType || [];
|
|
|
|
|
var idx = _.indexOf(cp.selectedSeatType, code);
|
|
|
|
|
if (idx != -1)
|
|
|
|
|
return;
|
|
|
|
|
cp.selectedSeatType.push(code);
|
|
|
|
|
sessmgr.save();
|
|
|
|
|
container.append(listTpl({
|
|
|
|
|
order: [code],
|
|
|
|
|
isSelected: function () { return false; },
|
|
|
|
|
isRecommand: function () { return false; },
|
|
|
|
|
getName: data.toSeatTypeName
|
|
|
|
|
}));
|
|
|
|
|
dropDown.find(":checkbox[value='" + code + "']").prop("checked", true);
|
|
|
|
|
};
|
|
|
|
|
exports.removeSeat = function (code) {
|
|
|
|
|
if (!code || !cp)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var idx = _.indexOf(cp.selectedSeatType, code);
|
|
|
|
|
if (idx == -1)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
cp.selectedSeatType.splice(idx, 1);
|
|
|
|
|
sessmgr.save();
|
2014-07-29 21:19:06 +08:00
|
|
|
|
container.find(">span[data-code='" + code + "']").remove();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
dropDown.find(":checkbox[value='" + code + "']").prop("checked", false);
|
|
|
|
|
};
|
|
|
|
|
container.on("change", ":checkbox", function () {
|
|
|
|
|
if (this.checked)
|
|
|
|
|
exports.addSeat(this.value);
|
|
|
|
|
else exports.removeSeat(this.value);
|
|
|
|
|
});
|
2014-07-29 21:19:06 +08:00
|
|
|
|
container.on("click", "span.close", function () {
|
|
|
|
|
exports.removeSeat(this.parentNode.dataset.code);
|
|
|
|
|
});
|
2014-07-08 20:11:31 +08:00
|
|
|
|
input.focus(function () {
|
|
|
|
|
dropDown.show();
|
|
|
|
|
}).blur(function () {
|
|
|
|
|
dropDown.hide();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
initDropDown();
|
|
|
|
|
initProfile();
|
|
|
|
|
sessmgr.on("sessionChanged", initProfile);
|
|
|
|
|
sessmgr.on("currentProfileChanged", initProfile);
|
|
|
|
|
};
|
|
|
|
|
|
2014-07-11 18:34:59 +08:00
|
|
|
|
var initProfileOperation = function () {
|
|
|
|
|
$("#btnResetOptions").click(function () {
|
|
|
|
|
var session = sessmgr.current;
|
|
|
|
|
if (!session)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
sessmgr.currentProfile = null;
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2014-08-13 00:14:00 +08:00
|
|
|
|
var init = function () {
|
2014-07-08 20:11:31 +08:00
|
|
|
|
initPassengerEditor();
|
|
|
|
|
initTrainSelectEditor();
|
|
|
|
|
initDateLoop();
|
|
|
|
|
initSeatOrder();
|
2014-07-11 18:34:59 +08:00
|
|
|
|
initProfileOperation();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
};
|
2014-08-13 00:14:00 +08:00
|
|
|
|
init();
|
2014-07-08 20:11:31 +08:00
|
|
|
|
});
|