1st commit

This commit is contained in:
IM23a-bachmannj2
2024-09-11 12:32:01 +02:00
commit c51e60ed05
10 changed files with 1124 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
+61
View File
@@ -0,0 +1,61 @@
from flask import Flask, render_template, jsonify
import json
app = Flask(__name__)
# Load the data from the JSON file
with open('data.json') as f:
guns = json.load(f)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/api/guns', methods=['GET'])
def get_guns():
updated_guns = []
for gun in guns:
# Calculate RPS, DPS, DPM, avgDPS
rps = gun['rpm'] / 60
dps = gun['damage'] * rps
reload_time_min = gun['reload_time'] / 60
dpm = (gun['mag_size'] * gun['damage']) / (reload_time_min + (gun['mag_size'] / gun['rpm']))
avg_dps = dpm / 60
# Add calculated stats to the gun data
gun.update({
'rps': rps,
'dps': dps,
'dpm': dpm,
'avg_dps': avg_dps
})
updated_guns.append(gun)
return jsonify(updated_guns)
@app.route('/calculator')
def calculator():
return render_template('calculator.html')
def dps_calculation(damage, extra_dmg_percent, rpm, extra_fire_rate):
dps = damage * (extra_dmg_percent / 100 + 1) * (rpm * (extra_fire_rate / 100 + 1) / 60)
return round(dps, 2)
def dpm_calculation(reload_time, extra_reload_speed, rpm, damage, extra_dmg_percent, mag_size, extra_fire_rate):
adjusted_reload_time = reload_time * (extra_reload_speed / 100 + 1)
adjusted_fire_rate = rpm * (extra_fire_rate / 100 + 1)
total_damage_per_mag = damage * (extra_dmg_percent / 100 + 1) * mag_size
dpm = total_damage_per_mag / ((adjusted_reload_time / 60) + (mag_size / adjusted_fire_rate))
return round(dpm, 2)
def average_dpm_calculation():
dpm = float(dpm_calculation())
return round(dpm / 60, 2)
if __name__ == '__main__':
app.run(debug=True)
+882
View File
@@ -0,0 +1,882 @@
[
{
"id": 1,
"name": "G18",
"damage": 32,
"damage_multiplier": 1,
"rpm": 550,
"mag_size": 18,
"reload_time": 2,
"gunytpe": "PISTOL"
},
{
"id": 2,
"name": "M1911",
"damage": 37,
"damage_multiplier": 1,
"rpm": 580,
"mag_size": 8,
"reload_time": 1.15,
"gunytpe": "PISTOL"
},
{
"id": 3,
"name": "M9A",
"damage": 31,
"damage_multiplier": 1,
"rpm": 850,
"mag_size": 15,
"reload_time": 2,
"gunytpe": "PISTOL"
},
{
"id": 4,
"name": "M1911MK2",
"damage": 48,
"damage_multiplier": 1,
"rpm": 720,
"mag_size": 16,
"reload_time": 3,
"gunytpe": "PISTOL"
},
{
"id": 5,
"name": "Luger",
"damage": 58,
"damage_multiplier": 1,
"rpm": 500,
"mag_size": 8,
"reload_time": 1.95,
"gunytpe": "PISTOL"
},
{
"id": 6,
"name": "AK47",
"damage": 40,
"damage_multiplier": 1,
"rpm": 600,
"mag_size": 30,
"reload_time": 2.1,
"gunytpe": "RIFLE"
},
{
"id": 7,
"name": "G36",
"damage": 42,
"damage_multiplier": 1,
"rpm": 700,
"mag_size": 30,
"reload_time": 2.4,
"gunytpe": "RIFLE"
},
{
"id": 8,
"name": "CRL10",
"damage": 75,
"damage_multiplier": 1,
"rpm": 400,
"mag_size": 24,
"reload_time": 2.6,
"gunytpe": "RIFLE"
},
{
"id": 9,
"name": "BRH17",
"damage": 58,
"damage_multiplier": 1,
"rpm": 670,
"mag_size": 30,
"reload_time": 3.25,
"gunytpe": "RIFLE"
},
{
"id": 10,
"name": "M4",
"damage": 40,
"damage_multiplier": 1,
"rpm": 700,
"mag_size": 30,
"reload_time": 2.35,
"gunytpe": "RIFLE"
},
{
"id": 11,
"name": "M1",
"damage": 425,
"damage_multiplier": 1,
"rpm": 60,
"mag_size": 8,
"reload_time": 2.8,
"gunytpe": "RIFLE"
},
{
"id": 12,
"name": "R870",
"damage": 92,
"damage_multiplier": 6,
"rpm": 70,
"mag_size": 12,
"reload_time": 12,
"gunytpe": "SHOTGUN"
},
{
"id": 13,
"name": "R870 (1 Pellet Hit DPS/DPM)",
"damage": 92,
"damage_multiplier": 1,
"rpm": 70,
"mag_size": 12,
"reload_time": 12,
"gunytpe": "SHOTGUN"
},
{
"id": 14,
"name": "Scattergun",
"damage": 110,
"damage_multiplier": 4,
"rpm": 300,
"mag_size": 7,
"reload_time": 4,
"gunytpe": "SHOTGUN"
},
{
"id": 15,
"name": "Scattergun (1 Pellet Hit DPS/DPM)",
"damage": 58,
"damage_multiplier": 1,
"rpm": 300,
"mag_size": 7,
"reload_time": 4.5,
"gunytpe": "SHOTGUN"
},
{
"id": 16,
"name": "Shorty",
"damage": 29,
"damage_multiplier": 4,
"rpm": 185,
"mag_size": 8,
"reload_time": 3.5,
"gunytpe": "SHOTGUN"
},
{
"id": 17,
"name": "Shorty (1 Pellet Hit DPS/DPM)",
"damage": 29,
"damage_multiplier": 1,
"rpm": 185,
"mag_size": 8,
"reload_time": 3.5,
"gunytpe": "SHOTGUN"
},
{
"id": 18,
"name": "AA12",
"damage": 22,
"damage_multiplier": 4,
"rpm": 300,
"mag_size": 20,
"reload_time": 2.2,
"gunytpe": "SHOTGUN"
},
{
"id": 19,
"name": "AA12 (1 Pellet Hit DPS/DPM)",
"damage": 22,
"damage_multiplier": 1,
"rpm": 300,
"mag_size": 20,
"reload_time": 2.2,
"gunytpe": "SHOTGUN"
},
{
"id": 20,
"name": "P90",
"damage": 32,
"damage_multiplier": 1,
"rpm": 900,
"mag_size": 50,
"reload_time": 3,
"gunytpe": "SMG"
},
{
"id": 21,
"name": "Thompson",
"damage": 38,
"damage_multiplier": 1,
"rpm": 750,
"mag_size": 50,
"reload_time": 2.5,
"gunytpe": "SMG"
},
{
"id": 22,
"name": "Uzi",
"damage": 20,
"damage_multiplier": 1,
"rpm": 850,
"mag_size": 32,
"reload_time": 2,
"gunytpe": "SMG"
},
{
"id": 23,
"name": "Vector",
"damage": 32,
"damage_multiplier": 1,
"rpm": 1050,
"mag_size": 33,
"reload_time": 2,
"gunytpe": "SMG"
},
{
"id": 24,
"name": "MP5",
"damage": 23,
"damage_multiplier": 1,
"rpm": 800,
"mag_size": 30,
"reload_time": 2.1,
"gunytpe": "SMG"
},
{
"id": 25,
"name": "U10",
"damage": 18,
"damage_multiplier": 1,
"rpm": 750,
"mag_size": 65,
"reload_time": 2,
"gunytpe": "SMG"
},
{
"id": 26,
"name": "MPX",
"damage": 28,
"damage_multiplier": 1,
"rpm": 780,
"mag_size": 30,
"reload_time": 2.65,
"gunytpe": "SMG"
},
{
"id": 27,
"name": "UMP45",
"damage": 28,
"damage_multiplier": 1,
"rpm": 600,
"mag_size": 25,
"reload_time": 2,
"gunytpe": "SMG"
},
{
"id": 28,
"name": "Prototype",
"damage": 21,
"damage_multiplier": 1,
"rpm": 800,
"mag_size": 25,
"reload_time": 2.5,
"gunytpe": "SMG"
},
{
"id": 29,
"name": "Prototype (Overcharged)",
"damage": 21,
"damage_multiplier": 1.35,
"rpm": 800,
"mag_size": 25,
"reload_time": 2.5,
"gunytpe": "SMG"
},
{
"id": 30,
"name": "MP40",
"damage": 50,
"damage_multiplier": 1,
"rpm": 550,
"mag_size": 32,
"reload_time": 3,
"gunytpe": "SMG"
},
{
"id": 31,
"name": "PKM",
"damage": 41,
"damage_multiplier": 1,
"rpm": 750,
"mag_size": 100,
"reload_time": 5.5,
"gunytpe": "LMG"
},
{
"id": 32,
"name": "M249",
"damage": 42,
"damage_multiplier": 1,
"rpm": 850,
"mag_size": 100,
"reload_time": 6,
"gunytpe": "LMG"
},
{
"id": 33,
"name": "T49",
"damage": 48,
"damage_multiplier": 1,
"rpm": 780,
"mag_size": 125,
"reload_time": 5.5,
"gunytpe": "LMG"
},
{
"id": 34,
"name": "T32",
"damage": 52,
"damage_multiplier": 1,
"rpm": 700,
"mag_size": 50,
"reload_time": 3.25,
"gunytpe": "RIFLE"
},
{
"id": 35,
"name": "Improved T49",
"damage": 48,
"damage_multiplier": 1,
"rpm": 850,
"mag_size": 125,
"reload_time": 5.5,
"gunytpe": "LMG"
},
{
"id": 36,
"name": "Improved T32",
"damage": 52,
"damage_multiplier": 1,
"rpm": 750,
"mag_size": 50,
"reload_time": 3.25,
"gunytpe": "RIFLE"
},
{
"id": 37,
"name": "AMR 12.7",
"damage": 1000,
"damage_multiplier": 1,
"rpm": 30,
"mag_size": 5,
"reload_time": 3.5,
"gunytpe": "RIFLE?"
},
{
"id": 38,
"name": "Golden Thompson",
"damage": 44,
"damage_multiplier": 1,
"rpm": 800,
"mag_size": 50,
"reload_time": 2.5,
"gunytpe": "SMG"
},
{
"id": 39,
"name": "MilTech SMGs",
"damage": 40,
"damage_multiplier": 1,
"rpm": 900,
"mag_size": 64,
"reload_time": 4,
"gunytpe": "SMG"
},
{
"id": 40,
"name": "Eradicator",
"damage": 40,
"damage_multiplier": 1,
"rpm": 1000,
"mag_size": 50,
"reload_time": 2.45,
"gunytpe": "RIFLE"
},
{
"id": 41,
"name": "A10",
"damage": 1000,
"damage_multiplier": 1,
"rpm": 3000,
"mag_size": 10000000000000000000,
"reload_time": 0,
"gunytpe": "SPECIAL"
},
{
"id": 42,
"name": "Turret (Manual)",
"damage": 100,
"damage_multiplier": 1,
"rpm": 500,
"mag_size": 650,
"reload_time": 0,
"gunytpe": "SPECIAL"
},
{
"id": 43,
"name": "Turret (Automatic)",
"damage": 100,
"damage_multiplier": 1,
"rpm": 300,
"mag_size": 650,
"reload_time": 0,
"gunytpe": "SPECIAL"
},
{
"id": 44,
"name": "Improved G18",
"damage": 38,
"damage_multiplier": 1,
"rpm": 650,
"mag_size": 18,
"reload_time": 2,
"gunytpe": "PISTOL"
},
{
"id": 45,
"name": "Silenced G18",
"damage": 38,
"damage_multiplier": 1,
"rpm": 550,
"mag_size": 18,
"reload_time": 2,
"gunytpe": "PISTOL"
},
{
"id": 46,
"name": "RC12",
"damage": 50,
"damage_multiplier": 4,
"rpm": 225,
"mag_size": 10,
"reload_time": 5,
"gunytpe": "SHOTGUN"
},
{
"id": 47,
"name": "RC12 (1 pellet hit)",
"damage": 50,
"damage_multiplier": 1,
"rpm": 225,
"mag_size": 10,
"reload_time": 5,
"gunytpe": "SHOTGUN"
},
{
"id": 48,
"name": "MRL4",
"damage": 48.5,
"damage_multiplier": 1,
"rpm": 550,
"mag_size": 30,
"reload_time": 2.35,
"gunytpe": "RIFLE"
},
{
"id": 49,
"name": "Improved MRL4",
"damage": 48.5,
"damage_multiplier": 1,
"rpm": 600,
"mag_size": 30,
"reload_time": 2.35,
"gunytpe": "RIFLE"
},
{
"id": 50,
"name": "K4LAS",
"damage": 45,
"damage_multiplier": 1,
"rpm": 600,
"mag_size": 32,
"reload_time": 2.45,
"gunytpe": "RIFLE"
},
{
"id": 51,
"name": "Improved K4LAS",
"damage": 45,
"damage_multiplier": 1,
"rpm": 650,
"mag_size": 32,
"reload_time": 2.45,
"gunytpe": "RIFLE"
},
{
"id": 52,
"name": "MK49",
"damage": 40,
"damage_multiplier": 1,
"rpm": 625,
"mag_size": 100,
"reload_time": 4.5,
"gunytpe": "LMG"
},
{
"id": 53,
"name": "Improved MK49",
"damage": 40,
"damage_multiplier": 1,
"rpm": 700,
"mag_size": 100,
"reload_time": 4.5,
"gunytpe": "LMG"
},
{
"id": 54,
"name": "Improved P90",
"damage": 32,
"damage_multiplier": 1,
"rpm": 800,
"mag_size": 50,
"reload_time": 2.6,
"gunytpe": "SMG"
},
{
"id": 55,
"name": "STEN Gun",
"damage": 50,
"damage_multiplier": 1,
"rpm": 550,
"mag_size": 32,
"reload_time": 2.5,
"gunytpe": "SMG"
},
{
"id": 56,
"name": "Akimbo G18",
"damage": 52,
"damage_multiplier": 1,
"rpm": 700,
"mag_size": 34,
"reload_time": 3.5,
"gunytpe": "PISTOL"
},
{
"id": 57,
"name": "ASR",
"damage": 100,
"damage_multiplier": 1,
"rpm": 440,
"mag_size": 18,
"reload_time": 3.5,
"gunytpe": "RIFLE"
},
{
"id": 58,
"name": "Improved ASR",
"damage": 100,
"damage_multiplier": 1,
"rpm": 540,
"mag_size": 18,
"reload_time": 3.5,
"gunytpe": "RIFLE"
},
{
"id": 59,
"name": "Improved G36",
"damage": 42,
"damage_multiplier": 1,
"rpm": 780,
"mag_size": 30,
"reload_time": 2.25,
"gunytpe": "RIFLE"
},
{
"id": 60,
"name": "Akimbo Voids",
"damage": 15,
"damage_multiplier": 1,
"rpm": 900,
"mag_size": 26,
"reload_time": 2.5,
"gunytpe": "SMG?"
},
{
"id": 61,
"name": "Improved Akimbo Voids",
"damage": 38,
"damage_multiplier": 1,
"rpm": 1200,
"mag_size": 26,
"reload_time": 2,
"gunytpe": "SMG?"
},
{
"id": 62,
"name": "Improved MP5",
"damage": 34,
"damage_multiplier": 1,
"rpm": 800,
"mag_size": 30,
"reload_time": 1.5,
"gunytpe": "SMG"
},
{
"id": 63,
"name": "LTL Laser",
"damage": 28,
"damage_multiplier": 1,
"rpm": 200,
"mag_size": 2,
"reload_time": 3,
"gunytpe": "SPECIAL"
},
{
"id": 64,
"name": "Improved Vector",
"damage": 36,
"damage_multiplier": 1,
"rpm": 1050,
"mag_size": 30,
"reload_time": 2,
"gunytpe": "SMG"
},
{
"id": 65,
"name": "T45",
"damage": 28,
"damage_multiplier": 1,
"rpm": 850,
"mag_size": 30,
"reload_time": 2,
"gunytpe": "SMG"
},
{
"id": 66,
"name": "Improved T45",
"damage": 40,
"damage_multiplier": 1,
"rpm": 850,
"mag_size": 30,
"reload_time": 2,
"gunytpe": "SMG"
},
{
"id": 67,
"name": "Freeze Ray",
"damage": 2,
"damage_multiplier": 1,
"rpm": 600,
"mag_size": 20,
"reload_time": 2,
"gunytpe": "SPECIAL"
},
{
"id": 68,
"name": "Freeze Rifle",
"damage": 4,
"damage_multiplier": 1,
"rpm": 650,
"mag_size": 30,
"reload_time": 2.35,
"gunytpe": "SPECIAL"
},
{
"id": 69,
"name": "R416",
"damage": 40,
"damage_multiplier": 1,
"rpm": 830,
"mag_size": 30,
"reload_time": 2.5,
"gunytpe": "RIFLE"
},
{
"id": 70,
"name": "Improved R416",
"damage": 44,
"damage_multiplier": 1,
"rpm": 900,
"mag_size": 30,
"reload_time": 2.5,
"gunytpe": "RIFLE"
},
{
"id": 71,
"name": "Flare Gun",
"damage": 125,
"damage_multiplier": 1,
"rpm": 480,
"mag_size": 1,
"reload_time": 1,
"gunytpe": "SPECIAL"
},
{
"id": 72,
"name": "Improved BRH17",
"damage": 58,
"damage_multiplier": 1,
"rpm": 700,
"mag_size": 30,
"reload_time": 3.25,
"gunytpe": "RIFLE"
},
{
"id": 73,
"name": "Deagle",
"damage": 70,
"damage_multiplier": 1,
"rpm": 400,
"mag_size": 18,
"reload_time": 2.1,
"gunytpe": "PISTOL"
},
{
"id": 74,
"name": "Akimbo Deagles",
"damage": 70,
"damage_multiplier": 1,
"rpm": 400,
"mag_size": 36,
"reload_time": 3.5,
"gunytpe": "PISTOL"
},
{
"id": 75,
"name": "CRL11",
"damage": 130,
"damage_multiplier": 1,
"rpm": 300,
"mag_size": 10,
"reload_time": 3,
"gunytpe": "RIFLE"
},
{
"id": 76,
"name": "Scan Rifle",
"damage": 30,
"damage_multiplier": 1,
"rpm": 700,
"mag_size": 10,
"reload_time": 2,
"gunytpe": "RIFLE?"
},
{
"id": 77,
"name": "PPSH41",
"damage": 28,
"damage_multiplier": 1,
"rpm": 1000,
"mag_size": 71,
"reload_time": 2.5,
"gunytpe": "UNKOWN"
},
{
"id": 78,
"name": "AK74M",
"damage": 40,
"damage_multiplier": 1,
"rpm": 690,
"mag_size": 30,
"reload_time": 2.5,
"gunytpe": "RIFLE"
},
{
"id": 79,
"name": "Akimbo Uzi",
"damage": 38,
"damage_multiplier": 1,
"rpm": 800,
"mag_size": 64,
"reload_time": 4,
"gunytpe": "SMG"
},
{
"id": 80,
"name": "Akimbo MP5",
"damage": 42,
"damage_multiplier": 1,
"rpm": 800,
"mag_size": 60,
"reload_time": 4,
"gunytpe": "SMG"
},
{
"id": 81,
"name": "Improved Thompson",
"damage": 38,
"damage_multiplier": 1,
"rpm": 800,
"mag_size": 50,
"reload_time": 2.5,
"gunytpe": "SMG"
},
{
"id": 82,
"name": "RV9",
"damage": 100,
"damage_multiplier": 1,
"rpm": 400,
"mag_size": 12,
"reload_time": 2.6,
"gunytpe": "RIFLE"
},
{
"id": 83,
"name": "SPAS-12",
"damage": 24,
"damage_multiplier": 8,
"rpm": 150,
"mag_size": 8,
"reload_time": 2.2,
"gunytpe": "SHOTGUN"
},
{
"id": 84,
"name": "Akimbo Shotguns",
"damage": 51,
"damage_multiplier": 8,
"rpm": 200,
"mag_size": 1000000000000000000000000000000000000000000000000000000000000000,
"reload_time": 0,
"gunytpe": "SHOTGUN"
},
{
"id": 85,
"name": "SK17",
"damage": 58,
"damage_multiplier": 1,
"rpm": 900,
"mag_size": 30,
"reload_time": 4,
"gunytpe": "RIFLE"
},
{
"id": 86,
"name": "Type49",
"damage": 999,
"damage_multiplier": 1,
"rpm": 9999,
"mag_size": 999,
"reload_time": 1,
"gunytpe": "RIFLE"
},
{
"id": 87,
"name": "M32",
"damage": 500,
"damage_multiplier": 1,
"rpm": 9999,
"mag_size": 6,
"reload_time": 12,
"gunytpe": "SPECIAL"
},
{
"id": 88,
"name": "M32NL",
"damage": 1,
"damage_multiplier": 1,
"rpm": 9999,
"mag_size": 6,
"reload_time": 12,
"gunytpe": "SPECIAL"
}
]
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
View File
Binary file not shown.
+18
View File
@@ -0,0 +1,18 @@
function filterTable() {
const input = document.getElementById('search');
const filter = input.value.toLowerCase();
const table = document.getElementById('gun-stats');
const tr = table.getElementsByTagName('tr');
for (let i = 1; i < tr.length; i++) {
const td = tr[i].getElementsByTagName('td')[1];
if (td) {
const txtValue = td.textContent || td.innerText;
if (txtValue.toLowerCase().indexOf(filter) > -1) {
tr[i].style.display = '';
} else {
tr[i].style.display = 'none';
}
}
}
}
+27
View File
@@ -0,0 +1,27 @@
document.addEventListener('DOMContentLoaded', () => {
fetch('/api/guns')
.then(response => response.json())
.then(data => {
populateTable(data);
});
});
function populateTable(data) {
const table = document.getElementById('gun-stats').getElementsByTagName('tbody')[0];
table.innerHTML = ''; // Clear existing table data
data.forEach(gun => {
const row = table.insertRow();
row.insertCell(0).innerText = gun.id;
row.insertCell(1).innerText = gun.name;
row.insertCell(2).innerText = gun.damage;
row.insertCell(3).innerText = gun.damage_multiplier;
row.insertCell(4).innerText = gun.rpm;
row.insertCell(5).innerText = gun.mag_size;
row.insertCell(6).innerText = gun.reload_time;
row.insertCell(7).innerText = gun.guntype;
row.insertCell(8).innerText = gun.rps.toFixed(2);
row.insertCell(9).innerText = gun.dps.toFixed(2);
row.insertCell(10).innerText = gun.dpm.toFixed(2);
row.insertCell(11).innerText = gun.avg_dps.toFixed(2);
});
}
+61
View File
@@ -0,0 +1,61 @@
.background_image {
background-image: url("img/trlbg1.jpg");
}
body {
font-family: Arial, sans-serif;
margin: 20px;
}
h1 {
color: #333;
}
table {
width: 100%;
border-collapse: collapse;
margin-bottom: 20px;
}
table, th, td {
border: 1px solid #ddd;
}
th, td {
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
button {
padding: 5px 10px;
background-color: #4CAF50;
color: white;
border: none;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
input {
padding: 5px;
margin-bottom: 20px;
}
#result {
margin-top: 20px;
}
#search {
width: 33%;
padding: 6px;
border: 2px black solid;
margin-top: 8px;
margin-right: 16px;
font-size: 17px;
}
+22
View File
@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
<title>Gun Stats</title>
</head>
<body>
<header>
</header>
<main>
<form action="/action_page.php">
<label for="rpm">Damage:</label>
<input type="text" id="dmg" name="fname"><br><br>
<label for="rpm">RPM:</label>
<input type="text" id="rpm" name="lname"><br><br>
<input type="submit" value="Submit">
</form>
</main>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gun Stats</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<header>
<nav>
<a class="index-nav" href="{{ url_for('calculator') }}">Calculator</a>
</nav>
</header>
<main>
<h1>Gun Stats</h1>
<div>
<input type="text" id="search" placeholder="Search by name" onkeyup="filterTable()">
</div>
<table id="gun-stats">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Damage</th>
<th>Damage multiplier</th>
<th>Rounds per minute</th>
<th>Magazine Size</th>
<th>Reload time</th>
<th>Gun type</th>
<th>RPS</th>
<th>DPS</th>
<th>DPM</th>
<th>Avg DPS</th>
</tr>
</thead>
<tbody>
<!-- Gun stats will be populated here -->
</tbody>
</table>
<script src="{{ url_for('static', filename='populateTable.js') }}"></script>
<script src="{{ url_for('static', filename='filterTable.js') }}"></script>
</main>
</body>
</html>