Files
node/node_modules/derby-examples/sink/lib/app/leaderboard.js
2012-05-30 23:00:06 -04:00

88 lines
2.3 KiB
JavaScript

// Generated by CoffeeScript 1.3.1
var addPlayer, app, get, randomScore, ready, render, view, _ref;
_ref = app = require('./index'), get = _ref.get, ready = _ref.ready, view = _ref.view;
render = require('./shared').render;
randomScore = function() {
return Math.floor(Math.random() * 20) * 5;
};
addPlayer = function(players, name) {
var id;
id = players.id();
return players.set(id, {
id: id,
name: name,
score: randomScore()
});
};
get('/leaderboard', function(page, model) {
return model.subscribe('leaderboard', function(err, leaderboard) {
var name, players, _i, _len, _ref1;
players = leaderboard.at('players');
if (!players.get()) {
_ref1 = ['Parker Blue', 'Kelly Green', 'Winston Fairbanks'];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
name = _ref1[_i];
addPlayer(players, name);
}
}
leaderboard.fn('_list', players, function(items) {
var id, item, out;
out = [];
for (id in items) {
item = items[id];
if (item != null ? item.id : void 0) {
out.push(item);
}
}
return out.sort(function(a, b) {
return (b.score - a.score) || (b.id > a.id);
});
});
model.ref(leaderboard.at('_selected'), players, leaderboard.at('_selectedId'));
return render(page, 'leaderboard');
});
});
ready(function(model) {
var leaderboard, newPlayer, players, selected, selectedId;
leaderboard = model.at('leaderboard');
players = leaderboard.at('players');
newPlayer = leaderboard.at('_newPlayer');
selectedId = leaderboard.at('_selectedId');
selected = leaderboard.at('_selected');
return app.leaderboard = {
add: function() {
var name;
if (!(name = newPlayer.get())) {
return;
}
addPlayer(players, name);
return newPlayer.set('');
},
remove: function() {
var id;
id = selected.get('id');
return players.del(id);
},
incr: function() {
return selected.incr('score', 5);
},
decr: function() {
return selected.incr('score', -5);
},
select: function(e, el) {
var id;
id = model.at(el).get('id');
return selectedId.set(id);
},
deselect: function() {
return selectedId.set(null);
}
};
});