UNPKG

angular-material-datepicker

Version:

Prototype of a Material Design Datepicker Component for Angular 2

76 lines (68 loc) 2.6 kB
import { Injectable } from '@angular/core'; @Injectable() export class CalendarService { firstWeekDay: number; constructor() { this.firstWeekDay = 0; // 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"); } } // unclear what this actually does... // 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 */