Dyskusja na temat implementacji kalendarza w JavaScript
Nasz kalendarz to tabela
z liczbami od 1 do ostatniego dnia miesiąca.
Problem w tym, że liczby w tabeli w pierwszym
wierszu nie powinny zaczynać się od pierwszej komórki.
Ogólnie jest to oczywiste. Nie jest oczywiste, od której komórki należy zacząć. Zastanówmy się nad tym.
Załóżmy, że tydzień zaczyna się od poniedziałku, i
jest to dzień zerowy. W tym przypadku numer dnia
tygodnia pierwszego dnia miesiąca odpowiada
liczbie pustych komórek przed nim. Na przykład,
czwartek będzie miał numer 3 i przed
nim będzie 3 puste komórki.
Podobny problem czeka nas na końcu tabeli. Tam również trzeba zostawić puste komórki po ostatnim dniu miesiąca. W tym przypadku liczba pustych komórek będzie równa sześć, od której należy odjąć numer dnia tygodnia ostatniego dnia miesiąca.
Zastanówmy się teraz, jak będziemy tworzyć
naszą tabelę. Oczywiście, najwygodniej jest
mieć dwuwymiarową tablicę, w każdej podtablicy
której będzie po 7 elementów (= liczbie
dni w tygodniu). Jednocześnie w pierwszej i ostatniej
podtablicy część elementów powinna być pusta.
Algorytm działań
Stwórzmy funkcję, która utworzy tablicę
liczb od 1 do ostatniego dnia miesiąca.
Następnie stwórzmy funkcję, która doda na
początek tablicy niezbędną liczbę pustych
elementów. Analogiczna funkcja powinna dodawać
puste elementy na koniec tablicy.
Po tym otrzymamy jednowymiarową tablicę
z liczbą elementów podzielną przez 7.
Przekształćmy tę tablicę w dwuwymiarową, po 7
elementów w podtablicy.
Następnie weźmiemy tę dwuwymiarową tablicę, przeiterujemy pętlami i utworzymy naszą tabelę.
Ten algorytm działań będziemy etapowo realizować w kolejnych lekcjach.