import { parseTable, makeTable } from "../utils"; import { registerSearchEntries } from "../search"; export function processVirology(root: HTMLElement): void { const diseaseTable = root.querySelector( "#Simple_Diseases .wikitable" ); const diseases = parseTable(diseaseTable).map((row) => { const diseaseBlock = document.createElement("td"); diseaseBlock.innerHTML = `
${row["Disease Name"].innerHTML}

${row["Vector Name"].innerHTML}

${row["Source"].innerHTML}

${row["Spread"].innerHTML}

${row["Description"].innerHTML}

`; return { Disease: diseaseBlock, Cure: row["Cure"], }; }); const diseaseBetterTable = makeTable(["Disease", "Cure"], diseases); diseaseBetterTable.className = "disease-ext wikitable"; diseaseTable.replaceWith(diseaseBetterTable); const symptomsTable = root.querySelector( "#Symptoms_Table .wikitable" ); const symptoms = parseTable(symptomsTable) .sort( (a, b) => parseInt(a["Level"].textContent, 10) - parseInt(b["Level"].textContent, 10) ) .map((row) => { const symptomBlock = document.createElement("td"); symptomBlock.innerHTML = `
${row["Symptom"].innerHTML}

${row["Level"].innerHTML}

${row["Required Chemical"].innerHTML}

${row["Effect"].innerHTML}

`; const symptomStats = document.createElement("td"); symptomStats.innerHTML = `
Stealth${row["Stealth"].innerHTML}
Resistance${row["Resistance"].innerHTML}
Stage speed${row["Stage speed"].innerHTML}
Transmission${row["Transmission"].innerHTML}
`; const thresholds = row["Threshold (hover mouse over for details)"]; thresholds.innerHTML = ``; return { Symptom: symptomBlock, Stats: symptomStats, Thresholds: thresholds, }; }); const symptomsBetterTable = makeTable( ["Symptom", "Stats", "Thresholds"], symptoms ); symptomsBetterTable.className = "symptoms-ext wikitable"; symptomsTable.replaceWith(symptomsBetterTable); } export function virologyScript(root: HTMLElement): void { // Init fuzzy search with elements const el = Array.from( root.querySelectorAll(".disease-ext tr:not(:first-child)") ); registerSearchEntries( el.map((element, id) => ({ page: "Infections", name: element.querySelector(".disease-name").textContent.trim(), element, alignment: "center", id, })) ); } export default { processVirology, virologyScript, };