barsa-calendar 1.0.456 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/barsa-calendar.mjs +4 -4
- package/esm2022/lib/barsa-calendar.module.mjs +117 -0
- package/esm2022/lib/calendar-container/calendar-container.component.mjs +230 -0
- package/esm2022/lib/calendar-header/calendar-header.component.mjs +66 -0
- package/esm2022/lib/calendar-list/calendar-list.component.mjs +18 -0
- package/esm2022/lib/calendar-list-container/calendar-list-container.component.mjs +29 -0
- package/{esm2020 → esm2022}/lib/calendar-list-item/calendar-list-item.component.mjs +14 -14
- package/esm2022/lib/calendar-month/calendar-month.component.mjs +246 -0
- package/esm2022/lib/calendar-selection-days/calendar-selection-days.component.mjs +196 -0
- package/esm2022/lib/calendar-week/calendar-week.component.mjs +252 -0
- package/{esm2020 → esm2022}/lib/constants.mjs +3 -3
- package/esm2022/lib/date-time-picker/date-time-picker.component.mjs +431 -0
- package/esm2022/lib/day-event-list/day-event-list.component.mjs +55 -0
- package/esm2022/lib/day-number-box/day-number-box.component.mjs +105 -0
- package/{esm2020 → esm2022}/lib/days-in-week.pipe.mjs +17 -17
- package/esm2022/lib/equal-date.pipe.mjs +23 -0
- package/esm2022/lib/event-button/event-button.component.mjs +97 -0
- package/esm2022/lib/event-button-end-arrow/event-button-end-arrow.component.mjs +29 -0
- package/esm2022/lib/event-button-start-arrow/event-button-start-arrow.component.mjs +29 -0
- package/esm2022/lib/event-date.pipe.mjs +24 -0
- package/esm2022/lib/event-preview/event-preview.component.mjs +79 -0
- package/{esm2020 → esm2022}/lib/event-time.pipe.mjs +22 -22
- package/{esm2020 → esm2022}/lib/from-to-time.pipe.mjs +23 -23
- package/esm2022/lib/models.mjs +14 -0
- package/esm2022/lib/month-days/month-days.component.mjs +222 -0
- package/esm2022/lib/services/calendar.service.mjs +645 -0
- package/{esm2020 → esm2022}/public-api.mjs +23 -23
- package/fesm2022/barsa-calendar.mjs +2816 -0
- package/fesm2022/barsa-calendar.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/barsa-calendar.module.d.ts +53 -53
- package/lib/calendar-container/calendar-container.component.d.ts +89 -89
- package/lib/calendar-header/calendar-header.component.d.ts +33 -33
- package/lib/calendar-list/calendar-list.component.d.ts +8 -8
- package/lib/calendar-list-container/calendar-list-container.component.d.ts +14 -14
- package/lib/calendar-list-item/calendar-list-item.component.d.ts +7 -7
- package/lib/calendar-month/calendar-month.component.d.ts +70 -70
- package/lib/calendar-selection-days/calendar-selection-days.component.d.ts +48 -48
- package/lib/calendar-week/calendar-week.component.d.ts +70 -70
- package/lib/constants.d.ts +1 -1
- package/lib/date-time-picker/date-time-picker.component.d.ts +113 -112
- package/lib/day-event-list/day-event-list.component.d.ts +20 -20
- package/lib/day-number-box/day-number-box.component.d.ts +30 -30
- package/lib/days-in-week.pipe.d.ts +9 -9
- package/lib/equal-date.pipe.d.ts +8 -8
- package/lib/event-button/event-button.component.d.ts +31 -31
- package/lib/event-button-end-arrow/event-button-end-arrow.component.d.ts +12 -12
- package/lib/event-button-start-arrow/event-button-start-arrow.component.d.ts +12 -12
- package/lib/event-date.pipe.d.ts +9 -9
- package/lib/event-preview/event-preview.component.d.ts +24 -24
- package/lib/event-time.pipe.d.ts +9 -9
- package/lib/from-to-time.pipe.d.ts +9 -9
- package/lib/models.d.ts +110 -110
- package/lib/month-days/month-days.component.d.ts +69 -69
- package/lib/services/calendar.service.d.ts +70 -70
- package/package.json +7 -13
- package/public-api.d.ts +19 -19
- package/esm2020/lib/barsa-calendar.module.mjs +0 -117
- package/esm2020/lib/calendar-container/calendar-container.component.mjs +0 -230
- package/esm2020/lib/calendar-header/calendar-header.component.mjs +0 -67
- package/esm2020/lib/calendar-list/calendar-list.component.mjs +0 -19
- package/esm2020/lib/calendar-list-container/calendar-list-container.component.mjs +0 -30
- package/esm2020/lib/calendar-month/calendar-month.component.mjs +0 -246
- package/esm2020/lib/calendar-selection-days/calendar-selection-days.component.mjs +0 -195
- package/esm2020/lib/calendar-week/calendar-week.component.mjs +0 -249
- package/esm2020/lib/date-time-picker/date-time-picker.component.mjs +0 -433
- package/esm2020/lib/day-event-list/day-event-list.component.mjs +0 -56
- package/esm2020/lib/day-number-box/day-number-box.component.mjs +0 -105
- package/esm2020/lib/equal-date.pipe.mjs +0 -23
- package/esm2020/lib/event-button/event-button.component.mjs +0 -97
- package/esm2020/lib/event-button-end-arrow/event-button-end-arrow.component.mjs +0 -29
- package/esm2020/lib/event-button-start-arrow/event-button-start-arrow.component.mjs +0 -29
- package/esm2020/lib/event-date.pipe.mjs +0 -24
- package/esm2020/lib/event-preview/event-preview.component.mjs +0 -79
- package/esm2020/lib/models.mjs +0 -14
- package/esm2020/lib/month-days/month-days.component.mjs +0 -222
- package/esm2020/lib/services/calendar.service.mjs +0 -645
- package/fesm2015/barsa-calendar.mjs +0 -2813
- package/fesm2015/barsa-calendar.mjs.map +0 -1
- package/fesm2020/barsa-calendar.mjs +0 -2817
- package/fesm2020/barsa-calendar.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"barsa-calendar.mjs","sources":["../../../projects/barsa-calendar/src/lib/models.ts","../../../projects/barsa-calendar/src/lib/services/calendar.service.ts","../../../projects/barsa-calendar/src/lib/days-in-week.pipe.ts","../../../projects/barsa-calendar/src/lib/day-number-box/day-number-box.component.ts","../../../projects/barsa-calendar/src/lib/day-number-box/day-number-box.component.html","../../../projects/barsa-calendar/src/lib/constants.ts","../../../projects/barsa-calendar/src/lib/event-date.pipe.ts","../../../projects/barsa-calendar/src/lib/event-preview/event-preview.component.ts","../../../projects/barsa-calendar/src/lib/event-preview/event-preview.component.html","../../../projects/barsa-calendar/src/lib/event-button-end-arrow/event-button-end-arrow.component.ts","../../../projects/barsa-calendar/src/lib/event-button-end-arrow/event-button-end-arrow.component.html","../../../projects/barsa-calendar/src/lib/event-button-start-arrow/event-button-start-arrow.component.ts","../../../projects/barsa-calendar/src/lib/event-button-start-arrow/event-button-start-arrow.component.html","../../../projects/barsa-calendar/src/lib/event-time.pipe.ts","../../../projects/barsa-calendar/src/lib/event-button/event-button.component.ts","../../../projects/barsa-calendar/src/lib/event-button/event-button.component.html","../../../projects/barsa-calendar/src/lib/day-event-list/day-event-list.component.ts","../../../projects/barsa-calendar/src/lib/day-event-list/day-event-list.component.html","../../../projects/barsa-calendar/src/lib/equal-date.pipe.ts","../../../projects/barsa-calendar/src/lib/calendar-month/calendar-month.component.ts","../../../projects/barsa-calendar/src/lib/calendar-month/calendar-month.component.html","../../../projects/barsa-calendar/src/lib/calendar-selection-days/calendar-selection-days.component.ts","../../../projects/barsa-calendar/src/lib/calendar-selection-days/calendar-selection-days.component.html","../../../projects/barsa-calendar/src/lib/date-time-picker/date-time-picker.component.ts","../../../projects/barsa-calendar/src/lib/date-time-picker/date-time-picker.component.html","../../../projects/barsa-calendar/src/lib/month-days/month-days.component.ts","../../../projects/barsa-calendar/src/lib/month-days/month-days.component.html","../../../projects/barsa-calendar/src/lib/calendar-header/calendar-header.component.ts","../../../projects/barsa-calendar/src/lib/calendar-header/calendar-header.component.html","../../../projects/barsa-calendar/src/lib/from-to-time.pipe.ts","../../../projects/barsa-calendar/src/lib/calendar-week/calendar-week.component.ts","../../../projects/barsa-calendar/src/lib/calendar-week/calendar-week.component.html","../../../projects/barsa-calendar/src/lib/calendar-list-item/calendar-list-item.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list-item/calendar-list-item.component.html","../../../projects/barsa-calendar/src/lib/calendar-list/calendar-list.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list/calendar-list.component.html","../../../projects/barsa-calendar/src/lib/calendar-list-container/calendar-list-container.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list-container/calendar-list-container.component.html","../../../projects/barsa-calendar/src/lib/calendar-container/calendar-container.component.ts","../../../projects/barsa-calendar/src/lib/calendar-container/calendar-container.component.html","../../../projects/barsa-calendar/src/lib/barsa-calendar.module.ts","../../../projects/barsa-calendar/src/barsa-calendar.ts"],"sourcesContent":["import { DateInfo, CalendarMetaobjectDataModel } from 'barsa-novin-ray-core';\r\n\r\nexport type RecurrenceFrequency = 'daily' | 'weekly' | 'monthly' | 'yearly';\r\nexport type CalendarType = 'Local' | 'CalDAV' | 'Exchange' | 'Subscription' | 'Birthday' | 'Mail';\r\n\r\ninterface Recurrence {\r\n frequency: RecurrenceFrequency;\r\n /**\r\n * Default 1 (every <RecurrenceFrequency>).\r\n */\r\n interval: number;\r\n endDate?: Date;\r\n count?: number;\r\n}\r\n\r\nexport interface Calendar {\r\n id: string;\r\n name: string;\r\n /**\r\n * iOS: same as 'name'\r\n * Android: usually the same as 'name' as well\r\n */\r\n displayName?: string;\r\n /**\r\n * iOS only\r\n */\r\n type?: CalendarType;\r\n}\r\nexport interface Reminder {\r\n minutes: number;\r\n}\r\nexport interface Attendee {\r\n name: string;\r\n url?: string;\r\n /**\r\n * One of: \"Unknown\", \"Pending\", \"Accepted\", \"Declined\", \"Tentative\", \"Delegated\", \"Completed\", \"In Process\"\r\n */\r\n status: string;\r\n /**\r\n * One of: \"Unknown\", \"Required\", \"Optional\", \"Chair\", \"Non Participant\"\r\n */\r\n role: string;\r\n /**\r\n * One of: \"Unknown\", \"Person\", \"Room\", \"Resource\", \"Group\"\r\n */\r\n type: string;\r\n}\r\n\r\nexport interface CalendarEvent {\r\n id: string;\r\n title: string;\r\n location: string;\r\n notes: string;\r\n url?: string;\r\n startDate: Date;\r\n endDate: Date;\r\n allDay: boolean;\r\n calendar: Calendar;\r\n recurrence?: Recurrence;\r\n reminders?: Array<Reminder>;\r\n /**\r\n * iOS only.\r\n */\r\n attendees?: Array<Attendee>;\r\n //\r\n days?: Date[];\r\n order: number;\r\n color?: string;\r\n repeat?: string;\r\n}\r\nexport type CalendarMode = 'month' | 'customMonth' | 'week' | 'day' | 'year' | 'list';\r\nexport enum DayStatus {\r\n Open,\r\n Completed,\r\n Failed\r\n}\r\nexport class CalendarMonthInfo {\r\n dateInfo: DateInfo;\r\n days: Day[];\r\n tasks: any[];\r\n selectedWeek: number;\r\n weeksCount: number;\r\n id: string;\r\n get daysInWeek(): Day[] {\r\n const start = this.selectedWeek * 7;\r\n const days = this.days.slice(start, start + 7);\r\n return days;\r\n }\r\n}\r\n\r\nexport interface Day {\r\n [key: string]: any;\r\n index: number;\r\n momentOfDate: any;\r\n boxBound?: {\r\n data: CalendarMetaobjectDataModel;\r\n top: number;\r\n left: number;\r\n width: number;\r\n height: number;\r\n }[];\r\n dayInMonth: string;\r\n dayInWeek: number;\r\n month: number;\r\n year: number;\r\n dayName: string;\r\n date: Date;\r\n status: DayStatus;\r\n isToday: boolean;\r\n isInMonth: boolean;\r\n isEndOfMonth: boolean;\r\n isStartOfMonth: boolean;\r\n tasks: CalendarMetaobjectDataModel[];\r\n row: number;\r\n col: number;\r\n addingEventPoint1: number | null;\r\n addingEventPoint2: number | null;\r\n isAddingNewEvent: boolean;\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n DateService,\r\n BaseComponent,\r\n getUniqueId,\r\n getDateService,\r\n LogService,\r\n DateInfo,\r\n MetaobjectDataModel,\r\n CalendarFields\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMode, CalendarMonthInfo, Day, DayStatus } from '../models';\r\nimport moment from 'moment/moment';\r\n\r\n@Injectable()\r\nexport class CalendarService extends BaseComponent {\r\n selected$: Observable<CalendarMonthInfo>;\r\n days$: Observable<Day[]>;\r\n mode$: Observable<CalendarMode>;\r\n weekModeDays$: Observable<Day[]>;\r\n calendars$: Observable<CalendarMonthInfo[]>;\r\n currentMonthIndex$: Observable<number>;\r\n today: Date;\r\n todayDay: Day | undefined;\r\n _dateService: DateService;\r\n private _todayMonthInfo: CalendarMonthInfo;\r\n private _calendarsSource = new BehaviorSubject<CalendarMonthInfo[]>([]);\r\n private _selectedSource: BehaviorSubject<CalendarMonthInfo>;\r\n private _modeSource = new BehaviorSubject<CalendarMode>('month');\r\n private _currentMonthIndexSource = new BehaviorSubject<number>(-1);\r\n private _weekModeDaysSource = new BehaviorSubject<Day[]>([]);\r\n private _daysSource = new BehaviorSubject<Day[]>([]);\r\n constructor(private _logService: LogService, @Optional() @Inject('Date_Culture') culture?: string) {\r\n super();\r\n this._dateService = getDateService(_logService, culture);\r\n this.days$ = this._daysSource.asObservable();\r\n this.mode$ = this._modeSource.asObservable();\r\n this.weekModeDays$ = this._weekModeDaysSource.asObservable();\r\n this.calendars$ = this._calendarsSource.asObservable();\r\n this.currentMonthIndex$ = this._currentMonthIndexSource.asObservable();\r\n this._initilize();\r\n this.setMode('day');\r\n }\r\n get todayMonthInfo(): CalendarMonthInfo {\r\n return this._todayMonthInfo;\r\n }\r\n get selectedMonth(): CalendarMonthInfo {\r\n return this._selectedSource.getValue();\r\n }\r\n get calendars(): Array<CalendarMonthInfo> {\r\n return this._calendarsSource.getValue();\r\n }\r\n get weeksCount(): number {\r\n return this._daysSource.getValue().length / 7;\r\n }\r\n get days(): Array<Day> {\r\n return this._daysSource.getValue();\r\n }\r\n get Months(): string[] {\r\n return this._dateService.monthNames();\r\n }\r\n loadMonthByDate(value: Date): void {\r\n const monthInfo = this._dateService.getDateInfo(value);\r\n this.loadMonth(monthInfo);\r\n }\r\n setDateService(primaryCalendarType: string): void {\r\n let dateService = this._dateService;\r\n switch (primaryCalendarType) {\r\n case 'Persian':\r\n dateService = getDateService(this._logService, 'fa-IR');\r\n break;\r\n case 'Gregorian':\r\n dateService = getDateService(this._logService, 'en-US');\r\n break;\r\n case 'Arabic':\r\n dateService = getDateService(this._logService, 'ar-AE');\r\n break;\r\n }\r\n this._dateService = dateService;\r\n this._initilize();\r\n }\r\n setDays(days: Day[]): void {\r\n this._daysSource.next(days);\r\n }\r\n prepareWeek(monthInfo: CalendarMonthInfo, startIndex: number, daysCount: number): void {\r\n const startDays = monthInfo.days.slice(startIndex, startIndex + daysCount);\r\n this._weekModeDaysSource.next(startDays);\r\n }\r\n setSelected(selected: CalendarMonthInfo): void {\r\n this._selectedSource.next(selected);\r\n }\r\n weekDaysMin(): Array<string> {\r\n return this._dateService.weekdaysMin();\r\n }\r\n weekDays(): Array<string> {\r\n return this._dateService.weekDays();\r\n }\r\n gotoToday(): void {\r\n this.loadMonth(this._todayMonthInfo.dateInfo, 0);\r\n this.setMode(\r\n this._modeSource.getValue(),\r\n this._todayMonthInfo.days.find((c) => c.isToday),\r\n this._weekModeDaysSource.getValue().length\r\n );\r\n }\r\n rangeSelect(startDay: Day, endDay: Day, monthInfo: CalendarMonthInfo): void {\r\n const diff = endDay.index - startDay.index;\r\n if (diff < 7) {\r\n this.setMode('week', startDay, diff + 1);\r\n } else {\r\n const diff2 = diff + 1;\r\n this.setMode('customMonth');\r\n this.setMonth(monthInfo, startDay, diff2);\r\n }\r\n }\r\n setMonth(monthInfo: CalendarMonthInfo, startDay?: Day, diff: number = 0): void {\r\n if (startDay && diff > 0) {\r\n const startIndex = startDay.index;\r\n this.loadCalendarMonthInfo(monthInfo);\r\n this.setDays(monthInfo.days.slice(startIndex, startIndex + diff));\r\n } else {\r\n this.loadCalendarMonthInfo(monthInfo);\r\n this.setDays(monthInfo.days);\r\n // else if (mode === 'month') {\r\n // startDay = daysLoaded[0];\r\n // if (startDay) this.loadMonth(startDay.monthDateInfo);\r\n // }\r\n }\r\n }\r\n setMode(mode: CalendarMode, startDay?: Day, daysCount?: number): void {\r\n const oldMode = this._modeSource.getValue();\r\n this._modeSource.next(mode);\r\n if (mode === 'month') {\r\n this.setMonth(this.selectedMonth, startDay);\r\n return;\r\n } else if (mode === 'customMonth') {\r\n this.setMonth(this.selectedMonth, startDay, this.days.length);\r\n return;\r\n }\r\n const daysLoaded = this._weekModeDaysSource.getValue();\r\n daysCount = daysCount ?? (mode === 'week' ? 7 : 1);\r\n let startIndex = 0;\r\n if (!startDay) {\r\n if (mode === 'week' || mode === 'day') {\r\n if (oldMode === 'month') {\r\n {\r\n startDay = this.selectedMonth.days.find((c) => c.isToday);\r\n if (!startDay) {\r\n startDay = this.selectedMonth.days.find((c) => c.isStartOfMonth);\r\n }\r\n }\r\n } else if (oldMode === 'customMonth') {\r\n startDay = this.days[0];\r\n } else {\r\n startDay = daysLoaded[0];\r\n }\r\n }\r\n }\r\n if (startDay) {\r\n if (\r\n startDay.monthDateInfo.month !== this.selectedMonth.dateInfo.month ||\r\n startDay.monthDateInfo.year !== this.selectedMonth.dateInfo.year\r\n ) {\r\n this.loadMonth(startDay.monthDateInfo);\r\n }\r\n startIndex = this.selectedMonth.days.findIndex(\r\n (c) => c.month === startDay?.month && c.dayInMonth === startDay.dayInMonth\r\n );\r\n }\r\n this.prepareWeek(this._selectedSource.getValue(), startIndex, daysCount);\r\n }\r\n fillWeek(week: { [key: string]: any[] }, daysCount = 7): void {\r\n const arr: any[] = Object.values(week);\r\n arr.forEach(\r\n (\r\n element: {\r\n colSpan: number;\r\n event?: MetaobjectDataModel;\r\n opacity?: number;\r\n start?: Date;\r\n end?: Date;\r\n }[]\r\n ) => {\r\n for (const el of element) {\r\n const valueDate = el.end;\r\n if (valueDate && this._dateService.getMoment(valueDate).isBefore(this.today, 'day')) {\r\n el.opacity = 0.5;\r\n }\r\n }\r\n for (let i = element.length; i < daysCount; i++) {\r\n element.push({ colSpan: 1 });\r\n }\r\n }\r\n );\r\n }\r\n sortTasks(calendarTasks: MetaobjectDataModel[], calendarFields: CalendarFields): Array<MetaobjectDataModel> {\r\n const startDateField = calendarFields.StartDate;\r\n const endDateField = calendarFields.EndDate;\r\n calendarTasks.sort((taskA, taskB) => (taskA[startDateField] < taskB[startDateField] ? -1 : 1));\r\n calendarTasks.sort((taskA, taskB) => {\r\n const taskAStartDate = taskA[startDateField];\r\n const taskBStartDate = taskB[startDateField];\r\n const momentTaskAStartDate = this._dateService.getMoment(taskAStartDate);\r\n const momentTaskBStartDate = this._dateService.getMoment(taskBStartDate);\r\n if (momentTaskAStartDate.isSame(momentTaskBStartDate, 'day')) {\r\n const taskAEndDate = taskA[endDateField];\r\n const taskBEndDate = taskB[endDateField];\r\n const dayADiff = momentTaskAStartDate.diff(taskAEndDate, 'day');\r\n const dayBDiff = momentTaskBStartDate.diff(taskBEndDate, 'day');\r\n if (dayADiff > dayBDiff) {\r\n return 1;\r\n }\r\n if (dayADiff < dayBDiff) {\r\n return -1;\r\n }\r\n return 0;\r\n }\r\n {\r\n return 0;\r\n }\r\n });\r\n return calendarTasks;\r\n }\r\n createWeekTask(\r\n days: Day[],\r\n moDataList: MetaobjectDataModel[],\r\n calendarFields: CalendarFields,\r\n taskHeight: number\r\n ): { [key: string]: any[] } {\r\n const week: { [key: string]: any[] } = {};\r\n days.forEach((day, dayIndex) => {\r\n let counter = 0;\r\n moDataList.forEach((event) => {\r\n const counterIndex = counter.toString();\r\n if (!week[counterIndex]) {\r\n week[counterIndex] = [];\r\n } else if (week[counterIndex].length > dayIndex) {\r\n counter++;\r\n return;\r\n }\r\n for (let m = week[counterIndex].length; m < dayIndex; m++) {\r\n week[counterIndex].push({ colSpan: 1 });\r\n }\r\n // agar week[counter] colspan ja dasht anjam gardad.\r\n const newTask: any = { colSpan: 1 };\r\n const momentDay = this._dateService.getMoment(day.date);\r\n const momentOfStartEvent = this._dateService.getMoment(event[calendarFields.StartDate]);\r\n const endDate = event[calendarFields.EndDate];\r\n const momentOfEndEvent = this._dateService.getMoment(endDate);\r\n const diff = Math.abs(momentOfStartEvent.diff(momentOfEndEvent, 'day'));\r\n if (diff === 0 && momentDay.isSame(momentOfStartEvent, 'day')) {\r\n newTask.colSpan = 1;\r\n const startMinuteTop = (event.$StartDateInfo.minutes * taskHeight) / 60;\r\n newTask.top = event.$StartDateInfo.hour * taskHeight + startMinuteTop;\r\n const endMinuteTop = (event.$EndDateInfo.minutes * taskHeight) / 60;\r\n newTask.height =\r\n (event.$EndDateInfo.hour - event.$StartDateInfo.hour) * taskHeight +\r\n endMinuteTop -\r\n startMinuteTop;\r\n newTask.event = event;\r\n newTask.enddayIsInRow = true;\r\n newTask.startdayIsInRow = true;\r\n newTask.isStartDay = true;\r\n newTask.isEndDay = true;\r\n newTask.start = newTask.end = day.date;\r\n newTask.inDay =\r\n event.$StartDateInfo.hour > 0 ||\r\n event.$StartDateInfo.minutes > 0 ||\r\n event.$EndDateInfo.hour > 0 ||\r\n event.$EndDateInfo.minutes > 0;\r\n week[counterIndex].splice(dayIndex, 0, newTask);\r\n day.tasks.push(newTask);\r\n counter++;\r\n } else {\r\n let diffFromEndOfEvent = 0;\r\n let diffFromStartOfEvent = 0;\r\n const isBetween =\r\n momentDay.isSameOrAfter(momentOfStartEvent, 'day') &&\r\n momentDay.isSameOrBefore(momentOfEndEvent, 'day');\r\n if (isBetween) {\r\n diffFromEndOfEvent = 0;\r\n if (diff === 0) {\r\n newTask.colSpan = 1;\r\n newTask.event = event;\r\n } else {\r\n diffFromEndOfEvent = Math.abs(momentDay.diff(momentOfEndEvent, 'day'));\r\n diffFromStartOfEvent = Math.abs(momentDay.diff(momentOfStartEvent, 'day'));\r\n const isStartDay = momentDay.isSame(momentOfStartEvent, 'day');\r\n const isEndDay = momentDay.isSame(momentOfEndEvent, 'day');\r\n let colSpan = diff;\r\n if (!isStartDay) {\r\n colSpan = diffFromEndOfEvent;\r\n } else {\r\n colSpan = diff + 1; // include the start\r\n }\r\n newTask.colSpan = this._calcColSpan(colSpan, dayIndex, days.length);\r\n newTask.isStartDay = isStartDay;\r\n newTask.isEndDay = isEndDay;\r\n newTask.isMiddle = !isStartDay && !isEndDay;\r\n newTask.event = event;\r\n }\r\n if (newTask.isStartDay || dayIndex === 0) {\r\n for (let span = 0; span < newTask.colSpan; span++) {\r\n const taskIndex = dayIndex + span;\r\n if (taskIndex > days.length - 1) {\r\n break;\r\n }\r\n const taskDayInfo = days[taskIndex];\r\n const taskInfo = {\r\n ...newTask,\r\n start: taskDayInfo.date,\r\n end: endDate,\r\n isStartDay: span === 0 ? newTask.isStartDay : null,\r\n startTask: event.$StartDayInfo,\r\n endTask: event.$EndDayInfo,\r\n startdayIsInRow: dayIndex - diffFromStartOfEvent > -1,\r\n enddayIsInRow: !!days[diffFromEndOfEvent],\r\n isMiddle:\r\n span === 0\r\n ? newTask.isMiddle\r\n : this._dateService\r\n .getMoment(taskDayInfo.date)\r\n .isBetween(momentOfStartEvent, momentOfEndEvent, 'day'),\r\n isEndDay:\r\n span === 0\r\n ? newTask.isEndDay\r\n : Math.abs(\r\n this._dateService\r\n .getMoment(taskDayInfo.date)\r\n .diff(momentOfEndEvent, 'day')\r\n ) <= 1,\r\n colSpan: span === 0 ? newTask.colSpan : null\r\n };\r\n week[counter.toString()].splice(taskIndex, 0, taskInfo);\r\n taskDayInfo.tasks.push(taskInfo);\r\n }\r\n counter++;\r\n }\r\n }\r\n }\r\n });\r\n day.tasks = day.tasks\r\n .map((t) => {\r\n t.positionCausedByOverlap = 0;\r\n return t;\r\n })\r\n .map((t) => {\r\n const tasksInDay = day.tasks.filter((innerT) => innerT.isStartDay && innerT.isEndDay);\r\n const overlaps = tasksInDay.filter((innerT) => {\r\n const startTime = moment(t.event.$StartDateInfo.date);\r\n const endTime = moment(t.event.$EndDateInfo.date);\r\n const innerStartTime = moment(innerT.event.$StartDateInfo.date);\r\n const innerEndTime = moment(innerT.event.$EndDateInfo.date);\r\n return (\r\n (startTime.isSameOrAfter(innerStartTime) && startTime.isBefore(innerEndTime)) ||\r\n endTime.isAfter(innerStartTime)\r\n );\r\n });\r\n t.countOfOverlaps = overlaps.length;\r\n const beforeOverlaps = tasksInDay.filter((innerT) => {\r\n const startTime = moment(t.event.$StartDateInfo.date);\r\n const innerStartTime = moment(innerT.event.$StartDateInfo.date);\r\n const innerEndTime = moment(innerT.event.$EndDateInfo.date);\r\n return startTime.isSameOrAfter(innerStartTime) && startTime.isBefore(innerEndTime);\r\n });\r\n t.positionCausedByOverlap = beforeOverlaps.findIndex((innerT) => innerT.event.Id === t.event.Id);\r\n return t;\r\n });\r\n });\r\n return week;\r\n }\r\n loadNext(): void {\r\n const mode = this._modeSource.getValue();\r\n const selectedMonth = this._selectedSource.getValue();\r\n switch (mode) {\r\n case 'customMonth':\r\n case 'month':\r\n {\r\n const days = this.days;\r\n const newDays = this._loadNextMonth(days, selectedMonth);\r\n this.setDays(newDays);\r\n }\r\n break;\r\n case 'week':\r\n case 'day':\r\n {\r\n const days = this._weekModeDaysSource.getValue();\r\n const newDays = this._loadNextWeek(days, selectedMonth);\r\n this._weekModeDaysSource.next(newDays);\r\n }\r\n break;\r\n break;\r\n case 'list':\r\n break;\r\n }\r\n }\r\n gotoMonth(monthName: string, monthIndex: number): void {\r\n const selectedMonth = this.selectedMonth.dateInfo.month;\r\n const val = monthIndex - selectedMonth;\r\n this.loadMonth(this.selectedMonth.dateInfo, val);\r\n }\r\n gotoYear(year: number): void {\r\n const selectedYear = this.selectedMonth.dateInfo.year;\r\n const val = year - selectedYear;\r\n this.increaseYear(val);\r\n }\r\n loadNextYear(): void {\r\n this.increaseYear(1);\r\n }\r\n loadPrevYear(): void {\r\n this.increaseYear(-1);\r\n }\r\n increaseYear(value: number): void {\r\n const selectedYear = this.selectedMonth.dateInfo.moment.toDate();\r\n selectedYear.setFullYear(selectedYear.getFullYear() + value); // next year\r\n this.loadMonthByDate(selectedYear);\r\n }\r\n loadPrevious(): void {\r\n const mode = this._modeSource.getValue();\r\n const selectedMonth = this._selectedSource.getValue();\r\n switch (mode) {\r\n case 'customMonth':\r\n case 'month':\r\n {\r\n const days = this.days;\r\n const newDays = this._loadPrevMonth(days, selectedMonth);\r\n this.setDays(newDays);\r\n }\r\n break;\r\n case 'week':\r\n case 'day':\r\n {\r\n const days = this._weekModeDaysSource.getValue();\r\n const newDays = this._loadPrevWeek(days, selectedMonth);\r\n this._weekModeDaysSource.next(newDays);\r\n }\r\n break;\r\n break;\r\n case 'list':\r\n break;\r\n }\r\n }\r\n loadMonth(dateInfo: DateInfo, addMonth: number = 0): CalendarMonthInfo {\r\n let loadedMonthDate = this._dateService.getMoment(dateInfo.date);\r\n if (addMonth > 0) {\r\n loadedMonthDate = this._dateService.addMonth(loadedMonthDate, addMonth);\r\n }\r\n if (addMonth < 0) {\r\n loadedMonthDate = this._dateService.subtractMonth(loadedMonthDate, Math.abs(addMonth));\r\n }\r\n let loadedCalendarMonthInfo = this.calendars.find((c) => c.dateInfo.moment.isSame(loadedMonthDate, 'day'));\r\n if (!loadedCalendarMonthInfo) {\r\n loadedCalendarMonthInfo = this.getMonthInfo(loadedMonthDate, this.today);\r\n }\r\n this.loadCalendarMonthInfo(loadedCalendarMonthInfo);\r\n return loadedCalendarMonthInfo;\r\n }\r\n loadCalendarMonthInfo(loadedCalendarMonthInfo: CalendarMonthInfo): void {\r\n const calendarsInfo = [...this.calendars];\r\n const exists = calendarsInfo.find(\r\n (c) =>\r\n c.dateInfo.year === loadedCalendarMonthInfo.dateInfo.year &&\r\n c.dateInfo.month === loadedCalendarMonthInfo.dateInfo.month\r\n );\r\n if (!exists) {\r\n calendarsInfo.push(loadedCalendarMonthInfo);\r\n this._calendarsSource.next(calendarsInfo);\r\n }\r\n this.setSelected(loadedCalendarMonthInfo);\r\n }\r\n addCalendarMonthInfo(calendarMonthInfo: CalendarMonthInfo): void {\r\n const newList = this.calendars;\r\n newList.push(calendarMonthInfo);\r\n this._calendarsSource.next(newList);\r\n }\r\n getNumber(value): number {\r\n const find = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];\r\n const replace = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\r\n let replaceString = value;\r\n let regex;\r\n for (let i = 0; i < find.length; i++) {\r\n regex = new RegExp(find[i], 'g');\r\n replaceString = replaceString.replace(regex, replace[i]);\r\n }\r\n return Number(replaceString);\r\n }\r\n private _initilize(): void {\r\n this.today = this._dateService.getMoment(new Date());\r\n const todayMonthInfo = this.getCalendarMonthInfo(new Date());\r\n this.todayDay = todayMonthInfo.days.find((c) => c.isToday);\r\n this._selectedSource = new BehaviorSubject<CalendarMonthInfo>(todayMonthInfo);\r\n this.selected$ = this._selectedSource.asObservable();\r\n this._calendarsSource.next([todayMonthInfo]);\r\n this.setDays(todayMonthInfo.days);\r\n this.setSelected(todayMonthInfo);\r\n this._currentMonthIndexSource.next(todayMonthInfo.dateInfo.month);\r\n this._todayMonthInfo = todayMonthInfo;\r\n this.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe();\r\n }\r\n private _calcColSpan(diff: number, dayIndex: number, maxColSpan: number): number {\r\n if (diff === 0) {\r\n return 2;\r\n }\r\n if (Math.floor(diff / maxColSpan) > 0) {\r\n return maxColSpan;\r\n }\r\n if (dayIndex + diff > maxColSpan) {\r\n return maxColSpan - dayIndex;\r\n }\r\n return diff;\r\n }\r\n private _loadNextMonth(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n let lastDay = days[daysCount - 1];\r\n const lastDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n let newDays = lastDayIndex > -1 ? monthInfo.days.slice(lastDayIndex + 1, lastDayIndex + 1 + daysCount) : [];\r\n if (newDays.length < daysCount) {\r\n // we move to next month\r\n if (newDays.length > 0) {\r\n lastDay = newDays[newDays.length - 1];\r\n }\r\n const needCountDay = daysCount - newDays.length;\r\n const nextMonth = this.loadMonth(monthInfo.dateInfo, 1);\r\n let startPosition = 0;\r\n if (needCountDay < 42) {\r\n startPosition = nextMonth.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n if (startPosition === -1) {\r\n startPosition = 0;\r\n } else {\r\n startPosition++;\r\n }\r\n }\r\n const nextDays = nextMonth.days.slice(startPosition, startPosition + needCountDay);\r\n newDays = [...newDays, ...nextDays];\r\n }\r\n return newDays;\r\n }\r\n private _loadNextWeek(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n const lastDay = days[daysCount - 1];\r\n const lastDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n let newDays = monthInfo.days.slice(lastDayIndex + 1, lastDayIndex + 1 + daysCount);\r\n if (newDays.length < daysCount) {\r\n // we move to next month\r\n let lastNewDay = newDays[newDays.length - 1];\r\n if (!lastNewDay) {\r\n lastNewDay = lastDay;\r\n }\r\n const nextMonth = this.loadMonth(monthInfo.dateInfo, 1);\r\n const lastDayIndex2 = nextMonth.days.findIndex(\r\n (c) => c.dayInMonth === lastNewDay.dayInMonth && c.month === lastNewDay.month\r\n );\r\n newDays = newDays.concat(\r\n nextMonth.days.slice(lastDayIndex2 + 1, lastDayIndex2 + 1 + (daysCount - newDays.length))\r\n );\r\n }\r\n return newDays;\r\n }\r\n private _loadPrevMonth(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n let firstDay = days[0];\r\n const firstDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n let newDays: Day[] = monthInfo.days.slice(\r\n firstDayIndex - daysCount > 0 ? firstDayIndex - daysCount : 0,\r\n firstDayIndex\r\n );\r\n if (newDays.length < daysCount) {\r\n // we move to prev month\r\n if (newDays.length > 0) {\r\n firstDay = newDays[0];\r\n }\r\n const needCountDay = daysCount - newDays.length;\r\n const prevMonth = this.loadMonth(monthInfo.dateInfo, -1);\r\n let endPosition = prevMonth.days.length;\r\n if (needCountDay < 42) {\r\n endPosition = prevMonth.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n if (endPosition === -1) {\r\n endPosition = prevMonth.days.length;\r\n }\r\n }\r\n const prevDays = prevMonth.days.slice(endPosition - needCountDay, endPosition);\r\n newDays = [...prevDays, ...newDays];\r\n }\r\n return newDays;\r\n }\r\n private _loadPrevWeek(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n const firstDay = days[0];\r\n const firstDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n const partIndexPrev = firstDayIndex - daysCount;\r\n let newDays: Day[] = [];\r\n if (partIndexPrev < 0) {\r\n newDays = firstDayIndex - 1 >= 0 ? monthInfo.days.slice(0, firstDayIndex - 1) : [];\r\n } else {\r\n newDays = monthInfo.days.slice(firstDayIndex - daysCount, firstDayIndex);\r\n }\r\n if (newDays.length < daysCount) {\r\n // we move to prev month\r\n let firstNewDay = newDays[0];\r\n if (!firstNewDay) {\r\n firstNewDay = firstDay;\r\n }\r\n const prevMonth = this.loadMonth(monthInfo.dateInfo, -1);\r\n const firstDayIndex2 = prevMonth.days.findIndex(\r\n (c) => c.dayInMonth === firstNewDay.dayInMonth && c.month === firstNewDay.month\r\n );\r\n newDays = newDays.concat(\r\n prevMonth.days.slice(firstDayIndex2 - (daysCount - newDays.length), firstDayIndex2)\r\n );\r\n }\r\n return newDays;\r\n }\r\n private getCalendarMonthInfo(date): CalendarMonthInfo {\r\n const startOfMonth = this._dateService.startOfMonth(date);\r\n const momentDate = this._dateService.getMoment(date);\r\n return this.getMonthInfo(startOfMonth, momentDate);\r\n }\r\n private getMonthInfo(date, today): CalendarMonthInfo {\r\n const days: Day[] = [];\r\n const activeDate = this._dateService.getMoment(date);\r\n const startOfMonth: Date = this._dateService.startOfMonth(activeDate);\r\n const endOfMonth: Date = this._dateService.endOfMonth(activeDate);\r\n const dateInfo = this._dateService.getDateInfo(activeDate);\r\n const dayInWeek = this._dateService.day(startOfMonth); // we add 1 to the dayInWeek because it's starts with zero\r\n let weekCounter = 0;\r\n let dayCounter = 0;\r\n for (let i = 0; i < 42; i++) {\r\n const dateOfStartOfMonth: Date = new Date(startOfMonth);\r\n dateOfStartOfMonth.setDate(dateOfStartOfMonth.getDate() + i - dayInWeek);\r\n const { day, isInMonth }: { day: Day; isInMonth: any } = this._getDay(\r\n dateOfStartOfMonth,\r\n activeDate,\r\n today,\r\n endOfMonth,\r\n startOfMonth,\r\n dateInfo,\r\n i\r\n );\r\n days.push(day);\r\n dayCounter++;\r\n if (isInMonth && dayCounter > weekCounter * 7) {\r\n weekCounter++;\r\n }\r\n }\r\n // const endOfMonthIndex = days.findIndex((c) => c.isEndOfMonth);\r\n // if (endOfMonthIndex > -1 && days.length - endOfMonthIndex > 7) {\r\n // // days.splice(days.length - 7, 7);\r\n // }\r\n const calendarInfo = new CalendarMonthInfo();\r\n calendarInfo.id = getUniqueId(3);\r\n calendarInfo.dateInfo = dateInfo;\r\n calendarInfo.days = days;\r\n calendarInfo.weeksCount = weekCounter;\r\n // this.cdr.detectChanges();\r\n return calendarInfo;\r\n }\r\n private _getDay(\r\n date: Date,\r\n activeDate: any,\r\n today: any,\r\n endOfMonth: Date,\r\n startOfMonth: Date,\r\n dateInfo: DateInfo,\r\n i: number\r\n ): { day: Day; isInMonth: boolean } {\r\n const isInMonth = this._dateService.isSame(date, activeDate, 'month');\r\n const momentOfDate = this._dateService.getMoment(date);\r\n const isToday = momentOfDate.isSame(today, 'day');\r\n const dayInMonth = this._dateService.strDate(date);\r\n const dayInWeek = this._dateService.day(date);\r\n const isEndOfMonth = momentOfDate.isSame(endOfMonth, 'day');\r\n const isStartOfMonth = momentOfDate.isSame(startOfMonth, 'day');\r\n const monthDateInfo = isInMonth ? dateInfo : this._dateService.getDateInfo(date);\r\n const day: Day = {\r\n index: i,\r\n date,\r\n dayInWeek,\r\n status: DayStatus.Open,\r\n dayInMonth,\r\n dayInMonthN: this.getNumber(dayInMonth),\r\n isToday,\r\n isInMonth,\r\n isEndOfMonth,\r\n isStartOfMonth,\r\n momentOfDate,\r\n month: monthDateInfo.month,\r\n year: monthDateInfo.year,\r\n monthName: monthDateInfo.monthName,\r\n dayName: momentOfDate.format('dddd'),\r\n tasks: [],\r\n monthDateInfo,\r\n row: Math.floor(i / 7 + 1),\r\n col: 6 - (i % 7),\r\n isAddingNewEvent: false,\r\n addingEventPoint1: null,\r\n addingEventPoint2: null\r\n };\r\n return { day, isInMonth };\r\n }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { Day } from './models';\r\n\r\n@Pipe({\r\n name: 'daysInWeek'\r\n})\r\nexport class DaysInWeekPipe implements PipeTransform {\r\n constructor() {}\r\n transform(days: Day[], weekNumber: number): Day[] {\r\n return days.slice(7 * weekNumber, 7 * weekNumber + 7);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport { BaseComponent, PreventDefaulEvent } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-day-number-box',\r\n templateUrl: './day-number-box.component.html',\r\n styleUrls: ['./day-number-box.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DayNumberBoxComponent extends BaseComponent implements OnInit, OnChanges {\r\n @HostBinding('style.display') display;\r\n @Input() isWeekMode: boolean;\r\n @Input() isSingleDay: boolean;\r\n @Input() day: Day;\r\n @Input() isPickerMode: Day;\r\n @Input() itemInRange: boolean;\r\n @Input() isActive: boolean;\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @HostBinding('style.cursor') _cursor = 'default';\r\n @HostBinding('class') _hover = '';\r\n @HostBinding('class.fd-calendar__item--range') _itemInRange = false;\r\n @HostBinding('class.is-active') _isActive = false;\r\n\r\n @HostListener('mouseup') mouseup(): void {\r\n this.dayMouseUp.emit(this.day);\r\n }\r\n @HostListener('mousedown') mousedown(): void {\r\n this.dayMouseDown.emit(this.day);\r\n }\r\n @HostListener('mousemove') mousemove(): void {\r\n this.dayMouseMove.emit(this.day);\r\n }\r\n @HostListener('click') onClick(): void {\r\n this.dayClick.emit(this.day);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._cursor = this.isPickerMode ? 'pointer' : 'default';\r\n this.display = this.isSingleDay ? 'inline-block' : 'flex';\r\n this._hover = this.isPickerMode ? 'hover' : '';\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { itemInRange, isActive } = changes;\r\n if (itemInRange) {\r\n this._itemInRange = itemInRange.currentValue;\r\n }\r\n if (isActive) {\r\n this._isActive = isActive.currentValue;\r\n }\r\n }\r\n onDayBoxNumberClick(e, day: Day): void {\r\n // change calendar mode to Day\r\n PreventDefaulEvent(e);\r\n this.dayClick.emit(day);\r\n }\r\n}\r\n","<button\r\n fd-button\r\n class=\"bg-transparent hover:!bg-transparent\"\r\n (click)=\"onDayBoxNumberClick($event, day)\"\r\n [style.width]=\"isSingleDay ? 'auto' : '100%'\"\r\n [style.maxWidth]=\"isSingleDay ? 'auto' : '100%'\"\r\n [ngClass]=\"day.isInMonth ? 'inMonth' : 'notInMonth'\"\r\n>\r\n <div\r\n [ngClass]=\"{\r\n 'fd-avatar--s': isWeekMode,\r\n 'fd-avatar--xs': !isWeekMode || (day.isToday && isPickerMode)\r\n }\"\r\n [class.not-today]=\"!day.isToday\"\r\n class=\"day-number-value\"\r\n [style.fontSize]=\"isWeekMode ? '1.7rem' : null\"\r\n >\r\n <span>{{ day.dayInMonth }}</span>\r\n </div>\r\n</button>\r\n","export function getPadedTime(value): string {\r\n return String(value.toString().padStart(2, '0'));\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'eventDate'\r\n})\r\nexport class EventDatePipe implements PipeTransform {\r\n constructor() {}\r\n transform(from: DateInfo, to: DateInfo, onlyTime: boolean = false): string {\r\n const showTime = from.hour || from.minutes || to.hour || to.minutes > 0;\r\n const fromTime = `${getPadedTime(from.hour)}:${getPadedTime(from.minutes)}`;\r\n const toTime = `${getPadedTime(to.hour)}:${getPadedTime(to.hour)}`;\r\n if (onlyTime) {\r\n return `${fromTime}`;\r\n }\r\n\r\n return `${from.strDay} ${from.monthName} ${from.strYear}${showTime ? `, ${fromTime}` : ''} – ${to.strDay} ${\r\n to.monthName\r\n } ${to.strYear}${showTime ? `, ${toTime}` : ''}`;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter, HostBinding, OnInit } from '@angular/core';\n\nimport { BaseComponent, CalendarFields, MetaobjectDataModel, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\n\n@Component({\n selector: 'bc-event-preview',\n templateUrl: './event-preview.component.html',\n styleUrls: ['./event-preview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EventPreviewComponent extends BaseComponent implements OnInit {\n @Input() event: MetaobjectDataModel;\n @Input() calendarFields: CalendarFields;\n @Input() popover: any;\n @Input() popover2: any;\n @Input() canEdit: boolean;\n @Input() canDelete: boolean;\n @Input() inDialog: boolean;\n\n @Input() deviceSize: AbbrevationDeviceSize;\n @HostBinding('style.width') _width = '460px;';\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() close = new EventEmitter<void>();\n\n ngOnInit(): void {\n super.ngOnInit();\n if (this.deviceSize === 's') {\n this._width = 'auto';\n }\n }\n onDelete(event, popover, popover2): void {\n this.deleteEvent.emit(event);\n\n this._closePopover(popover);\n this._closePopover(popover2);\n }\n onEdit(event, popover, popover2): void {\n this.editEvent.emit(event);\n this._closePopover(popover);\n this._closePopover(popover2);\n }\n onClosePopover(popover): void {\n this._closePopover(popover);\n }\n private _closePopover(popover: any): void {\n if (popover) {\n popover.close();\n return;\n }\n this.close.emit();\n }\n}\n","<fd-layout-panel [ngClass]=\"deviceSize\">\n <fd-layout-panel-header>\n <fd-layout-panel-actions>\n <fd-toolbar [clearBorder]=\"true\" [fdType]=\"'transparent'\">\n <button\n fd-button\n *ngIf=\"canEdit\"\n fd-toolbar-item\n glyph=\"edit\"\n fdType=\"transparent\"\n (click)=\"onEdit(event, popover, popover2)\"\n ></button>\n <button\n fd-button\n *ngIf=\"canDelete\"\n fd-toolbar-item\n glyph=\"delete\"\n fdType=\"transparent\"\n (click)=\"onDelete(event, popover, popover2)\"\n ></button>\n <button\n fd-button\n fd-toolbar-item\n glyph=\"decline\"\n fdType=\"transparent\"\n (click)=\"onClosePopover(popover)\"\n ></button>\n </fd-toolbar>\n </fd-layout-panel-actions>\n </fd-layout-panel-header>\n <fd-layout-panel-body>\n <fd-quick-view>\n <fd-quick-view-subheader>\n <fd-avatar\n size=\"xs\"\n glyph=\"color-fill\"\n [transparent]=\"true\"\n [style.color]=\"event[calendarFields.Color] ? event[calendarFields.Color] : ''\"\n ></fd-avatar>\n <fd-quick-view-subheader-title>\n {{ event[calendarFields.Title] }}\n </fd-quick-view-subheader-title>\n <fd-quick-view-subheader-subtitle>\n <span>{{ event.$StartDateInfo | eventDate: event.$EndDateInfo }} </span>\n </fd-quick-view-subheader-subtitle>\n </fd-quick-view-subheader>\n\n <fd-quick-view-group>\n <fd-quick-view-group-item *ngIf=\"event | barsaVisibleValue: calendarFields.Notes as notes\">\n <fd-quick-view-group-item-label>\n <fd-icon glyph=\"text-align-justified\"></fd-icon>\n </fd-quick-view-group-item-label>\n <fd-quick-view-group-item-content>\n <div fd-quick-view-group-item-content-element style=\"white-space: normal\">\n {{ notes }}\n </div>\n </fd-quick-view-group-item-content>\n </fd-quick-view-group-item>\n <fd-quick-view-group-item>\n <fd-quick-view-group-item-label>\n <fd-icon glyph=\"appointment\"></fd-icon>\n </fd-quick-view-group-item-label>\n <fd-quick-view-group-item-content>\n <span>کاربر</span>\n </fd-quick-view-group-item-content>\n </fd-quick-view-group-item>\n </fd-quick-view-group>\n </fd-quick-view>\n </fd-layout-panel-body>\n</fd-layout-panel>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-event-button-end-arrow',\r\n templateUrl: './event-button-end-arrow.component.html',\r\n styleUrls: ['./event-button-end-arrow.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EventButtonEndArrowComponent extends BaseComponent implements OnInit {\r\n @Input() task: any;\r\n @Input() rtl: boolean;\r\n @Input() calendarFields: CalendarFields;\r\n @HostBinding('class.rtl') _rtl = true;\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._rtl = this.rtl;\r\n }\r\n}\r\n","<span\r\n class=\"sdsds\"\r\n [style.border-left-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n [style.border-right-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"end-day-continue\"\r\n></span>\r\n<!-- [class.end-day]=\"(!task.isEndDay && task.isMiddle) || (task.isStartDay && !task.isEndDay)\" -->\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-event-button-start-arrow',\r\n templateUrl: './event-button-start-arrow.component.html',\r\n styleUrls: ['./event-button-start-arrow.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EventButtonStartArrowComponent extends BaseComponent implements OnInit {\r\n @Input() task: any;\r\n @Input() rtl: boolean;\r\n @Input() calendarFields: CalendarFields;\r\n @HostBinding('class.rtl') _rtl = true;\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._rtl = this.rtl;\r\n }\r\n}\r\n","<span\r\n class=\"sdsds\"\r\n [style.border-left-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n [style.border-right-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"start-day-middle\"\r\n></span>\r\n<!-- [class.end-day]=\"(!task.isEndDay && task.isMiddle) || (task.isStartDay && !task.isEndDay)\" -->\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { CalendarFields, CalendarMetaobjectDataModel, DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'eventTime'\r\n})\r\nexport class EventTimePipe implements PipeTransform {\r\n constructor() {}\r\n transform(task: CalendarMetaobjectDataModel, calendarFields: CalendarFields): string {\r\n const event = task.event;\r\n const dateInfo: DateInfo = event.$StartDateInfo;\r\n const showTime = dateInfo.hour || dateInfo.minutes > 0;\r\n const fromTime = `${getPadedTime(dateInfo.hour)}:${getPadedTime(dateInfo.minutes)}`;\r\n return `${showTime ? fromTime : ''} ${event[calendarFields.Title]}`;\r\n }\r\n}\r\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { DialogService, PopoverComponent } from '@fundamental-ngx/core';\n\nimport { BaseComponent, CalendarFields, MetaobjectDataModel, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\n@Component({\n selector: 'bc-event-button',\n templateUrl: './event-button.component.html',\n styleUrls: ['./event-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EventButtonComponent extends BaseComponent implements OnInit {\n @ViewChild('defaultButton', { static: true })\n defaultButtonTemplate: TemplateRef<any>;\n @ViewChild(PopoverComponent, { static: true })\n popoverComponent: PopoverComponent;\n\n @ViewChild('dialogTemplate', { static: true })\n _dialogTemplate: TemplateRef<any>;\n\n @ViewChild('btnFocus', { static: true }) btnFocus: ElementRef;\n @Input() buttonTemplate: TemplateRef<any>;\n @Input() calendarFields: CalendarFields;\n @Input() task: any;\n @Input() rtl: boolean;\n @Input() canDelete: boolean;\n @Input() canEdit: boolean;\n @Input() index: number;\n @Input() deviceSize: AbbrevationDeviceSize;\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() openPopoverChange = new EventEmitter<boolean>();\n @HostBinding('style.opacity') opacity = 1;\n @HostBinding('attr.rtl') _rtl = true;\n constructor(private _el: ElementRef, private _dialogService: DialogService) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this._rtl = this.rtl;\n this.opacity = this.task.opacity ?? 1;\n if (!this.buttonTemplate) {\n this.buttonTemplate = this.defaultButtonTemplate;\n }\n if (this.index === 0) {\n (this.btnFocus.nativeElement as HTMLLIElement).scrollIntoView();\n (this.btnFocus.nativeElement as HTMLLIElement).tabIndex = -1;\n }\n }\n onPopOverOpenChange(isOpen): void {\n this.openPopoverChange.emit(isOpen);\n }\n onButtonClick(popover): void {\n if (this.deviceSize === 's') {\n this._dialogService.open(this._dialogTemplate, {\n mobile: true\n });\n return;\n }\n popover.open();\n }\n}\n","<button\r\n #btnFocus\r\n [attr.id]=\"task.id\"\r\n style=\"width: 0; height: 0; visibility: hidden; max-height: 1px; min-height: 1px; position: absolute\"\r\n></button>\r\n<bc-event-button-start-arrow\r\n *ngIf=\"\r\n (task.startdayIsInRow && !task.isStartDay) ||\r\n (task.isMiddle && !task.isStartDay && !task.isEndDay) ||\r\n (task.isEndDay && !task.isStartDay && !task.isMiddle)\r\n \"\r\n [task]=\"task\"\r\n [calendarFields]=\"calendarFields\"\r\n [rtl]=\"rtl\"\r\n>\r\n</bc-event-button-start-arrow>\r\n\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n buttonTemplate;\r\n context: {\r\n $implicit: task,\r\n calendarFields: calendarFields,\r\n popover: popover,\r\n onButtonClick: onButtonClick.bind(this)\r\n }\r\n \"\r\n></ng-container>\r\n\r\n<bc-event-button-end-arrow *ngIf=\"!task.enddayIsInRow\" [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\">\r\n</bc-event-button-end-arrow>\r\n\r\n<fd-popover\r\n #popover\r\n placement=\"bottom\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [title]=\"task.event[calendarFields.Title]\"\r\n (isOpenChange)=\"onPopOverOpenChange($event)\"\r\n>\r\n <fd-popover-control></fd-popover-control>\r\n <fd-popover-body>\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [popover]=\"popover\"\r\n [canDelete]=\"canDelete\"\r\n [deviceSize]=\"deviceSize\"\r\n [canEdit]=\"canEdit\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-preview>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-body>\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [canDelete]=\"canDelete\"\r\n [deviceSize]=\"deviceSize\"\r\n [canEdit]=\"canEdit\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (close)=\"dialog.dismiss()\"\r\n ></bc-event-preview>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template\r\n #defaultButton\r\n let-task\r\n let-popover=\"popover\"\r\n let-calendarFields=\"calendarFields\"\r\n let-onButtonClick=\"onButtonClick\"\r\n>\r\n <button\r\n fd-button\r\n [compact]=\"true\"\r\n (click)=\"onButtonClick(popover)\"\r\n [fdType]=\"task.inDay ? 'standard' : 'emphasized'\"\r\n [label]=\"task | eventTime: calendarFields\"\r\n [style.background-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"task-title noborder\"\r\n ></button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-day-event-list',\r\n templateUrl: './day-event-list.component.html',\r\n styleUrls: ['./day-event-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DayEventListComponent extends BaseComponent {\r\n @Input() day: Day;\r\n @Input() deviceSize: string;\r\n @Input() weekDays: string[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() canEdit: boolean;\r\n @Input() popover: any;\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() openPopOver = new EventEmitter<any>();\r\n\r\n onClosePopover(popover, popover2?): void {\r\n popover.close();\r\n if (popover2) {\r\n popover2.close();\r\n }\r\n }\r\n}\r\n","<div fd-bar [barDesign]=\"'header-with-subheader'\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <button fd-button glyph=\"decline\" [fdType]=\"'transparent'\" (click)=\"onClosePopover(popover)\"></button>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-middle>\r\n <fd-bar-element>\r\n {{ weekDays[day.dayInWeek] }}\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-bar-element> </fd-bar-element>\r\n </div>\r\n</div>\r\n<div fd-bar [barDesign]=\"'subheader'\">\r\n <div fd-bar-middle>\r\n <fd-bar-element [fullWidth]=\"true\">\r\n <bc-day-number-box [day]=\"day\" [isWeekMode]=\"true\"></bc-day-number-box>\r\n </fd-bar-element>\r\n </div>\r\n</div>\r\n<ul fd-list>\r\n <li fd-list-item *ngFor=\"let task of day.tasks\" class=\"task-start-end\" (click)=\"popoverPreview.open()\">\r\n <bc-event-button-start-arrow\r\n *ngIf=\"task.isMiddle && !task.isStartDay\"\r\n [task]=\"task\"\r\n [calendarFields]=\"calendarFields\"\r\n [rtl]=\"rtl\"\r\n >\r\n </bc-event-button-start-arrow>\r\n <span class=\"middle-day\">{{ task.event[calendarFields.Title] }}</span>\r\n <bc-event-button-end-arrow\r\n *ngIf=\"(task.isMiddle || task.isStartDay) && !task.isEndDay\"\r\n [task]=\"task\"\r\n [calendarFields]=\"calendarFields\"\r\n [rtl]=\"rtl\"\r\n >\r\n </bc-event-button-end-arrow>\r\n\r\n <fd-popover\r\n #popoverPreview\r\n placement=\"bottom\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [title]=\"task.event[calendarFields.Title]\"\r\n >\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [popover]=\"popoverPreview\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [popover2]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-preview>\r\n </fd-popover>\r\n </li>\r\n</ul>\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'equalDate'\r\n})\r\nexport class EqualDatePipe implements PipeTransform {\r\n constructor() {}\r\n transform(value: Date, secondValue: Date | null | undefined): boolean {\r\n if ((value && !secondValue) || (!value && secondValue)) {\r\n return false;\r\n }\r\n const yearEqual = value.getFullYear() === secondValue?.getFullYear();\r\n const monthEqual = value.getMonth() === secondValue?.getMonth();\r\n const dayEqual = value.getDate() === secondValue?.getDate();\r\n return yearEqual && monthEqual && dayEqual;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, CalendarMetaobjectDataModel, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\nimport { DaysInWeekPipe } from '../days-in-week.pipe';\r\n\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-calendar-month',\r\n templateUrl: './calendar-month.component.html',\r\n styleUrls: ['./calendar-month.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarMonthComponent extends BaseComponent implements OnChanges, OnInit {\r\n @Input() monthWeeksCount: number;\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() days: Day[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() deviceSize: string;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() datePicker = false;\r\n @Input() rangePicker = false;\r\n @Input() canDelete = false;\r\n @Input() canAdd = false;\r\n @Input() canEdit = false;\r\n @Input() selectedDate: Date | undefined;\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() daySelect = new EventEmitter<any>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n\r\n defaultWeeksCountD: number;\r\n defaultFirstWeekIndex: number;\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount: number;\r\n maxRowTasks: number[];\r\n weekTasksArray: any;\r\n extraRow: number[];\r\n isPickerMode: boolean;\r\n\r\n private _hasPopoverOpened: boolean[] = [];\r\n\r\n constructor(\r\n private daysInWeek: DaysInWeekPipe,\r\n private _cdr: ChangeDetectorRef,\r\n private _calendarService: CalendarService\r\n ) {\r\n super();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n let needToDetectChange = false;\r\n const {\r\n containerHeight,\r\n deviceSize,\r\n moDataList,\r\n days,\r\n monthWeeksCount,\r\n startSelectedDayIndex,\r\n endSelectedDayIndex\r\n } = changes;\r\n if (containerHeight && !containerHeight.firstChange) {\r\n this.fitToContainer(changes.containerHeight.currentValue);\r\n }\r\n if (deviceSize && !deviceSize.firstChange) {\r\n this.prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (moDataList && !moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n needToDetectChange = true;\r\n }\r\n if (days && !days.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n needToDetectChange = true;\r\n }\r\n if (monthWeeksCount && !monthWeeksCount.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n needToDetectChange = true;\r\n }\r\n if (\r\n (startSelectedDayIndex && !startSelectedDayIndex.firstChange) ||\r\n (endSelectedDayIndex && !endSelectedDayIndex.firstChange)\r\n ) {\r\n needToDetectChange = true;\r\n }\r\n if (needToDetectChange) {\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.isPickerMode = this.datePicker || this.rangePicker;\r\n this.prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n this.fitToContainer(this.containerHeight);\r\n }\r\n\r\n onDayBoxSelect(day: Day): void {\r\n this._fireDaySelect(day);\r\n }\r\n onDaySelect(weekIndex: number, dayIndex: number): void {\r\n if (!this.canAdd) {\r\n return;\r\n }\r\n const day = this.days[weekIndex * 7 + dayIndex];\r\n this._fireDaySelect(day);\r\n }\r\n\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n this._openPopover(isOpen);\r\n }\r\n onMoreButton(e, popover): void {\r\n this._preventEvent(e);\r\n popover.open();\r\n }\r\n onTask(e, task: CalendarMetaobjectDataModel): void {\r\n this.showEvent.emit(task);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n onDayMouseMove(day: Day): void {\r\n this.dayMouseMove.emit(day);\r\n }\r\n onDayMouseDown(day: Day): void {\r\n this.dayMouseDown.emit(day);\r\n }\r\n onDayMouseUp(day: Day): void {\r\n this.dayMouseUp.emit(day);\r\n }\r\n private _preventEvent(e): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n private _fireDaySelect(day: Day): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit({\r\n date: day.date\r\n });\r\n }\r\n }\r\n private _openPopover(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n private prepareWeekDays(deviceSize: string): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = this.weekDays;\r\n } else {\r\n this.selectedWeekDays = this.weekDaysMin;\r\n }\r\n }\r\n private fitToContainer(containerHeight): void {\r\n let _weeksCount;\r\n\r\n if (this.monthWeeksCount > 0) {\r\n const weeksCount = this.monthWeeksCount;\r\n _weeksCount = weeksCount;\r\n } else {\r\n _weeksCount = this.days.length / 7;\r\n }\r\n this.numberOfWeek = Array.from(Array(_weeksCount).keys());\r\n this.numberOfWeek = this.numberOfWeek.map((value) => value);\r\n if (this.isPickerMode) {\r\n this.dayHeight = 40;\r\n return;\r\n }\r\n this.dayHeight = Math.floor(containerHeight / (_weeksCount + 1));\r\n\r\n this.maxTaskCount = Math.floor((this.dayHeight - this.taskHeight) / this.taskHeight);\r\n if (this.maxTaskCount > 0) {\r\n this.maxRowTasks = new Array(this.maxTaskCount).fill(0).map((x, i) => i);\r\n }\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n if (this.isPickerMode) {\r\n this.weekTasksArray = {};\r\n return;\r\n }\r\n\r\n const calendarFields = this.calendarFields;\r\n\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: any = [];\r\n for (let j = 0; j < this.days.length / 7; j++) {\r\n const days = this.daysInWeek.transform(this.days, j);\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, 0);\r\n weekTasksArray.push(week);\r\n }\r\n\r\n weekTasksArray.forEach((week) => {\r\n const arr: any[] = Object.values(week);\r\n for (let i = arr.length; i < this.maxTaskCount; i++) {\r\n week[i.toString()] = [];\r\n }\r\n });\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((week) => {\r\n this._calendarService.fillWeek(week);\r\n });\r\n this.weekTasksArray = weekTasksArray;\r\n }\r\n}\r\n","<table fd-table class=\"table-header\" [fdCompact] [attr.picker]=\"datePicker\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th\r\n class=\"weekday-header\"\r\n *ngFor=\"let weekDay of selectedWeekDays\"\r\n fd-table-cell\r\n [class.noborder]=\"isPickerMode\"\r\n >\r\n {{ weekDay | slice: 0:1 }}\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n <ng-container *ngFor=\"let weekDay of numberOfWeek\">\r\n <tr fd-table-row>\r\n <td\r\n [style.height.px]=\"dayHeight\"\r\n fd-table-cell\r\n colspan=\"7\"\r\n [style.border]=\"isPickerMode ? 'none' : null\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTasks;\r\n context: {\r\n $implicit: isPickerMode ? null : moDataList[weekDay],\r\n weekIndex: weekDay,\r\n days: days | daysInWeek: weekDay,\r\n maxRowTasks: maxRowTasks,\r\n weekDays: weekDays,\r\n calendarFields: calendarFields,\r\n deviceSize: deviceSize,\r\n rtl: rtl,\r\n isPickerMode: isPickerMode\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n</table>\r\n<ng-template\r\n #renderTasks\r\n let-task\r\n let-weekIndex=\"weekIndex\"\r\n let-weekDays=\"weekDays\"\r\n let-days=\"days\"\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-calendarFields=\"calendarFields\"\r\n let-deviceSize=\"deviceSize\"\r\n let-rtl=\"rtl\"\r\n let-isPickerMode=\"isPickerMode\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody>\r\n <tr fd-table-row class=\"row-day-number\" [attr.rtl]=\"rtl\">\r\n <td fd-table-cell *ngFor=\"let day of days\" [class.noborder]=\"isPickerMode\">\r\n <bc-day-number-box\r\n [ngClass]=\"{\r\n 'fd-calendar__item': isPickerMode,\r\n '!border !rounded-md transition-all cursor-pointer': isPickerMode && day.isInMonth,\r\n '!bg-transparent border-gray-100 hover:!border-gray-300':\r\n isPickerMode && day.isInMonth && !day.isToday,\r\n 'fd-calendar__item--other-month': isPickerMode && !day.isInMonth,\r\n 'fd-calendar__item--weekend': isPickerMode && day.isWeekend,\r\n '!bg-blue-500 [&>*]:!text-white hover:!bg-blue-600': day.isToday\r\n }\"\r\n [isPickerMode]=\"isPickerMode\"\r\n [day]=\"day\"\r\n [isActive]=\"\r\n day.index === startSelectedDayIndex || day.index === endSelectedDayIndex || day.date\r\n | equalDate: selectedDate\r\n \"\r\n [itemInRange]=\"\r\n startSelectedDayIndex !== undefined &&\r\n endSelectedDayIndex !== undefined &&\r\n day.index >= startSelectedDayIndex &&\r\n day.index <= endSelectedDayIndex\r\n \"\r\n (dayClick)=\"onDayClick(day)\"\r\n (dayMouseMove)=\"onDayMouseMove(day)\"\r\n (dayMouseDown)=\"onDayMouseDown(day)\"\r\n (dayMouseUp)=\"onDayMouseUp(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"!isPickerMode\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray[weekIndex],\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: weekIndex,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n weekDays: weekDays\r\n }\r\n \"\r\n ></ng-container>\r\n <tr fd-table-row>\r\n <td fd-table-cell *ngFor=\"let day of days\" class=\"more-fd\" (click)=\"onDayBoxSelect(day)\">\r\n <ng-container *ngIf=\"maxRowTasks?.length < day.tasks.length\">\r\n <button\r\n fd-button\r\n (click)=\"onMoreButton($event, popover)\"\r\n [fdType]=\"'transparent'\"\r\n [compact]=\"true\"\r\n >\r\n {{ day.tasks?.length - maxRowTasks?.length }}\r\n {{ 'More' | bbbTranslate }}\r\n </button>\r\n <fd-popover\r\n #popover\r\n [mobile]=\"deviceSize === 's'\"\r\n placement=\"bottom\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n (isOpenChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <bc-day-event-list\r\n [day]=\"day\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [weekDays]=\"weekDays\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [popover]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-day-event-list>\r\n </fd-popover>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderDayTasks\r\n let-weekTasks\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-weekIndex=\"weekIndex\"\r\n let-deviceSize=\"deviceSize\"\r\n let-calendarFields=\"calendarFields\"\r\n let-weekDays=\"weekDays\"\r\n>\r\n <tr fd-table-row *ngFor=\"let rowTask of maxRowTasks; let i = index\">\r\n <ng-container *ngIf=\"!weekTasks[i] || weekTasks[i].length === 0\">\r\n <td fd-table-cell *ngFor=\"let day of weekDays\"></td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let task of weekTasks[i]; let dayIndex = index\">\r\n <td fd-table-cell [attr.colspan]=\"task.colSpan\" *ngIf=\"task.colSpan\">\r\n <ng-container *ngIf=\"task.event; else newDaySelect\">\r\n <bc-event-button\r\n [task]=\"task\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n ></bc-event-button>\r\n </ng-container>\r\n <ng-template #newDaySelect>\r\n <div style=\"width: 100%; height: 100%\" (click)=\"onDaySelect(weekIndex, dayIndex)\"></div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n Self,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map } from 'rxjs/operators';\r\nimport { BaseComponent, DateService, getDateService, PortalService } from 'barsa-novin-ray-core';\r\nimport { CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\n@Component({\r\n selector: 'bc-calendar-selection-days',\r\n templateUrl: './calendar-selection-days.component.html',\r\n styleUrls: ['./calendar-selection-days.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DateService,\r\n useFactory: getDateService\r\n },\r\n CalendarService\r\n ]\r\n})\r\nexport class CalendarSelectionDaysComponent extends BaseComponent implements OnChanges {\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Input() monthInfo: CalendarMonthInfo;\r\n @Input() inline: boolean;\r\n @Output() rangeChange = new EventEmitter<{\r\n startDay: Day;\r\n endDay: Day;\r\n monthInfo: CalendarMonthInfo;\r\n }>();\r\n selectionMode: 'day' | 'month' | 'year' = 'day';\r\n\r\n endSelectedDay: Day | null;\r\n startSelectedDay: Day | null;\r\n width$: Observable<number>;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n rtl$: Observable<boolean>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n deviceSize$: Observable<string>;\r\n months: string[] = [];\r\n years: string[];\r\n private _isMouseDown = false;\r\n constructor(@Self() private _calendarService: CalendarService, _portalService: PortalService) {\r\n super();\r\n this.rtl$ = _portalService.rtl$;\r\n this.width$ = _portalService.deviceSize$.pipe(\r\n distinctUntilChanged(),\r\n map((deviceSize) => {\r\n switch (deviceSize) {\r\n case 'l':\r\n case 'xl':\r\n return 480;\r\n case 's':\r\n return 320;\r\n default:\r\n return 480;\r\n }\r\n })\r\n );\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this._calendarService.setMode('month');\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.today = this._calendarService.today;\r\n this.months = this._calendarService.Months;\r\n this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { monthInfo } = changes;\r\n if (monthInfo) {\r\n this._calendarService.loadCalendarMonthInfo(monthInfo.currentValue);\r\n }\r\n }\r\n onMonthSelected(monthName: string, index: number): void {\r\n this._calendarService.gotoMonth(monthName, index);\r\n }\r\n onYearSelected(year: string): void {\r\n this._calendarService.gotoYear(+year);\r\n }\r\n\r\n onPrevTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadPrevious();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadPrevYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[0]) - 20);\r\n }\r\n }\r\n\r\n onNextTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadNext();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadNextYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[this.years.length - 1]) + 1);\r\n }\r\n }\r\n\r\n onToday(): void {\r\n this._calendarService.gotoToday();\r\n }\r\n onDayMouseMove(day: Day, monthInfo: CalendarMonthInfo): void {\r\n if (this._isMouseDown) {\r\n const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);\r\n this.startSelectedDayIndex = startDay?.index;\r\n this.endSelectedDayIndex = endDay?.index;\r\n // console.log('-move-', this.startSelectedDay?.index, this.endSelectedDay?.index);\r\n }\r\n }\r\n\r\n onDayMouseDown(day: Day): void {\r\n this._isMouseDown = true;\r\n this.startSelectedDay = null;\r\n this.endSelectedDay = null;\r\n this.startSelectedDay = day;\r\n this.startSelectedDayIndex = day.index;\r\n }\r\n onDayMouseUp(day: Day, monthInfo, popover): void {\r\n this._isMouseDown = false;\r\n\r\n const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);\r\n this.startSelectedDay = startDay;\r\n this.endSelectedDay = endDay;\r\n this._setFirstAndEndDay(monthInfo, popover);\r\n }\r\n onDayClick(day: Day, monthInfo, popover): void {\r\n this.startSelectedDay = this.endSelectedDay = day;\r\n this._setFirstAndEndDay(monthInfo, popover);\r\n }\r\n private _prepareYear(from: number): void {\r\n const years: string[] = [];\r\n for (let i = 0; i < 20; i++) {\r\n years.push(`${from + i}`);\r\n }\r\n this.years = years;\r\n }\r\n private getStartAndEndDay(\r\n monthInfo: CalendarMonthInfo,\r\n day: Day | null\r\n ): { endDay: Day | null; startDay: Day | null } {\r\n let startDay: Day | null = null;\r\n let endDay: Day | null = null;\r\n if (this.startSelectedDay && !this.endSelectedDay) {\r\n if (day && this.startSelectedDay.date > day.date) {\r\n startDay = day;\r\n endDay = this.startSelectedDay;\r\n } else {\r\n startDay = this.startSelectedDay;\r\n endDay = day;\r\n }\r\n } else if (this.startSelectedDay && this.endSelectedDay) {\r\n if (day && this.startSelectedDay.date < day.date) {\r\n startDay = this.startSelectedDay;\r\n endDay = day;\r\n } else {\r\n startDay = day;\r\n endDay = this.endSelectedDay;\r\n }\r\n }\r\n // console.log('-2-', startDay, endDay);\r\n if (startDay && endDay) {\r\n const diff = Math.abs(startDay.momentOfDate.diff(endDay.momentOfDate, 'day'));\r\n if (diff > 6) {\r\n startDay = monthInfo.days[Math.floor(startDay.index / 7) * 7];\r\n // const end = endDay.index % 7;\r\n const indexEnd = Math.ceil((endDay.index + 1) / 7);\r\n // if (end > 0) {\r\n // indexEnd++;\r\n // }\r\n endDay = monthInfo.days[indexEnd * 7 - 1];\r\n // console.log('-3-', startDay, endDay);\r\n }\r\n }\r\n return { endDay, startDay };\r\n }\r\n\r\n private _setFirstAndEndDay(monthInfo, popover): void {\r\n // console.log('-finish-', this.startSelectedDay, this.endSelectedDay);\r\n if (this.startSelectedDay && this.endSelectedDay) {\r\n if (popover) {\r\n popover.close();\r\n }\r\n this.rangeChange.emit({\r\n startDay: this.startSelectedDay,\r\n endDay: this.endSelectedDay,\r\n monthInfo\r\n });\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"inline; else popopTpl\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #popopTpl>\r\n <button fd-button glyph=\"calendar\" fdType=\"transparent\" [fdPopoverTrigger]=\"popover\"></button>\r\n</ng-template>\r\n<fd-popover #popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"(deviceSize$ | async) === 's'\">\r\n <fd-popover-body [style.width.px]=\"width$ | async\" class=\"popover-selection-day\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-template\r\n #month\r\n let-selectedMonth\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-popover=\"popover\"\r\n>\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <button fd-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"onToday()\"></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"onPrevTap()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"onNextTap()\"\r\n ></button>\r\n <div class=\"month-years-wrapper\" fd-title fd-toolbar-item>\r\n <button\r\n *ngIf=\"selectionMode === 'day' || selectionMode === 'month'\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.monthName\"\r\n (click)=\"selectionMode = 'month'\"\r\n ></button>\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.year\"\r\n (click)=\"selectionMode = 'year'\"\r\n ></button>\r\n </div>\r\n </fd-toolbar>\r\n <ng-container [ngSwitch]=\"selectionMode\">\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n <div class=\"month-year-selection-wrapper\">\r\n <button\r\n style=\"flex-grow: 1; width: 33%\"\r\n *ngFor=\"let month of months; let i = index\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\r\n [label]=\"month\"\r\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\r\n ></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <div class=\"month-year-selection-wrapper\">\r\n <button\r\n style=\"flex-grow: 1; width: 25%\"\r\n *ngFor=\"let year of years\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\r\n [label]=\"year\"\r\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\r\n ></button>\r\n </div>\r\n </ng-container>\r\n <bc-calendar-month\r\n *ngSwitchDefault\r\n [style.width]=\"width\"\r\n [containerHeight]=\"height\"\r\n [containerWidth]=\"width\"\r\n [rtl]=\"rtl\"\r\n [monthWeeksCount]=\"6\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [datePicker]=\"true\"\r\n [dateRange]=\"true\"\r\n [days]=\"selectedMonth.days\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event, selectedMonth, popover)\"\r\n (dayMouseMove)=\"onDayMouseMove($event, selectedMonth)\"\r\n (dayMouseUp)=\"onDayMouseUp($event, selectedMonth, popover)\"\r\n (dayMouseDown)=\"onDayMouseDown($event)\"\r\n [startSelectedDayIndex]=\"startSelectedDayIndex\"\r\n [endSelectedDayIndex]=\"endSelectedDayIndex\"\r\n ></bc-calendar-month>\r\n </ng-container>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Injectable,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map } from 'rxjs/operators';\r\n\r\nimport {\r\n BaseComponent,\r\n BbbTranslatePipe,\r\n DateService,\r\n getDateService,\r\n LogService,\r\n PortalService,\r\n BarsaApi,\r\n DateTimeToCaptionPipe,\r\n AbbrevationDeviceSize\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\nimport {\r\n DatetimeAdapter,\r\n DialogService,\r\n FdDate,\r\n FdDatetimeAdapter,\r\n InputGroupComponent,\r\n TimeComponent,\r\n TimeI18n\r\n} from '@fundamental-ngx/core';\r\n@Injectable()\r\nexport class TimeConfigI18n {\r\n /** Aria label for the 'increase hours' button */\r\n increaseHoursLabel = 'Increase hours';\r\n\r\n /** label for the 'hours' column */\r\n hoursLabel = this._bbbTranslate.transform('Hours');\r\n\r\n /** Aria label for the 'decrease hours' button */\r\n decreaseHoursLabel = 'Decrease hours';\r\n\r\n /** Aria label for the 'increase minutes' button */\r\n increaseMinutesLabel = 'Increase minutes';\r\n\r\n /** label for the 'minutes' column */\r\n minutesLabel = this._bbbTranslate.transform('Minutes');\r\n\r\n /** Aria label for the 'decrease minutes' button */\r\n decreaseMinutesLabel = 'Decrease minutes';\r\n\r\n /** Aria label for the 'increase seconds' button */\r\n increaseSecondsLabel = 'Increase seconds';\r\n\r\n /** label for the 'seconds' column */\r\n secondsLabel = this._bbbTranslate.transform('Sec');\r\n\r\n /** Aria label for the 'decrease seconds' button */\r\n decreaseSecondsLabel = 'Decrease seconds';\r\n\r\n /** Aria label for the 'increase period' button */\r\n increasePeriodLabel = 'Increase period';\r\n\r\n /** label for the 'period' column */\r\n periodLabel = 'Period';\r\n\r\n /** Aria label for the 'decrease period' button */\r\n decreasePeriodLabel = 'Decrease period';\r\n constructor(private _bbbTranslate: BbbTranslatePipe) {}\r\n}\r\n\r\n@Component({\r\n selector: 'bc-date-time-picker',\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrls: ['./date-time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DatetimeAdapter,\r\n useClass: FdDatetimeAdapter\r\n },\r\n {\r\n provide: TimeI18n,\r\n useClass: TimeConfigI18n\r\n },\r\n {\r\n provide: DateService,\r\n useFactory: getDateService\r\n },\r\n CalendarService\r\n ]\r\n})\r\nexport class DateTimePickerComponent extends BaseComponent implements OnInit, OnChanges {\r\n @Input() placeholder: string;\r\n @Input() primaryCalendarType: 'Gregorian' | 'Persian' | string;\r\n @Input() formatPattern: string;\r\n @Input() value: Date | undefined;\r\n @Input() timeValue: FdDate;\r\n @Input() startRangeDate: Date;\r\n @Input() endRangeDate: Date;\r\n @Input() isRangePicker: boolean;\r\n @Input() showTime: boolean;\r\n @Input() showDate: boolean;\r\n @Input() rtl = true;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() isMobile: boolean;\r\n @Input() readonly: boolean;\r\n @Input() disabled: boolean;\r\n @Input() buttonMenuMode: boolean;\r\n @Input() inlineMode: boolean;\r\n @Input() daterangeMode: boolean;\r\n @Output() rangeChange = new EventEmitter<{ startDay: Date; endDay: Date }>();\r\n @Output() valueChange = new EventEmitter<Date>();\r\n @ViewChild(TimeComponent) timeComponent: TimeComponent<FdDate>;\r\n @ViewChild(InputGroupComponent, { static: true }) inputGroupComponent: InputGroupComponent;\r\n valueCaption = '';\r\n endSelectedDay: Day | null;\r\n startSelectedDay: Day | null;\r\n valueDay: Day | null;\r\n\r\n selectionMode: 'day' | 'month' | 'year' = 'day';\r\n todayIndex = -1;\r\n width$: Observable<number>;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n rtl$: Observable<boolean>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n\r\n isValid = true;\r\n culture: string;\r\n months: string[] = [];\r\n years: string[];\r\n tempFormmatedDate = '';\r\n private _calendarService: CalendarService;\r\n private _lastValue: Date | undefined;\r\n\r\n constructor(\r\n private _datetimeAdapter: DatetimeAdapter<FdDate>,\r\n private _dateTimeToCaption: DateTimeToCaptionPipe,\r\n private _logService: LogService,\r\n private _dialogService: DialogService,\r\n _portalService: PortalService\r\n ) {\r\n super();\r\n\r\n this.rtl$ = _portalService.rtl$;\r\n this.width$ = _portalService.deviceSize$.pipe(\r\n distinctUntilChanged(),\r\n map((deviceSize) => {\r\n if (!this.showDate) {\r\n return 260;\r\n }\r\n switch (deviceSize) {\r\n case 'l':\r\n case 'xl':\r\n return 560;\r\n case 's':\r\n return 320;\r\n default:\r\n return 520;\r\n }\r\n })\r\n );\r\n\r\n this.height = 420;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n let culture = 'en-US';\r\n switch (this.primaryCalendarType) {\r\n case 'HijriShamsi':\r\n culture = 'fa-IR';\r\n break;\r\n }\r\n this.culture = culture;\r\n this._calendarService = new CalendarService(this._logService, culture);\r\n this._calendarService.setMode('month');\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.today = this._calendarService.today;\r\n\r\n if (this.value) {\r\n this.timeValue = FdDate.getFdDateByDate(this.value);\r\n this._setCaption(this.value);\r\n this._calendarService.loadMonthByDate(this.value);\r\n } else {\r\n this.timeValue = FdDate.getFdDateByDate(new Date());\r\n }\r\n // if (this.isRangePicker) {\r\n // if (this.startRangeDate) {\r\n // this._calendarService.loadMonthByDate(this.startRangeDate);\r\n // }\r\n // if (this.endRangeDate) {\r\n // }\r\n // } else {\r\n // this._calendarService.loadMonthByDate(this.value);\r\n // }\r\n this.months = this._calendarService.Months;\r\n this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);\r\n this._setFormattedDateToInput(this.value);\r\n if (this.inputGroupComponent) {\r\n this.inputGroupComponent.registerOnChange(this.onCaptionChanged.bind(this));\r\n }\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { value } = changes;\r\n if (value && !value.firstChange) {\r\n const caption = this._getFormattedDate(value.currentValue);\r\n if (caption !== this.inputGroupComponent?.inputText) {\r\n this._setFormattedDateToInput(this.value);\r\n }\r\n }\r\n }\r\n onRangeChange(e): void {\r\n this.rangeChange.emit({\r\n startDay: e.startDay,\r\n endDay: e.endDay\r\n });\r\n }\r\n onOpenPopover(popover, dialogTemplate): void {\r\n if (this.readonly || this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.timeComponent) {\r\n setTimeout(() => this.timeComponent.refreshColumns(), 0);\r\n }\r\n if (this.deviceSize === 's' || this.isMobile) {\r\n this._dialogService.open(dialogTemplate, {\r\n mobile: true\r\n });\r\n return;\r\n }\r\n popover.open();\r\n }\r\n onMonthSelected(monthName: string, index: number): void {\r\n this._calendarService.gotoMonth(monthName, index);\r\n }\r\n onYearSelected(year: string): void {\r\n this._calendarService.gotoYear(+year);\r\n }\r\n\r\n onCaptionChanged(e): void {\r\n if (e.length < 10) {\r\n if (e.length === 0) {\r\n this._raisValueChanged(undefined);\r\n return;\r\n }\r\n this.isValid = false;\r\n return;\r\n }\r\n const englishDateStr = BarsaApi.Common.Util.ReplaceFaToArCharchter(e);\r\n let format = 'jYYYY/jM/jD';\r\n if (this.showTime) {\r\n format += ' HH:mm';\r\n }\r\n const moment = this._calendarService._dateService.stringToMoment(englishDateStr, format);\r\n // const isValid = moment.isValid();// برای شمسی همیشه false نشون میده\r\n if (isNaN(Date.parse(englishDateStr))) {\r\n this.isValid = false;\r\n return;\r\n }\r\n const date = moment.toDate();\r\n if (isNaN(date)) {\r\n this.isValid = false;\r\n return;\r\n }\r\n this.isValid = true;\r\n this.timeValue = this._datetimeAdapter.setTime(\r\n this.timeValue,\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds()\r\n );\r\n this.startSelectedDay = this.endSelectedDay = null;\r\n this._raisValueChanged(date, false);\r\n }\r\n onPrevTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadPrevious();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadPrevYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[0]) - 20);\r\n }\r\n }\r\n\r\n onNextTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadNext();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadNextYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[this.years.length - 1]) + 1);\r\n }\r\n }\r\n\r\n onToday(): void {\r\n const today = new Date();\r\n this.timeValue = this._datetimeAdapter.setTime(\r\n this.timeValue,\r\n today.getHours(),\r\n today.getMinutes(),\r\n today.getSeconds()\r\n );\r\n if (this._calendarService.todayDay) {\r\n this.startSelectedDay = this._calendarService.todayDay;\r\n }\r\n this._calendarService.gotoToday();\r\n }\r\n\r\n onDayClick(day: Day, popover, dialog): void {\r\n this.isValid = true;\r\n this.startSelectedDay = this.endSelectedDay = day;\r\n if (this.showTime) {\r\n return;\r\n }\r\n this._setFirstAndEndDay(day, popover, dialog);\r\n }\r\n\r\n onPopoverOpenChange(isOpen): void {\r\n if (isOpen) {\r\n this._lastValue = this.value;\r\n } else {\r\n this._lastValue = undefined;\r\n }\r\n }\r\n onClear(popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n this.value = undefined;\r\n this._setFormattedDateToInput(this.value);\r\n this._raisValueChanged(this.value);\r\n }\r\n onOk(popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n if (!this.value) {\r\n this.value = new Date();\r\n }\r\n this._handleValueChange();\r\n }\r\n onCancel(popover, dialog): void {\r\n if (this._lastValue !== this.value) {\r\n this.value = this._lastValue;\r\n this._setCaption(this.value);\r\n }\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n }\r\n\r\n private _setFormattedDateToInput(date: Date | undefined): void {\r\n if (date) {\r\n const formattedDate = this._getFormattedDate(date);\r\n this.tempFormmatedDate = formattedDate;\r\n this.inputGroupComponent?.writeValue(formattedDate);\r\n return;\r\n }\r\n this.tempFormmatedDate = '';\r\n this.inputGroupComponent?.writeValue('');\r\n }\r\n private _getFormattedDate(date: Date): string {\r\n return this._dateTimeToCaption.transform(date, this.formatPattern, this.culture, this.showDate, this.showTime);\r\n }\r\n\r\n private _handleValueChange(): void {\r\n this.value = this.showDate ? this.startSelectedDay?.date ?? this.value : new Date();\r\n if (this.value) {\r\n this.value = new Date(this.value);\r\n this.value.setHours(this.timeValue.hour);\r\n this.value.setMinutes(this.timeValue.minute);\r\n this.value.setSeconds(this.timeValue.second);\r\n }\r\n this._setFormattedDateToInput(this.value);\r\n this._raisValueChanged(this.value);\r\n }\r\n private _prepareYear(from: number): void {\r\n const years: string[] = [];\r\n for (let i = 0; i < 20; i++) {\r\n years.push(`${from + i}`);\r\n }\r\n this.years = years;\r\n }\r\n private _setCaption(value): void {\r\n if (!value) {\r\n this.valueCaption = '';\r\n return;\r\n }\r\n let formatPattern = this.formatPattern.replace('YYYY', 'jYYYY');\r\n formatPattern = formatPattern.replace('MM', 'jMM');\r\n formatPattern = formatPattern.replace('DD', 'jDD');\r\n this.valueCaption = this._calendarService._dateService.getMoment(value).format(formatPattern);\r\n }\r\n private _raisValueChanged(date, setCaption = true): void {\r\n this.value = date;\r\n if (setCaption) {\r\n this._setCaption(date);\r\n }\r\n this.valueChange.emit(date);\r\n }\r\n\r\n private _setFirstAndEndDay(day: Day, popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n }\r\n if (popover) {\r\n popover.close();\r\n }\r\n if (!this.isRangePicker) {\r\n this._setFormattedDateToInput(day.date);\r\n this._raisValueChanged(day.date);\r\n return;\r\n }\r\n if (this.startSelectedDay) {\r\n this.endSelectedDay = day;\r\n } else {\r\n this.startSelectedDay = day;\r\n }\r\n if (this.startSelectedDay && this.endSelectedDay && this.startSelectedDay.date > this.endSelectedDay.date) {\r\n const temp = this.startSelectedDay;\r\n this.startSelectedDay = this.endSelectedDay;\r\n this.endSelectedDay = temp;\r\n }\r\n if (this.startSelectedDay && this.endSelectedDay) {\r\n this.rangeChange.emit({\r\n startDay: this.startSelectedDay.date,\r\n endDay: this.endSelectedDay.date\r\n });\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"inlineMode\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n daterangeMode ? dateRangeTpl : month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #dateRangeTpl>\r\n <bc-calendar-selection-days\r\n fd-toolbar-item\r\n [inline]=\"true\"\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n</ng-template>\r\n<fd-input-group\r\n placement=\"after\"\r\n glyph=\"calendar\"\r\n glyphAriaLabel=\"select day\"\r\n ariaLabelledBy=\"fd-input-group-icon-label-2\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"value\"\r\n [button]=\"true\"\r\n [state]=\"isValid ? 'success' : 'error'\"\r\n [showFocus]=\"true\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [style.display]=\"!buttonMenuMode || inlineMode ? 'inherit' : 'none'\"\r\n (addOnButtonClicked)=\"onOpenPopover(popover, dialogTemplate)\"\r\n>\r\n</fd-input-group>\r\n<button\r\n *ngIf=\"buttonMenuMode\"\r\n fd-button\r\n [label]=\"tempFormmatedDate || placeholder\"\r\n [title]=\"placeholder\"\r\n [fdType]=\"value ? 'standard' : 'transparent'\"\r\n [fdMenu]=\"true\"\r\n (click)=\"onOpenPopover(popover, dialogTemplate)\"\r\n [class.placeholder-custom]=\"!value\"\r\n class=\"menu-button-datepicker\"\r\n></button>\r\n\r\n<fd-popover #popover (isOpenChange)=\"onPopoverOpenChange($event)\" [focusTrapped]=\"true\" [focusAutoCapture]=\"true\">\r\n <fd-popover-body [style.width.px]=\"width$ | async\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n <div fd-popover-body-footer>\r\n <div fd-bar [barDesign]=\"'footer'\">\r\n <div fd-bar-right>\r\n <container *ngTemplateOutlet=\"footerButtons\"></container>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n</fd-popover>\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-body>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover,\r\n dialog: dialog\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <container *ngTemplateOutlet=\"footerButtons; context: { dialog: dialog }\"></container>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template #footerButtons let-dialog=\"dialog\">\r\n <fd-button-bar [label]=\"'Ok' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onOk(popover, dialog)\"></fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Clear' | bbbTranslate\"\r\n fdType=\"standard\"\r\n (click)=\"onClear(popover, dialog)\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"onCancel(popover, dialog)\"></fd-button-bar>\r\n</ng-template>\r\n<ng-template\r\n #month\r\n let-selectedMonth\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-popover=\"popover\"\r\n let-dialog=\"dialog\"\r\n>\r\n <fd-toolbar [fdType]=\"'transparent'\" *ngIf=\"showDate\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"(showDate ? 'DateR_Today' : 'Now') | bbbTranslate\"\r\n (click)=\"onToday()\"\r\n ></button>\r\n <button\r\n *ngIf=\"showDate\"\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"onPrevTap()\"\r\n ></button>\r\n <button\r\n *ngIf=\"showDate\"\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"onNextTap()\"\r\n ></button>\r\n <div class=\"month-years-wrapper\" *ngIf=\"showDate\" fd-title fd-toolbar-item>\r\n <button\r\n *ngIf=\"selectionMode === 'day' || selectionMode === 'month'\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.monthName\"\r\n (click)=\"selectionMode = 'month'\"\r\n ></button>\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.year\"\r\n (click)=\"selectionMode = 'year'\"\r\n ></button>\r\n </div>\r\n </fd-toolbar>\r\n <div style=\"display: flex\">\r\n <ng-container [ngSwitch]=\"selectionMode\">\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n <div class=\"month-year-selection-wrapper\">\r\n <button\r\n style=\"flex-grow: 1; width: 33%\"\r\n *ngFor=\"let month of months; let i = index\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\r\n [label]=\"month\"\r\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\r\n ></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <div class=\"month-year-selection-wrapper\">\r\n <button\r\n style=\"flex-grow: 1; width: 25%\"\r\n *ngFor=\"let year of years\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\r\n [label]=\"year\"\r\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\r\n ></button>\r\n </div>\r\n </ng-container>\r\n <div *ngSwitchDefault style=\"display: flex\">\r\n <bc-calendar-month\r\n *ngIf=\"showDate\"\r\n [style.width]=\"width\"\r\n [containerHeight]=\"height\"\r\n [containerWidth]=\"width\"\r\n [rtl]=\"rtl\"\r\n [monthWeeksCount]=\"selectedMonth.weeksCount\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [datePicker]=\"true\"\r\n [dateRange]=\"true\"\r\n [selectedDate]=\"startSelectedDay ? startSelectedDay.date : value\"\r\n [days]=\"selectedMonth.days\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event, popover, dialog)\"\r\n ></bc-calendar-month>\r\n <div class=\"seperator\"></div>\r\n <fd-time\r\n style=\"direction: ltr\"\r\n fdCompact\r\n *ngIf=\"showTime\"\r\n [keepTwoDigits]=\"true\"\r\n [(ngModel)]=\"timeValue\"\r\n [displaySeconds]=\"false\"\r\n ></fd-time>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport moment from 'moment';\r\nimport { BaseComponent, CalendarFields, CalendarMetaobjectDataModel, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\nimport { DaysInWeekPipe } from '../days-in-week.pipe';\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-month-days',\r\n templateUrl: './month-days.component.html',\r\n styleUrls: ['./month-days.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MonthDaysComponent extends BaseComponent implements OnInit, OnChanges {\r\n @Input() monthWeeksCount: { firstWeekIndex: number; weeksCount: number };\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() days: Day[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() deviceSize: string;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() datePicker = false;\r\n @Input() rangePicker = false;\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() daySelect = new EventEmitter<any>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n defaultWeeksCountD: number;\r\n defaultFirstWeekIndex: number;\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount: number;\r\n maxRowTasks: number[];\r\n weekTasksArray: any;\r\n extraRow: number[];\r\n isPickerMode: boolean;\r\n private _hasPopoverOpened: boolean[] = [];\r\n constructor(\r\n private daysInWeek: DaysInWeekPipe,\r\n private _cdr: ChangeDetectorRef,\r\n private _calendarService: CalendarService\r\n ) {\r\n super();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.containerHeight && !changes.containerHeight.firstChange) {\r\n this.fitToContainer(changes.containerHeight.currentValue);\r\n }\r\n if (changes.deviceSize && !changes.deviceSize.firstChange) {\r\n this.prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (changes.moDataList && !changes.moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.monthInfo && !changes.monthInfo.firstChange) {\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.monthWeeksCount && !changes.monthWeeksCount.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.isPickerMode = this.datePicker || this.rangePicker;\r\n this.prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n this.fitToContainer(this.containerHeight);\r\n }\r\n onDayBoxSelect(day: Day): void {\r\n this._fireDaySelect(day);\r\n }\r\n onDaySelect(weekIndex: number, dayIndex: number): void {\r\n const day = this.days[weekIndex * 7 + dayIndex];\r\n this._fireDaySelect(day);\r\n }\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n this._openPopover(isOpen);\r\n }\r\n onMoreButton(e, popover): void {\r\n this._preventEvent(e);\r\n popover.open();\r\n }\r\n onTask(e, task: CalendarMetaobjectDataModel): void {\r\n this.showEvent.emit(task);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n onDayMouseMove(day: Day): void {\r\n this.dayMouseMove.emit(day);\r\n }\r\n onDayMouseDown(day: Day): void {\r\n this.dayMouseDown.emit(day);\r\n }\r\n onDayMouseUp(day: Day): void {\r\n this.dayMouseUp.emit(day);\r\n }\r\n private _preventEvent(e): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n private _fireDaySelect(day: Day): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit({\r\n date: moment(day.date)\r\n });\r\n }\r\n }\r\n private _openPopover(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n private prepareWeekDays(deviceSize: string): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = this.weekDays;\r\n } else {\r\n this.selectedWeekDays = this.weekDaysMin;\r\n }\r\n }\r\n private fitToContainer(containerHeight): void {\r\n let _weeksCount;\r\n let _firstWeekIndex;\r\n if (this.monthWeeksCount?.weeksCount > 0) {\r\n const { weeksCount, firstWeekIndex } = this.monthWeeksCount;\r\n _weeksCount = weeksCount;\r\n _firstWeekIndex = firstWeekIndex;\r\n } else {\r\n _weeksCount = this.days.length / 7;\r\n _firstWeekIndex = 0;\r\n }\r\n this.numberOfWeek = Array.from(Array(_weeksCount).keys());\r\n this.numberOfWeek = this.numberOfWeek.map((value) => value + _firstWeekIndex);\r\n if (this.isPickerMode) {\r\n this.dayHeight = 40;\r\n return;\r\n }\r\n this.dayHeight = Math.floor(containerHeight / _weeksCount) + 1;\r\n this.maxTaskCount = Math.floor((this.dayHeight - this.taskHeight) / this.taskHeight);\r\n this.maxRowTasks = new Array(this.maxTaskCount).fill(0).map((x, i) => i);\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n if (this.isPickerMode) {\r\n this.weekTasksArray = {};\r\n return;\r\n }\r\n const calendarFields = this.calendarFields;\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: any = [];\r\n for (let j = 0; j < this.days.length / 7; j++) {\r\n const days = this.daysInWeek.transform(this.days, j);\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, 0);\r\n weekTasksArray.push(week);\r\n }\r\n weekTasksArray.forEach((week) => {\r\n const arr: any[] = Object.values(week);\r\n for (let i = arr.length; i < this.maxTaskCount; i++) {\r\n week[i.toString()] = [];\r\n }\r\n });\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((week) => {\r\n this._calendarService.fillWeek(week);\r\n });\r\n this.weekTasksArray = weekTasksArray;\r\n }\r\n}\r\n","<table fd-table class=\"table-header\" [compact]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th\r\n class=\"weekday-header\"\r\n *ngFor=\"let weekDay of selectedWeekDays\"\r\n fd-table-cell\r\n [class.noborder]=\"isPickerMode\"\r\n >\r\n {{ weekDay }}\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n <ng-container *ngFor=\"let weekDay of numberOfWeek\">\r\n <tr fd-table-row>\r\n <td\r\n [style.height.px]=\"dayHeight\"\r\n fd-table-cell\r\n colspan=\"7\"\r\n [style.border]=\"isPickerMode ? 'none' : null\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTasks;\r\n context: {\r\n $implicit: isPickerMode ? null : moDataList[weekDay],\r\n weekIndex: weekDay,\r\n days: days | daysInWeek: weekDay,\r\n maxRowTasks: maxRowTasks,\r\n weekDays: weekDays,\r\n calendarFields: calendarFields,\r\n rtl: rtl,\r\n isPickerMode: isPickerMode\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n</table>\r\n<ng-template\r\n #renderTasks\r\n let-task\r\n let-weekIndex=\"weekIndex\"\r\n let-weekDays=\"weekDays\"\r\n let-days=\"days\"\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-calendarFields=\"calendarFields\"\r\n let-deviceSize=\"deviceSize\"\r\n let-rtl=\"rtl\"\r\n let-isPickerMode=\"isPickerMode\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody>\r\n <tr fd-table-row class=\"row-day-number\">\r\n <td fd-table-cell *ngFor=\"let day of days | daysInWeek: weekIndex\" [class.noborder]=\"isPickerMode\">\r\n <bc-day-number-box\r\n [class.fd-calendar__item]=\"isPickerMode\"\r\n [class.fd-calendar__item--other-month]=\"isPickerMode && !day.isInMonth\"\r\n [class.fd-calendar__item--weekend]=\"isPickerMode && day.isWeekend\"\r\n [isPickerMode]=\"isPickerMode\"\r\n [day]=\"day\"\r\n [class.is-active]=\"day.index === startSelectedDayIndex || day.index === endSelectedDayIndex\"\r\n [class.fd-calendar__item--range]=\"\r\n startSelectedDayIndex &&\r\n endSelectedDayIndex &&\r\n day.index > startSelectedDayIndex &&\r\n day.index < endSelectedDayIndex\r\n \"\r\n (dayClick)=\"onDayClick(day)\"\r\n (dayMouseMove)=\"onDayMouseMove(day)\"\r\n (dayMouseDown)=\"onDayMouseDown(day)\"\r\n (dayMouseUp)=\"onDayMouseUp(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"!isPickerMode\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray[weekIndex],\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: weekIndex,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n weekDays: weekDays\r\n }\r\n \"\r\n ></ng-container>\r\n <tr fd-table-row>\r\n <td fd-table-cell *ngFor=\"let day of days\" class=\"more-fd\" (click)=\"onDayBoxSelect(day)\">\r\n <ng-container *ngIf=\"maxRowTasks.length < day.tasks.length\">\r\n <button\r\n fd-button\r\n (click)=\"onMoreButton($event, popover)\"\r\n [fdType]=\"'transparent'\"\r\n [compact]=\"true\"\r\n >\r\n {{ day.tasks?.length - maxRowTasks.length }}\r\n {{ 'More' | bbbTranslate }}\r\n </button>\r\n <fd-popover\r\n #popover\r\n [mobile]=\"deviceSize === 's'\"\r\n placement=\"bottom\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n (isOpenChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <bc-day-event-list\r\n [day]=\"day\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [weekDays]=\"weekDays\"\r\n [rtl]=\"rtl\"\r\n [popover]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-day-event-list>\r\n </fd-popover>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderDayTasks\r\n let-weekTasks\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-weekIndex=\"weekIndex\"\r\n let-deviceSize=\"deviceSize\"\r\n let-calendarFields=\"calendarFields\"\r\n let-weekDays=\"weekDays\"\r\n>\r\n <tr fd-table-row *ngFor=\"let rowTask of maxRowTasks; let i = index\">\r\n <ng-container *ngIf=\"!weekTasks[i] || weekTasks[i].length === 0\">\r\n <td fd-table-cell *ngFor=\"let day of weekDays\"></td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let task of weekTasks[i]; let dayIndex = index\">\r\n <td fd-table-cell [attr.colspan]=\"task.colSpan\" *ngIf=\"task.colSpan\">\r\n <ng-container *ngIf=\"task.event; else newDaySelect\">\r\n <bc-event-button\r\n [task]=\"task\"\r\n [rtl]=\"rtl\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n ></bc-event-button>\r\n </ng-container>\r\n <ng-template #newDaySelect>\r\n <div style=\"width: 100%; height: 100%\" (click)=\"onDaySelect(weekIndex, dayIndex)\"></div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CalendarMode, CalendarMonthInfo, Day } from '../models';\r\nimport { BaseComponent, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-header',\r\n templateUrl: './calendar-header.component.html',\r\n styleUrls: ['./calendar-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarHeaderComponent extends BaseComponent {\r\n @Input() monthInfo: CalendarMonthInfo;\r\n @Input() weekModeDays: Day[];\r\n @Input() hideMode = false;\r\n @Input() modeTitle: string;\r\n @Input() title: string;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() rtl: boolean;\r\n @Input() mode: CalendarMode;\r\n @Output() prevTap = new EventEmitter();\r\n @Output() nextTap = new EventEmitter();\r\n @Output() modeChange = new EventEmitter<CalendarMode>();\r\n @Output() rangeChange = new EventEmitter<{\r\n startDay: Day;\r\n endDay: Day;\r\n monthInfo: CalendarMonthInfo;\r\n }>();\r\n @Output() today = new EventEmitter();\r\n year: string;\r\n monthName = '';\r\n\r\n /**\r\n *\r\n */\r\n\r\n onModeChange(menu, mode: CalendarMode): void {\r\n menu.close();\r\n this.modeChange.emit(mode);\r\n }\r\n onRangeChange(range): void {\r\n this.rangeChange.emit(range);\r\n }\r\n onPrint(): void {}\r\n}\r\n","<fd-toolbar [shouldOverflow]=\"true\" [fdType]=\"'transparent'\" [class.rtl]=\"rtl\">\r\n <button fd-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"today.emit()\"></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"prevTap.emit()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"nextTap.emit()\"\r\n ></button>\r\n <h3 fd-title fd-toolbar-item>{{ title }}</h3>\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <!-- <button fd-button fd-toolbar-item glyph=\"print\" (click)=\"onPrint()\" fdType=\"transparent\"></button> -->\r\n <bc-calendar-selection-days\r\n *ngIf=\"deviceSize === 's' || deviceSize === 'm'\"\r\n fd-toolbar-item\r\n [monthInfo]=\"monthInfo\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n\r\n <fd-split-button\r\n *ngIf=\"!hideMode\"\r\n fd-toolbar-item\r\n [fixedWidth]=\"false\"\r\n [mainAction]=\"{\r\n mainActionTitle: modeTitle,\r\n keepMainAction: true\r\n }\"\r\n >\r\n <fd-menu #menu>\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'day')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Day' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'week')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Week' | bbbTranslate }} </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'month')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Month' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <!-- <li fd-menu-item (click)=\"onModeChange('year')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ \"Year\" | bbbTranslate }}</span>\r\n </div>\r\n </li> -->\r\n </fd-menu>\r\n </fd-split-button>\r\n</fd-toolbar>\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { CalendarMetaobjectDataModel, DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'fromToTime'\r\n})\r\nexport class FromToTimePipe implements PipeTransform {\r\n constructor() {}\r\n transform(task: CalendarMetaobjectDataModel): string {\r\n const event = task.event;\r\n const fromDateInfo: DateInfo = event.$StartDateInfo;\r\n const toDateInfo: DateInfo = event.$EndDateInfo;\r\n const fromTime = `${getPadedTime(fromDateInfo.hour)}:${getPadedTime(fromDateInfo.minutes)}`;\r\n const toTime = `${getPadedTime(toDateInfo.hour)}:${getPadedTime(toDateInfo.minutes)}`;\r\n return `${fromTime} - ${toTime}`;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n BaseComponent,\r\n CalendarFields,\r\n CalendarMetaobjectDataModel,\r\n MetaobjectDataModel,\r\n PreventDefaulEvent,\r\n AbbrevationDeviceSize\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarService } from '../services/calendar.service';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-calendar-week',\r\n templateUrl: './calendar-week.component.html',\r\n styleUrls: ['./calendar-week.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarWeekComponent extends BaseComponent implements OnChanges, OnInit {\r\n @ViewChild('tableTop') tableTopEl: ElementRef<HTMLDivElement>;\r\n @ViewChild('sectionRef') _sectionRef: ElementRef<HTMLElement>;\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() inDialog: boolean;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() days: Day[];\r\n @Input() canDelete = false;\r\n @Input() canAdd = false;\r\n @Input() canEdit = false;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n @Output() rangeSelect = new EventEmitter<{ startDate: Date; endDate: Date }>();\r\n @Output() daySelect = new EventEmitter<Date>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n selectedTaskId = '';\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount = 4;\r\n maxRowTasks: number[];\r\n weekTasksArray: { [key: string]: [] }[];\r\n extraRow: number[];\r\n width: any;\r\n hours: string[];\r\n Math = Math;\r\n private _hasPopoverOpened: boolean[] = [];\r\n constructor(private _cdr: ChangeDetectorRef, private _calendarService: CalendarService) {\r\n super();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.deviceSize && !changes.deviceSize.firstChange) {\r\n this.prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (changes.moDataList && !changes.moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.days && !changes.days.firstChange) {\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.hours = new Array(24).fill(0).map((x, i) => `${i > 9 ? '' + i : '0' + i}:00`);\r\n this.prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n }\r\n setSelectedId(id: string): void {\r\n this.selectedTaskId = id;\r\n this._cdr.detectChanges();\r\n }\r\n onDayBoxSelect(day: Day): void {\r\n if (!this.canAdd) {\r\n return;\r\n }\r\n // this._fireDaySelect(day.date);\r\n }\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n onColumnClick(e, day: Day): void {\r\n const { offsetY } = e;\r\n const hour = Math.floor(offsetY / 50);\r\n const minutes = Math.floor((offsetY % 50) / 15) * 15;\r\n const date = new Date(day.date);\r\n date.setHours(hour);\r\n date.setMinutes(minutes);\r\n // this._fireDaySelect(date);\r\n }\r\n onEventButton(e): void {\r\n if (e.currentTarget?.localName === 'bc-event-button') {\r\n PreventDefaulEvent(e);\r\n }\r\n }\r\n onMoreButton(e, popover): void {\r\n PreventDefaulEvent(e);\r\n this._openPopover(popover);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n mousedown(ev, dayIndex): void {\r\n this.days.forEach((d) => {\r\n d.isAddingNewEvent = false;\r\n d.addingEventPoint1 = null;\r\n d.addingEventPoint2 = null;\r\n });\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n this.days[dayIndex].addingEventPoint1 = Math.floor(ev.offsetY / 25);\r\n this.days[dayIndex].addingEventPoint2 = null;\r\n }\r\n mousedownForResize(day, dayIndex, taskIndex): void {\r\n const task = this.days[dayIndex].tasks[taskIndex];\r\n this.days[dayIndex].tasks[taskIndex].hidden = true;\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n this.days[dayIndex].addingEventPoint1 = Math.floor(task.top / 25);\r\n this.days[dayIndex].addingEventPoint2 = Math.floor((task.top + task.height) / 25);\r\n this._cdr.detectChanges();\r\n }\r\n mousemove(ev, dayIndex): void {\r\n if (!this.days[dayIndex].isAddingNewEvent) {\r\n return;\r\n }\r\n if (ev.target.tagName !== 'DIV') {\r\n return;\r\n }\r\n this.days[dayIndex].addingEventPoint2 = Math.floor(ev.offsetY / 25);\r\n }\r\n mouseup(ev, dayIndex, replacingTaskIndex: number | null = null): void {\r\n const day = this.days[dayIndex];\r\n if (replacingTaskIndex) {\r\n this.days[dayIndex].tasks[replacingTaskIndex].hidden = false;\r\n }\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n day.isAddingNewEvent = false;\r\n const { addingEventPoint1, addingEventPoint2 } = day;\r\n if (addingEventPoint1 !== null && addingEventPoint2 !== null) {\r\n const startDateTotalMinutes = Math.min(addingEventPoint1, addingEventPoint2) * 30;\r\n const startDateHour = Math.floor(startDateTotalMinutes / 60);\r\n const startDateMinutes = Math.floor(startDateTotalMinutes % 60);\r\n const startDate = new Date(day.date);\r\n startDate.setHours(startDateHour);\r\n startDate.setMinutes(startDateMinutes);\r\n const endDateTotalMinutes = (Math.max(addingEventPoint1, addingEventPoint2) + 1) * 30;\r\n const endDateHour = Math.floor(endDateTotalMinutes / 60);\r\n const endDateMinutes = Math.floor(endDateTotalMinutes % 60);\r\n const endDate = new Date(day.date);\r\n endDate.setHours(endDateHour);\r\n endDate.setMinutes(endDateMinutes);\r\n this._rangeSelect({ startDate, endDate });\r\n this._sectionRef?.nativeElement.remove();\r\n }\r\n }\r\n private _fireDaySelect(date: Date): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit(date);\r\n }\r\n }\r\n private _rangeSelect({ startDate, endDate }): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.rangeSelect.emit({ startDate, endDate });\r\n }\r\n }\r\n private _openPopover(popover: any): void {\r\n if (popover.isOpen) {\r\n this._hasPopoverOpened.push(popover);\r\n } else {\r\n this._hasPopoverOpened.pop();\r\n }\r\n }\r\n private prepareWeekDays(deviceSize: string): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = this.weekDays;\r\n } else {\r\n this.selectedWeekDays = this.weekDaysMin;\r\n }\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n const calendarFields = this.calendarFields;\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n const taskHeight = 50;\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: { [key: string]: any[] }[] = [];\r\n const days = this.days;\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, taskHeight);\r\n weekTasksArray.push(week);\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((weekTask) => {\r\n this._calendarService.fillWeek(weekTask, days.length);\r\n });\r\n const tasks = [];\r\n let counter = 0;\r\n Object.values(weekTasksArray).forEach(() => {\r\n Object.values(week).forEach((element) => {\r\n const filtered = element.some((c) => c.colSpan > 1 || (c.colSpan === 1 && !c.inDay && c.event));\r\n if (filtered) {\r\n tasks[counter.toString()] = element;\r\n counter++;\r\n }\r\n });\r\n });\r\n this.weekTasksArray = tasks;\r\n }\r\n}\r\n","<div\r\n class=\"table-container\"\r\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\r\n style=\"overflow-y: hidden; flex-shrink: 0\"\r\n #tableTop\r\n>\r\n <table fd-table class=\"table-top\" [compact]=\"true\" [attr.daysCount]=\"days.length\">\r\n <tbody fd-table-body>\r\n <tr fd-table-row class=\"week-days\">\r\n <td class=\"td-time\"></td>\r\n <td [attr.rtl]=\"rtl\" class=\"weekday-header\" *ngFor=\"let day of days\" fd-table-cell style=\"width: 100%\">\r\n {{ day.dayName }}\r\n </td>\r\n </tr>\r\n <tr fd-table-row class=\"week-numbers\">\r\n <td class=\"td-time\"></td>\r\n <td fd-table-cell *ngFor=\"let day of days\" [attr.rtl]=\"rtl\">\r\n <bc-day-number-box\r\n [day]=\"day\"\r\n [isWeekMode]=\"true\"\r\n [isSingleDay]=\"days.length === 1\"\r\n (dayClick)=\"onDayClick(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n </tr>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray,\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: 0\r\n }\r\n \"\r\n ></ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n<ng-template #renderDayTasks let-weekTasks let-maxRowTasks=\"maxRowTasks\" let-weekIndex=\"weekIndex\">\r\n <ng-container *ngFor=\"let rowTask of weekTasks | keyvalue; let i = index\">\r\n <tr fd-table-row class=\"task-row\">\r\n <td fd-table-cell class=\"fd-time\" style=\"border: none\"></td>\r\n <ng-container *ngFor=\"let task of weekTasks[i]; let dayIndex = index\">\r\n <td\r\n fd-table-cell\r\n *ngIf=\"task.colSpan && dayIndex < days.length\"\r\n [attr.colspan]=\"task.colSpan > days.length ? days.length : task.colSpan\"\r\n class=\"td-button\"\r\n [attr.hasevent]=\"!!task.event\"\r\n >\r\n <bc-event-button\r\n *ngIf=\"task.event && !task.inDay; else newDaySelect\"\r\n [task]=\"task\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-button>\r\n <ng-template #newDaySelect>\r\n <div style=\"width: 100%; height: 100%\" [attr.newDay]=\"true\"></div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n</ng-template>\r\n<div\r\n class=\"table-container\"\r\n style=\"overflow-y: hidden; overflow-x: auto; flex-grow: 1; display: inline-table\"\r\n [style.height.px]=\"inDialog ? containerHeight : null\"\r\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody #tbody>\r\n <tr class=\"tr-time\" style=\"height: 0rem\">\r\n <td class=\"td-time\" style=\"height: 0rem\"></td>\r\n <td [colspan]=\"days.length\" style=\"position: relative\" style=\"height: 0rem\">\r\n <div class=\"tasks-wrapper\">\r\n <div *ngFor=\"let hour of hours\" class=\"row-border\"></div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr fd-table-row style=\"height: 100%\">\r\n <td fd-table-cell class=\"td-time\">\r\n <div class=\"calc-time\">\r\n <div *ngFor=\"let hour of hours\">{{ hour }}</div>\r\n </div>\r\n </td>\r\n <td\r\n class=\"relative\"\r\n *ngFor=\"let day of days; let dayIndex = index\"\r\n fd-table-cell\r\n (click)=\"onColumnClick($event, day)\"\r\n >\r\n <section\r\n #sectionRef\r\n *ngIf=\"day.addingEventPoint2 !== null && day.addingEventPoint1 !== null\"\r\n class=\"w-[98%] border border-blue-400 absolute left-1/2 -translate-x-1/2 rounded-md transition-colors\"\r\n [ngStyle]=\"{\r\n top: Math.min(day.addingEventPoint2, day.addingEventPoint1) * 25 + 'px',\r\n height: (Math.abs(day.addingEventPoint1 - day.addingEventPoint2) + 1) * 25 + 'px'\r\n }\"\r\n [ngClass]=\"{\r\n 'bg-blue-400/[.4]': day.isAddingNewEvent,\r\n 'bg-blue-400': !day.isAddingNewEvent\r\n }\"\r\n ></section>\r\n <div\r\n style=\"position: relative; width: 100%; height: 100%\"\r\n (mousedown)=\"mousedown($event, dayIndex)\"\r\n (mouseup)=\"mouseup($event, dayIndex)\"\r\n (mousemove)=\"mousemove($event, dayIndex)\"\r\n >\r\n <ng-container *ngFor=\"let task of day.tasks; let taskIndex = index\">\r\n <bc-event-button\r\n (click)=\"setSelectedId(task.event.Id); onEventButton($event)\"\r\n *ngIf=\"task.inDay\"\r\n [style.background]=\"task.event[calendarFields.Color]\"\r\n [style.top.px]=\"task.top\"\r\n [style.right]=\"\r\n rtl\r\n ? 'calc(' + (task.positionCausedByOverlap / task.countOfOverlaps) * 100 + '%)'\r\n : null\r\n \"\r\n [style.left]=\"\r\n rtl\r\n ? null\r\n : 'calc(100% - ' +\r\n (task.positionCausedByOverlap / task.countOfOverlaps) * 100 +\r\n '%)'\r\n \"\r\n [style.width]=\"\r\n 'calc(' + (100 - (task.positionCausedByOverlap / task.countOfOverlaps) * 100) + '%)'\r\n \"\r\n [style.height.px]=\"task.height\"\r\n [style.maxHeight.px]=\"task.height\"\r\n [style.visibility]=\"task.hidden ? 'hidden' : 'visible'\"\r\n [style.opacity]=\"task.opacity\"\r\n [style.zIndex]=\"\r\n task.positionCausedByOverlap + (selectedTaskId === task.event.Id ? 0 : 0)\r\n \"\r\n [buttonTemplate]=\"eventButtonTemplate\"\r\n class=\"task-day\"\r\n [task]=\"task\"\r\n [index]=\"taskIndex\"\r\n [deviceSize]=\"deviceSize\"\r\n [calendarFields]=\"calendarFields\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <div\r\n class=\"absolute bottom-0 h-1 cursor-ns-resize w-full left-0\"\r\n (mousedown)=\"$event.stopPropagation(); mousedownForResize(day, dayIndex, taskIndex)\"\r\n (mouseup)=\"mouseup($event, dayIndex, taskIndex)\"\r\n (mousemove)=\"mousemove($event, dayIndex)\"\r\n ></div>\r\n </bc-event-button>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<ng-template\r\n #eventButtonTemplate\r\n let-task\r\n let-popover=\"popover\"\r\n let-calendarFields=\"calendarFields\"\r\n let-onButtonClick=\"onButtonClick\"\r\n>\r\n <button\r\n [style.background]=\"task.event[calendarFields.Color]\"\r\n class=\"task-title border !border-gray-300 shadow-lg\"\r\n fd-button\r\n [compact]=\"true\"\r\n [fdType]=\"'emphasized'\"\r\n (click)=\"onButtonClick(popover)\"\r\n [label]=\"task.height > 49 ? '' : task.event[calendarFields.Title] + ' ' + (task | fromToTime)\"\r\n >\r\n <ng-container *ngIf=\"task.height > 49\">\r\n <span class=\"ellipsis\">{{ task.event[calendarFields.Title] }}</span>\r\n <span class=\"ellipsis\">{{ task | fromToTime }}</span>\r\n </ng-container>\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarMetaobjectDataModel } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-list-item',\r\n templateUrl: './calendar-list-item.component.html',\r\n styleUrls: ['./calendar-list-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarListItemComponent extends BaseComponent {\r\n @Input() mo: CalendarMetaobjectDataModel;\r\n}\r\n","<div class=\"wrapper\">\r\n <div flexShrink=\"1\" class=\"day-wrapper\">\r\n <Label [text]=\"mo.$StartTimes\"></Label>\r\n <Label class=\"ela\" [text]=\"'الی'\"></Label>\r\n <Label [text]=\"mo.$EndTimes\"></Label>\r\n </div>\r\n <div class=\"color\" [style.background-color]=\"mo.$Color\"></div>\r\n <div class=\"event-wrapper\">\r\n <Label class=\"title\" [text]=\"mo.$Title\"></Label>\r\n <Label class=\"desc\" [text]=\"mo.$Notes\"></Label>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { BaseComponent, MetaobjectDataModel, CalendarMetaobjectDataModel } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-list',\r\n templateUrl: './calendar-list.component.html',\r\n styleUrls: ['./calendar-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarListComponent extends BaseComponent {\r\n @Input() moDataList: CalendarMetaobjectDataModel[];\r\n public trackById(index: number, item: MetaobjectDataModel): string {\r\n return item.Id;\r\n }\r\n}\r\n","<bc-calendar-list-item *ngFor=\"let item of moDataList; trackBy: trackById\" [mo]=\"item\"> </bc-calendar-list-item>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-calendar-list-container',\r\n templateUrl: './calendar-list-container.component.html',\r\n styleUrls: ['./calendar-list-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarListContainerComponent extends BaseComponent {\r\n @Input() view: any;\r\n @Input() reportItemComponentName: string;\r\n @Input() showEvents: boolean;\r\n @Input() selectedDay: Day;\r\n @Input() calendarFields: CalendarFields;\r\n @Output() showEventsTap = new EventEmitter();\r\n}\r\n","<bc-calendar-list *ngIf=\"selectedDay\" [moDataList]=\"selectedDay.tasks\"></bc-calendar-list>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { TitleCasePipe } from '@angular/common';\r\n\r\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\r\nimport { map, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\nimport {\r\n UiReportViewBaseSetting,\r\n ReportViewBaseComponent,\r\n DateService,\r\n LogService,\r\n getDateService,\r\n MetaobjectDataModel,\r\n CalendarMetaobjectDataModel,\r\n BbbTranslatePipe,\r\n FindColumnByDbNamePipe,\r\n UlvMainService,\r\n PortalService\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMode, CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-calendar-container',\r\n templateUrl: './calendar-container.component.html',\r\n styleUrls: ['./calendar-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DateService,\r\n useFactory: getDateService,\r\n deps: [LogService]\r\n }\r\n ]\r\n})\r\nexport class CalendarContainerComponent\r\n extends ReportViewBaseComponent<UiReportViewBaseSetting>\r\n implements OnInit, OnChanges\r\n{\r\n @ViewChild('divRef', { static: true }) _divRef: ElementRef;\r\n @Input() calendarFields;\r\n @Input() userCalendars;\r\n @Input() viewSetting: UiCalendarSetting;\r\n @Output() deleteTask = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editTask = new EventEmitter<MetaobjectDataModel>();\r\n @Output() rangeSelect = new EventEmitter<{ [key: string]: Date }>();\r\n @Output() daySelect = new EventEmitter<Date>();\r\n @Output() loadData = new EventEmitter<{ start: Date; end: any }>();\r\n selectedDay: Day;\r\n todayIndex = -1;\r\n selectedIndex: any;\r\n calendars: CalendarMonthInfo[];\r\n showEvents: boolean;\r\n width: number;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n mode$: Observable<CalendarMode>;\r\n selectedWeek$: Observable<number>;\r\n weekModeDays$: Observable<Day[]>;\r\n days$: Observable<Day[]>;\r\n weeksCount: number;\r\n firstWeekIndex: number;\r\n monthWeeksCount$: Observable<number>;\r\n modeTitle$: Observable<string>;\r\n title$: Observable<string>;\r\n eventMoDataList$ = new BehaviorSubject<MetaobjectDataModel[]>([]);\r\n constructor(\r\n private _titleCase: TitleCasePipe,\r\n private _bbbTranslate: BbbTranslatePipe,\r\n private _calendarService: CalendarService,\r\n private _dateService: DateService,\r\n protected _el: ElementRef,\r\n protected _cdr: ChangeDetectorRef,\r\n protected _renderer2: Renderer2,\r\n protected _findColumnByDbName: FindColumnByDbNamePipe,\r\n protected _ulvMainService: UlvMainService,\r\n protected _portalService: PortalService\r\n ) {\r\n super(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService);\r\n }\r\n ngOnInit(): void {\r\n this.calendarFields = this.contextSetting.View.CalendarFields;\r\n if (this.viewSetting?.CalendarColorField) {\r\n this.calendarFields.Color = this.viewSetting.CalendarColorField;\r\n }\r\n this.userCalendars = this.contextSetting.View.UserCalendars;\r\n super.ngOnInit();\r\n this.prepare();\r\n this._setWidthAndHeight();\r\n this.prepareMoDataList(this.moDataList);\r\n this.selectedMonth$.pipe(takeUntil(this._onDestroy$)).subscribe((month: CalendarMonthInfo) => {\r\n this.loadData.emit({\r\n start: month.days[0].date,\r\n end: month.days[month.days.length - 1].date\r\n });\r\n });\r\n\r\n // this.setTasks(this.calendars, this.moDataList, this.calendarFields);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { moDataList, deviceSize } = changes;\r\n if (moDataList && !moDataList.firstChange) {\r\n this.prepareMoDataList(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (deviceSize && !deviceSize.firstChange) {\r\n this._setWidthAndHeight();\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n onCalendarCheckChange(calendar: MetaobjectDataModel): void {\r\n this._handleUserCalendarsChecked();\r\n }\r\n onDayClick(day: Day): void {\r\n this._calendarService.setMode('day', day);\r\n }\r\n onShowTask(): void {}\r\n onSlideChange(selected: CalendarMonthInfo): void {\r\n this._calendarService.setSelected(selected);\r\n }\r\n onMonthCarouselLoaded({ object }): void {\r\n object.selectedPage = 1;\r\n }\r\n\r\n onToday(): void {\r\n this._calendarService.gotoToday();\r\n }\r\n onModeChange(mode: CalendarMode): void {\r\n this._calendarService.setMode(mode);\r\n }\r\n onRangeChange(e: { startDay: Day; endDay: Day; monthInfo: CalendarMonthInfo }): void {\r\n this._calendarService.rangeSelect(e.startDay, e.endDay, e.monthInfo);\r\n }\r\n onPrevTap(): void {\r\n // this.gotoPage(this.monthCarouselView.nativeElement.selectedPage - 1);\r\n this._calendarService.loadPrevious();\r\n }\r\n\r\n onNextTap(): void {\r\n this._calendarService.loadNext();\r\n // this.gotoPage(this.monthCarouselView.nativeElement.selectedPage + 1);\r\n }\r\n\r\n onSelectedChange(day: Day): void {\r\n this.selectedDay = { ...day };\r\n }\r\n onRangeSelect({ startDate, endDate }): void {\r\n const x = { [this.calendarFields.StartDate]: startDate, [this.calendarFields.EndDate]: endDate };\r\n this.rangeSelect.emit(x);\r\n }\r\n\r\n prepareMoDataList(moDataList: MetaobjectDataModel[]): void {\r\n this.eventMoDataList$.next(\r\n moDataList.map((event) => ({\r\n ...event,\r\n id: event.Id, // because in core.js calendar selection adapter read id with lowercase\r\n $StartDateInfo: this._dateService.getDateInfo(event[this.calendarFields.StartDate]),\r\n $EndDateInfo: this._dateService.getDateInfo(event[this.calendarFields.EndDate])\r\n }))\r\n );\r\n }\r\n\r\n addTd(table: any[], tr: any[], event: CalendarMetaobjectDataModel, colSpan: number): void {\r\n const colSpanCount = tr.length > 0 ? tr.map((c) => c.colSpan).reduce((a, b) => a + b) > 6 : 0;\r\n if (colSpanCount) {\r\n table.push(tr);\r\n tr = [];\r\n }\r\n tr.push({ type: 'td', colSpan, event });\r\n }\r\n private _handleUserCalendarsChecked(): void {\r\n const userCalendars = this.userCalendars?.Data?.MoDataList;\r\n if (!userCalendars?.length) {\r\n return;\r\n }\r\n const calendars = userCalendars.filter((c) => c.$IsChecked).map((c) => c.Id);\r\n let moList = this.moDataList;\r\n\r\n if (calendars.length > 0) {\r\n moList = this.moDataList.filter(\r\n (c) => c[this.calendarFields.Calendar] && calendars.indexOf(c[this.calendarFields.Calendar].Id) > -1\r\n );\r\n }\r\n this.prepareMoDataList(moList);\r\n }\r\n private prepare(): void {\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.days$ = this._calendarService.days$;\r\n this.today = this._calendarService.today;\r\n this.mode$ = this._calendarService.mode$;\r\n\r\n this.monthWeeksCount$ = this.mode$.pipe(\r\n map((mode) => {\r\n if (mode === 'month') {\r\n return this._calendarService.selectedMonth.weeksCount;\r\n }\r\n return 0;\r\n })\r\n );\r\n this.modeTitle$ = combineLatest([this.days$, this.mode$]).pipe(\r\n takeUntil(this._onDestroy$),\r\n switchMap(([, mode]) => {\r\n if (mode === 'customMonth') {\r\n return of(`${this._calendarService.weeksCount} ${this._bbbTranslate.transform('Week')}`);\r\n }\r\n return of(this._bbbTranslate.transform(this._titleCase.transform(mode)));\r\n })\r\n );\r\n\r\n this.weekModeDays$ = this._calendarService.weekModeDays$;\r\n this._calendarService.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe((calendars) => {\r\n const eventCalendars = [...calendars];\r\n // eventCalendars = eventCalendars.splice(this.selectedIndex, 3);\r\n this.calendars = eventCalendars;\r\n // if (this.monthCarouselView) {\r\n // this.monthCarouselView.nativeElement.selectedPage = 1;\r\n // }\r\n });\r\n\r\n // .pipe(takeUntil(this._onDestroy$))\r\n // .subscribe((todayIndex) => {\r\n // this.selectedIndex = this.todayIndex = todayIndex;\r\n // this.gotoPage(this.todayIndex);\r\n // });\r\n this.title$ = combineLatest([this.weekModeDays$, this.selectedMonth$, this.days$, this.mode$]).pipe(\r\n takeUntil(this._onDestroy$),\r\n switchMap(([weekModeDays, monthInfo, days, mode]) => {\r\n let monthName = monthInfo.dateInfo.monthName;\r\n const year = monthInfo.dateInfo.strYear;\r\n\r\n if (mode !== 'month') {\r\n let firstDayInfo: Day;\r\n let lastDayInfo: Day;\r\n const daysTemp = mode === 'customMonth' ? days : weekModeDays;\r\n if (daysTemp.length > 0) {\r\n firstDayInfo = daysTemp[0];\r\n lastDayInfo = daysTemp[daysTemp.length - 1];\r\n monthName = firstDayInfo.monthName;\r\n if (firstDayInfo.month !== lastDayInfo.month) {\r\n monthName = `${firstDayInfo.monthName} -\r\n ${lastDayInfo.monthName}`;\r\n }\r\n }\r\n }\r\n return of(`${monthName} ${year}`);\r\n })\r\n );\r\n }\r\n\r\n private _setWidthAndHeight(): void {\r\n // const divRef= this._el.nativeElement;\r\n const divRef = this._divRef.nativeElement;\r\n\r\n this.width = divRef.offsetWidth;\r\n this.height = divRef.offsetHeight - 45;\r\n }\r\n}\r\ninterface UiCalendarSetting extends UiReportViewBaseSetting {\r\n CalendarColorField: string;\r\n}\r\n","<div style=\"display: flex; width: 100%; height: 100%; flex-direction: row\">\r\n <div style=\"width: 320px; height: 100%\" *ngIf=\"deviceSize !== 's' && deviceSize !== 'm'\">\r\n <bc-calendar-selection-days\r\n [inline]=\"true\"\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n <div style=\"height: 1px; background: #ccc\"></div>\r\n <div *ngIf=\"userCalendars?.Data?.MoDataList?.length\">\r\n <h4>تقویمهایمن</h4>\r\n <ng-container *ngFor=\"let calendar of userCalendars.Data.MoDataList\">\r\n <ul fd-list>\r\n <li fd-list-item style=\"padding: 0\" class=\"user-calendar\">\r\n <span\r\n [style.background]=\"calendar.Color ? calendar.Color : null\"\r\n style=\"width: 5px; height: 100%; position: absolute\"\r\n ></span>\r\n <fd-checkbox\r\n [(ngModel)]=\"calendar.$IsChecked\"\r\n (change)=\"onCalendarCheckChange(calendar)\"\r\n ></fd-checkbox>\r\n <span fd-list-title>{{ calendar.$Caption }}</span>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div style=\"flex: 1\" #divRef>\r\n <bc-calendar-header\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n [weekModeDays]=\"(weekModeDays$ | async)!!\"\r\n [rtl]=\"rtl\"\r\n [deviceSize]=\"deviceSize\"\r\n [mode]=\"(mode$ | async)!!\"\r\n [modeTitle]=\"(modeTitle$ | async)!!\"\r\n [title]=\"(title$ | async)!!\"\r\n (modeChange)=\"onModeChange($event)\"\r\n (prevTap)=\"onPrevTap()\"\r\n (nextTap)=\"onNextTap()\"\r\n (today)=\"onToday()\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n >\r\n </bc-calendar-header>\r\n <ng-container [ngSwitch]=\"mode$ | async\">\r\n <ng-container *ngSwitchCase=\"'week'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n weekCalendar;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n weekModeDays: weekModeDays$ | async,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n weekCalendar;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n weekModeDays: weekModeDays$ | async,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'list'\"></ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n monthCalendar;\r\n context: {\r\n $implicit: days$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n monthWeeksCount: monthWeeksCount$ | async,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<ng-template\r\n #monthCalendar\r\n let-days\r\n let-moDataList=\"moDataList\"\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-calendarFields=\"calendarFields\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-monthWeeksCount=\"monthWeeksCount\"\r\n let-access=\"access\"\r\n>\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\r\n [containerWidth]=\"width\"\r\n [calendarFields]=\"calendarFields\"\r\n [moDataList]=\"moDataList\"\r\n [monthWeeksCount]=\"monthWeeksCount\"\r\n [rtl]=\"rtl\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [showEvents]=\"showEvents\"\r\n [days]=\"days\"\r\n [canAdd]=\"access.Add\"\r\n [canEdit]=\"access.Edit\"\r\n [canDelete]=\"access.Delete\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event)\"\r\n (showEvent)=\"onShowTask()\"\r\n (deleteEvent)=\"deleteTask.emit($event)\"\r\n (editEvent)=\"editTask.emit($event)\"\r\n (daySelect)=\"daySelect.emit($event)\"\r\n ></bc-calendar-month>\r\n</ng-template>\r\n\r\n<ng-template #listCalendar>\r\n <bc-calendar-list-container\r\n [showEvents]=\"showEvents\"\r\n [selectedDay]=\"selectedDay\"\r\n [calendarFields]=\"calendarFields\"\r\n (showEventsTap)=\"showEvents = !showEvents\"\r\n ></bc-calendar-list-container>\r\n</ng-template>\r\n\r\n<ng-template\r\n #weekCalendar\r\n let-selectedMonth\r\n let-moDataList=\"moDataList\"\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-calendarFields=\"calendarFields\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-weekModeDays=\"weekModeDays\"\r\n let-access=\"access\"\r\n>\r\n <bc-calendar-week\r\n [style.width]=\"width\"\r\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\r\n [containerWidth]=\"width\"\r\n [inDialog]=\"inDialog\"\r\n [calendarFields]=\"calendarFields\"\r\n [moDataList]=\"moDataList\"\r\n [rtl]=\"rtl\"\r\n [canAdd]=\"access.Add\"\r\n [canEdit]=\"access.Edit\"\r\n [canDelete]=\"access.Delete\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [showEvents]=\"showEvents\"\r\n [days]=\"weekModeDays\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event)\"\r\n (showEvent)=\"onShowTask()\"\r\n (deleteEvent)=\"deleteTask.emit($event)\"\r\n (editEvent)=\"editTask.emit($event)\"\r\n (daySelect)=\"daySelect.emit($event)\"\r\n (rangeSelect)=\"onRangeSelect($event)\"\r\n ></bc-calendar-week>\r\n</ng-template>\r\n","import { ComponentFactoryResolver, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule, TitleCasePipe } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { FundamentalNgxCoreModule } from '@fundamental-ngx/core';\r\nimport { CardModule } from '@fundamental-ngx/core/card';\r\nimport { QuickViewModule } from '@fundamental-ngx/core/quick-view';\r\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\r\n\r\nimport { BarsaNovinRayCoreModule, BaseModule, DynamicComponentService } from 'barsa-novin-ray-core';\r\n\r\nimport { CalendarContainerComponent } from './calendar-container/calendar-container.component';\r\nimport { CalendarListComponent } from './calendar-list/calendar-list.component';\r\nimport { CalendarListContainerComponent } from './calendar-list-container/calendar-list-container.component';\r\nimport { CalendarListItemComponent } from './calendar-list-item/calendar-list-item.component';\r\nimport { CalendarWeekComponent } from './calendar-week/calendar-week.component';\r\nimport { CalendarMonthComponent } from './calendar-month/calendar-month.component';\r\nimport { CalendarService } from './services/calendar.service';\r\nimport { MonthDaysComponent } from './month-days/month-days.component';\r\nimport { DaysInWeekPipe } from './days-in-week.pipe';\r\nimport { EventDatePipe } from './event-date.pipe';\r\nimport { EventTimePipe } from './event-time.pipe';\r\nimport { FromToTimePipe } from './from-to-time.pipe';\r\nimport { EqualDatePipe } from './equal-date.pipe';\r\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\r\nimport { EventPreviewComponent } from './event-preview/event-preview.component';\r\nimport { DayNumberBoxComponent } from './day-number-box/day-number-box.component';\r\nimport { EventButtonComponent } from './event-button/event-button.component';\r\nimport { DayEventListComponent } from './day-event-list/day-event-list.component';\r\nimport { DateTimePickerComponent } from './date-time-picker/date-time-picker.component';\r\nimport { CalendarSelectionDaysComponent } from './calendar-selection-days/calendar-selection-days.component';\r\nimport { EventButtonEndArrowComponent } from './event-button-end-arrow/event-button-end-arrow.component';\r\nimport { EventButtonStartArrowComponent } from './event-button-start-arrow/event-button-start-arrow.component';\r\n\r\nconst components = [\r\n CalendarContainerComponent,\r\n CalendarListComponent,\r\n CalendarListContainerComponent,\r\n CalendarListItemComponent,\r\n CalendarWeekComponent,\r\n CalendarMonthComponent,\r\n MonthDaysComponent,\r\n CalendarHeaderComponent,\r\n EventPreviewComponent,\r\n DayNumberBoxComponent,\r\n EventButtonComponent,\r\n DayEventListComponent,\r\n EventButtonEndArrowComponent,\r\n EventButtonStartArrowComponent\r\n];\r\nconst pipes = [DaysInWeekPipe, EventDatePipe, EventTimePipe, FromToTimePipe, EqualDatePipe];\r\n@NgModule({\r\n schemas: [NO_ERRORS_SCHEMA],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n BarsaNovinRayCoreModule,\r\n FundamentalNgxCoreModule,\r\n PopoverModule,\r\n CardModule,\r\n QuickViewModule\r\n ],\r\n declarations: [...components, ...pipes, DateTimePickerComponent, CalendarSelectionDaysComponent],\r\n providers: [TitleCasePipe, CalendarService, ...pipes],\r\n exports: [...components, DateTimePickerComponent, CalendarSelectionDaysComponent]\r\n})\r\nexport class BarsaCalendarModule extends BaseModule {\r\n protected dynamicComponents = [...components];\r\n constructor(protected dcm: DynamicComponentService, protected componentFactoryResolver: ComponentFactoryResolver) {\r\n super(dcm, componentFactoryResolver, 'BarsaCalendarModule');\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i8","i9.EventDatePipe","i5","i6","i7.EventPreviewComponent","i8.EventButtonEndArrowComponent","i9.EventButtonStartArrowComponent","i10.EventTimePipe","i8.DayNumberBoxComponent","i9.EventButtonEndArrowComponent","i10.EventButtonStartArrowComponent","i1.DaysInWeekPipe","i2.CalendarService","i7","i9.DayNumberBoxComponent","i10.EventButtonComponent","i11.DayEventListComponent","i12.EqualDatePipe","i1.CalendarService","i7.CalendarMonthComponent","i10","i12","i13.CalendarMonthComponent","i14.CalendarSelectionDaysComponent","moment","i9.EventButtonComponent","i10.DayEventListComponent","i8.CalendarSelectionDaysComponent","i5.DayNumberBoxComponent","i6.EventButtonComponent","i7.FromToTimePipe","i2.CalendarListItemComponent","i2.CalendarListComponent","i3.CalendarService","i7.CalendarListContainerComponent","i8.CalendarWeekComponent","i9.CalendarMonthComponent","i10.CalendarHeaderComponent","i11.CalendarSelectionDaysComponent"],"mappings":"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"}
|