52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
|
|
fcViews.month = MonthView;
|
|
|
|
function MonthView(element, calendar) {
|
|
var t = this;
|
|
|
|
|
|
// exports
|
|
t.render = render;
|
|
|
|
|
|
// imports
|
|
BasicView.call(t, element, calendar, 'month');
|
|
var opt = t.opt;
|
|
var renderBasic = t.renderBasic;
|
|
var formatDate = calendar.formatDate;
|
|
|
|
|
|
|
|
function render(date, delta) {
|
|
if (delta) {
|
|
addMonths(date, delta);
|
|
date.setDate(1);
|
|
}
|
|
var start = cloneDate(date, true);
|
|
start.setDate(1);
|
|
var end = addMonths(cloneDate(start), 1);
|
|
var visStart = cloneDate(start);
|
|
var visEnd = cloneDate(end);
|
|
var firstDay = opt('firstDay');
|
|
var nwe = opt('weekends') ? 0 : 1;
|
|
if (nwe) {
|
|
skipWeekend(visStart);
|
|
skipWeekend(visEnd, -1, true);
|
|
}
|
|
addDays(visStart, -((visStart.getDay() - Math.max(firstDay, nwe) + 7) % 7));
|
|
addDays(visEnd, (7 - visEnd.getDay() + Math.max(firstDay, nwe)) % 7);
|
|
var rowCnt = Math.round((visEnd - visStart) / (DAY_MS * 7));
|
|
if (opt('weekMode') == 'fixed') {
|
|
addDays(visEnd, (6 - rowCnt) * 7);
|
|
rowCnt = 6;
|
|
}
|
|
t.title = formatDate(start, opt('titleFormat'));
|
|
t.start = start;
|
|
t.end = end;
|
|
t.visStart = visStart;
|
|
t.visEnd = visEnd;
|
|
renderBasic(rowCnt, nwe ? 5 : 7, true);
|
|
}
|
|
|
|
|
|
}
|