saveUninitialized: false
}));
-nunjucks.configure("templates", {
+const njx = nunjucks.configure("templates", {
autoescape: true,
express: app
});
+njx.addFilter('active', function(list) {
+ if (list)
+ return list.filter(e => e.active === true);
+ else
+ return null;
+});
+
+njx.addFilter('idle', function(list) {
+ if (list)
+ return list.filter(e => e.active === false);
+ else
+ return null;
+});
+
/* Load each of our game mini-apps.
*
* Each "engine" we load here must have a property .Game on the
let idle = [];
for (let id in lmno.games) {
- if (lmno.games[id].players.length)
+ if (lmno.games[id].players.filter(p => p.active).length > 0)
active.push(lmno.games[id]);
else
idle.push(lmno.games[id]);
}
- response.render('admin.html', { test: "foobar", games: { active: active, idle: idle}});
+ response.render('admin.html', { games: { active: active, idle: idle}});
});
<ul>
{% for game in games.active %}
<li>
- {{ game.id }} ({{ game.clients.length }}/{{ game._players.length }} active)
- {% for player in game._players %}
- {{ player.name }}
- {% endfor %}
+ {{game.meta.name}}: {{ game.id }} {{ game.players.length }} players
+ <ul>
+ <li>
+ Active players:
+ {% for player in game.players|active %}
+ {{ player.name }}
+ {% endfor %}
+ </li>
+ <li>
+ Idle players:
+ {% for player in game.players|idle %}
+ {{ player.name }}
+ {% endfor %}
+ </li>
+ </ul>
</li>
{% endfor %}
</ul>
<ul>
{% for game in games.idle %}
<li>
- {{ game.id }} ({{ game._players.length }})
- {% for player in game._players %}
- {{ player.name }}
- {% endfor %}
+ {{game.meta.name}}: {{ game.id }} {{ game.players.length }} players
+ <ul>
+ <li>
+ {% for player in game.players %}
+ {{ player.name }}
+ {% endfor %}
+ </li>
+ </ul>
</li>
{% endfor %}
</ul>