From 956e57462a70ce03fce7ace5c871ed30c89451f9 Mon Sep 17 00:00:00 2001 From: Taka Date: Mon, 6 Aug 2018 04:22:25 +0000 Subject: [PATCH] Added vehicle/ordnance snippets. --- .../webapp/tests/conftest.py => conftest.py | 29 +- setup.py | 1 + vasl_templates/webapp/__init__.py | 1 + .../webapp/data/default-template-pack/baz.j2 | 4 +- .../data/default-template-pack/mol-p.j2 | 6 +- .../data/default-template-pack/ordnance.j2 | 40 ++ .../webapp/data/default-template-pack/pf.j2 | 6 +- .../webapp/data/default-template-pack/piat.j2 | 4 +- .../webapp/data/default-template-pack/psk.j2 | 4 +- .../data/default-template-pack/vehicles.j2 | 42 ++ .../webapp/data/ordnance/german.json | 175 +++++ .../webapp/data/ordnance/russian.json | 139 ++++ .../webapp/data/vehicles/german.json | 679 ++++++++++++++++++ .../webapp/data/vehicles/russian.json | 489 +++++++++++++ vasl_templates/webapp/main.py | 7 + vasl_templates/webapp/static/css/main.css | 13 + vasl_templates/webapp/static/css/tabs-ob.css | 42 +- .../webapp/static/css/tabs-scenario.css | 9 - vasl_templates/webapp/static/main.js | 75 +- vasl_templates/webapp/static/snippets.js | 318 ++++++-- vasl_templates/webapp/static/utils.js | 61 ++ .../webapp/static/vehicles_ordnance.js | 149 ++++ vasl_templates/webapp/templates/index.html | 39 +- .../webapp/templates/vo-report.html | 98 +++ .../data/default-template-pack/ob_setup.j2 | 2 +- .../data/default-template-pack/ordnance.j2 | 4 + .../data/default-template-pack/vehicles.j2 | 5 + .../tests/fixtures/data/ordnance/german.json | 17 + .../tests/fixtures/data/ordnance/russian.json | 17 + .../tests/fixtures/data/vehicles/german.json | 19 + .../tests/fixtures/data/vehicles/russian.json | 26 + .../fixtures/template-packs/full/ordnance.j2 | 1 + .../fixtures/template-packs/full/vehicles.j2 | 1 + .../template-packs/new-default/ordnance.j2 | 1 + .../template-packs/new-default/vehicles.j2 | 1 + .../vo-reports/ordnance/german/1940.txt | 34 + .../vo-reports/ordnance/german/1941.txt | 34 + .../vo-reports/ordnance/german/1942.txt | 34 + .../vo-reports/ordnance/german/1943.txt | 34 + .../vo-reports/ordnance/german/1944.txt | 34 + .../vo-reports/ordnance/german/1945.txt | 34 + .../vo-reports/ordnance/russian/1940.txt | 33 + .../vo-reports/ordnance/russian/1941.txt | 33 + .../vo-reports/ordnance/russian/1942.txt | 33 + .../vo-reports/ordnance/russian/1943.txt | 33 + .../vo-reports/ordnance/russian/1944.txt | 33 + .../vo-reports/ordnance/russian/1945.txt | 33 + .../vo-reports/vehicles/german/1940.txt | 124 ++++ .../vo-reports/vehicles/german/1941.txt | 124 ++++ .../vo-reports/vehicles/german/1942.txt | 124 ++++ .../vo-reports/vehicles/german/1943.txt | 124 ++++ .../vo-reports/vehicles/german/1944.txt | 124 ++++ .../vo-reports/vehicles/german/1945.txt | 124 ++++ .../vo-reports/vehicles/russian/1940.txt | 89 +++ .../vo-reports/vehicles/russian/1941.txt | 89 +++ .../vo-reports/vehicles/russian/1942.txt | 89 +++ .../vo-reports/vehicles/russian/1943.txt | 89 +++ .../vo-reports/vehicles/russian/1944.txt | 89 +++ .../vo-reports/vehicles/russian/1945.txt | 89 +++ vasl_templates/webapp/tests/test_ob_setup.py | 12 +- .../webapp/tests/test_scenario_persistence.py | 48 +- vasl_templates/webapp/tests/test_ssr.py | 9 +- .../webapp/tests/test_template_packs.py | 6 +- .../webapp/tests/test_vehicles_ordnance.py | 242 +++++++ .../webapp/tests/test_vo_reports.py | 94 +++ vasl_templates/webapp/tests/utils.py | 34 +- vasl_templates/webapp/vehicles_ordnance.py | 60 ++ 67 files changed, 4613 insertions(+), 96 deletions(-) rename vasl_templates/webapp/tests/conftest.py => conftest.py (69%) create mode 100644 vasl_templates/webapp/data/default-template-pack/ordnance.j2 create mode 100644 vasl_templates/webapp/data/default-template-pack/vehicles.j2 create mode 100644 vasl_templates/webapp/data/ordnance/german.json create mode 100644 vasl_templates/webapp/data/ordnance/russian.json create mode 100644 vasl_templates/webapp/data/vehicles/german.json create mode 100644 vasl_templates/webapp/data/vehicles/russian.json create mode 100644 vasl_templates/webapp/static/vehicles_ordnance.js create mode 100644 vasl_templates/webapp/templates/vo-report.html create mode 100644 vasl_templates/webapp/tests/fixtures/data/default-template-pack/ordnance.j2 create mode 100644 vasl_templates/webapp/tests/fixtures/data/default-template-pack/vehicles.j2 create mode 100644 vasl_templates/webapp/tests/fixtures/data/ordnance/german.json create mode 100644 vasl_templates/webapp/tests/fixtures/data/ordnance/russian.json create mode 100644 vasl_templates/webapp/tests/fixtures/data/vehicles/german.json create mode 100644 vasl_templates/webapp/tests/fixtures/data/vehicles/russian.json create mode 100644 vasl_templates/webapp/tests/fixtures/template-packs/full/ordnance.j2 create mode 100644 vasl_templates/webapp/tests/fixtures/template-packs/full/vehicles.j2 create mode 100644 vasl_templates/webapp/tests/fixtures/template-packs/new-default/ordnance.j2 create mode 100644 vasl_templates/webapp/tests/fixtures/template-packs/new-default/vehicles.j2 create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/german/1940.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/german/1941.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/german/1942.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/german/1943.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/german/1944.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/german/1945.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/russian/1940.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/russian/1941.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/russian/1942.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/russian/1943.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/russian/1944.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/russian/1945.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1940.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1941.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1942.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1943.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1944.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1945.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt create mode 100644 vasl_templates/webapp/tests/test_vehicles_ordnance.py create mode 100644 vasl_templates/webapp/tests/test_vo_reports.py create mode 100644 vasl_templates/webapp/vehicles_ordnance.py diff --git a/vasl_templates/webapp/tests/conftest.py b/conftest.py similarity index 69% rename from vasl_templates/webapp/tests/conftest.py rename to conftest.py index 5366863..fa65659 100644 --- a/vasl_templates/webapp/tests/conftest.py +++ b/conftest.py @@ -5,6 +5,7 @@ import threading import logging import tempfile import urllib.request +from urllib.error import URLError import pytest from flask import url_for @@ -17,6 +18,17 @@ FLASK_WEBAPP_PORT = 5001 # --------------------------------------------------------------------- +def pytest_addoption( parser ): + """Configure pytest options.""" + # add an option to control checking of vehicle/ordnance reports + # NOTE: This file needs to be in the project root for this to work :-/ + parser.addoption( + "--vo-reports", action="store_true", dest="check_vo_reports", default=False, + help="Check the vehicle/ordnance reports." +) + +# --------------------------------------------------------------------- + @pytest.fixture def webapp(): """Launch the webapp.""" @@ -32,7 +44,7 @@ def webapp(): # configure the webapp to use our test data # NOTE: Can't seem to change constants.DATA_DIR (probably some pytest funkiness :-/) - app.config["DATA_DIR"] = os.path.join( os.path.split(__file__)[0], "fixtures/data" ) + app.config["DATA_DIR"] = os.path.join( os.path.split(__file__)[0], "vasl_templates/webapp/tests/fixtures/data" ) # start the webapp server (in a background thread) logging.disable( logging.CRITICAL ) @@ -40,6 +52,21 @@ def webapp(): target = lambda: app.run( host="0.0.0.0", port=FLASK_WEBAPP_PORT, use_reloader=False ) ) thread.start() + + # wait for the server to start up + def is_ready(): + """Try to connect to the webapp server.""" + try: + resp = urllib.request.urlopen( app.url_for("ping") ).read() + assert resp == b"pong" + return True + except URLError: + return False + except Exception as ex: #pylint: disable=broad-except + assert False, "Unexpected exception: {}".format(ex) + utils.wait_for( 5, is_ready ) + + # return the server to the caller yield app # shutdown the webapp server diff --git a/setup.py b/setup.py index f41083d..fca6988 100644 --- a/setup.py +++ b/setup.py @@ -22,6 +22,7 @@ setup( extras_require = { "dev": [ "pytest==3.6.0", + "tabulate==0.8.2", "selenium==3.12.0", "pylint==1.9.2", "pytest-pylint==0.9.0", diff --git a/vasl_templates/webapp/__init__.py b/vasl_templates/webapp/__init__.py index d881a95..a4cde39 100644 --- a/vasl_templates/webapp/__init__.py +++ b/vasl_templates/webapp/__init__.py @@ -41,6 +41,7 @@ if os.path.isfile( _fname ): # load the application import vasl_templates.webapp.main #pylint: disable=cyclic-import +import vasl_templates.webapp.vehicles_ordnance #pylint: disable=cyclic-import import vasl_templates.webapp.snippets #pylint: disable=cyclic-import # initialize the application diff --git a/vasl_templates/webapp/data/default-template-pack/baz.j2 b/vasl_templates/webapp/data/default-template-pack/baz.j2 index 07f1168..74237cf 100644 --- a/vasl_templates/webapp/data/default-template-pack/baz.j2 +++ b/vasl_templates/webapp/data/default-template-pack/baz.j2 @@ -74,6 +74,6 @@ td.r { text-align: right ; } 8-{{BAZ_RANGE}} {%endif%} - + - \ No newline at end of file + diff --git a/vasl_templates/webapp/data/default-template-pack/mol-p.j2 b/vasl_templates/webapp/data/default-template-pack/mol-p.j2 index f5ff8cb..904e6db 100644 --- a/vasl_templates/webapp/data/default-template-pack/mol-p.j2 +++ b/vasl_templates/webapp/data/default-template-pack/mol-p.j2 @@ -49,7 +49,7 @@ ul { margin: 0 0 0 10px ; padding: 0 ; } 4-4 - + IFT DR original colored dr: @@ -57,6 +57,6 @@ ul { margin: 0 0 0 10px ; padding: 0 ; }
  • 1 = Flame in target Location
  • 6 = thrower breaks, Flame in their Location - + - \ No newline at end of file + diff --git a/vasl_templates/webapp/data/default-template-pack/ordnance.j2 b/vasl_templates/webapp/data/default-template-pack/ordnance.j2 new file mode 100644 index 0000000..17c0034 --- /dev/null +++ b/vasl_templates/webapp/data/default-template-pack/ordnance.j2 @@ -0,0 +1,40 @@ + + + + + + + + + + +
    + {{PLAYER_NAME}} Ordnance + +{%for ord in ORDNANCE%} +
    + {{ord.name}} +
    + {%if ord.notes%} + {{ord.note_number}}, {{ord.notes | join(", ")}} + {%else%} + {{ord.note_number}} + {%endif%} +
    +
    + {%for cap in ord.capabilities%}
    {{cap}}
    {%endfor%} +{%endfor%} + +
    + + diff --git a/vasl_templates/webapp/data/default-template-pack/pf.j2 b/vasl_templates/webapp/data/default-template-pack/pf.j2 index 4782469..47af71b 100644 --- a/vasl_templates/webapp/data/default-template-pack/pf.j2 +++ b/vasl_templates/webapp/data/default-template-pack/pf.j2 @@ -37,7 +37,7 @@ td.r { text-align: right ; } +1 non-AFV target original 6 = pinned - + @@ -57,7 +57,7 @@ td.r { text-align: right ; }
    TK#: 31
    16-3 - +
    - \ No newline at end of file + diff --git a/vasl_templates/webapp/data/default-template-pack/piat.j2 b/vasl_templates/webapp/data/default-template-pack/piat.j2 index b50410a..5187d48 100644 --- a/vasl_templates/webapp/data/default-template-pack/piat.j2 +++ b/vasl_templates/webapp/data/default-template-pack/piat.j2 @@ -46,6 +46,6 @@ td.r { text-align: right ; } 8-3 - + - \ No newline at end of file + diff --git a/vasl_templates/webapp/data/default-template-pack/psk.j2 b/vasl_templates/webapp/data/default-template-pack/psk.j2 index e9b82ee..39da701 100644 --- a/vasl_templates/webapp/data/default-template-pack/psk.j2 +++ b/vasl_templates/webapp/data/default-template-pack/psk.j2 @@ -48,6 +48,6 @@ td.r { text-align: right ; } 12-4 - + - \ No newline at end of file + diff --git a/vasl_templates/webapp/data/default-template-pack/vehicles.j2 b/vasl_templates/webapp/data/default-template-pack/vehicles.j2 new file mode 100644 index 0000000..3fe838d --- /dev/null +++ b/vasl_templates/webapp/data/default-template-pack/vehicles.j2 @@ -0,0 +1,42 @@ + + + + + + + + + + +
    + {{PLAYER_NAME}} Vehicles + +{%for veh in VEHICLES%} +
    + {{veh.name}} +
    + {%if veh.notes%} + {{veh.note_number}}, {{veh.notes | join(", ")}} + {%else%} + {{veh.note_number}} + {%endif%} +
    +
    + {% if veh.no_radio %}
    {{veh.no_radio}}
    {%endif%} + {%for cap in veh.capabilities%}
    {{cap}}
    {%endfor%} + {%if veh.crew_survival%}
    {{veh.crew_survival}}
    {%endif%} +{%endfor%} + +
    + + diff --git a/vasl_templates/webapp/data/ordnance/german.json b/vasl_templates/webapp/data/ordnance/german.json new file mode 100644 index 0000000..93a27dc --- /dev/null +++ b/vasl_templates/webapp/data/ordnance/german.json @@ -0,0 +1,175 @@ +[ + +{ "name": "5cm leGrW", + "capabilities_other": [ "5PP" ], + "note_number": "1", + "notes": [ "N" ] +}, +{ "name": "8cm GrW 34", + "capabilities": [ "NT", "QSU", "IR" ], + "capabilities2": { "s": 8 }, + "note_number": "2\u2020", + "notes": [ "N" ] +}, +{ "name": "10cm NbW 35", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "s": 10 }, + "note_number": "3", + "notes": [ "O" ] +}, +{ "name": "12cm GrW 42", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "s": 8 }, + "note_number": "4\u2020" +}, +{ "name": "2.8cm sPzB 41", + "capabilities": [ "NT", "QSU" ], + "capabilities_other": [ "uses APCR TK Table\u2020" ], + "note_number": "5\u2020", + "notes": [ "A\u2020", "N", "P" ] +}, +{ "name": "3.7cm PaK 35/36", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [4,1], [5,2], [4,3], [3,4] ], "H": "6[9]\u2020" }, + "note_number": "6", + "notes": [ "B\u2020", "N", "P" ] +}, +{ "name": "4.2cm lePaK 41", + "capabilities": [ "NT", "QSU" ], + "capabilities_other": [ "uses APCR TK Table\u2020" ], + "note_number": "7", + "notes": [ "A\u2020", "N" ] +}, +{ "name": "5cm PaK 38", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [5,1], [6,2], [5,3], [4,4] ] }, + "note_number": "8\u2020", + "notes": [ "N" ] +}, +{ "name": "7.5cm PaK 97/38", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "H": 6, "s": 7 }, + "note_number": "9", + "notes": [ "N" ] +}, +{ "name": "7.5cm PaK 40", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [5,2], [4,3], [3,4] ], "s": 7 }, + "note_number": "10\u2020", + "notes": [ "N" ] +}, +{ "name": "7.62cm PaK 36r", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [5,2], [4,3], [3,4] ], "s": 6 }, + "note_number": "11\u2020", + "notes": [ "N" ] +}, +{ "name": "8.8cm PaK 43", + "capabilities": [ "T" ], + "capabilities2": { "LF": [ "88\u2020", "1 ROF", "B11", "M4", "-1" ] }, + "note_number": "12", + "notes": [ "C\u2020" ] +}, +{ "name": "8.8cm PaK 43/41", + "capabilities": [ "NT" ], + "note_number": "13" +}, +{ "name": "12.8cm K 81/1", + "capabilities": [ "NT", "NM" ], + "note_number": "14" +}, +{ "name": "7.5cm leIG 18", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "H": 7 }, + "note_number": "15", + "notes": [ "N", "O" ] +}, +{ "name": "15cm sIG 33", + "capabilities": [ "NT" ], + "capabilities2": { "H": 7, "s": 8 }, + "note_number": "16", + "notes": [ "N" ] +}, +{ "name": "7.5cm LG 40", + "capabilities": [ "T", "QSU" ], + "capabilities2": { "H": 6 }, + "note_number": "17", + "notes": [ "N" ] +}, +{ "name": "10.5cm LG 42", + "capabilities": [ "T", "QSU" ], + "capabilities2": { "H": 6, "s": 6 }, + "note_number": "18\u2020", + "notes": [ "N" ] +}, +{ "name": "7.5cm leFK 16nA", + "capabilities": [ "NT", "QSU", "h-d" ], + "capabilities2": { "H": 5, "s": 8 }, + "note_number": "19" +}, +{ "name": "10.5cm leFH 18", + "capabilities": [ "NT" ], + "capabilities2": { "H": 6, "s": 8 }, + "note_number": "20", + "notes": [ "N" ] +}, +{ "name": "s 10cm K 18", + "capabilities": [ "NT", "NM" ], + "capabilities2": { "H": 6, "s": 8 }, + "note_number": "21", + "notes": [ "N" ] +}, +{ "name": "15cm sFH 18", + "capabilities": [ "NT", "NM" ], + "capabilities2": { "H": 6, "s": 8 }, + "note_number": "22", + "notes": [ "N" ] +}, +{ "name": "15cm K 18", + "capabilities": [ "NT", "RFNM" ], + "capabilities2": { "AP": 6 }, + "note_number": "23", + "notes": [ "N" ] +}, +{ "name": "17cm K 18", + "capabilities": [ "NT", "RFNM", "no IF" ], + "capabilities2": { "AP": 6 }, + "note_number": "24", + "notes": [ "N" ] +}, +{ "name": "2cm FlaK 30", + "capabilities": [ "T" ], + "capabilities2": { "LF": [ "20\u2020", "2 ROF", "B10", "NT" ] }, + "note_number": "25", + "notes": [ "C\u2020", "N" ] +}, +{ "name": "2cm FlaK 38", + "capabilities": [ "T" ], + "capabilities2": { "LF": [ "20\u2020", "2 ROF", "B11", "NT" ] }, + "note_number": "26", + "notes": [ "C\u2020", "N" ] +}, +{ "name": "2cm FlaKvierling 38", + "capabilities": [ "T" ], + "capabilities_other": [ "4TK DR\u2020" ], + "note_number": "27\u2020", + "notes": [ "N" ] +}, +{ "name": "3.7cm FlaK 36 o. 37", + "capabilities": [ "T" ], + "capabilities2": { "H": "5[9]\u2020" }, + "note_number": "28", + "notes": [ "B\u2020", "N" ] +}, +{ "name": "3.7cm FlaK 43", + "capabilities": [ "T" ], + "note_number": "29" +}, +{ "name": "8.8cm FlaK 18 o. 36", + "capabilities": [ "T" ], + "capabilities2": { "A": [ [5,2], [4,3], [3,4] ], "LF": [ "88L\u2020", "1 ROF", "B11" ] }, + "note_number": "30", + "notes": [ "C\u2020", "N" ] +} + +] diff --git a/vasl_templates/webapp/data/ordnance/russian.json b/vasl_templates/webapp/data/ordnance/russian.json new file mode 100644 index 0000000..1dbae2b --- /dev/null +++ b/vasl_templates/webapp/data/ordnance/russian.json @@ -0,0 +1,139 @@ +[ + +{ "name": "50mm RM obr. 40", + "capabilities_other": [ "4PP" ], + "note_number": "1" +}, +{ "name": "37mm PM-39", + "capabilities_other": [ "1PP", "Air Bursts & Acq. NA" ], + "note_number": "1.1", + "notes": [ "A" ] +}, +{ "name": "82mm BM obr. 37", + "capabilities": [ "NT", "QSU", "IR" ], + "capabilities2": { "s": 8 }, + "note_number": "2\u2020" +}, +{ "name": "107mm GVPM obr. 38", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "s": 8 }, + "note_number": "3", + "notes": [ "A" ] +}, +{ "name": "120mm PM obr. 38", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "s": 8 }, + "note_number": "4" +}, +{ "name": "160mm PM obr. 43", + "capabilities": [ "NT", "no IF" ], + "note_number": "5" +}, +{ "name": "37mm PTP obr. 30", + "capabilities": [ "NT", "QSU" ], + "note_number": "6" +}, +{ "name": "45mm PTP obr. 32", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [4,2], [5,3], [6,4], [7,5] ] }, + "note_number": "7" +}, +{ "name": "45mm PTP obr. 42", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [4,2], [5,3], [6,4], [7,5] ] }, + "note_number": "8" +}, +{ "name": "57mm PTP obr. 43", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [4,3], [5,4], [6,5] ] }, + "note_number": "9\u2020" +}, +{ "name": "100mm PTP obr. 44", + "capabilities": [ "NT" ], + "note_number": "10" +}, +{ "name": "37mm PP obr. 15R", + "capabilities": [ "NT", "QSU", "h-d" ], + "note_number": "11" +}, +{ "name": "76.2mm PP obr. 27", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "H": 6, "s": 8 }, + "note_number": "12", + "notes": [ "A" ] +}, +{ "name": "76.2mm P obr. 00/02P", + "capabilities": [ "NT", "QSU", "h-d" ], + "capabilities2": { "s": 8 }, + "note_number": "13" +}, +{ "name": "76.2mm P obr. 02/30", + "capabilities": [ "NT", "QSU", "h-d" ], + "capabilities2": { "s": 8 }, + "note_number": "14" +}, +{ "name": "76.2mm P obr. 39", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [4,2], [5,3], [6,4], [7,5] ], "s": 8 }, + "note_number": "15\u2020" +}, +{ "name": "76.2mm P obr. 36", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [4,2] ], "s": 8 }, + "note_number": "16\u2020" +}, +{ "name": "85mm P obr. 44", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "A": [ [5,4], [6,5] ], "s": 8 }, + "note_number": "17" +}, +{ "name": "107mm P obr. 10/30", + "capabilities": [ "NT", "h-d" ], + "capabilities2": { "s": 8 }, + "note_number": "18" +}, +{ "name": "122mm G obr. 10/30", + "capabilities": [ "NT", "h-d" ], + "capabilities2": { "s": 8 }, + "note_number": "19" +}, +{ "name": "122mm G obr. 38", + "capabilities": [ "NT" ], + "capabilities2": { "H": 6, "s": 8 }, + "note_number": "20" +}, +{ "name": "122mm P obr. 31", + "capabilities": [ "NT" ], + "capabilities2": { "s": 8 }, + "note_number": "21" +}, +{ "name": "152mm G obr. 38", + "capabilities": [ "NT" ], + "note_number": "22" +}, +{ "name": "152mm GP obr. 37", + "capabilities": [ "NT" ], + "note_number": "23" +}, +{ "name": "203mm B-4 obr. 1931", + "capabilities": [ "NT", "RFNM", "no IF" ], + "note_number": "23.1" +}, +{ "name": "25mm ZP obr. 40", + "capabilities": [ "T" ], + "note_number": "24" +}, +{ "name": "37mm ZP obr. 39", + "capabilities": [ "T" ], + "note_number": "25\u2020" +}, +{ "name": "76.2mm ZP obr. 38", + "capabilities": [ "T" ], + "note_number": "26\u2020" +}, +{ "name": "85mm ZP obr. 39", + "capabilities": [ "T" ], + "note_number": "27" +} + +] diff --git a/vasl_templates/webapp/data/vehicles/german.json b/vasl_templates/webapp/data/vehicles/german.json new file mode 100644 index 0000000..d5415c6 --- /dev/null +++ b/vasl_templates/webapp/data/vehicles/german.json @@ -0,0 +1,679 @@ +[ + +{ "name": "PzKpfw IB", + "CS#": 2, + "capabilities2": { "sD": 6 }, + "note_number": "1\u2020", + "notes": [ "N" ] +}, +{ "name": "PzKpfw IIA", + "CS#": 3, + "capabilities2": { "sD": 6 }, + "note_number": "2" +}, +{ "name": "PzKpfw IIF", + "CS#": 3, + "capabilities2": { "sD": 7 }, + "note_number": "3", + "notes": [ "N" ] +}, +{ "name": "PzKpfw II(Fl)", + "CS#": "2:brewup", + "capabilities2": { "sD": "7\u2020" }, + "note_number": "4\u2020" +}, +{ "name": "PzKpfw IIL", + "CS#": 4, + "capabilities2": { "sD": 7 }, + "note_number": "5" +}, +{ "name": "PzKpfw 35t", + "CS#": 4, + "capabilities2": { "sD": 5 }, + "note_number": "6\u2020" +}, +{ "name": "PzKpfw 38(t)A", + "CS#": 4, + "capabilities2": { "A": [ [4,1], [5,2] ], "sD": 6 }, + "note_number": "7\u2020", + "notes": [ "E" ] +}, +{ "name": "PzKpfw 38(t)E", + "CS#": 4, + "capabilities2": { "A": [ [4,1], [5,2] ], "sD": 7 }, + "note_number": "8\u2020", + "notes": [ "E" ] +}, +{ "name": "Aufklaerer 38(t)", + "CS#": 5, + "note_number": "9", + "notes": [ "A\u2020", "E" ] +}, +{ "name": "FT-17 730m(f)", + "CS#": 2, + "note_number": "9.1\u2020", + "notes": [ "a", "c", "f" ] +}, +{ "name": "FT-17 730(f)", + "CS#": 2, + "capabilities2": { "AP": 9 }, + "note_number": "9.1\u2020", + "notes": [ "a", "c", "f" ] +}, +{ "name": "38H 735(f)", + "CS#": 3, + "capabilities2": { "AP": 10 }, + "note_number": "9.2", + "notes": [ "a", "b\u2020", "f" ] +}, +{ "name": "35-S 739(f)", + "CS#": 4, + "note_number": "9.3", + "notes": [ "a", "b\u20202", "d\u20201", "f" ] +}, +{ "name": "PzKpfw IIID", + "CS#": 5, + "capabilities2": { "sD": 6 }, + "note_number": "10\u2020" +}, +{ "name": "PzKpfw IIIF", + "CS#": 5, + "capabilities2": { "A": [ [4,1] ], "sD": 7 }, + "note_number": "11\u2020" +}, +{ "name": "PzKpfw IIIG", + "CS#": 5, + "capabilities2": { "A": [ [4,1] ], "sD": 7 }, + "note_number": "12", + "notes": [ "N" ] +}, +{ "name": "PzKpfw IIIH", + "CS#": 6, + "capabilities2": { "A": [ [4,1] ], "sD": 7 }, + "note_number": "13\u2020", + "notes": [ "N" ] +}, +{ "name": "PzKpfw IIIJ", + "CS#": 6, + "capabilities2": { "A": [ [6,2] ], "sD": 7 }, + "note_number": "14\u2020", + "notes": [ "N", "S" ] +}, +{ "name": "PzKpfw IIIL", + "CS#": 5, + "capabilities2": { "A": [ [6,2] ], "sD": 7 }, + "note_number": "15\u2020", + "notes": [ "B\u2020", "N", "S" ] +}, +{ "name": "PzKpfw IIIN", + "CS#": 5, + "capabilities2": { "H": 9, "s": 9, "sD": 7 }, + "note_number": "16", + "notes": [ "B\u2020", "N", "S" ] +}, +{ "name": "PzKpfw III(Fl)", + "CS#": 3, + "capabilities2": { "sD": 7 }, + "note_number": "17" +}, +{ "name": "PzKpfw IVA", + "CS#": 5, + "capabilities2": { "AP": 7, "s": 9, "sD": 6 }, + "note_number": "18\u2020" +}, +{ "name": "PzKpfw IVC", + "CS#": 5, + "capabilities2": { "AP": 7, "s": 9, "sD": 6 }, + "note_number": "19\u2020" +}, +{ "name": "PzKpfw IVD", + "CS#": 5, + "capabilities2": { "H": 6, "AP": 7, "s": 9, "sD": 7 }, + "note_number": "20", + "notes": [ "N", "R\u2020" ] +}, +{ "name": "PzKpfw IVE", + "CS#": 6, + "capabilities2": { "H": 6, "AP": 7, "s": 9, "sD": 7 }, + "note_number": "21", + "notes": [ "N", "R\u2020" ] +}, +{ "name": "PzKpfw IVF1", + "CS#": 6, + "capabilities2": { "H": 6, "AP": 7, "s": 9, "sD": 7 }, + "note_number": "22", + "notes": [ "N", "R\u2020" ] +}, +{ "name": "PzKpfw IVF2", + "CS#": 6, + "capabilities2": { "A": [ [5,2] ], "s": 8, "sD": 6 }, + "note_number": "23\u2020", + "notes": [ "N", "S" ] +}, +{ "name": "PzKpfw IVH", + "CS#": 6, + "capabilities2": { "A": [ [5,2] ], "s": 8, "sD": 5 }, + "note_number": "24\u2020", + "notes": [ "B\u2020", "S" ] +}, +{ "name": "PzKpfw IVJ", + "CS#": 6, + "capabilities2": { "A": [ [3,4] ], "s": 8, "sN": 9 }, + "note_number": "25", + "notes": [ "S" ] +}, +{ "name": "PzKpfw VD", + "CS#": "5:brewup", + "capabilities2": { "sD": 5 }, + "note_number": "26", + "notes": [ "F\u2020" ] +}, +{ "name": "PzKpfw VG", + "CS#": 6, + "capabilities2": { "sN": [ [7,4] ] }, + "note_number": "27\u2020", + "notes": [ "H\u2020" ] +}, +{ "name": "PzKpfw M15/42(i)", + "CS#": 4, + "note_number": "28", + "notes": [ "I" ] +}, +{ "name": "PzKpfw P26/40(i)", + "CS#": 4, + "capabilities2": { "s": 8 }, + "note_number": "29", + "notes": [ "I" ] +}, +{ "name": "PzKpfw VIE", + "CS#": 6, + "capabilities2": { "A": [ [6,2] ], "sD": 7, "M": "7\u2020" }, + "note_number": "30\u2020", + "notes": [ "K", "N" ] +}, +{ "name": "PzKpfw VIE (L)", + "CS#": 6, + "capabilities2": { "A": [ [4,4] ], "sN": [ [7,4] ] }, + "note_number": "31", + "notes": [ "K" ] +}, +{ "name": "PzKpfw VIB", + "CS#": 6, + "capabilities2": { "sN": 9 }, + "note_number": "32\u2020", + "notes": [ "K" ] +}, +{ "name": "StuG IIIB", + "CS#": 4, + "capabilities2": { "H": 6, "AP": 7, "s": 9, "sD": 7 }, + "note_number": "33\u2020" +}, +{ "name": "StuG IIIG", + "CS#": 4, + "capabilities2": { "A": [ [6,2] ], "s": 8, "sD": 7 }, + "note_number": "34\u2020", + "notes": [ "N", "P\u2020", "S" ] +}, +{ "name": "StuG IIIG (L)", + "CS#": 4, + "capabilities2": { "A": [ [4,4] ], "s": 8, "sN": 9 }, + "note_number": "35", + "notes": [ "O\u2020", "Q\u2020", "S" ] +}, +{ "name": "StuH 42", + "CS#": 4, + "capabilities2": { "H": 9, "s": 9, "sD": 7 }, + "note_number": "36\u2020", + "notes": [ "N", "P\u2020", "S" ] +}, +{ "name": "StuH 42 (L)", + "CS#": 4, + "capabilities2": { "H": 9, "s": 9, "sN": 9 }, + "note_number": "35", + "notes": [ "O\u2020", "Q\u2020", "S" ] +}, +{ "name": "StuPz IV", + "CS#": 6, + "no_if": true, + "capabilities2": { "H": 7, "s": 9 }, + "note_number": "37\u2020", + "notes": [ "S" ] +}, +{ "name": "Sturmtiger", + "CS#": 5, + "no_if": true, + "capabilities2": { "sN": 9 }, + "note_number": "37.1\u2020", + "notes": [ "K" ] +}, +{ "name": "PzJg Tiger", + "CS#": 7, + "note_number": "38" +}, +{ "name": "StuG 75/18(i)", + "CS#": 3, + "capabilities2": { "H": 7, "s": 9 }, + "note_number": "39", + "notes": [ "I", "P\u2020" ] +}, +{ "name": "StuG 75/34(i)", + "CS#": 3, + "capabilities2": { "s": 9 }, + "note_number": "40", + "notes": [ "I", "P\u2020" ] +}, +{ "name": "StuG 105/25(i)", + "CS#": 3, + "no_if": true, + "capabilities2": { "H": 7, "s": 9 }, + "note_number": "41", + "notes": [ "I", "P\u2020" ] +}, +{ "name": "StuG 75/46(i)", + "CS#": 3, + "capabilities2": { "s": 9 }, + "note_number": "42", + "notes": [ "I", "P\u2020" ] +}, +{ "name": "PzJg I", + "CS#": 3, + "capabilities2": { "A": [ [5,1] ], "HE": 7 }, + "note_number": "43", + "notes": [ "N" ] +}, +{ "name": "PzJg 35R(f)", + "CS#": 3, + "capabilities2": { "A": [ [5,1] ], "HE": 7 }, + "note_number": "44", + "notes": [ "a" ] +}, +{ "name": "Pz 35R 731(f)", + "CS#": 2, + "note_number": "44.1\u2020", + "notes": [ "a" ] +}, +{ "name": "Marder I", + "CS#": "4:brewup", + "capabilities2": { "A": [ [6,2] ], "HE": 7, "s": 7 }, + "note_number": "45\u2020", + "notes": [ "a" ] +}, +{ "name": "GSW 39H(f) Pak", + "CS#": 3, + "capabilities2": { "A": [ [4,4] ], "HE": 9 }, + "note_number": "45.1", + "notes": [ "a", "e" ] +}, +{ "name": "Marder II", + "CS#": "4:brewup", + "capabilities2": { "A": [ [6,2] ], "HE": 7, "s": 7 }, + "note_number": "46", + "notes": [ "M\u2020", "N" ] +}, +{ "name": "Marder III(t)H", + "CS#": "4:brewup", + "capabilities2": { "A": [ [6,2] ], "HE": 7, "s": 7, "sD": 6 }, + "note_number": "47", + "notes": [ "E", "G", "N" ] +}, +{ "name": "Marder III(t)M", + "CS#": "4:brewup", + "capabilities2": { "A": [ [5,3] ], "HE": 7, "s": 7, "sD": 5 }, + "note_number": "48", + "notes": [ "E" ] +}, +{ "name": "PzJg III/IV", + "CS#": 5, + "capabilities2": { "HE": 7 }, + "note_number": "49", + "notes": [ "M\u2020" ] +}, +{ "name": "JgdPz 38(t)", + "CS#": 4, + "capabilities2": { "A": [ [4,4] ], "HE": 7 }, + "note_number": "50", + "notes": [ "E", "O\u2020" ] +}, +{ "name": "JgdPz 38(t) (Fl)", + "CS#": 4, + "note_number": "51", + "notes": [ "E", "O\u2020" ] +}, +{ "name": "JgdPz IV", + "CS#": 4, + "capabilities2": { "A": [ [4,4] ], "HE": 7, "s": 7, "sN": [ [7,4] ] }, + "note_number": "52", + "notes": [ "S" ] +}, +{ "name": "JgdPz IV (L)", + "CS#": 4, + "capabilities2": { "A": [ [4,4] ], "HE": 7, "s": 7, "sN": [ [8,4] ] }, + "note_number": "52", + "notes": [ "S" ] +}, +{ "name": "StuIG 33B", + "CS#": 5, + "no_if": true, + "capabilities2": { "H": 7, "s": 9 }, + "note_number": "53\u2020" +}, +{ "name": "JgdPz IV/70", + "CS#": 4, + "capabilities2": { "HE": 7, "sN": 9 }, + "note_number": "54\u2020", + "notes": [ "S" ] +}, +{ "name": "JgdPz V", + "CS#": 6, + "capabilities2": { "HE": 7, "sN": 9 }, + "note_number": "55", + "notes": [ "H" ] +}, +{ "name": "JgdPz VI", + "CS#": 7, + "capabilities2": { "HE": 7, "sN": 9 }, + "note_number": "56" +}, +{ "name": "SPW 250/1", + "CS#": 4, + "note_number": "57", + "notes": [ "N" ] +}, +{ "name": "SPW 250/sMG", + "CS#": "4\u2020", + "note_number": "58\u2020", + "notes": [ "J\u2020", "N" ] +}, +{ "name": "SPW 250/7", + "CS#": "4:brewup", + "capabilities": [ "IR" ], + "capabilities2": { "s": 8 }, + "note_number": "59", + "notes": [ "J\u2020", "N" ] +}, +{ "name": "SPW 250/8", + "CS#": "4:brewup", + "capabilities2": { "H": 6, "s": 8 }, + "note_number": "60", + "notes": [ "Q\u2020" ] +}, +{ "name": "SPW 250/9", + "CS#": 4, + "note_number": "61\u2020", + "notes": [ "A\u2020" ] +}, +{ "name": "SPW 250/10", + "CS#": 4, + "capabilities2": { "A": [ [4,1] ] }, + "note_number": "62", + "notes": [ "J\u2020", "N" ] +}, +{ "name": "SPW 251/1", + "CS#": 5, + "note_number": "63", + "notes": [ "C\u2020", "N" ] +}, +{ "name": "SPW 251/sMG", + "CS#": "5\u2020", + "note_number": "58\u2020", + "notes": [ "C\u2020", "J\u2020", "N" ] +}, +{ "name": "SPW 251/2", + "CS#": "4:brewup", + "capabilities": [ "IR" ], + "capabilities2": { "s": 8 }, + "note_number": "59", + "notes": [ "C\u2020", "J\u2020", "N" ] +}, +{ "name": "SPW 251/9", + "CS#": "4:brewup", + "capabilities2": { "H": 6, "s": 9 }, + "note_number": "64", + "notes": [ "C\u2020", "N", "Q\u2020" ] +}, +{ "name": "SPW 251/10", + "CS#": 4, + "capabilities2": { "A": [ [4,1] ] }, + "note_number": "65", + "notes": [ "C\u2020", "J\u2020", "N" ] +}, +{ "name": "SPW 251/16", + "CS#": "4:brewup", + "note_number": "66\u2020" +}, +{ "name": "SPW 251/21", + "CS#": 4, + "note_number": "66.1\u2020" +}, +{ "name": "SPW 251/22", + "CS#": "4:brewup", + "capabilities2": { "HE": 7, "s": 7 }, + "note_number": "67", + "notes": [ "J\u2020" ] +}, +{ "name": "SPW S307(f)", + "CS#": 4, + "capabilities2": { "A": [ [4,4] ], "HE": 9 }, + "note_number": "67.1", + "notes": [ "a", "e" ] +}, +{ "name": "mSPW S307(f)", + "CS#": 4, + "no_if": true, + "capabilities": [ "IR" ], + "capabilities2": { "s": 5 }, + "note_number": "67.2", + "notes": [ "a", "e" ] +}, +{ "name": "Kfz 13", + "CS#": 2, + "note_number": "68\u2020" +}, +{ "name": "PSW 221", + "CS#": 2, + "capabilities2": { "sD": 6 }, + "note_number": "69\u2020", + "notes": [ "A\u2020", "N" ] +}, +{ "name": "PSW 222", + "CS#": 3, + "capabilities2": { "sD": 6 }, + "note_number": "70\u2020", + "notes": [ "A\u2020", "N" ] +}, +{ "name": "PSW 222 (L)", + "CS#": 3, + "capabilities2": { "sD": 6 }, + "note_number": "70\u2020", + "notes": [ "A\u2020", "N" ] +}, +{ "name": "PSW 231 (6 rad)", + "CS#": 4, + "note_number": "71\u2020" +}, +{ "name": "PSW 231 (8 rad)", + "CS#": 4, + "capabilities2": { "sD": 6 }, + "note_number": "72\u2020", + "notes": [ "N" ] +}, +{ "name": "PSW 232 (8 rad)", + "CS#": 4, + "capabilities2": { "sD": 6 }, + "note_number": "72", + "notes": [ "N" ] +}, +{ "name": "PSW 233", + "CS#": 5, + "capabilities2": { "H": 8, "s": 9, "sD": 7 }, + "note_number": "73", + "notes": [ "N" ] +}, +{ "name": "PSW 234/1", + "CS#": 5, + "note_number": "74", + "notes": [ "A\u2020" ] +}, +{ "name": "PSW 234/2", + "CS#": 4, + "capabilities2": { "A": [ [5,3] ], "sD": 7 }, + "note_number": "75" +}, +{ "name": "PSW 234/3", + "CS#": 5, + "capabilities2": { "H": 8, "s": 9 }, + "note_number": "76", + "notes": [ "Q\u2020" ] +}, +{ "name": "PSW 234/4", + "CS#": "5:brewup", + "capabilities2": { "HE": 7, "s": 7 }, + "note_number": "77\u2020" +}, +{ "name": "sIG IB", + "CS#": "4:brewup", + "no_if": true, + "capabilities2": { "H": 6, "s": 9 }, + "note_number": "78", + "notes": [ "G" ] +}, +{ "name": "sIG II", + "CS#": "4:brewup", + "no_if": true, + "capabilities2": { "H": 6, "s": 9 }, + "note_number": "79", + "notes": [ "N" ] +}, +{ "name": "sIG 38(t)M", + "CS#": "4:brewup", + "no_if": true, + "capabilities2": { "H": 6, "s": 9 }, + "note_number": "80", + "notes": [ "E", "N" ] +}, +{ "name": "PzA II", + "CS#": 4, + "capabilities2": { "H": 5, "s": 8 }, + "note_number": "81", + "notes": [ "M\u2020" ] +}, +{ "name": "PzA LrS(f)", + "CS#": 4, + "no_if": true, + "capabilities2": { "H": 4, "s": 8 }, + "note_number": "82", + "notes": [ "a", "N" ] +}, +{ "name": "GSW 39H(f)", + "CS#": 4, + "capabilities2": { "H": 4, "s": 7 }, + "note_number": "82.1", + "notes": [ "a", "e" ] +}, +{ "name": "PzA III/IV", + "CS#": 6, + "no_if": true, + "capabilities2": { "H": 5, "s": 8 }, + "note_number": "83" +}, +{ "name": "FlaKPz 38(t)", + "CS#": 4, + "note_number": "84", + "notes": [ "A\u2020", "E" ] +}, +{ "name": "37 FlaK/Pz IV", + "CS#": 5, + "note_number": "85\u2020", + "notes": [ "A\u2020" ] +}, +{ "name": "(Moebelwagen)", + "CS#": 6, + "note_number": "85\u2020", + "notes": [ "A\u2020" ] +}, +{ "name": "FlaKPz IV/20", + "CS#": 6, + "note_number": "86", + "notes": [ "A\u2020" ] +}, +{ "name": "FlaKPz IV/37", + "CS#": 6, + "note_number": "87", + "notes": [ "A\u2020" ] +}, +{ "name": "SdKfz 10/4", + "CS#": 5, + "note_number": "88", + "notes": [ "A\u2020", "D\u2020", "N" ] +}, +{ "name": "SdKfz 10/5", + "CS#": 4, + "note_number": "88.1\u2020", + "notes": [ "A\u20202", "D\u20201" ] +}, +{ "name": "SdKfz 6/2", + "CS#": 5, + "note_number": "89", + "notes": [ "A\u2020", "D\u2020", "N" ] +}, +{ "name": "SdKfz 7/1", + "CS#": 4, + "note_number": "90", + "notes": [ "A\u2020", "D\u2020", "N" ] +}, +{ "name": "Kfz 4", + "CS#": 3, + "note_number": "91\u2020", + "notes": [ "N" ] +}, +{ "name": "2cm FlaK LKW", + "CS#": 5, + "note_number": "92", + "notes": [ "A\u2020" ] +}, +{ "name": "3.7cm FlaK LKW", + "CS#": 5, + "note_number": "92", + "notes": [ "A\u2020" ] +}, +{ "name": "Goliath", + "note_number": "93\u2020", + "notes": [ "L\u2020" ] +}, +{ "name": "Kfz 1", + "cs#": "2\u2020", + "note_number": "94\u2020", + "notes": [ "L\u2020", "N" ] +}, +{ "name": "Kfz 1/20", + "cs#": 2, + "note_number": "95\u2020", + "notes": [ "L\u2020" ] +}, +{ "name": "Opel 6700 (Blitz)", + "cs#": 6, + "note_number": "96", + "notes": [ "N" ] +}, +{ "name": "Buessing-NAG 4500", + "cs#": 7, + "note_number": "96", + "notes": [ "N" ] +}, +{ "name": "SdKfz 2", + "cs#": 2, + "note_number": "97\u2020", + "notes": [ "L\u2020", "N" ] +}, +{ "name": "SdKfz 7", + "cs#": 6, + "note_number": "98", + "notes": [ "N" ] +}, +{ "name": "SdKfz 11", + "cs#": 5, + "note_number": "99", + "notes": [ "N" ] +} + +] diff --git a/vasl_templates/webapp/data/vehicles/russian.json b/vasl_templates/webapp/data/vehicles/russian.json new file mode 100644 index 0000000..7448fe1 --- /dev/null +++ b/vasl_templates/webapp/data/vehicles/russian.json @@ -0,0 +1,489 @@ +[ + +{ "name": "T-37", + "no_radio": "\u00ae", + "CS#": 2, + "note_number": "1", + "notes": [ "H\u2020", "M" ] +}, +{ "name": "T-27", + "no_radio": "\u00ae", + "CS#": 2, + "note_number": "1.1\u2020", + "notes": [ "M", "Q" ] +}, +{ "name": "T-40", + "no_radio": "\u00ae", + "CS#": 2, + "note_number": "2\u2020", + "notes": [ "H\u2020" ] +}, +{ "name": "T-50", + "no_radio": "\u00ae", + "CS#": 4, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "3" +}, +{ "name": "T-60 M40", + "no_radio": "\u00ae", + "CS#": 2, + "note_number": "4" +}, +{ "name": "T-60 M42", + "no_radio": "\u00ae\u2020", + "CS#": 2, + "note_number": "4", + "notes": [ "C\u2020" ] +}, +{ "name": "T-70", + "no_radio": "\u00ae\u2020", + "CS#": 2, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "5", + "notes": [ "C\u2020" ] +}, +{ "name": "T-26 M33", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "6", + "notes": [ "D", "I\u2020", "M", "P" ] +}, +{ "name": "T-26 M37/39", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "6", + "notes": [ "D", "M", "P" ] +}, +{ "name": "T-26 M31", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "6.1\u2020", + "notes": [ "M", "P" ] +}, +{ "name": "T-26 M32", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "6.2\u2020", + "notes": [ "M", "P" ] +}, +{ "name": "OT-26", + "no_radio": "\u00ae", + "CS#": "3:brewup", + "note_number": "6.3\u2020", + "notes": [ "M", "P" ] +}, +{ "name": "ST-26 Bridgelayer", + "CS#": 3, + "note_number": "6.4\u2020", + "notes": [ "M" ] +}, +{ "name": "OT-133", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "7\u2020", + "notes": [ "M", "P" ] +}, +{ "name": "BT-2A", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "7.1\u2020", + "notes": [ "M" ] +}, +{ "name": "BT-5 M34", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "8\u2020", + "notes": [ "M", "P" ] +}, +{ "name": "BT-7 M37", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "9", + "notes": [ "D", "I\u2020", "M", "P" ] +}, +{ "name": "BT-7A", + "CS#": 3, + "capabilities2": { "AP": 7, "s": 9 }, + "note_number": "10", + "notes": [ "M", "P" ] +}, +{ "name": "T-28 M34", + "no_radio": "\u00ae", + "CS#": 5, + "capabilities2": { "s": 8 }, + "note_number": "11\u2020", + "notes": [ "M" ] +}, +{ "name": "T-28 M34(L)", + "no_radio": "\u00ae", + "CS#": 5, + "capabilities2": { "s": 8 }, + "note_number": "11.1\u2020", + "notes": [ "M" ] +}, +{ "name": "T-28E M40", + "no_radio": "\u00ae", + "CS#": 6, + "capabilities2": { "s": 8 }, + "note_number": "12\u2020", + "notes": [ "M" ] +}, +{ "name": "T-28E M40(L)", + "no_radio": "\u00ae", + "CS#": 6, + "capabilities2": { "s": 8 }, + "note_number": "12.1\u2020", + "notes": [ "M" ] +}, +{ "name": "T-34 M40", + "no_radio": "\u00ae", + "CS#": 5, + "note_number": "13", + "notes": [ "M" ] +}, +{ "name": "T-34 M41", + "no_radio": "\u00ae\u2020", + "CS#": 5, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "14\u2020", + "notes": [ "C\u2020", "M" ] +}, +{ "name": "OT-34", + "no_radio": "\u00ae\u2020", + "CS#": 4, + "no_if": true, + "capabilities2": { "A": [ [2,2] ], "AP": 7 }, + "note_number": "15\u2020", + "notes": [ "C\u2020", "M" ] +}, +{ "name": "T-34 M43", + "CS#": 5, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "16\u2020" +}, +{ "name": "T-43", + "no_radio": "\u00ae\u2020", + "CS#": 5, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "17", + "notes": [ "C\u2020", "M" ] +}, +{ "name": "T-34/85", + "CS#": 6, + "capabilities2": { "A": [ [5,4] ], "sD": "6\u2020" }, + "note_number": "18\u2020", + "notes": [ "J\u2020" ] +}, +{ "name": "M4/76(a)", + "CS#": 6, + "capabilities2": { "A": [ [3,4] ], "s": 8, "sM": 8 }, + "note_number": "19\u2020", + "notes": [ "N" ] +}, +{ "name": "T-44", + "CS#": 5, + "capabilities2": { "A": [ [6,5] ] }, + "note_number": "20", + "notes": [ "B\u2020", "M" ] +}, +{ "name": "T-35", + "no_radio": "\u00ae", + "CS#": 8, + "capabilities2": { "s": 9 }, + "note_number": "21\u2020", + "notes": [ "M" ] +}, +{ "name": "SMK", + "CS#": 7, + "note_number": "21.1", + "notes": [ "M", "T\u2020" ] +}, +{ "name": "T-100", + "CS#": 7, + "note_number": "22.1", + "notes": [ "M", "T\u2020" ] +}, +{ "name": "KV-1 M39/40", + "CS#": 6, + "note_number": "22\u2020", + "notes": [ "M" ] +}, +{ "name": "KV-1E", + "CS#": 6, + "note_number": "23", + "notes": [ "D", "M" ] +}, +{ "name": "KV-1 M41", + "CS#": 6, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "23", + "notes": [ "D", "M" ] +}, +{ "name": "KV-1 M42", + "CS#": 6, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "23", + "notes": [ "D", "M" ] +}, +{ "name": "KV-2", + "CS#": 7, + "no_if": true, + "capabilities2": { "AP": 9 }, + "note_number": "24\u2020", + "notes": [ "M" ] +}, +{ "name": "KV-8", + "CS#": 6, + "capabilities2": { "A": [ [4,2] ], "AP": 7 }, + "note_number": "15\u2020", + "notes": [ "D", "M" ] +}, +{ "name": "KV-1S", + "CS#": 6, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "25\u2020" +}, +{ "name": "KV-85", + "CS#": 5, + "capabilities2": { "A": [ [4,3], [5,4] ] }, + "note_number": "26", + "notes": [ "B\u2020" ] +}, +{ "name": "IS-2", + "CS#": 6, + "no_if": true, + "note_number": "27", + "notes": [ "B\u2020" ] +}, +{ "name": "IS-2m", + "CS#": 6, + "no_if": true, + "note_number": "28", + "notes": [ "B\u2020", "G\u2020" ] +}, +{ "name": "IS-3", + "CS#": 6, + "no_if": true, + "capabilities2": { "sD": "6\u2020" }, + "note_number": "29", + "notes": [ "G\u2020", "J\u2020" ] +}, +{ "name": "SU-76M", + "CS#": "4:brewup", + "capabilities2": { "A": [ [5,3] ] }, + "note_number": "30\u2020" +}, +{ "name": "SU-76i(g)", + "CS#": 5, + "capabilities2": { "A": [ [5,3] ] }, + "note_number": "31", + "notes": [ "K" ] +}, +{ "name": "SU-122", + "CS#": 5, + "no_if": true, + "capabilities2": { "H": 9, "s": 8 }, + "note_number": "32" +}, +{ "name": "SU-152", + "CS#": 6, + "no_if": true, + "note_number": "33\u2020" +}, +{ "name": "ISU-122", + "CS#": 6, + "no_if": true, + "capabilities2": { "s": 8 }, + "note_number": "34", + "notes": [ "G\u2020" ] +}, +{ "name": "ISU-152", + "CS#": 6, + "no_if": true, + "note_number": "34", + "notes": [ "G\u2020" ] +}, +{ "name": "SU-85", + "CS#": 5, + "capabilities2": { "A": [ [5,3] ], "HE": 7, "s": 7 }, + "note_number": "35" +}, +{ "name": "SU-100", + "CS#": 5, + "capabilities2": { "HE": 7 }, + "note_number": "36" +}, +{ "name": "SU-57(a)", + "CS#": 4, + "capabilities2": { "A": [ [5,3] ], "HE": 7 }, + "note_number": "37", + "notes": [ "K" ] +}, +{ "name": "BA-20", + "no_radio": "\u00ae", + "CS#": 3, + "note_number": "38" +}, +{ "name": "BA-6", + "no_radio": "\u00ae", + "CS#": 4, + "capabilities2": { "A": [ [4,2] ] }, + "note_number": "39" +}, +{ "name": "BA-64B", + "CS#": 2, + "note_number": "40\u2020", + "notes": [ "A\u2020" ] +}, +{ "name": "ZSU-37", + "CS#": 4, + "note_number": "41\u2020", + "notes": [ "A\u2020" ] +}, +{ "name": "SU-12", + "CS#": 4, + "capabilities2": { "AP": 7, "s": 8 }, + "note_number": "42", + "notes": [ "F\u2020" ] +}, +{ "name": "GAZ-4M-AA", + "CS#": 4, + "note_number": "43\u2020", + "notes": [ "A\u2020" ] +}, +{ "name": "ZIS-42-AA", + "CS#": 4, + "note_number": "44", + "notes": [ "A\u2020", "F\u2020" ] +}, +{ "name": "LANO AT", + "no_radio": "\u00ae", + "CS#": 5, + "capabilities2": { "A": [ [4,"2+"] ] }, + "note_number": "44.1" +}, +{ "name": "LANO AA", + "no_radio": "\u00ae", + "CS#": 5, + "note_number": "44.2\u2020", + "notes": [ "A\u20201" ] +}, +{ "name": "IAG-10-AA", + "CS#": 4, + "capabilities2": { "AP": 7 }, + "note_number": "45", + "notes": [ "A\u2020", "F\u2020" ] +}, +{ "name": "GAZ-67B", + "CS#": 2, + "note_number": "46", + "notes": [ "L\u2020" ] +}, +{ "name": "Komsomolet", + "CS#": "2\u2020", + "note_number": "46.1\u2020" +}, +{ "name": "STZ-3", + "cs#": 4, + "note_number": "46.2" +}, +{ "name": "STZ-5", + "cs#": 7, + "note_number": "46.3" +}, +{ "name": "GAZ-MM", + "cs#": 6, + "note_number": "47" +}, +{ "name": "ZIS-5", + "cs#": 7, + "note_number": "47" +}, +{ "name": "IAG-6", + "cs#": 7, + "note_number": "47" +}, +{ "name": "NKL-6", + "CS#": "2\u2020", + "note_number": "47.1\u2020", + "notes": [ "S\u20201" ] +}, +{ "name": "NKL-16", + "cs#": 2, + "note_number": "47.1\u2020", + "notes": [ "S\u20201" ] +}, +{ "name": "NKL-26", + "CS#": 2, + "note_number": "47.2\u2020", + "notes": [ "Q", "S\u20201" ] +}, +{ "name": "RF-8-GAZ-98", + "CS#": 3, + "note_number": "47.3\u2020", + "notes": [ "S\u20201" ] +}, +{ "name": "Stuart III(a)", + "CS#": 4, + "capabilities2": { "C": 6 }, + "note_number": "48", + "notes": [ "N", "O", "LL" ] +}, +{ "name": "Lee(a)", + "CS#": 7, + "capabilities2": { "C": "4\u2020", "s": "8\u2020" }, + "note_number": "49\u2020", + "notes": [ "B\u20201", "N", "O", "LL" ] +}, +{ "name": "Sherman III(a)", + "CS#": "5:brewup", + "capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u2020" ] }, + "note_number": "50\u2020", + "notes": [ "N", "O", "R\u20201", "LL" ] +}, +{ "name": "Sherman III(L)(a)", + "CS#": "6:brewup", + "capabilities2": { "s": 5, "WP": 7, "sM": 8 }, + "note_number": "50.1", + "notes": [ "N", "O", "R\u2020", "LL" ] +}, +{ "name": "Matilda II(b)", + "CS#": 5, + "capabilities2": { "sD": 6 }, + "note_number": "51\u2020", + "notes": [ "M\u20201", "N", "LL" ] +}, +{ "name": "Valentine V(b)", + "CS#": 4, + "capabilities2": { "sM": 8 }, + "note_number": "52.1", + "notes": [ "N", "LL" ] +}, +{ "name": "Valentine VIII(b)", + "CS#": 4, + "capabilities2": { "HE": 7, "sD": 6 }, + "note_number": "52.2", + "notes": [ "N", "LL" ] +}, +{ "name": "Churchill III(b)", + "CS#": 7, + "capabilities2": { "D": [ [6,"J4"], [7,5], "\u2020" ], "HE": [ [7,"F3"], [8,"4+"], "\u2020" ], "sD": [ [6,"4+"] ], "sM": "8\u2020" }, + "note_number": "53\u2020", + "notes": [ "N", "LL" ] +}, +{ "name": "M3A1 Scout Car(a)", + "CS#": 4, + "note_number": "54\u2020", + "notes": [ "N", "LL" ] +}, +{ "name": "Jeep GPA(a)", + "cs#": 2, + "note_number": "59", + "notes": [ "H\u2020", "L\u20201" ] +}, +{ "name": "DUKW(a)", + "cs#": 7, + "note_number": "60\u2020" +} + +] diff --git a/vasl_templates/webapp/main.py b/vasl_templates/webapp/main.py index 435ad47..f3ba698 100644 --- a/vasl_templates/webapp/main.py +++ b/vasl_templates/webapp/main.py @@ -13,6 +13,13 @@ def main(): # --------------------------------------------------------------------- +@app.route( "/ping" ) +def ping(): + """Let the caller know we're alive.""" + return "pong" + +# --------------------------------------------------------------------- + @app.route( "/shutdown" ) def shutdown(): """Shutdown the webapp (for testing porpoises).""" diff --git a/vasl_templates/webapp/static/css/main.css b/vasl_templates/webapp/static/css/main.css index 3626be7..c807825 100644 --- a/vasl_templates/webapp/static/css/main.css +++ b/vasl_templates/webapp/static/css/main.css @@ -83,6 +83,15 @@ input[type="text"] { margin-bottom: 0.25em ; } /* -------------------------------------------------------------------- */ +.sortable { font-size: 80% ; } +.sortable { list-style-type: none ; margin: 0 ; padding: 0 ; } +.sortable li { + margin-bottom: 2px ; padding: 5px ; + border: 1px dotted #333 ; background: #eee ; +} +.sortable li.highlighted { background: #48c8ff ; } +.sortable li:hover { cursor: pointer ; } + .ui-dialog-titlebar { padding: 0.2em 0.5em 0.2em 0.5em !important ; } .ui-dialog-titlebar-close { margin-top: -10px !important ; } @@ -98,6 +107,10 @@ input[type="text"] { margin-bottom: 0.25em ; } .ui-dialog.edit-ssr textarea { resize: none ; width: calc(100% - 4px) ; height: calc(100% - 1.25em) ; } .ui-dialog.edit-ssr button { margin: 0 0 0 5px ; padding: 0.1em 0.2em ; } +#select-vo { overflow: hidden ; } +#select-vo .header { height: 2em ; } +#select-vo select { width: 100% ; top: 2em ; height: calc(100% - 2em) ; } + .growl-title { display: none ; } .growl ul { margin-left: 1em ; } .growl .pre { font-family: "Courier New"; } diff --git a/vasl_templates/webapp/static/css/tabs-ob.css b/vasl_templates/webapp/static/css/tabs-ob.css index d8993ac..153e18e 100644 --- a/vasl_templates/webapp/static/css/tabs-ob.css +++ b/vasl_templates/webapp/static/css/tabs-ob.css @@ -1,10 +1,12 @@ +/* -------------------------------------------------------------------- */ + .panel-obsetup { height: 100% ; display: grid ; display: -ms-grid ; grid-template-rows: 1fr 2.5em ; -ms-grid-rows: 1fr 2.5em ; grid-template-columns: 1fr ; -ms-grid-columns: 1fr ; } -/* FUDGE! IE hackamathon follows (nb: