}
return user ? callback(true, user) : callback(false);
});
+ spark.send('overview', config.rooms.reduce(function(data, room) {
+ data[room] = rooms[room].totusers;
+ return data;
+ }, {}));
};
/**
primus.send('getstatus', setStatus);
};
+ // Show the number of players inside each room
+ var roomsOverview = function(data) {
+ $('.users-counter').each(function() {
+ var room = $(this).prevAll('.room-name').text();
+ userscounters[room] = $(this);
+ $(this).text(data[room]);
+ });
+ };
+
var setStatus = function(data) {
if (data.status === 0) {
isplaying = true;
$togglechat.click(hideChat);
- $('.users-counter').each(function() {
- userscounters[$(this).prevAll('.room-name').text()] = $(this);
- });
-
// Open the realtime connection
primus = new Primus({ strategy: false });
primus.on('updateoverview', updateRoomsOverview);
primus.on('invalidnickname', invalidNickName);
primus.on('alreadyinaroom', alreadyInARoom);
+ primus.on('overview', roomsOverview);
primus.on('close', disconnect);
primus.on('ready', ready);
});
$.get('/artworks', function(data) {
$('.thumbnail').each(function() {
- var urls = data[$(this).attr('href')];
- for (var i = 0; i < urls.length; i++) {
- $('<img src="' + urls[i] + '" />').appendTo($(this));
- }
+ var $this = $(this);
+
+ data[$this.attr('href')].forEach(function(url) {
+ $('<img src="' + url + '" />').appendTo($this);
+ }, $this);
});
});
var primus = new Primus({ strategy: false });
+ primus.on('overview', function(rooms) {
+ Object.keys(rooms).forEach(function(room) {
+ $('#' + room).text(rooms[room]);
+ });
+ });
primus.on('updateoverview', function(room, players) {
$('#' + room).text(players);
});
exports.home = function(req, res) {
res.render('home', {
loggedin: req.session.user,
- rooms: config.rooms.map(function(room) {
- return { name: room, players: rooms[room].totusers };
- }),
+ rooms: config.rooms,
slogan: randomSlogan()
});
};
};
exports.room = function(req, res) {
- var stations = config.rooms.filter(function(room) {
- return room !== req.params.room;
- });
-
- if (stations.length === config.rooms.length) {
- return res.status(404).send(http.STATUS_CODES[404]);
+ if (~config.rooms.indexOf(req.params.room)) {
+ return res.render('room', {
+ loggedin: req.session.user,
+ roomname: req.params.room,
+ rooms: config.rooms,
+ slogan: randomSlogan()
+ });
}
-
- res.render('room', {
- loggedin: req.session.user,
- roomname: req.params.room,
- rooms: stations.map(function(room) {
- return { name: room, players: rooms[room].totusers };
- }),
- slogan: randomSlogan()
- });
+ res.status(404).send(http.STATUS_CODES[404]);
};
exports.signup = function(req, res) {
ul.thumbnails
- each room in rooms
li.span4
- a.thumbnail.relative(href=room.name)
- .room #{room.name} -
- span(id=room.name) #{room.players}
+ a.thumbnail.relative(href=room)
+ .room #{room} -
+ span(id=room)
| Players
append scripts
b.caret
ul.dropdown-menu
- each room in rooms
- li
- a(href=room.name)
- span.room-name #{room.name}
- i.icon-user.pull-right
- span.users-counter #{room.players}
+ - if (room !== roomname)
+ li
+ a(href=room)
+ span.room-name #{room}
+ i.icon-user.pull-right
+ span.users-counter
- if (locals.loggedin)
li.dropdown
a.dropdown-toggle(data-toggle="dropdown", href="#") Logged in as #{loggedin}