mirror of
https://github.com/sstent/node.git
synced 2026-01-27 15:41:43 +00:00
88 lines
2.3 KiB
JavaScript
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);
|
|
}
|
|
};
|
|
});
|