summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2021-11-14 17:17:49 +0100
committerTor Andersson <tor@ccxvii.net>2021-11-20 13:14:24 +0100
commitd1318d147297161691f5048e1f2cb4e516159144 (patch)
treef8858e16eece0e4a1bf8deb29548c6421b54df03
parentf02fb77b1cb34b4622f2c90597ff616d4de65fc5 (diff)
downloadserver-d1318d147297161691f5048e1f2cb4e516159144.tar.gz
Add 'hidden' column to titles for beta-testing games.
-rw-r--r--server.js13
-rw-r--r--tools/readgame.sh4
-rw-r--r--tools/sql/data-300-ew.txt3
-rw-r--r--tools/sql/data-caesar.txt3
-rw-r--r--tools/sql/data-crusader.txt3
-rw-r--r--tools/sql/data-hammer.txt3
-rw-r--r--tools/sql/data-richard.txt3
-rw-r--r--tools/sql/data-tripoli.txt3
-rw-r--r--tools/sql/data.txt29
-rw-r--r--tools/sql/schema.txt12
-rw-r--r--tools/writegame.sh2
-rw-r--r--views/header.ejs20
-rw-r--r--views/index.ejs23
-rw-r--r--views/stats.ejs2
14 files changed, 72 insertions, 51 deletions
diff --git a/server.js b/server.js
index cf5a9d0..0e6c548 100644
--- a/server.js
+++ b/server.js
@@ -306,7 +306,7 @@ function must_be_logged_in(req, res, next) {
}
app.get('/', function (req, res) {
- res.render('index.ejs', { user: req.user, flash: req.flash('message') });
+ res.render('index.ejs', { user: req.user, titles: TITLES, flash: req.flash('message') });
});
app.get('/about', function (req, res) {
@@ -1741,12 +1741,7 @@ io.on('connection', (socket) => {
* HIDDEN EXTRAS
*/
-const QUERY_STATS = db.prepare(`
- SELECT title_id, scenario, result, count(*) AS count
- FROM game_full_view
- WHERE status=2 AND is_solo=0
- GROUP BY title_name, scenario, result
- `);
+const QUERY_STATS = db.prepare("SELECT * FROM game_stat_view");
app.get('/stats', function (req, res) {
LOG(req, "GET /stats");
@@ -1754,6 +1749,8 @@ app.get('/stats', function (req, res) {
res.render('stats.ejs', {
user: req.user,
stats: stats,
- title_role_map: ROLES, title_name_map: TITLES, title_rule_map: RULES
+ title_role_map: ROLES,
+ title_name_map: TITLES,
+ title_rule_map: RULES,
});
});
diff --git a/tools/readgame.sh b/tools/readgame.sh
index 5bf93de..4a8fdbd 100644
--- a/tools/readgame.sh
+++ b/tools/readgame.sh
@@ -1,10 +1,10 @@
#!/bin/bash
if [ -n "$1" -a -n "$2" ]
then
- sqlite3 db "select writefile('$2',state) from games where game_id = $1"
+ sqlite3 db "select writefile('$2',state) from game_state where game_id = $1"
elif [ -n "$1" ]
then
- sqlite3 db "select state from games where game_id = $1"
+ sqlite3 db "select state from game_state where game_id = $1"
else
echo "usage: bash tools/readgame.sh GAME [ state.json ]"
fi
diff --git a/tools/sql/data-300-ew.txt b/tools/sql/data-300-ew.txt
deleted file mode 100644
index 0f6cb16..0000000
--- a/tools/sql/data-300-ew.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-INSERT OR REPLACE INTO titles VALUES ( '300-earth-and-water', '300: Earth & Water', 267058 );
-INSERT OR REPLACE INTO roles VALUES ( '300-earth-and-water', 'Persia' );
-INSERT OR REPLACE INTO roles VALUES ( '300-earth-and-water', 'Greece' );
diff --git a/tools/sql/data-caesar.txt b/tools/sql/data-caesar.txt
deleted file mode 100644
index 1e11df8..0000000
--- a/tools/sql/data-caesar.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-INSERT OR REPLACE INTO titles VALUES ( 'julius-caesar', 'Julius Caesar', 37836 );
-INSERT OR REPLACE INTO roles VALUES ( 'julius-caesar', 'Caesar' );
-INSERT OR REPLACE INTO roles VALUES ( 'julius-caesar', 'Pompeius' );
diff --git a/tools/sql/data-crusader.txt b/tools/sql/data-crusader.txt
deleted file mode 100644
index 4f565b9..0000000
--- a/tools/sql/data-crusader.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-INSERT OR REPLACE INTO titles VALUES ( 'crusader-rex', 'Crusader Rex', 8481 );
-INSERT OR REPLACE INTO roles VALUES ( 'crusader-rex', 'Franks' );
-INSERT OR REPLACE INTO roles VALUES ( 'crusader-rex', 'Saracens' );
diff --git a/tools/sql/data-hammer.txt b/tools/sql/data-hammer.txt
deleted file mode 100644
index 853bed4..0000000
--- a/tools/sql/data-hammer.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-INSERT OR REPLACE INTO titles VALUES ( 'hammer-of-the-scots', 'Hammer of the Scots', 3685 );
-INSERT OR REPLACE INTO roles VALUES ( 'hammer-of-the-scots', 'England' );
-INSERT OR REPLACE INTO roles VALUES ( 'hammer-of-the-scots', 'Scotland' );
diff --git a/tools/sql/data-richard.txt b/tools/sql/data-richard.txt
deleted file mode 100644
index ff0787c..0000000
--- a/tools/sql/data-richard.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-INSERT OR REPLACE INTO titles VALUES ( 'richard-iii', 'Richard III', 25277 );
-INSERT OR REPLACE INTO roles VALUES ( 'richard-iii', 'York' );
-INSERT OR REPLACE INTO roles VALUES ( 'richard-iii', 'Lancaster' );
diff --git a/tools/sql/data-tripoli.txt b/tools/sql/data-tripoli.txt
deleted file mode 100644
index 0addd6d..0000000
--- a/tools/sql/data-tripoli.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-INSERT OR REPLACE INTO titles VALUES ( 'shores-of-tripoli', 'The Shores of Tripoli', 237860 );
-INSERT OR REPLACE INTO roles VALUES ( 'shores-of-tripoli', 'Tripolitania' );
-INSERT OR REPLACE INTO roles VALUES ( 'shores-of-tripoli', 'United States' );
diff --git a/tools/sql/data.txt b/tools/sql/data.txt
new file mode 100644
index 0000000..7268acc
--- /dev/null
+++ b/tools/sql/data.txt
@@ -0,0 +1,29 @@
+PRAGMA foreign_keys=0;
+
+INSERT OR REPLACE INTO titles VALUES ( '300-earth-and-water', '300: Earth & Water', 267058, 0 );
+INSERT OR REPLACE INTO roles VALUES ( '300-earth-and-water', 'Persia' );
+INSERT OR REPLACE INTO roles VALUES ( '300-earth-and-water', 'Greece' );
+
+INSERT OR REPLACE INTO titles VALUES ( 'crusader-rex', 'Crusader Rex', 8481, 0 );
+INSERT OR REPLACE INTO roles VALUES ( 'crusader-rex', 'Franks' );
+INSERT OR REPLACE INTO roles VALUES ( 'crusader-rex', 'Saracens' );
+
+INSERT OR REPLACE INTO titles VALUES ( 'julius-caesar', 'Julius Caesar', 37836, 0 );
+INSERT OR REPLACE INTO roles VALUES ( 'julius-caesar', 'Caesar' );
+INSERT OR REPLACE INTO roles VALUES ( 'julius-caesar', 'Pompeius' );
+
+INSERT OR REPLACE INTO titles VALUES ( 'hammer-of-the-scots', 'Hammer of the Scots', 3685, 0 );
+INSERT OR REPLACE INTO roles VALUES ( 'hammer-of-the-scots', 'England' );
+INSERT OR REPLACE INTO roles VALUES ( 'hammer-of-the-scots', 'Scotland' );
+
+INSERT OR REPLACE INTO titles VALUES ( 'richard-iii', 'Richard III', 25277, 0 );
+INSERT OR REPLACE INTO roles VALUES ( 'richard-iii', 'York' );
+INSERT OR REPLACE INTO roles VALUES ( 'richard-iii', 'Lancaster' );
+
+INSERT OR REPLACE INTO titles VALUES ( 'shores-of-tripoli', 'The Shores of Tripoli', 237860, 0 );
+INSERT OR REPLACE INTO roles VALUES ( 'shores-of-tripoli', 'Tripolitania' );
+INSERT OR REPLACE INTO roles VALUES ( 'shores-of-tripoli', 'United States' );
+
+INSERT OR REPLACE INTO titles VALUES ( 'wilderness-war', 'Wilderness War', 1822, 1 );
+INSERT OR REPLACE INTO roles VALUES ( 'wilderness-war', 'French' );
+INSERT OR REPLACE INTO roles VALUES ( 'wilderness-war', 'British' );
diff --git a/tools/sql/schema.txt b/tools/sql/schema.txt
index 5e80ec6..dc2bcc6 100644
--- a/tools/sql/schema.txt
+++ b/tools/sql/schema.txt
@@ -4,7 +4,8 @@ CREATE TABLE IF NOT EXISTS blacklist_mail ( mail TEXT NOT NULL PRIMARY KEY ) WIT
CREATE TABLE IF NOT EXISTS titles (
title_id TEXT NOT NULL PRIMARY KEY,
title_name TEXT NOT NULL,
- bgg INTEGER
+ bgg INTEGER,
+ hidden BOOLEAN
) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS roles (
@@ -290,3 +291,12 @@ BEGIN
DELETE FROM last_notified WHERE game_id = old.game_id;
DELETE FROM players WHERE game_id = old.game_id;
END;
+
+DROP VIEW IF EXISTS game_stat_view;
+CREATE VIEW game_stat_view AS
+ SELECT title_id, scenario, result, count(*) AS count
+ FROM game_full_view
+ NATURAL JOIN titles
+ WHERE hidden=0 AND is_solo=0 AND status=2
+ GROUP BY title_name, scenario, result
+ ;
diff --git a/tools/writegame.sh b/tools/writegame.sh
index 82cff23..a6e673d 100644
--- a/tools/writegame.sh
+++ b/tools/writegame.sh
@@ -1,7 +1,7 @@
#!/bin/bash
if [ -n "$1" -a -f "$2" ]
then
- sqlite3 db "update games set state=readfile('$2') where game_id = $1"
+ sqlite3 db "update game_state set state=readfile('$2') where game_id = $1"
else
echo "usage: bash tools/writegame.sh GAME state.json"
fi
diff --git a/views/header.ejs b/views/header.ejs
index 2628f8d..66f0f2e 100644
--- a/views/header.ejs
+++ b/views/header.ejs
@@ -2,9 +2,9 @@
<html>
<head>
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1">
-<% if (typeof refresh !== 'undefined' && refresh > 0) { _%>
+<% if (typeof refresh !== 'undefined' && refresh > 0) { -%>
<meta http-equiv="refresh" content="<%= refresh %>">
-<% } _%>
+<% } -%>
<title><%= title %></title>
<link rel="icon" href="/favicon.svg">
<link rel="stylesheet" href="/fonts/fonts.css">
@@ -16,21 +16,21 @@
<nav>
<a href="/about">About</a>
<a href="/forum">Forum</a>
-<%_ if (user) { _%>
-<%_ if (user.unread > 0) { _%>
+<% if (user) { -%>
+<% if (user.unread > 0) { -%>
<a href="/inbox">Inbox (<%= unread %>)</a>
-<%_ } else { _%>
+<% } else { -%>
<a href="/inbox">Inbox</a>
-<%_ } _%>
+<% } -%>
<a href="/profile">Profile (<%= user.name %>)</a>
-<%_ } else { _%>
+<% } else { -%>
<a href="/signup">Signup</a>
<a href="/login">Login</a>
-<%_ } _%>
+<% } -%>
</nav>
</header>
<article>
<h1><%= title %></h1>
-<%_ if (typeof flash !== 'undefined' && flash.length > 0) { _%>
+<% if (typeof flash !== 'undefined' && flash.length > 0) { -%>
<p class="error"><%= flash %></p>
-<%_ } _%>
+<% } -%>
diff --git a/views/index.ejs b/views/index.ejs
index 0b3180f..1f23381 100644
--- a/views/index.ejs
+++ b/views/index.ejs
@@ -1,6 +1,6 @@
-<%- include('header', { title: "Rally the Troops!" }) %>
+<%- include('header', { title: "Rally the Troops!" }) _%>
<style>
-.list { display: flex; flex-wrap: wrap; justify-content: left; }
+.list { display: flex; flex-wrap: wrap; justify-content: left; max-width: 800px; }
.list a { margin: 1em; display: block; }
.list img { box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.5); height: 200px; }
</style>
@@ -13,15 +13,16 @@ players.
Registration and use is free, and there are no ads.
<div class="list">
-<a href="/info/crusader-rex"><img src="/crusader-rex/cover.jpg"></a>
-<a href="/info/hammer-of-the-scots"><img src="/hammer-of-the-scots/cover.jpg"></a>
-<a href="/info/julius-caesar"><img src="/julius-caesar/cover.jpg"></a>
-<a href="/info/richard-iii"><img src="/richard-iii/cover.jpg"></a>
-</div>
-
-<div class="list">
-<a href="/info/300-earth-and-water"><img src="/300-earth-and-water/cover.jpg"></a>
-<a href="/info/shores-of-tripoli"><img src="/shores-of-tripoli/cover.jpg"></a>
+<%
+ for (let t in titles) {
+ let title = titles[t];
+ if (!title.hidden) {
+_%>
+<a href="/info/<%- title.title_id %>"><img src="/<%- title.title_id %>/cover.jpg"></a>
+<%
+ }
+ }
+_%>
</div>
<p>
diff --git a/views/stats.ejs b/views/stats.ejs
index 9e07aaf..95b52d2 100644
--- a/views/stats.ejs
+++ b/views/stats.ejs
@@ -15,6 +15,8 @@
return info ? info.count : 0;
}
for (let title_id in title_name_map) {
+ if (title_name_map[title_id].hidden)
+ continue;
let scenarios = title_rule_map[title_id].scenarios;
let roles = title_role_map[title_id].concat(['Draw']);
%><tr><th><%= title_name_map[title_id].title_name %><%