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 [];
+});
+
+njx.addFilter('idle', function(list) {
+ if (list)
+ return list.filter(e => e.active === false);
+ else
+ return [];
+});
+
+njx.addFilter('map_prop', function(list, prop) {
+ if (list)
+ return list.map(e => e[prop]);
+ else
+ return [];
+});
+
/* 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}});
});