// 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); } }; });