Discussão da implementação de um calendário em JavaScript
Nosso calendário é uma tabela
com números de 1 até o último dia do mês.
O problema é que os números na tabela, na primeira
linha, não devem começar na primeira célula.
Isso é geralmente óbvio. O que não é óbvio é a partir de qual célula exatamente precisamos começar. Vamos refletir sobre isso.
Suponha que a semana comece na segunda-feira, e
este é o dia zero. Neste caso, o número do dia
da semana do primeiro dia do mês corresponde
ao número de células vazias antes dele. Por exemplo,
quinta-feira terá o número 3 e antes
dele haverá 3 células vazias.
Um problema semelhante nos aguardará no final da tabela. Lá também será necessário deixar células vazias após o último dia do mês. Neste caso, o número de células vazias será igual a seis, menos o número do dia da semana do último dia do mês.
Agora, vamos pensar em como vamos formar
nossa tabela. Obviamente, é mais conveniente
ter um array bidimensional, onde cada subarray
terá 7 elementos (= número de
dias na semana). Ao mesmo tempo, no primeiro e no último
subarrays, parte dos elementos deve estar vazia.
Algoritmo de ações
Vamos criar uma função que fará um array
de números de 1 até o último dia do mês.
Em seguida, faremos uma função que adicionará
ao início do array o número necessário de elementos vazios.
Uma função análoga deve adicionar
elementos vazios ao final do array.
Depois disso, teremos um array unidimensional
com um número de elementos múltiplo de 7.
Vamos transformar este array em um bidimensional com 7
elementos por subarray.
Em seguida, pegaremos este array bidimensional, iteraremos com loops e formaremos nossa tabela.
Executaremos este algoritmo de ações etapa por etapa nas próximas lições.