// @deprecated // tslint:disable import { Component, OnInit } from '@angular/core'; import { isBs3 } from '../utils/theme-provider'; import { DatePickerInnerComponent } from './datepicker-inner.component'; @Component({ selector: 'daypicker', template: `
{{ labelz.abbr }}
{{ weekNumbers[index] }}
`, styles: [ ` :host .btn-secondary { color: #292b2c; background-color: #fff; border-color: #ccc; } :host .btn-info .text-muted { color: #292b2c !important; } ` ] }) export class DayPickerComponent implements OnInit { labels: any[] = []; title: string; rows: any[] = []; weekNumbers: number[] = []; datePicker: DatePickerInnerComponent; constructor(datePicker: DatePickerInnerComponent) { this.datePicker = datePicker; } get isBs4(): boolean { return !isBs3(); } /*protected getDaysInMonth(year:number, month:number) { return ((month === 1) && (year % 4 === 0) && ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month]; }*/ ngOnInit(): void { const self = this; this.datePicker.stepDay = { months: 1 }; this.datePicker.setRefreshViewHandler(function(): void { const year = this.activeDate.getFullYear(); const month = this.activeDate.getMonth(); const firstDayOfMonth = new Date(year, month, 1); const difference = this.startingDay - firstDayOfMonth.getDay(); const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference; const firstDate = new Date(firstDayOfMonth.getTime()); if (numDisplayedFromPreviousMonth > 0) { firstDate.setDate(-numDisplayedFromPreviousMonth + 1); } // 42 is the number of days on a six-week calendar const _days: Date[] = self.getDates(firstDate, 42); const days: any[] = []; for (let i = 0; i < 42; i++) { const _dateObject = this.createDateObject(_days[i], this.formatDay); _dateObject.secondary = _days[i].getMonth() !== month; _dateObject.uid = this.uniqueId + '-' + i; days[i] = _dateObject; } self.labels = []; for (let j = 0; j < 7; j++) { self.labels[j] = {}; self.labels[j].abbr = this.dateFilter( days[j].date, this.formatDayHeader ); self.labels[j].full = this.dateFilter(days[j].date, 'EEEE'); } self.title = this.dateFilter(this.activeDate, this.formatDayTitle); self.rows = this.split(days, 7); if (this.showWeeks) { self.weekNumbers = []; const thursdayIndex = (4 + 7 - this.startingDay) % 7; const numWeeks = self.rows.length; for (let curWeek = 0; curWeek < numWeeks; curWeek++) { self.weekNumbers.push( self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date) ); } } }, 'day'); this.datePicker.setCompareHandler(function( date1: Date, date2: Date ): number { const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()); const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate()); return d1.getTime() - d2.getTime(); }, 'day'); this.datePicker.refreshView(); } protected getDates(startDate: Date, n: number): Date[] { const dates: Date[] = new Array(n); let current = new Date(startDate.getTime()); let i = 0; let date: Date; while (i < n) { date = new Date(current.getTime()); date = this.datePicker.fixTimeZone(date); dates[i++] = date; current = new Date( date.getFullYear(), date.getMonth(), date.getDate() + 1 ); } return dates; } protected getISO8601WeekNumber(date: Date): number { const checkDate = new Date(date.getTime()); // Thursday checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); const time = checkDate.getTime(); // Compare with Jan 1 checkDate.setMonth(0); checkDate.setDate(1); return ( Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1 ); } // todo: key events implementation }