diff --git a/vasl_templates/webapp/data/ordnance/british.json b/vasl_templates/webapp/data/ordnance/british.json
new file mode 100644
index 0000000..5816cd5
--- /dev/null
+++ b/vasl_templates/webapp/data/ordnance/british.json
@@ -0,0 +1,144 @@
+[
+
+{ "name": "OML 2-in. Mortar",
+ "capabilities": [ "4PP" ],
+ "capabilities2": { "s": 7, "IR": [ [null,"2+"], "\u2020" ] },
+ "note_number": "1",
+ "notes": [ "A\u2020", "N", "P" ]
+},
+{ "name": "OML 2-in. Airborne Mortar",
+ "capabilities": [ "IR" ],
+ "capabilities2": { "s": 7 },
+ "capabilities_other": [ "3PP" ],
+ "note_number": "1"
+},
+{ "name": "OML 3-in. Mortar",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "WP": 7, "s": [ [8,"1+"], "\u2020" ], "IR": [ [null,"2+"], "\u20201" ] },
+ "note_number": "2\u2020",
+ "notes": [ "A\u20201", "D", "N", "P" ]
+},
+{ "name": "OSB 4.2-in. Mortar",
+ "capabilities": [ "NT" ],
+ "capabilities2": { "s": 8, "WP": 7 },
+ "capabilities_other": [ "Towed\u2020" ],
+ "note_number": "3\u2020",
+ "notes": [ "N", "P" ]
+},
+{ "name": "OQF 25mm Hotchkiss",
+ "capabilities": [ "NT", "QSU" ],
+ "note_number": "4\u2020",
+ "notes": [ "B", "N" ]
+},
+{ "name": "OQF 2-Pounder",
+ "capabilities": [ "T" ],
+ "capabilities2": { "LF": [ "NT", "40\u20201", "2 ROF", "B11" ] },
+ "note_number": "5\u2020",
+ "notes": [ "B", "C\u20201", "N", "P" ]
+},
+{ "name": "OQF 6-Pounder 7-cwt",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "HE": [ [7,"F3"], [8,"4+"], "\u2020" ], "D": [ [6,"J4E"], [7,5], "\u2020" ] },
+ "note_number": "6\u2020",
+ "notes": [ "B", "N", "P" ]
+},
+{ "name": "OQF 17/25-Pounder",
+ "capabilities": [ "NT" ],
+ "note_number": "7",
+ "notes": [ "N" ]
+},
+{ "name": "OQF 17-Pounder",
+ "capabilities": [ "NT" ],
+ "capabilities2": { "HE": [ [8,"J4+"], "\u2020" ], "D": [ [5,"S4"], [6,5], "\u2020" ] },
+ "note_number": "8\u2020"
+},
+{ "name": "OQF M1A1 75mm Pack How.",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "H": 6, "WP": 7 },
+ "note_number": "9\u2020",
+ "notes": [ "D", "P" ]
+},
+{ "name": "Canon de 75 mle 1897",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "s": 8 },
+ "note_number": "10\u2020",
+ "notes": [ "B", "N" ]
+},
+{ "name": "OQF 18-Pounder",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "s": 8, "WP": 7 },
+ "note_number": "11\u2020",
+ "notes": [ "N", "P" ]
+},
+{ "name": "OQF 25-Pounder Short",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "s": 8 },
+ "note_number": "12",
+ "notes": [ "D", "P" ]
+},
+{ "name": "OQF 25-Pounder Gun-How.",
+ "capabilities2": { "LF": [ "NT", "0 ROF" ], "s": 8 },
+ "capabilities_other": [ "ST" ],
+ "note_number": "13\u2020",
+ "notes": [ "N", "P" ]
+},
+{ "name": "OQF 3.7-in. Howitzer",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "s": 8, "WP": 7, "H": [ [6,"3+P"], "\u2020" ] },
+ "note_number": "14\u2020",
+ "notes": [ "D", "N", "P" ]
+},
+{ "name": "OQF 4.5-in. Howitzer",
+ "capabilities": [ "NT" ],
+ "capabilities2": { "s": 8, "WP": 7 },
+ "note_number": "15\u2020",
+ "notes": [ "N", "P" ]
+},
+{ "name": "OBL 4.5-in. Gun",
+ "capabilities": [ "NT" ],
+ "note_number": "16\u2020",
+ "notes": [ "N" ]
+},
+{ "name": "OBL 5.5-in. Gun-Howitzer",
+ "capabilities": [ "NT" ],
+ "note_number": "16\u2020",
+ "notes": [ "N", "P" ]
+},
+{ "name": "OBL 6-in. Howitzer",
+ "capabilities": [ "NT" ],
+ "note_number": "17\u2020",
+ "notes": [ "N", "P" ]
+},
+{ "name": "OBL 7.2-in. Howitzer Mk I",
+ "capabilities": [ "NT", "no IF" ],
+ "capabilities_other": [ "Acq. NA\u2020" ],
+ "note_number": "18\u2020",
+ "notes": [ "N", "P" ]
+},
+{ "name": "OBL 7.2-in. Howitzer Mk VI",
+ "capabilities": [ "NT", "RFNM", "no IF" ],
+ "note_number": "19\u2020",
+ "notes": [ "P" ]
+},
+{ "name": "OQF 20mm AA",
+ "capabilities": [ "T" ],
+ "note_number": "20"
+},
+{ "name": "OQF 40mm AA",
+ "capabilities": [ "T" ],
+ "capabilities2": { "LF": [ "40\u20201", "2 ROF" ] },
+ "note_number": "21\u2020",
+ "notes": [ "C\u20201", "N", "P" ]
+},
+{ "name": "OQF 3-in. 20-cwt AA",
+ "capabilities": [ "T" ],
+ "note_number": "22\u2020",
+ "notes": [ "E", "P" ]
+},
+{ "name": "OQF 3.7-in. AA",
+ "capabilities": [ "T" ],
+ "note_number": "23\u2020",
+ "notes": [ "E", "N", "P" ]
+}
+
+]
diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js
index c695820..b3dc7f5 100644
--- a/vasl_templates/webapp/static/snippets.js
+++ b/vasl_templates/webapp/static/snippets.js
@@ -287,7 +287,7 @@ function make_capabilities( entry, scenario_theater, scenario_year, scenario_mon
capabilities.push( "LF [" + entry.capabilities2[key].join(", ") + "]" ) ;
continue ;
}
- if ( $.inArray( key, ["HE","AP","A","D","C","s","sM","sD","sN","WP"] ) === -1 ) {
+ if ( $.inArray( key, ["HE","AP","A","D","C","H","s","sM","sD","sN","WP","IR"] ) === -1 ) {
unexpected_caps.push( key ) ;
continue ;
}
@@ -350,7 +350,8 @@ function make_raw_capability( name, capability )
if ( typeof(capability[i]) === "string" )
buf.push( capability[i] ) ;
else {
- buf.push( escapeHTML( capability[i][0] ) ) ;
+ if ( capability[i][0] )
+ buf.push( escapeHTML( capability[i][0] ) ) ;
if ( capability[i][1] )
buf.push( "", escapeHTML( capability[i][1] ), "" ) ;
}
@@ -360,25 +361,25 @@ function make_raw_capability( name, capability )
function select_capability_by_date( capabilities, scenario_theater, scenario_year, scenario_month )
{
- var MONTH_NAMES = { F:2, J:6, A:8 } ;
+ var MONTH_NAMES = { F:2, J:6, A:8, S:9 } ;
// initialize
capabilities = capabilities.slice() ;
var ref = has_ref( capabilities ) ;
- var val = null ;
+ var val = "???" ;
for ( var i=0 ; i < capabilities.length ; ++i ) {
// check for a ETO/PTO-only flag
var cap = capabilities[i][1].toString() ;
if ( cap.substring( cap.length-1 ) === "E" ) {
if ( scenario_theater != "ETO" )
- return null ;
+ continue ;
cap = cap.substring( 0, cap.length-1 ) ;
}
if ( cap.substring( cap.length-1 ) === "P" ) {
if ( scenario_theater != "PTO" )
- return null ;
+ continue ;
cap = cap.substring( 0, cap.length-1 ) ;
}
// remove any trailing "+" (FIXME! What does it even mean? Doesn't make sense :-/)
@@ -403,8 +404,10 @@ function select_capability_by_date( capabilities, scenario_theater, scenario_yea
val = capabilities[i][0] ;
}
}
- if ( ! val )
- return val ;
+ if ( val === "???" )
+ return null ;
+ if ( val === null )
+ val = "" ; // nb: this can happen for IR
return ref ? val+ref : val ;
}
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1940.txt
new file mode 100644
index 0000000..2e6e232
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1940.txt
@@ -0,0 +1,29 @@
+=== ordnance/british/1940 ===
+
+Name Capabilities (effective) # Notes
+-------------------------- --------------------------------- ----------------------------- --- --------------------
+OML 2-in. Mortar 4PP IR[2+]† s7 4PP s7 1 A† N P
+OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
+OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU WP7 2† A†1 D N P
+OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
+OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
+OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†1 N P
+OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU 6† B N P
+OQF 17/25-Pounder NT NT 7 N
+OQF 17-Pounder NT D5[S4]6[5]† HE8[J4+]† NT 8† n/a
+OQF M1A1 75mm Pack How. NT QSU H6 WP7 NT QSU H6 WP7 9† D P
+Canon de 75 mle 1897 NT QSU s8 NT QSU s8 10† B N
+OQF 18-Pounder NT QSU WP7 s8 NT QSU WP7 s8 11† N P
+OQF 25-Pounder Short NT QSU s8 NT QSU s8 12 D P
+OQF 25-Pounder Gun-How. LF [NT, 0 ROF] s8 ST LF [NT, 0 ROF] s8 ST 13† N P
+OQF 3.7-in. Howitzer NT QSU H6[3+P]† WP7 s8 NT QSU WP7 s8 14† D N P
+OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8 15† N P
+OBL 4.5-in. Gun NT NT 16† N
+OBL 5.5-in. Gun-Howitzer NT NT 16† N P
+OBL 6-in. Howitzer NT NT 17† N P
+OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
+OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
+OQF 20mm AA T T 20 n/a
+OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†1 N P
+OQF 3-in. 20-cwt AA T T 22† E P
+OQF 3.7-in. AA T T 23† E N P
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1941.txt
new file mode 100644
index 0000000..efb4143
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1941.txt
@@ -0,0 +1,29 @@
+=== ordnance/british/1941 ===
+
+Name Capabilities (effective) # Notes
+-------------------------- --------------------------------- ----------------------------- --- --------------------
+OML 2-in. Mortar 4PP IR[2+]† s7 4PP s7 1 A† N P
+OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
+OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU WP7 s8† 2† A†1 D N P
+OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
+OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
+OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†1 N P
+OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU 6† B N P
+OQF 17/25-Pounder NT NT 7 N
+OQF 17-Pounder NT D5[S4]6[5]† HE8[J4+]† NT 8† n/a
+OQF M1A1 75mm Pack How. NT QSU H6 WP7 NT QSU H6 WP7 9† D P
+Canon de 75 mle 1897 NT QSU s8 NT QSU s8 10† B N
+OQF 18-Pounder NT QSU WP7 s8 NT QSU WP7 s8 11† N P
+OQF 25-Pounder Short NT QSU s8 NT QSU s8 12 D P
+OQF 25-Pounder Gun-How. LF [NT, 0 ROF] s8 ST LF [NT, 0 ROF] s8 ST 13† N P
+OQF 3.7-in. Howitzer NT QSU H6[3+P]† WP7 s8 NT QSU WP7 s8 14† D N P
+OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8 15† N P
+OBL 4.5-in. Gun NT NT 16† N
+OBL 5.5-in. Gun-Howitzer NT NT 16† N P
+OBL 6-in. Howitzer NT NT 17† N P
+OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
+OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
+OQF 20mm AA T T 20 n/a
+OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†1 N P
+OQF 3-in. 20-cwt AA T T 22† E P
+OQF 3.7-in. AA T T 23† E N P
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1942.txt
new file mode 100644
index 0000000..ef0ab1f
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1942.txt
@@ -0,0 +1,29 @@
+=== ordnance/british/1942 ===
+
+Name Capabilities (effective) # Notes
+-------------------------- --------------------------------- ----------------------------- --- --------------------
+OML 2-in. Mortar 4PP IR[2+]† s7 4PP IR† s7 1 A† N P
+OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
+OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU IR†[1] WP7 s8† 2† A†1 D N P
+OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
+OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
+OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†1 N P
+OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU 6† B N P
+OQF 17/25-Pounder NT NT 7 N
+OQF 17-Pounder NT D5[S4]6[5]† HE8[J4+]† NT 8† n/a
+OQF M1A1 75mm Pack How. NT QSU H6 WP7 NT QSU H6 WP7 9† D P
+Canon de 75 mle 1897 NT QSU s8 NT QSU s8 10† B N
+OQF 18-Pounder NT QSU WP7 s8 NT QSU WP7 s8 11† N P
+OQF 25-Pounder Short NT QSU s8 NT QSU s8 12 D P
+OQF 25-Pounder Gun-How. LF [NT, 0 ROF] s8 ST LF [NT, 0 ROF] s8 ST 13† N P
+OQF 3.7-in. Howitzer NT QSU H6[3+P]† WP7 s8 NT QSU WP7 s8 14† D N P
+OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8 15† N P
+OBL 4.5-in. Gun NT NT 16† N
+OBL 5.5-in. Gun-Howitzer NT NT 16† N P
+OBL 6-in. Howitzer NT NT 17† N P
+OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
+OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
+OQF 20mm AA T T 20 n/a
+OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†1 N P
+OQF 3-in. 20-cwt AA T T 22† E P
+OQF 3.7-in. AA T T 23† E N P
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1943.txt
new file mode 100644
index 0000000..a6670f3
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1943.txt
@@ -0,0 +1,29 @@
+=== ordnance/british/1943 ===
+
+Name Capabilities (effective) # Notes
+-------------------------- --------------------------------- ----------------------------- --- --------------------
+OML 2-in. Mortar 4PP IR[2+]† s7 4PP IR† s7 1 A† N P
+OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
+OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU IR†[1] WP7 s8† 2† A†1 D N P
+OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
+OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
+OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†1 N P
+OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU 6† B N P
+OQF 17/25-Pounder NT NT 7 N
+OQF 17-Pounder NT D5[S4]6[5]† HE8[J4+]† NT 8† n/a
+OQF M1A1 75mm Pack How. NT QSU H6 WP7 NT QSU H6 WP7 9† D P
+Canon de 75 mle 1897 NT QSU s8 NT QSU s8 10† B N
+OQF 18-Pounder NT QSU WP7 s8 NT QSU WP7 s8 11† N P
+OQF 25-Pounder Short NT QSU s8 NT QSU s8 12 D P
+OQF 25-Pounder Gun-How. LF [NT, 0 ROF] s8 ST LF [NT, 0 ROF] s8 ST 13† N P
+OQF 3.7-in. Howitzer NT QSU H6[3+P]† WP7 s8 NT QSU WP7 s8 14† D N P
+OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8 15† N P
+OBL 4.5-in. Gun NT NT 16† N
+OBL 5.5-in. Gun-Howitzer NT NT 16† N P
+OBL 6-in. Howitzer NT NT 17† N P
+OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
+OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
+OQF 20mm AA T T 20 n/a
+OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†1 N P
+OQF 3-in. 20-cwt AA T T 22† E P
+OQF 3.7-in. AA T T 23† E N P
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1944.txt
new file mode 100644
index 0000000..269224d
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1944.txt
@@ -0,0 +1,29 @@
+=== ordnance/british/1944 ===
+
+Name Capabilities (effective) # Notes
+-------------------------- --------------------------------- ----------------------------- --- --------------------
+OML 2-in. Mortar 4PP IR[2+]† s7 4PP IR† s7 1 A† N P
+OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
+OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU IR†[1] WP7 s8† 2† A†1 D N P
+OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
+OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
+OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†1 N P
+OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU HE8† 6† B N P
+OQF 17/25-Pounder NT NT 7 N
+OQF 17-Pounder NT D5[S4]6[5]† HE8[J4+]† NT 8† n/a
+OQF M1A1 75mm Pack How. NT QSU H6 WP7 NT QSU H6 WP7 9† D P
+Canon de 75 mle 1897 NT QSU s8 NT QSU s8 10† B N
+OQF 18-Pounder NT QSU WP7 s8 NT QSU WP7 s8 11† N P
+OQF 25-Pounder Short NT QSU s8 NT QSU s8 12 D P
+OQF 25-Pounder Gun-How. LF [NT, 0 ROF] s8 ST LF [NT, 0 ROF] s8 ST 13† N P
+OQF 3.7-in. Howitzer NT QSU H6[3+P]† WP7 s8 NT QSU WP7 s8 14† D N P
+OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8 15† N P
+OBL 4.5-in. Gun NT NT 16† N
+OBL 5.5-in. Gun-Howitzer NT NT 16† N P
+OBL 6-in. Howitzer NT NT 17† N P
+OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
+OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
+OQF 20mm AA T T 20 n/a
+OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†1 N P
+OQF 3-in. 20-cwt AA T T 22† E P
+OQF 3.7-in. AA T T 23† E N P
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1945.txt
new file mode 100644
index 0000000..97c530c
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1945.txt
@@ -0,0 +1,29 @@
+=== ordnance/british/1945 ===
+
+Name Capabilities (effective) # Notes
+-------------------------- --------------------------------- ----------------------------- --- --------------------
+OML 2-in. Mortar 4PP IR[2+]† s7 4PP IR† s7 1 A† N P
+OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
+OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU IR†[1] WP7 s8† 2† A†1 D N P
+OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
+OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
+OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†1 N P
+OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU D7† HE8† 6† B N P
+OQF 17/25-Pounder NT NT 7 N
+OQF 17-Pounder NT D5[S4]6[5]† HE8[J4+]† NT D6† HE8† 8† n/a
+OQF M1A1 75mm Pack How. NT QSU H6 WP7 NT QSU H6 WP7 9† D P
+Canon de 75 mle 1897 NT QSU s8 NT QSU s8 10† B N
+OQF 18-Pounder NT QSU WP7 s8 NT QSU WP7 s8 11† N P
+OQF 25-Pounder Short NT QSU s8 NT QSU s8 12 D P
+OQF 25-Pounder Gun-How. LF [NT, 0 ROF] s8 ST LF [NT, 0 ROF] s8 ST 13† N P
+OQF 3.7-in. Howitzer NT QSU H6[3+P]† WP7 s8 NT QSU WP7 s8 14† D N P
+OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8 15† N P
+OBL 4.5-in. Gun NT NT 16† N
+OBL 5.5-in. Gun-Howitzer NT NT 16† N P
+OBL 6-in. Howitzer NT NT 17† N P
+OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
+OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
+OQF 20mm AA T T 20 n/a
+OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†1 N P
+OQF 3-in. 20-cwt AA T T 22† E P
+OQF 3.7-in. AA T T 23† E N P
diff --git a/vasl_templates/webapp/tests/test_capabilities.py b/vasl_templates/webapp/tests/test_capabilities.py
index 305dd75..f78de92 100644
--- a/vasl_templates/webapp/tests/test_capabilities.py
+++ b/vasl_templates/webapp/tests/test_capabilities.py
@@ -40,8 +40,9 @@ def test_month_capabilities( webapp, webdriver ):
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1943", "NT QSU" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT QSU" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU D4\u2020 HE7\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "06/1944", "NT QSU" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU D4\u2020 HE7\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1945", "NT QSU" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1945", "NT QSU HE7\u2020" )
# M3: C7(A2+)†2
vehicle = [ "american", "vehicles", "M3" ]
@@ -90,6 +91,37 @@ def test_month_capabilities( webapp, webdriver ):
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "C4\u20201 H9 WP9" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "C4\u20201 H9 WP9" )
+ # OML 2-in. Mortar: IR(2)+†
+ ordnance = [ "british", "ordnance", "OML 2-in. Mortar" ]
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1941", "4PP s7" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "4PP IR\u2020 s7" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943", "4PP IR\u2020 s7" )
+
+ # OML 3-in. Mortar: IR(2)+†1
+ ordnance = [ "british", "ordnance", "OML 3-in. Mortar" ]
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1941", "NT QSU WP7 s8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "NT QSU IR\u20201 WP7 s8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943", "NT QSU IR\u20201 WP7 s8\u2020" )
+
+ # OQF 6-Pounder 7-cwt: D6(J4E)7(5)† HE7(F3)8(4+)†
+ ordnance = [ "british", "ordnance", "OQF 6-Pounder 7-cwt" ]
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1942", "NT QSU" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943", "NT QSU" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "02/1943", "NT QSU HE7\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT QSU HE8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU D6\u2020 HE8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "06/1944", "NT QSU HE8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU D7\u2020 HE8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1945", "NT QSU D7\u2020 HE8\u2020" )
+
+ # OQF 17-Pounder: D5(S4)6(5)† HE8(J4+)†
+ ordnance = [ "british", "ordnance", "OQF 17-Pounder" ]
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1943", "NT" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT HE8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "09/1944", "NT D5\u2020 HE8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT D6\u2020 HE8\u2020" )
+
# ---------------------------------------------------------------------
@pytest.mark.skipif(
@@ -157,6 +189,13 @@ def test_scenario_theater( webapp, webdriver ):
_check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7\u20203 H8 WP9" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H8 WP9" )
+ # OQF 3.7-in. Howitzer: H6(3+P)†
+ ordnance = [ "british", "ordnance", "OQF 3.7-in. Howitzer" ]
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "12/1942", "NT QSU WP7 s8" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1943", "NT QSU H6\u2020 WP7 s8" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1944", "NT QSU H6\u2020 WP7 s8" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1944", "NT QSU WP7 s8" )
+
# ---------------------------------------------------------------------
def _check_capabilities( webdriver, webapp,