import React, {useEffect, useState} from "react"; import {AvailableUnits} from "../core/api"; import {Grid2, Table, TableBody, TableCell, TableContainer, TableHead, TableRow} from "@mui/material"; import {NavLink} from "react-router-dom"; import {IRaceUnits, IUnitShort} from "../types/IUnitShort"; interface IUnitsTable { racesUnits: IRaceUnits[]; } export default function UnitsTable(prop: {modId: number}) { const [unitsTable, setUnitsTable] = useState({ racesUnits: [] }); function getUnitRef(modId: number, raceId: string, unit: IUnitShort) { return {unit.name}
} useEffect(() => { fetch(AvailableUnits + "/mod/" + prop.modId) .then(res => res.json()) .then((res: IRaceUnits[]) => { setUnitsTable({ racesUnits : res }); }) }, []); function armourTypePriority(armorTypeId: string): number { switch(armorTypeId) { case 'Infantry Low': return 1; case 'Infantry Medium': return 2; case 'Infantry High': return 3; case 'Demon Medium': return 4; case 'Infantry Heavy Medium': return 5; case 'Infantry Heavy High': return 6; case 'Commander': return 7; case 'Vehicle Low': return 8; case 'Vehicle Medium': return 9; case 'Vehicle High': return 10; case 'Demon High': return 11; case 'Air': return 12; case 'Building Low': return 13; case 'Building Medium': return 14; case 'Building High': return 15; default: return 0; } } function getUnitsRef(units: IUnitShort[], raceId: string): JSX.Element[] { return units .sort((a, b) => armourTypePriority(a.armourTypeName) - armourTypePriority(b.armourTypeName)) .map(unit => getUnitRef(prop.modId, raceId, unit) ) } function generateRaceUnitTable(racesUnitsPart: IRaceUnits[]){ return ( { {racesUnitsPart.map(raceUnits =>

{raceUnits.race.name}

)}
{racesUnitsPart.map(raceUnits => {getUnitsRef(raceUnits.infantry, raceUnits.race.id)} ) } {racesUnitsPart.map(raceUnits => {getUnitsRef(raceUnits.tech, raceUnits.race.id)} ) } {racesUnitsPart.map(raceUnits => {getUnitsRef(raceUnits.support, raceUnits.race.id)} ) }
}
) } function generateRaceUnitTables(racesUnits: IRaceUnits[], raceCount: number){ var elements: JSX.Element[] = [] for(let i = 0; i < racesUnits.length;i = i + raceCount){ elements.push(generateRaceUnitTable(racesUnits.slice(i, i + raceCount))) } return elements } return ( {generateRaceUnitTables(unitsTable.racesUnits, 9)} {unitsTable.racesUnits.map(raceUnits =>

{raceUnits.race.name}

)}
) }