Light12306/Web12306/js/ui/chat/servernode.js

75 lines
2.2 KiB
JavaScript
Raw Normal View History

2014-08-13 00:14:00 +08:00
define(function (require, exports, module) {
var EventObject = require("../../platform/EventObject.js");
var servers = null;
var container = $("#chat_server_select");
var template = container.find(">script").doT();
var serverNodeContainer = container.find(">article");
var ep = require("../../platform/extensionPort.js");
var port = ep.port;
2014-08-08 20:46:37 +08:00
2014-08-13 00:14:00 +08:00
var renderServerNodeList = function () {
//推荐房间
serverNodeContainer.empty();
var roomRecommand = _.where(servers, { recommand: true });
if (roomRecommand && roomRecommand.length)
serverNodeContainer.append(template({ category: "推荐房间", list: roomRecommand }));
var roomGlobal = _.where(servers, { category: 0 });
if (roomGlobal && roomGlobal.length)
serverNodeContainer.append(template({ category: "全国房间", list: roomGlobal }));
var roomPrivate = _.where(servers, { category: 1 });
if (roomPrivate && roomPrivate.length)
serverNodeContainer.append(template({ category: "地区/专线房间", list: roomPrivate }));
};
var ServerNodeSelect = function () {
EventObject.apply(this);
var that = this;
this.showRoomSelect = function () {
$("#chat_frame>section").removeClass("chat-page-current");
$("#chat_server_select").addClass("chat-page-current");
that.fireEvent("roomSelectShown");
};
this.exitRoomSelect = function () {
$("#chat_frame").removeClass("open");
that.fireEvent("roomSelectHide");
};
port.on("responseServer", function (e, serverList) {
servers = serverList;
if (!servers) {
//TODO 无法加载服务器列表
} else {
that.fireEvent("chatServerLoaded", servers);
//渲染列表
renderServerNodeList();
}
});
this.loadServers = function () {
port.postMessage("getChatServerStatus");
};
return this;
};
ServerNodeSelect.prototype = Object.create(EventObject);
ServerNodeSelect.constructor = ServerNodeSelect;
var instance = new ServerNodeSelect();
(function ui() {
$("#chat_server_select > footer >button").click(instance.exitRoomSelect);
$(document).on("click", "#chat_server_select article li", function() {
var id = this.dataset.id;
var server = _.findWhere(servers, { id: id });
if (!server)
return;
instance.fireEvent("enterRoot", server);
});
})();
return instance;
2014-08-08 20:46:37 +08:00
});