Discussione sull'implementazione di un calendario in JavaScript
Il nostro calendario è una tabella
con i numeri da 1 all'ultimo giorno del mese.
Il problema è che i numeri nella tabella nella prima
riga non dovrebbero iniziare dalla prima cella.
Questo in generale è ovvio. Non è ovvio da quale cella esattamente iniziare. Riflettiamoci.
Supponiamo che la settimana inizi di lunedì, e
questo sia il giorno zero. In questo caso il numero del giorno
della settimana del primo giorno del mese corrisponde
al numero di celle vuote prima di esso. Ad esempio,
giovedì avrà numero 3 e prima
di esso ci saranno 3 celle vuote.
Un problema simile ci aspetterà alla fine della tabella. Anche lì sarà necessario lasciare celle vuote dopo l'ultimo numero del mese. In questo caso il numero di celle vuote sarà uguale a sei, da cui sottrarre il numero del giorno della settimana dell'ultimo giorno del mese.
Ora pensiamo a come formeremo
la nostra tabella. È ovvio che il modo più conveniente
è avere un array bidimensionale, in ogni sotto-array
del quale ci saranno 7 elementi (= numero di
giorni nella settimana). Allo stesso tempo, nel primo e nell'ultimo
sotto-array, parte degli elementi dovrebbero essere vuoti.
Algoritmo delle azioni
Creiamo una funzione che creerà un array
di numeri da 1 all'ultimo giorno del mese.
Poi creiamo una funzione che aggiungerà
all'inizio dell'array il numero necessario di elementi
vuoti. Una funzione analoga dovrebbe aggiungere
elementi vuoti alla fine dell'array.
Dopo di che, avremo un array unidimensionale
con un numero di elementi multiplo di 7.
Trasformiamo questo array in uno bidimensionale con 7
elementi in ogni sotto-array.
Poi prenderemo questo array bidimensionale, lo itereremo con dei cicli e formeremo la nostra tabella.
Eseguiremo questo algoritmo di azioni fase per fase nelle prossime lezioni.