From 040292279b7fc004ad00e7177ff47926e4018826 Mon Sep 17 00:00:00 2001 From: Taka Date: Sat, 7 Jul 2018 07:21:30 +0000 Subject: [PATCH] Added players to the UI. --- .../webapp/data/default-templates/players.j2 | 2 + vasl_templates/webapp/data/nationalities.json | 35 ++++++ vasl_templates/webapp/generate.py | 19 ++++ vasl_templates/webapp/static/css/main.css | 29 ++++- vasl_templates/webapp/static/generate.js | 69 ++++++++++++ vasl_templates/webapp/static/main.js | 103 ++++++++---------- vasl_templates/webapp/templates/main.html | 30 +++-- vasl_templates/webapp/tests/test_generate.py | 74 ++++++++++--- vasl_templates/webapp/tests/test_players.py | 45 ++++++++ vasl_templates/webapp/tests/utils.py | 10 ++ 10 files changed, 328 insertions(+), 88 deletions(-) create mode 100644 vasl_templates/webapp/data/default-templates/players.j2 create mode 100644 vasl_templates/webapp/data/nationalities.json create mode 100644 vasl_templates/webapp/static/generate.js create mode 100644 vasl_templates/webapp/tests/test_players.py diff --git a/vasl_templates/webapp/data/default-templates/players.j2 b/vasl_templates/webapp/data/default-templates/players.j2 new file mode 100644 index 0000000..20b629c --- /dev/null +++ b/vasl_templates/webapp/data/default-templates/players.j2 @@ -0,0 +1,2 @@ +player1=[{{PLAYER_1}}] ; ELR=[{{PLAYER_1_ELR}}] ; SAN=[{{PLAYER_1_SAN}}] +player2=[{{PLAYER_2}}] ; ELR=[{{PLAYER_2_ELR}}] ; SAN=[{{PLAYER_2_SAN}}] diff --git a/vasl_templates/webapp/data/nationalities.json b/vasl_templates/webapp/data/nationalities.json new file mode 100644 index 0000000..281091d --- /dev/null +++ b/vasl_templates/webapp/data/nationalities.json @@ -0,0 +1,35 @@ +[ + +{ "display_name": "German", + "ob_colors": [ "OBCOL:german", "OBCOL2:german" ] +}, + +{ "display_name": "Russian", + "ob_colors": [ "OBCOL:russian", "OBCOL2:russian" ] +}, + +{ "display_name": "American", + "ob_colors": [ "OBCOL:american", "OBCOL2:american" ] +}, + +{ "display_name": "British", + "ob_colors": [ "OBCOL:british", "OBCOL2:british" ] +}, + +{ "display_name": "French", + "ob_colors": [ "OBCOL:french", "OBCOL2:french" ] +}, + +{ "display_name": "Italian", + "ob_colors": [ "OBCOL:italian", "OBCOL2:italian" ] +}, + +{ "display_name": "Finnish", + "ob_colors": [ "OBCOL:finns", "OBCOL2:finns" ] +}, + +{ "display_name": "Japanese", + "ob_colors": [ "OBCOL:japanese", "OBCOL2:japanese" ] +} + +] diff --git a/vasl_templates/webapp/generate.py b/vasl_templates/webapp/generate.py index 6d9651c..82d928f 100644 --- a/vasl_templates/webapp/generate.py +++ b/vasl_templates/webapp/generate.py @@ -1,6 +1,7 @@ """ Webapp handlers. """ import os +import json from flask import jsonify @@ -24,3 +25,21 @@ def get_templates(): templates[os.path.splitext(fname)[0]] = fp.read() return jsonify( templates ) + +# --------------------------------------------------------------------- + +@app.route( "/nationalities" ) +def get_nationalities(): + """Get the nationalities table.""" + + # load the nationalities table + fname = os.path.join( DATA_DIR, "nationalities.json" ) + with open(fname,"r") as fp: + nationalities = json.load( fp ) + + # auto-generate ID's for those entries that don't already have one + for nat in nationalities: + if "id" not in nat: + nat["id"] = nat["display_name"].lower() + + return jsonify( { n["id"]: n for n in nationalities } ) diff --git a/vasl_templates/webapp/static/css/main.css b/vasl_templates/webapp/static/css/main.css index 6014de6..ee22fe8 100644 --- a/vasl_templates/webapp/static/css/main.css +++ b/vasl_templates/webapp/static/css/main.css @@ -17,7 +17,6 @@ body { height: 100% ; } grid-template-columns: 25em 1fr ; -ms-grid-columns: 25em 1fr ; } #panel-scenario { - height: 100% ; grid-row-start: 1 ; -ms-grid-row: 1 ; grid-row-end: 3 ; -ms-grid-row-span: 2 ; } @@ -26,6 +25,7 @@ body { height: 100% ; } } #panel-ssr { height: 100% ; + grid-column-start: 2 ; -ms-grid-row: 2 ; -ms-grid-column: 2 ; } @@ -67,7 +67,7 @@ fieldset legend { padding: 0 0.2em 0 0.2em ; font-style: italic ; font-weight: b .label { font-weight: bold ; } input[type="text"] { margin-bottom: 0.25em ; } -#panel-scenario .form-grid { +#panel-scenario { display: grid ; display: -ms-grid ; grid-template-columns: 5em 1fr ; -ms-grid-columns: 5em 1fr ; } @@ -80,6 +80,31 @@ input[type="text"] { margin-bottom: 0.25em ; } #panel-scenario div[data-labelfor="scenario_date"] { -ms-grid-row: 3 ; -ms-grid-column: 1 ; } #panel-scenario div.scenario_date { -ms-grid-row: 3 ; -ms-grid-column: 2 ; } +#panel-players { + margin-top: 1em ; + display: grid ; display: -ms-grid ; + grid-template-columns: 5em 1fr 3em 3em ; -ms-grid-columns: 5em 1fr 3em 3em ; +} +#panel-players div[data-labelfor="elr"] { margin-left: 0.25em ; } +#panel-players div[data-labelfor="san"] { margin-left: 0.25em ; } +#panel-players select[name="player_1"] { margin-right: 0.5em ; } +#panel-players select[name="player_2"] { margin-right: 0.5em ; } +#panel-players select[name="player_1_elr"] { margin-right: 0.25em ; } +#panel-players select[name="player_2_elr"] { margin-right: 0.25em ; } +#panel-players input[data-id="players"] { margin-top: 0.25em ; } +/* FUDGE! IE hackamathon follows (nb: