Added US Ordnance.

master
Pacman Ghost 6 years ago
parent 8b1c0a41f7
commit 673877bc5b
  1. 159
      vasl_templates/webapp/data/ordnance/american.json
  2. 2
      vasl_templates/webapp/data/vehicles/american.json
  3. 43
      vasl_templates/webapp/static/snippets.js
  4. 31
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1940.txt
  5. 31
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1941.txt
  6. 31
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1942.txt
  7. 31
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1943.txt
  8. 31
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1944.txt
  9. 31
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1945.txt
  10. 4
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1940.txt
  11. 4
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1941.txt
  12. 4
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1942.txt
  13. 4
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1943.txt
  14. 4
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1944.txt
  15. 4
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1945.txt
  16. 2
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt
  17. 174
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt
  18. 22
      vasl_templates/webapp/tests/test_vo_reports.py

@ -0,0 +1,159 @@
[
{ "name": "M2 60mm Mortar",
"capabilities": [ "IR" ],
"capabilities2": { "WP": [ [7,5] ] },
"capabilities_other": [ "5PP", "OBA\u2020" ],
"note_number": "1\u2020",
"notes": [ "F", "N" ]
},
{ "name": "M19 60mm Mortar",
"capabilities": [ "IR" ],
"capabilities2": { "WP": [ [6,5] ] },
"capabilities_other": [ "4PP" ],
"note_number": "2",
"notes": [ "F" ]
},
{ "name": "M1 81mm Mortar",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "WP": 8 },
"note_number": "3",
"notes": [ "F", "N" ]
},
{ "name": "M2 4.2-in. Mortar",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "WP": 10 },
"note_number": "4\u2020"
},
{ "name": "T25 155mm Mortar",
"capabilities": [ "NT" ],
"capabilities2": { "WP": 8 },
"note_number": "5\u2020",
"notes": [ "P" ]
},
{ "name": "M3A1 37mm AT Gun",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "C": [ [7,"A2+"], "\u2020<sup>1</sup>" ] },
"note_number": "6\u2020",
"notes": [ "C\u2020<sup>1</sup>", "N" ]
},
{ "name": "M1 57mm AT Gun",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "HE": [ [7,"J4E"], [7,5], "\u2020" ], "D": [ [4,"J4+E"], "\u2020" ] },
"note_number": "7\u2020"
},
{ "name": "M5 3-in. AT Gun",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "A": [ [4,4], [5,5], "\u2020" ], "s": [ [6,5] ] },
"note_number": "8\u2020",
"notes": [ "<s>P</s>" ]
},
{ "name": "T32 37mm Manpack Gun",
"capabilities": [ "5PP (3PP dm)\u2020", "C5\u2020<sup>1</sup>", "crewed\u2020<sup>2</sup>" ],
"note_number": "9\u2020",
"notes": [ "C\u2020<sup>1</sup>", "D\u2020<sup>2</sup>", "F" ]
},
{ "name": "M18 57mm Recoilless Rifle",
"capabilities": [ "3PP", "crewed\u2020<sup>1</sup>" ],
"capabilities2": { "H": 7, "WP": 6 },
"note_number": "10",
"notes": [ "D\u2020<sup>1</sup>", "E\u2020" ]
},
{ "name": "M20 75mm Recoilless Rifle",
"capabilities": [ "5PP", "crewed\u2020<sup>1</sup>" ],
"capabilities2": { "H": 7, "WP": 7 },
"note_number": "11",
"notes": [ "D\u2020<sup>1</sup>", "E\u2020" ]
},
{ "name": "M1A1 75mm Pack Howitzer",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "H": 7, "WP": 8, "C": [ [4,"4+"], "\u2020<sup>1</sup>" ] },
"note_number": "12\u2020",
"notes": [ "C\u2020<sup>1</sup>", "F" ]
},
{ "name": "M1897A2 75mm Gun",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "WP": 8 },
"note_number": "13",
"notes": [ "P" ]
},
{ "name": "M2A1 105mm Howitzer",
"capabilities": [ "NT" ],
"capabilities2": { "H": 6, "s": 7, "WP": 8, "C": [ [7,"4+P"], "\u2020<sup>1</sup>" ] },
"note_number": "14\u2020",
"notes": [ "C\u2020<sup>1</sup>", "N" ]
},
{ "name": "M3 105mm Howitzer",
"capabilities": [ "NT" ],
"capabilities2": { "H": 7, "s": 7, "WP": 8, "C": [ [7,"P"], "\u2020<sup>1</sup>" ] },
"note_number": "15\u2020",
"notes": [ "C\u2020<sup>1</sup>" ]
},
{ "name": "M1 4.5-in. Gun",
"capabilities": [ "NT" ],
"note_number": "16\u2020",
"notes": [ "<s>P</s>" ]
},
{ "name": "M1918 155mm Howitzer",
"capabilities": [ "NT" ],
"capabilities2": { "s": [ [7,"3+"] ], "WP": 8 },
"note_number": "17\u2020",
"notes": [ "N" ]
},
{ "name": "M1 155mm Howitzer",
"capabilities": [ "NT" ],
"capabilities2": { "s": 7, "WP": 8 },
"note_number": "18\u2020",
"notes": [ "N" ]
},
{ "name": "M1918M1 155mm Gun",
"capabilities": [ "NT", "RFNM", "AP4\u2020<sup>1</sup>", "no IF" ],
"capabilities2": { "WP": 8 },
"note_number": "19\u2020",
"notes": [ "A\u2020<sup>1</sup>", "N" ]
},
{ "name": "M1A1 155mm Gun",
"capabilities": [ "NT", "RFNM", "AP4\u2020<sup>1</sup>", "no IF" ],
"capabilities2": { "s": [ [7,5] ], "WP": 8 },
"note_number": "20\u2020",
"notes": [ "A\u2020<sup>1</sup>" ]
},
{ "name": "M1 8-in. Howitzer",
"capabilities": [ "NT", "RFNM", "no IF" ],
"note_number": "21\u2020"
},
{ "name": "M51 Multiple .50-cal MG Carriage",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "2 ROF", "20 IFE", "B11" ] },
"capabilities_other": [ "4 TK DR\u2020" ],
"note_number": "22\u2020"
},
{ "name": "M1A2 37mm AA Gun",
"capabilities": [ "T" ],
"note_number": "23\u2020",
"notes": [ "N" ]
},
{ "name": "M1 40mm AA Gun",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "40\u2020<sup>1</sup>", "2 ROF" ] },
"note_number": "24\u2020",
"notes": [ "B\u2020<sup>1</sup>" ]
},
{ "name": "M3 3-in. AA Gun",
"capabilities": [ "T", "NM" ],
"note_number": "25",
"notes": [ "P" ]
},
{ "name": "M1A1 90mm AA Gun",
"capabilities": [ "T", "NM" ],
"note_number": "26\u2020",
"notes": [ "N" ]
},
{ "name": "M2 90mm AA Gun",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "90\u2020", "1 ROF", "B11" ] },
"note_number": "27\u2020<sup>1</sup>",
"notes": [ "B\u2020" ]
}
]

@ -277,7 +277,7 @@ function make_capabilities( entry, scenario_year, scenario_month, check_date_cap
capabilities.push( "LF [" + entry.capabilities2[key].join(", ") + "]" ) ;
continue ;
}
if ( $.inArray( key, ["HE","A","D","sD","sN","WP"] ) === -1 ) {
if ( $.inArray( key, ["HE","AP","A","D","C","s","sD","sN","WP"] ) === -1 ) {
unexpected_caps.push( key ) ;
continue ;
}
@ -337,25 +337,38 @@ function make_raw_capability( name, capability )
// generate the raw capability string
var buf = [ name ] ;
for ( var i=0 ; i < capability.length ; ++i ) {
buf.push( escapeHTML( capability[i][0] ) ) ;
if ( capability[i][1] )
buf.push( "<sup>", escapeHTML( capability[i][1] ), "</sup>" ) ;
if ( typeof(capability[i]) === "string" )
buf.push( capability[i] ) ;
else {
buf.push( escapeHTML( capability[i][0] ) ) ;
if ( capability[i][1] )
buf.push( "<sup>", escapeHTML( capability[i][1] ), "</sup>" ) ;
}
}
return buf.join( "" ) ;
}
function select_capability_by_date( capabilities, scenario_year, scenario_month )
{
var MONTH_NAMES = { F: 2, J: 6, } ;
var MONTH_NAMES = { F:2, J:6, A:8 } ;
var val = null ;
var ref = has_ref( capabilities ) ;
for ( var i=0 ; i < capabilities.length ; ++i ) {
if ( capabilities[i] == "\u2020" )
continue ;
// remove any trailing "+" (why is it even there?)
// check for a ETO/PTO-only flag
var cap = capabilities[i][1].toString() ;
if ( cap.substring( cap.length-1 ) === "E" )
cap = cap.substring( 0, cap.length-1 ) ; // FIXME! handle this properly
if ( cap.substring( cap.length-1 ) === "P" )
cap = cap.substring( 0, cap.length-1 ) ; // FIXME! handle this properly
// remove any trailing "+" (FIXME! What does it even mean? Doesn't make sense :-/)
if ( cap.substring( cap.length-1 ) == "+" )
cap = cap.substring( 0, cap.length-1 ) ;
if ( ! cap ) {
val = capabilities[i][0] ; // nb: the capability is always available
break ;
}
// parse the month/year the capability becomes available
var month = MONTH_NAMES[ cap.substring(0,1) ] ;
if ( month )
@ -371,7 +384,19 @@ function select_capability_by_date( capabilities, scenario_year, scenario_month
val = capabilities[i][0] ;
}
}
return val ;
if ( ! val )
return val ;
return ref ? val+ref : val ;
}
function has_ref( val )
{
var last = val[ val.length-1 ] ;
if ( typeof(last) === "string" && last.match( /^\u2020(<sup>\d<\/sup>)?$/ ) ) {
val.pop() ;
return last ;
}
return null ;
}
function make_crew_survival( entry )

@ -0,0 +1,31 @@
=== ordnance/american/1940 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
M2 4.2-in. Mortar NT QSU WP10 NT QSU WP10 4† n/a
T25 155mm Mortar NT WP8 NT WP8 5† P
M3A1 37mm AT Gun NT QSU C7[A2+]†[1] NT QSU 6† C†<sup>1</sup> N
M1 57mm AT Gun NT QSU D4[J4+E]† HE7[J4E]7[5]† NT QSU 7† n/a
M5 3-in. AT Gun NT QSU A4[4]5[5]† s6[5] NT QSU 8† <s>P</s>
T32 37mm Manpack Gun 5PP (3PP dm)† C5†[1] crewed†[2] 5PP (3PP dm)† C5†[1] crewed†[2] 9† C†<sup>1</sup> D†<sup>2</sup> F
M18 57mm Recoilless Rifle 3PP crewed†[1] H7 WP6 3PP crewed†[1] H7 WP6 10 D†<sup>1</sup> E†
M20 75mm Recoilless Rifle 5PP crewed†[1] H7 WP7 5PP crewed†[1] H7 WP7 11 D†<sup>1</sup> E†
M1A1 75mm Pack Howitzer NT QSU C4[4+]†[1] H7 WP8 NT QSU H7 WP8 12† C†<sup>1</sup> F
M1897A2 75mm Gun NT QSU WP8 NT QSU WP8 13 P
M2A1 105mm Howitzer NT C7[4+P]†[1] H6 WP8 s7 NT H6 WP8 s7 14† C†<sup>1</sup> N
M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT C7†[1] H7 WP8 s7 15† C†<sup>1</sup>
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†

@ -0,0 +1,31 @@
=== ordnance/american/1941 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
M2 4.2-in. Mortar NT QSU WP10 NT QSU WP10 4† n/a
T25 155mm Mortar NT WP8 NT WP8 5† P
M3A1 37mm AT Gun NT QSU C7[A2+]†[1] NT QSU 6† C†<sup>1</sup> N
M1 57mm AT Gun NT QSU D4[J4+E]† HE7[J4E]7[5]† NT QSU 7† n/a
M5 3-in. AT Gun NT QSU A4[4]5[5]† s6[5] NT QSU 8† <s>P</s>
T32 37mm Manpack Gun 5PP (3PP dm)† C5†[1] crewed†[2] 5PP (3PP dm)† C5†[1] crewed†[2] 9† C†<sup>1</sup> D†<sup>2</sup> F
M18 57mm Recoilless Rifle 3PP crewed†[1] H7 WP6 3PP crewed†[1] H7 WP6 10 D†<sup>1</sup> E†
M20 75mm Recoilless Rifle 5PP crewed†[1] H7 WP7 5PP crewed†[1] H7 WP7 11 D†<sup>1</sup> E†
M1A1 75mm Pack Howitzer NT QSU C4[4+]†[1] H7 WP8 NT QSU H7 WP8 12† C†<sup>1</sup> F
M1897A2 75mm Gun NT QSU WP8 NT QSU WP8 13 P
M2A1 105mm Howitzer NT C7[4+P]†[1] H6 WP8 s7 NT H6 WP8 s7 14† C†<sup>1</sup> N
M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT C7†[1] H7 WP8 s7 15† C†<sup>1</sup>
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†

@ -0,0 +1,31 @@
=== ordnance/american/1942 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
M2 4.2-in. Mortar NT QSU WP10 NT QSU WP10 4† n/a
T25 155mm Mortar NT WP8 NT WP8 5† P
M3A1 37mm AT Gun NT QSU C7[A2+]†[1] NT QSU 6† C†<sup>1</sup> N
M1 57mm AT Gun NT QSU D4[J4+E]† HE7[J4E]7[5]† NT QSU 7† n/a
M5 3-in. AT Gun NT QSU A4[4]5[5]† s6[5] NT QSU 8† <s>P</s>
T32 37mm Manpack Gun 5PP (3PP dm)† C5†[1] crewed†[2] 5PP (3PP dm)† C5†[1] crewed†[2] 9† C†<sup>1</sup> D†<sup>2</sup> F
M18 57mm Recoilless Rifle 3PP crewed†[1] H7 WP6 3PP crewed†[1] H7 WP6 10 D†<sup>1</sup> E†
M20 75mm Recoilless Rifle 5PP crewed†[1] H7 WP7 5PP crewed†[1] H7 WP7 11 D†<sup>1</sup> E†
M1A1 75mm Pack Howitzer NT QSU C4[4+]†[1] H7 WP8 NT QSU H7 WP8 12† C†<sup>1</sup> F
M1897A2 75mm Gun NT QSU WP8 NT QSU WP8 13 P
M2A1 105mm Howitzer NT C7[4+P]†[1] H6 WP8 s7 NT H6 WP8 s7 14† C†<sup>1</sup> N
M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT C7†[1] H7 WP8 s7 15† C†<sup>1</sup>
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†

@ -0,0 +1,31 @@
=== ordnance/american/1943 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
M2 4.2-in. Mortar NT QSU WP10 NT QSU WP10 4† n/a
T25 155mm Mortar NT WP8 NT WP8 5† P
M3A1 37mm AT Gun NT QSU C7[A2+]†[1] NT QSU C7†[1] 6† C†<sup>1</sup> N
M1 57mm AT Gun NT QSU D4[J4+E]† HE7[J4E]7[5]† NT QSU 7† n/a
M5 3-in. AT Gun NT QSU A4[4]5[5]† s6[5] NT QSU 8† <s>P</s>
T32 37mm Manpack Gun 5PP (3PP dm)† C5†[1] crewed†[2] 5PP (3PP dm)† C5†[1] crewed†[2] 9† C†<sup>1</sup> D†<sup>2</sup> F
M18 57mm Recoilless Rifle 3PP crewed†[1] H7 WP6 3PP crewed†[1] H7 WP6 10 D†<sup>1</sup> E†
M20 75mm Recoilless Rifle 5PP crewed†[1] H7 WP7 5PP crewed†[1] H7 WP7 11 D†<sup>1</sup> E†
M1A1 75mm Pack Howitzer NT QSU C4[4+]†[1] H7 WP8 NT QSU H7 WP8 12† C†<sup>1</sup> F
M1897A2 75mm Gun NT QSU WP8 NT QSU WP8 13 P
M2A1 105mm Howitzer NT C7[4+P]†[1] H6 WP8 s7 NT H6 WP8 s7 14† C†<sup>1</sup> N
M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT C7†[1] H7 WP8 s7 15† C†<sup>1</sup>
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 s7 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†

@ -0,0 +1,31 @@
=== ordnance/american/1944 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
M2 4.2-in. Mortar NT QSU WP10 NT QSU WP10 4† n/a
T25 155mm Mortar NT WP8 NT WP8 5† P
M3A1 37mm AT Gun NT QSU C7[A2+]†[1] NT QSU C7†[1] 6† C†<sup>1</sup> N
M1 57mm AT Gun NT QSU D4[J4+E]† HE7[J4E]7[5]† NT QSU 7† n/a
M5 3-in. AT Gun NT QSU A4[4]5[5]† s6[5] NT QSU A4† 8† <s>P</s>
T32 37mm Manpack Gun 5PP (3PP dm)† C5†[1] crewed†[2] 5PP (3PP dm)† C5†[1] crewed†[2] 9† C†<sup>1</sup> D†<sup>2</sup> F
M18 57mm Recoilless Rifle 3PP crewed†[1] H7 WP6 3PP crewed†[1] H7 WP6 10 D†<sup>1</sup> E†
M20 75mm Recoilless Rifle 5PP crewed†[1] H7 WP7 5PP crewed†[1] H7 WP7 11 D†<sup>1</sup> E†
M1A1 75mm Pack Howitzer NT QSU C4[4+]†[1] H7 WP8 NT QSU C4†[1] H7 WP8 12† C†<sup>1</sup> F
M1897A2 75mm Gun NT QSU WP8 NT QSU WP8 13 P
M2A1 105mm Howitzer NT C7[4+P]†[1] H6 WP8 s7 NT C7†[1] H6 WP8 s7 14† C†<sup>1</sup> N
M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT C7†[1] H7 WP8 s7 15† C†<sup>1</sup>
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 s7 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†

@ -0,0 +1,31 @@
=== ordnance/american/1945 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR WP7 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR WP6 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
M2 4.2-in. Mortar NT QSU WP10 NT QSU WP10 4† n/a
T25 155mm Mortar NT WP8 NT WP8 5† P
M3A1 37mm AT Gun NT QSU C7[A2+]†[1] NT QSU C7†[1] 6† C†<sup>1</sup> N
M1 57mm AT Gun NT QSU D4[J4+E]† HE7[J4E]7[5]† NT QSU D4† HE7† 7† n/a
M5 3-in. AT Gun NT QSU A4[4]5[5]† s6[5] NT QSU A5† s6 8† <s>P</s>
T32 37mm Manpack Gun 5PP (3PP dm)† C5†[1] crewed†[2] 5PP (3PP dm)† C5†[1] crewed†[2] 9† C†<sup>1</sup> D†<sup>2</sup> F
M18 57mm Recoilless Rifle 3PP crewed†[1] H7 WP6 3PP crewed†[1] H7 WP6 10 D†<sup>1</sup> E†
M20 75mm Recoilless Rifle 5PP crewed†[1] H7 WP7 5PP crewed†[1] H7 WP7 11 D†<sup>1</sup> E†
M1A1 75mm Pack Howitzer NT QSU C4[4+]†[1] H7 WP8 NT QSU C4†[1] H7 WP8 12† C†<sup>1</sup> F
M1897A2 75mm Gun NT QSU WP8 NT QSU WP8 13 P
M2A1 105mm Howitzer NT C7[4+P]†[1] H6 WP8 s7 NT C7†[1] H6 WP8 s7 14† C†<sup>1</sup> N
M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT C7†[1] H7 WP8 s7 15† C†<sup>1</sup>
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 s7 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 s7 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†

@ -0,0 +1,4 @@
=== vehicles/american/1940 ===
Name Radio IF Crew survival Capabilities (effective) # Notes
------ ------- ---- --------------- -------------- ------------- --- -------

@ -0,0 +1,4 @@
=== vehicles/american/1941 ===
Name Radio IF Crew survival Capabilities (effective) # Notes
------ ------- ---- --------------- -------------- ------------- --- -------

@ -0,0 +1,4 @@
=== vehicles/american/1942 ===
Name Radio IF Crew survival Capabilities (effective) # Notes
------ ------- ---- --------------- -------------- ------------- --- -------

@ -0,0 +1,4 @@
=== vehicles/american/1943 ===
Name Radio IF Crew survival Capabilities (effective) # Notes
------ ------- ---- --------------- -------------- ------------- --- -------

@ -0,0 +1,4 @@
=== vehicles/american/1944 ===
Name Radio IF Crew survival Capabilities (effective) # Notes
------ ------- ---- --------------- -------------- ------------- --- -------

@ -0,0 +1,4 @@
=== vehicles/american/1945 ===
Name Radio IF Crew survival Capabilities (effective) # Notes
------ ------- ---- --------------- -------------- ------------- --- -------

@ -83,7 +83,7 @@ Sherman III(L)(a) n/a yes CS 6 <small><i>(brew up)</i></small> WP7 s5 s
Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†<sup>1</sup> N LL
Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† HE8 sD6 sM8† 53† N LL
Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† HE8 sD6 sM8† 53† N LL
M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†<sup>1</sup>
DUKW(a) n/a yes cs 7 n/a n/a 60† n/a

@ -1,89 +1,89 @@
=== vehicles/russian/1945 ===
Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------ -------------------------------------- --------------- ----- ---------------------
T-37 ® yes CS 2 n/a n/a 1 H† M
T-27 ® yes CS 2 n/a n/a 1.1† M Q
T-40 ® yes CS 2 n/a n/a 2† H†
T-50 ® yes CS 4 A4[2] A4 3 n/a
T-60 M40 ® yes CS 2 n/a n/a 4 n/a
T-60 M42 ®† yes CS 2 n/a n/a 4 C†
T-70 ®† yes CS 2 A4[2] A4 5 C†
T-26 M33 ® yes CS 3 n/a n/a 6 D I† M P
T-26 M37/39 ® yes CS 3 n/a n/a 6 D M P
T-26 M31 ® yes CS 3 n/a n/a 6.1† M P
T-26 M32 ® yes CS 3 n/a n/a 6.2† M P
OT-26 ® yes CS 3 <small><i>(brew up)</i></small> n/a n/a 6.3† M P
ST-26 Bridgelayer n/a yes CS 3 n/a n/a 6.4† M
OT-133 ® yes CS 3 n/a n/a 7† M P
BT-2A ® yes CS 3 n/a n/a 7.1† M
BT-5 M34 ® yes CS 3 n/a n/a 8† M P
BT-7 M37 ® yes CS 3 n/a n/a 9 D I† M P
BT-7A n/a yes CS 3 AP7 s9 AP7 s9 10 M P
T-28 M34 ® yes CS 5 s8 s8 11† M
T-28 M34(L) ® yes CS 5 s8 s8 11.1† M
T-28E M40 ® yes CS 6 s8 s8 12† M
T-28E M40(L) ® yes CS 6 s8 s8 12.1† M
T-34 M40 ® yes CS 5 n/a n/a 13 M
T-34 M41 ®† yes CS 5 A4[2] A4 14† C† M
OT-34 ®† n/a CS 4 A2[2] AP7 A2 AP7 15† C† M
T-34 M43 n/a yes CS 5 A4[2] A4 16† n/a
T-43 ®† yes CS 5 A4[2] A4 17 C† M
T-34/85 n/a yes CS 6 A5[4] sD6† A5 sD6† 18† J†
M4/76(a) n/a yes CS 6 A3[4] s8 sM8 A3 s8 sM8 19† N
T-44 n/a yes CS 5 A6[5] A6 20 B† M
T-35 ® yes CS 8 s9 s9 21† M
SMK n/a yes CS 7 n/a n/a 21.1 M T†
T-100 n/a yes CS 7 n/a n/a 22.1 M T†
KV-1 M39/40 n/a yes CS 6 n/a n/a 22† M
KV-1E n/a yes CS 6 n/a n/a 23 D M
KV-1 M41 n/a yes CS 6 A4[2] A4 23 D M
KV-1 M42 n/a yes CS 6 A4[2] A4 23 D M
KV-2 n/a n/a CS 7 AP9 AP9 24† M
KV-8 n/a yes CS 6 A4[2] AP7 A4 AP7 15† D M
KV-1S n/a yes CS 6 A4[2] A4 25† n/a
KV-85 n/a yes CS 5 A4[3]5[4] A5 26 B†
IS-2 n/a n/a CS 6 n/a n/a 27 B†
IS-2m n/a n/a CS 6 n/a n/a 28 B† G†
IS-3 n/a n/a CS 6 sD6† sD6† 29 G† J†
SU-76M n/a yes CS 4 <small><i>(brew up)</i></small> A5[3] A5 30† n/a
SU-76i(g) n/a yes CS 5 A5[3] A5 31 K
SU-122 n/a n/a CS 5 H9 s8 H9 s8 32 n/a
SU-152 n/a n/a CS 6 n/a n/a 33† n/a
ISU-122 n/a n/a CS 6 s8 s8 34 G†
ISU-152 n/a n/a CS 6 n/a n/a 34 G†
SU-85 n/a yes CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a
SU-100 n/a yes CS 5 HE7 HE7 36 n/a
SU-57(a) n/a yes CS 4 A5[3] HE7 A5 HE7 37 K
BA-20 ® yes CS 3 n/a n/a 38 n/a
BA-6 ® yes CS 4 A4[2] A4 39 n/a
BA-64B n/a yes CS 2 n/a n/a 40† A†
ZSU-37 n/a yes CS 4 n/a n/a 41† A†
SU-12 n/a yes CS 4 AP7 s8 AP7 s8 42 F†
GAZ-4M-AA n/a yes CS 4 n/a n/a 43† A†
ZIS-42-AA n/a yes CS 4 n/a n/a 44 A† F†
LANO AT ® yes CS 5 A4[2+] A4 44.1 n/a
LANO AA ® yes CS 5 n/a n/a 44.2† A†<sup>1</sup>
IAG-10-AA n/a yes CS 4 AP7 AP7 45 A† F†
GAZ-67B n/a yes CS 2 n/a n/a 46 L†
Komsomolet n/a yes CS 2† n/a n/a 46.1† n/a
STZ-3 n/a yes cs 4 n/a n/a 46.2 n/a
STZ-5 n/a yes cs 7 n/a n/a 46.3 n/a
GAZ-MM n/a yes cs 6 n/a n/a 47 n/a
ZIS-5 n/a yes cs 7 n/a n/a 47 n/a
IAG-6 n/a yes cs 7 n/a n/a 47 n/a
NKL-6 n/a yes CS 2† n/a n/a 47.1† S†<sup>1</sup>
NKL-16 n/a yes cs 2 n/a n/a 47.1† S†<sup>1</sup>
NKL-26 n/a yes CS 2 n/a n/a 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 n/a yes CS 3 n/a n/a 47.3† S†<sup>1</sup>
Stuart III(a) n/a yes CS 4 C6 C6 48 N O LL
Lee(a) n/a yes CS 7 C4† s8† C4† s8† 49† B†<sup>1</sup> N O LL
Sherman III(a) n/a yes CS 5 <small><i>(brew up)</i></small> WP6[J4+]† s8 WP6 s8 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) n/a yes CS 6 <small><i>(brew up)</i></small> WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL
Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†<sup>1</sup> N LL
Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† D7 HE8 sD6 sM8† 53† N LL
M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†<sup>1</sup>
DUKW(a) n/a yes cs 7 n/a n/a 60† n/a
Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------ -------------------------------------- ----------------- ----- ---------------------
T-37 ® yes CS 2 n/a n/a 1 H† M
T-27 ® yes CS 2 n/a n/a 1.1† M Q
T-40 ® yes CS 2 n/a n/a 2† H†
T-50 ® yes CS 4 A4[2] A4 3 n/a
T-60 M40 ® yes CS 2 n/a n/a 4 n/a
T-60 M42 ®† yes CS 2 n/a n/a 4 C†
T-70 ®† yes CS 2 A4[2] A4 5 C†
T-26 M33 ® yes CS 3 n/a n/a 6 D I† M P
T-26 M37/39 ® yes CS 3 n/a n/a 6 D M P
T-26 M31 ® yes CS 3 n/a n/a 6.1† M P
T-26 M32 ® yes CS 3 n/a n/a 6.2† M P
OT-26 ® yes CS 3 <small><i>(brew up)</i></small> n/a n/a 6.3† M P
ST-26 Bridgelayer n/a yes CS 3 n/a n/a 6.4† M
OT-133 ® yes CS 3 n/a n/a 7† M P
BT-2A ® yes CS 3 n/a n/a 7.1† M
BT-5 M34 ® yes CS 3 n/a n/a 8† M P
BT-7 M37 ® yes CS 3 n/a n/a 9 D I† M P
BT-7A n/a yes CS 3 AP7 s9 AP7 s9 10 M P
T-28 M34 ® yes CS 5 s8 s8 11† M
T-28 M34(L) ® yes CS 5 s8 s8 11.1† M
T-28E M40 ® yes CS 6 s8 s8 12† M
T-28E M40(L) ® yes CS 6 s8 s8 12.1† M
T-34 M40 ® yes CS 5 n/a n/a 13 M
T-34 M41 ®† yes CS 5 A4[2] A4 14† C† M
OT-34 ®† n/a CS 4 A2[2] AP7 A2 AP7 15† C† M
T-34 M43 n/a yes CS 5 A4[2] A4 16† n/a
T-43 ®† yes CS 5 A4[2] A4 17 C† M
T-34/85 n/a yes CS 6 A5[4] sD6† A5 sD6† 18† J†
M4/76(a) n/a yes CS 6 A3[4] s8 sM8 A3 s8 sM8 19† N
T-44 n/a yes CS 5 A6[5] A6 20 B† M
T-35 ® yes CS 8 s9 s9 21† M
SMK n/a yes CS 7 n/a n/a 21.1 M T†
T-100 n/a yes CS 7 n/a n/a 22.1 M T†
KV-1 M39/40 n/a yes CS 6 n/a n/a 22† M
KV-1E n/a yes CS 6 n/a n/a 23 D M
KV-1 M41 n/a yes CS 6 A4[2] A4 23 D M
KV-1 M42 n/a yes CS 6 A4[2] A4 23 D M
KV-2 n/a n/a CS 7 AP9 AP9 24† M
KV-8 n/a yes CS 6 A4[2] AP7 A4 AP7 15† D M
KV-1S n/a yes CS 6 A4[2] A4 25† n/a
KV-85 n/a yes CS 5 A4[3]5[4] A5 26 B†
IS-2 n/a n/a CS 6 n/a n/a 27 B†
IS-2m n/a n/a CS 6 n/a n/a 28 B† G†
IS-3 n/a n/a CS 6 sD6† sD6† 29 G† J†
SU-76M n/a yes CS 4 <small><i>(brew up)</i></small> A5[3] A5 30† n/a
SU-76i(g) n/a yes CS 5 A5[3] A5 31 K
SU-122 n/a n/a CS 5 H9 s8 H9 s8 32 n/a
SU-152 n/a n/a CS 6 n/a n/a 33† n/a
ISU-122 n/a n/a CS 6 s8 s8 34 G†
ISU-152 n/a n/a CS 6 n/a n/a 34 G†
SU-85 n/a yes CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a
SU-100 n/a yes CS 5 HE7 HE7 36 n/a
SU-57(a) n/a yes CS 4 A5[3] HE7 A5 HE7 37 K
BA-20 ® yes CS 3 n/a n/a 38 n/a
BA-6 ® yes CS 4 A4[2] A4 39 n/a
BA-64B n/a yes CS 2 n/a n/a 40† A†
ZSU-37 n/a yes CS 4 n/a n/a 41† A†
SU-12 n/a yes CS 4 AP7 s8 AP7 s8 42 F†
GAZ-4M-AA n/a yes CS 4 n/a n/a 43† A†
ZIS-42-AA n/a yes CS 4 n/a n/a 44 A† F†
LANO AT ® yes CS 5 A4[2+] A4 44.1 n/a
LANO AA ® yes CS 5 n/a n/a 44.2† A†<sup>1</sup>
IAG-10-AA n/a yes CS 4 AP7 AP7 45 A† F†
GAZ-67B n/a yes CS 2 n/a n/a 46 L†
Komsomolet n/a yes CS 2† n/a n/a 46.1† n/a
STZ-3 n/a yes cs 4 n/a n/a 46.2 n/a
STZ-5 n/a yes cs 7 n/a n/a 46.3 n/a
GAZ-MM n/a yes cs 6 n/a n/a 47 n/a
ZIS-5 n/a yes cs 7 n/a n/a 47 n/a
IAG-6 n/a yes cs 7 n/a n/a 47 n/a
NKL-6 n/a yes CS 2† n/a n/a 47.1† S†<sup>1</sup>
NKL-16 n/a yes cs 2 n/a n/a 47.1† S†<sup>1</sup>
NKL-26 n/a yes CS 2 n/a n/a 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 n/a yes CS 3 n/a n/a 47.3† S†<sup>1</sup>
Stuart III(a) n/a yes CS 4 C6 C6 48 N O LL
Lee(a) n/a yes CS 7 C4† s8† C4† s8† 49† B†<sup>1</sup> N O LL
Sherman III(a) n/a yes CS 5 <small><i>(brew up)</i></small> WP6[J4+]† s8 WP6 s8 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) n/a yes CS 6 <small><i>(brew up)</i></small> WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL
Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†<sup>1</sup> N LL
Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† D7 HE8 sD6 sM8† 53† N LL
M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†<sup>1</sup>
DUKW(a) n/a yes cs 7 n/a n/a 60† n/a

@ -26,8 +26,18 @@ def test_vo_reports( webapp, webdriver ):
if save_dir and os.path.isdir(save_dir):
shutil.rmtree( save_dir )
def fixup_capabilities( col, caption ):
"""Convert capability HTML to something a bit more readable."""
assert results[0][col] == caption
for i in range(1,len(results)):
results[i][col] = re.sub(
r"<sup>(.*?)</sup>",
lambda mo: "[{}]".format( mo.group(1) ),
results[i][col]
)
# check each vehicle/ordnance report
for nat in ["german","russian"]:
for nat in ["german","russian","american"]:
for vo_type in ["vehicles","ordnance"]:
for year in range(1940,1945+1):
@ -43,13 +53,9 @@ def test_vo_reports( webapp, webdriver ):
results[0].insert( len(results[0])-2, "(effective)" )
# fix up date-based capabilities
assert results[0][-4] == "Capabilities"
for i in range(1,len(results)):
results[i][-4] = re.sub(
r"<sup>(.*?)</sup>",
lambda mo: "[{}]".format( mo.group(1) ),
results[i][-4]
)
fixup_capabilities( -4, "Capabilities" )
fixup_capabilities( -3, "(effective)" )
fixup_capabilities( -2, "#" )
# output the report
print( "=== {}/{}/{} ===".format( vo_type, nat, year ), file=buf )

Loading…
Cancel
Save