Diskuse o implementaci kalendáře v JavaScriptu
Náš kalendář je tabulka
s čísly od 1 do posledního dne měsíce.
Problém je v tom, že čísla v tabulce v první
řadě nemají začínat od první buňky.
To je obecně zřejmé. Není zřejmé, od které přesně buňky je třeba začít. Pojďme to promyslet.
Předpokládejme, že týden začíná v pondělí, a
to je nultý den. V tomto případě číslo dne
v týdnu prvního dne měsíce odpovídá
počtu prázdných buněk před ním. Například,
čtvrtek bude mít číslo 3 a před
ním bude 3 prázdných buněk.
Podobný problém nás bude čekat na konci tabulky. I tam je třeba nechat prázdné buňky po posledním čísle měsíce. V tomto případě počet prázdných buněk bude roven šestce, od které je třeba odečíst číslo dne v týdnu posledního dne měsíce.
Zamysleme se nyní, jak budeme tvořit
naši tabulku. Je zřejmé, že nejpohodlnější je
mít dvourozměrné pole, v každém podpoli
kterého bude po 7 prvcích (= počtu
dní v týdnu). Přitom v prvním a posledním
podpoli musí být část prvků prázdná.
Algoritmus akcí
Vytvoříme funkci, která udělá pole
čísel od 1 do posledního dne měsíce.
Poté vytvoříme funkci, která přidá
na začátek pole potřebný počet prázdných
prvků. Podobná funkce musí přidávat
prázdné prvky na konec pole.
Poté získáme jednorozměrné pole
s počtem prvků, který je násobkem 7.
Převedeme toto pole na dvourozměrné po 7
prvcích v podpoli.
Poté vezmeme toto dvourozměrné pole, přejdeme cykly a vytvoříme naši tabulku.
Tento algoritmus akcí budeme krok za krokem plnit v následujících lekcích.