Oprava parsování U Motlíků

Nyní je počítáno s případy, kdy neexistuje nabídka pro první den v daném týdnu.
This commit is contained in:
Martin Berka 2024-01-03 14:01:45 +01:00
parent aca4055d57
commit fcad338921
2 changed files with 19 additions and 12 deletions

View File

@ -360,7 +360,7 @@ function App() {
<Alert variant={'primary'}> <Alert variant={'primary'}>
Poslední změny: Poslední změny:
<ul> <ul>
<li>Tolerance existence menu na více týdnů pro restauraci U Motlíků</li> <li>Oprava parsování restaurace U Motlíků, pokud neexistuje nabídka pro první den v týdnu</li>
</ul> </ul>
</Alert> </Alert>
{dayIndex != null && {dayIndex != null &&

View File

@ -157,23 +157,30 @@ export const getMenuUMotliku = async (firstDayOfWeek: Date, mock: boolean = fals
const html = await getHtml(U_MOTLIKU_URL); const html = await getHtml(U_MOTLIKU_URL);
const $ = load(html); const $ = load(html);
// Najdeme první tabulku, nad kterou je v H3 datum začínající prvním dnem aktuálního týdne // Najdeme první tabulku, nad kterou je v H3 datum začínající co nejdřívějším dnem v aktuálním týdnu
// To může selhat mnoha způsoby, ale ty nemá cenu řešit dokud nenastanou
const tables = $('table.table.table-hover.Xtable-striped'); const tables = $('table.table.table-hover.Xtable-striped');
let usedTable; let usedTable;
const firstDayOfWeekString = `${firstDayOfWeek.getDate()}.${firstDayOfWeek.getMonth() + 1}.`; let usedDate = new Date(firstDayOfWeek.getTime());
for (const tableNode of tables) { for (let i = 0; i < 4; i++) {
const table = $(tableNode); const dayOfWeekString = `${usedDate.getDate()}.${usedDate.getMonth() + 1}.`;
const h3 = table.parent().prev(); for (const tableNode of tables) {
const s1 = h3.text().split("-")[0].split("."); const table = $(tableNode);
const foundFirstDayString = `${s1[0]}.${s1[1]}.`; const h3 = table.parent().prev();
if (foundFirstDayString === firstDayOfWeekString) { const s1 = h3.text().split("-")[0].split(".");
usedTable = table; const foundFirstDayString = `${s1[0]}.${s1[1]}.`;
if (foundFirstDayString === dayOfWeekString) {
usedTable = table;
}
} }
if (usedTable != null) {
break;
}
usedDate.setDate(usedDate.getDate() + 1);
} }
if (usedTable == null) { if (usedTable == null) {
throw Error(`Nepodařilo se najít tabulku pro datum ${firstDayOfWeekString}`); const firstDayOfWeekString = `${firstDayOfWeek.getDate()}.${firstDayOfWeek.getMonth() + 1}.`;
throw Error(`Nepodařilo se najít tabulku pro týden začínající ${firstDayOfWeekString}`);
} }
const body = usedTable.children().first(); const body = usedTable.children().first();