import axios from "axios"; import { useContext, useState } from "react"; import { BackendURL } from "../Config"; import { LanguageContext } from "../Locales/Context"; import { GetLocalizedString } from "../Locales/Locales"; import { AllowedLanguages } from "../Locales/Context"; import { RangedWeapon } from "../Models/RangedWeapon"; const RangedWeaponsURL = `${BackendURL}/weapons/ranged`; function WeaponsIndex() { const lang = useContext(LanguageContext); const [rangedWeapons, setRangedWeapons] = useState(null); useState(() => { getRangedWeapons().then(data => setRangedWeapons(data)); }); return (

{GetLocalizedString("Weapons index", lang)}

{GetLocalizedString("Ranged weapons", lang)}

{generatedRangedWeaponsList(rangedWeapons, lang)}
); } function generatedRangedWeaponsList(rangedWeapons: RangedWeapon[] | null, language: AllowedLanguages): any { if (!rangedWeapons) { return (
); } const categorized = new Map(); rangedWeapons.forEach(el => { if (!categorized.has(el.WeaponType)) { categorized.set(el.WeaponType, new Array()); } categorized.get(el.WeaponType)?.push(el); }); const keys = Array.from(categorized.keys()); const list = keys.map(x => { const elements = categorized.get(x)?.map(w => { return ( {w.Name} ({GetLocalizedString(w.Origin, language)}) {w.Accuracy} {w.Concealability} {w.Avaliability} {w.Damage}({w.Ammunition}) {w.NumberOfShots} {w.RateOfFire} {w.Reliability} ) }); return ( {GetLocalizedString(`${x}s`, language)} {elements} ); }); return ( {list}
); } async function getRangedWeapons(): Promise { try { const {data, status} = await axios.get( RangedWeaponsURL, { headers: { Accept: "application/json" } } ); if (status != 200) { return new Array(); } return data; } catch (err) { console.log(`Failed to get ranged weapons: ${err}`); return new Array(); } } export default WeaponsIndex;