A while ago we changed the storage for players. Previously we had a
_players array and a separate clients array for their
connections. Then at some point in the past we changed to an array
named "players" and instead of separate "clients" each player in
"players" now has its own list of connections.
Ever since that change the admin view has been broken since it wasn't
updated to track that change. Here we bring it up to date, (including
the addition of two nunjucks filters, "active" and "idle" to help with
this).
saveUninitialized: false
}));
saveUninitialized: false
}));
-nunjucks.configure("templates", {
+const njx = nunjucks.configure("templates", {
autoescape: true,
express: app
});
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
/* 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) {
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]);
}
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>
<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>
<ul>
{% for game in games.idle %}
<li>
<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>