import { DatepickerFormatOptions, YearsCalendarViewModel, CalendarCellViewModel } from '../models/index'; import { shiftDate } from '../../bs-moment/utils/date-setters'; import { formatDate } from '../../bs-moment/format'; import { TimeUnit } from '../../bs-moment/types'; import { createMatrix } from '../utils/matrix-utils'; const height = 4; const width = 4; export const yearsPerCalendar = height * width; const initialShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1; const shift = {year: 1}; export function formatYearsCalendar(viewDate: Date, formatOptions: DatepickerFormatOptions): YearsCalendarViewModel { const initialDate = shiftDate(viewDate, {year: initialShift}); const matrixOptions = {width, height, initialDate, shift}; const yearsMatrix = createMatrix(matrixOptions, date => ({ date, label: formatDate(date, formatOptions.yearLabel, formatOptions.locale) })); const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions); return { years: yearsMatrix, monthTitle: '', yearTitle }; } function formatYearRangeTitle(yearsMatrix: CalendarCellViewModel[][], formatOptions: DatepickerFormatOptions): string { const from = formatDate(yearsMatrix[0][0].date, formatOptions.yearTitle, formatOptions.locale); const to = formatDate(yearsMatrix[height - 1][width - 1].date, formatOptions.yearTitle, formatOptions.locale); return `${from} - ${to}`; }