(function($) { var RoomsRoom = this.RoomsRoom = Room.extend({ minWidth: 320, maxWidth: 1024, type: 'rooms', title: 'Rooms', isSideRoom: true, events: { 'click .ilink': 'clickLink' }, initialize: function() { this.$el.addClass('ps-room-light').addClass('scrollable'); app.on('response:rooms', this.update, this); app.send('/cmd rooms'); app.user.on('change:named', this.updateUser, this); this.update(); }, clickLink: function(e) { if (e.cmdKey || e.metaKey || e.ctrlKey) return; e.preventDefault(); e.stopPropagation(); var roomid = $(e.currentTarget).attr('href').substr(app.root.length); app.tryJoinRoom(roomid); }, updateUser: function() { this.update(); }, focus: function() { if (new Date().getTime() - this.lastUpdate > 60*1000) { app.send('/cmd rooms'); this.lastUpdate = new Date().getTime(); } }, update: function(rooms) { if (rooms) { this.lastUpdate = new Date().getTime(); app.roomsData = rooms; } else { rooms = app.roomsData; } var buf = '
'; if (!rooms) { buf += '

Loading...

'; this.$el.html(buf); return; } buf += '
'; if (rooms.userCount) { var userCount = Number(rooms.userCount); var battleCount = Number(rooms.battleCount); buf += '

'+userCount+' '+(userCount==1?'user':'users')+' online'; buf += ', '+battleCount+' active '+(battleCount==1?'battle':'battles'); buf += '

'; } buf += '

Official chat rooms

'; for (var i=0; i(' + Number(roomData.userCount) + ' users) ' + Tools.escapeHTML(roomData.title) + '
' + Tools.escapeHTML(roomData.desc||'')+ '
'; } buf += '

Chat rooms

'; rooms.chat.sort(function(a, b) { return b.userCount - a.userCount; }); for (var i=0; i(' + Number(roomData.userCount) + ' users) ' + Tools.escapeHTML(roomData.title) + '
' + escapedDesc + ''; } buf += ''; this.$el.html(buf); } }); }).call(this, jQuery);