MonthView.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. fcViews.month = MonthView;
  2. function MonthView(element, calendar) {
  3. var t = this;
  4. // exports
  5. t.render = render;
  6. // imports
  7. BasicView.call(t, element, calendar, 'month');
  8. var opt = t.opt;
  9. var renderBasic = t.renderBasic;
  10. var formatDate = calendar.formatDate;
  11. function render(date, delta) {
  12. if (delta) {
  13. addMonths(date, delta);
  14. date.setDate(1);
  15. }
  16. var start = cloneDate(date, true);
  17. start.setDate(1);
  18. var end = addMonths(cloneDate(start), 1);
  19. var visStart = cloneDate(start);
  20. var visEnd = cloneDate(end);
  21. var firstDay = opt('firstDay');
  22. var nwe = opt('weekends') ? 0 : 1;
  23. if (nwe) {
  24. skipWeekend(visStart);
  25. skipWeekend(visEnd, -1, true);
  26. }
  27. addDays(visStart, -((visStart.getDay() - Math.max(firstDay, nwe) + 7) % 7));
  28. addDays(visEnd, (7 - visEnd.getDay() + Math.max(firstDay, nwe)) % 7);
  29. var rowCnt = Math.round((visEnd - visStart) / (DAY_MS * 7));
  30. if (opt('weekMode') == 'fixed') {
  31. addDays(visEnd, (6 - rowCnt) * 7);
  32. rowCnt = 6;
  33. }
  34. t.title = formatDate(start, opt('titleFormat'));
  35. t.start = start;
  36. t.end = end;
  37. t.visStart = visStart;
  38. t.visEnd = visEnd;
  39. renderBasic(6, rowCnt, nwe ? 5 : 7, true);
  40. }
  41. }