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; var mp = require("../widget_message_popup.js"); var renderServerNodeList = function () { _.each(servers, function (s) { s.statusName = "ok"; if (s.room_people_num <= s.onlinecount) s.statusName = "full"; else if (!s.status) s.statusName = "closed"; }); //推荐房间 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; if (server.statusName === "full") { mp.showMessagePopup("error", "亲,房间已满,换个房间呗~"); } else if (server.statusName == "closed") { mp.showMessagePopup("error", "亲,这个房间暂时关闭了,换个房间呗~~"); } else instance.fireEvent("enterRoot", server); }); })(); return instance; });