Discusión sobre la implementación de un calendario en JavaScript
Nuestro calendario es una tabla
con números desde 1 hasta el último día del mes.
El problema es que los números en la tabla en la primera
fila no deben comenzar desde la primera celda.
Esto en general es obvio. No es obvio desde qué celda exactamente hay que empezar. Pensemos en ello.
Supongamos que la semana comienza el lunes, y
este es el día cero. En este caso, el número del día
de la semana del primer día del mes corresponde
a la cantidad de celdas vacías antes de él. Por ejemplo,
el jueves tendrá el número 3 y antes
de él habrá 3 celdas vacías.
Un problema similar nos esperará al final de la tabla. Allí también hay que dejar celdas vacías después del último número del mes. En este caso, la cantidad de celdas vacías será igual a seis, de la cual hay que restar el número del día de la semana del último día del mes.
Pensemos ahora, cómo vamos a formar
nuestra tabla. Obviamente, lo más conveniente es
tener un array bidimensional, en cada subarray
del cual haya 7 elementos (= cantidad
de días en la semana). Al mismo tiempo, en el primer y último
subarrays, parte de los elementos deben estar vacíos.
Algoritmo de acciones
Hagamos una función que cree un array
de números desde 1 hasta el último día del mes.
Luego hagamos una función que agregue al
principio del array la cantidad necesaria de elementos vacíos.
Una función análoga debe agregar
elementos vacíos al final del array.
Después de esto, tendremos un array unidimensional
con una cantidad de elementos múltiplo de 7.
Transformemos este array en uno bidimensional con 7
elementos en cada subarray.
Luego tomaremos este array bidimensional, lo recorreremos con bucles y formaremos nuestra tabla.
Este algoritmo de acciones lo realizaremos por etapas en las siguientes lecciones.