-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathang.calendar.ts
72 lines (65 loc) · 2.38 KB
/
ang.calendar.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
export class Calendar {
firstWeekDay: number;
constructor(firstWeekDay = 0) {
this.firstWeekDay = firstWeekDay; // 0 = Sunday
}
weekStartDate(date: any) {
var startDate = new Date(date.getTime());
while (startDate.getDay() !== this.firstWeekDay) {
startDate.setDate(startDate.getDate() - 1);
}
return startDate;
}
monthDates(year: any, month: any, dayFormatter:any = null, weekFormatter:any = null) {
if ((typeof year !== "number") || (year < 1970)) {
throw ('year must be a number >= 1970');
};
if ((typeof month !== "number") || (month < 0) || (month > 11)) {
throw ('month must be a number (Jan is 0)');
};
var weeks: Array<any> = [],
week: Array<any> = [],
i = 0,
date = this.weekStartDate(new Date(year, month, 1));
do {
for (i=0; i<7; i++) {
week.push(dayFormatter ? dayFormatter(date) : date);
date = new Date(date.getTime());
date.setDate(date.getDate() + 1);
}
weeks.push(weekFormatter ? weekFormatter(week) : week);
week = [];
} while ((date.getMonth()<=month) && (date.getFullYear()===year));
return weeks;
}
monthDays(year: any, month: any) {
var getDayOrZero = function getDayOrZero(date: any) {
return date.getMonth() === month ? date : 0;
};
return this.monthDates(year, month, getDayOrZero);
}
monthText(year: any, month: any) {
if (typeof year === "undefined") {
var now = new Date();
year = now.getFullYear();
month = now.getMonth();
};
var getDayOrBlank = function getDayOrBlank(date: any) {
var s = date.getMonth() === month ? date.getDate().toString() : " ";
while (s.length < 2) s = " "+s;
return s;
};
var weeks = this.monthDates(year, month, getDayOrBlank,
function (week: any) { return week.join(" ") });
return weeks.join("\n");
}
}
const months = "JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC".split(" ");
for (var i=0; i<months.length; i++) {
Calendar[months[i]] = i;
}
/*!
* calendar: a port of the calendar module from Python
* Copyright(c) 2011 Luciano Ramalho <luciano@ramalho.org>
* MIT Licensed
*/