@ciebit/calendario
Version:
Representa um calendário visual
62 lines (52 loc) • 1.9 kB
text/typescript
///<reference path="../../js/datatempo/data.ts"/>
module Ciebit.Calendario
{
export class Controlador
{
private Layout: Layout;
private Calendario: Calendario;
public constructor(Layout:Layout, Calendario:Calendario)
{
this.Layout = Layout;
this.Calendario = Calendario;
}
public atualizar(): this
{
let data = this.Calendario.obterData();
let dataTempo = new DataTempo(data);
this.Layout.definirAno(data.getFullYear());
this.Layout.definirMes(dataTempo.obterMesAbr());
this.Layout.definirDias(this.indicesDias(data));
return this;
}
//Retorna um array com os numeros que serão inseridos no calendário
private indicesDias(data:Date):Array<number>
{
let indice = new Date(data.getFullYear(), data.getMonth(), 1).getDay();
let ultimo_dia_mes_anterior = new Date(data.getFullYear(), data.getMonth(), 0).getDate();
let ultimo_dia_mes_atual = new Date(data.getFullYear(), data.getMonth() + 1, 0).getDate();
let array = [];
console.log(ultimo_dia_mes_atual);
let x, y, z;
x = y = z = 0;
if (indice > 0) {
x = (ultimo_dia_mes_anterior + 1) - indice;
}
for (let i = 0; i < 42; i++) {
if (x <= ultimo_dia_mes_anterior) {
array.push(x);
x++;
} else if(x > ultimo_dia_mes_anterior) {
if(y >= ultimo_dia_mes_atual) {
z++;
array.push(z);
} else {
y++;
array.push(y);
}
}
}
return array;
}
}
}