UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

1,168 lines (1,167 loc) 696 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, ViewChild, EventEmitter, Output, Inject } from '@angular/core'; import { AbstractDataEditorView } from '../AbstractDataEditorView'; import { AbstractDataEditor } from '../AbstractDataEditor'; import { DefaultCalendarEntryMapper } from '../DefaultCalendarEntryMapper'; import { CalendarEntryWrapper } from '../CalendarEntryWrapper'; import { DefaultCalendarEntryListPopover } from '../DefaultCalendarEntryListPopover.component'; import { DefaultComponentCalendarEntry } from '../DefaultComponentCalendarEntry.component'; import { CHANGE_EVENT, BEFORE_CHANGE_EVENT } from '../../../share/CustomEventType'; import { TabModel, SimpleListModel, CalendarViewModel, CalendarEntryPopoverModel, CalendarEntryListPopoverModel, ComponentCalendarEntryModel, DefaultSelectItemModel } from '../../model/models'; import { TabPane } from '../../dataview/TabPane.component'; import { SimpleListPane } from '../../SimpleListPane.component'; import { CalendarEntryPopover } from './calendar.internal/CalendarEntryPopover.component'; import { StringDataView } from '../../dataview/StringDataView.component'; import { DateTimeUtils } from '../../../share/utils/DateTimeUtils'; import { Option } from '../../../decorator/Option.decorator'; import { I18N } from '../../../decorator/I18N.decorator'; import { EditorSettingServiceFactory } from '../IEditorSettingServiceFactory'; import { EventUtils } from '../../../share/utils/EventUtils'; import { NeedFocusService } from "../../../service/NeedFocusService.service"; import { ComponentDropdownList } from '../../dataview/dataviews'; export var /** @type {?} */ CALENDAR_VIEW_CHANGE_EVENT = 'calendarViewChange'; var /** @type {?} */ TYPE_NAME = "phx-calendar-view"; var /** @type {?} */ DAY_VIEW = 'DAY'; var /** @type {?} */ WEEK_VIEW = 'WEEK'; var /** @type {?} */ MONTH_VIEW = 'MONTH'; var /** @type {?} */ AGENDA_VIEW = 'AGENDA'; var CalendarView = /** @class */ (function (_super) { tslib_1.__extends(CalendarView, _super); function CalendarView(elementRef, editorSettingFactory, needFocusService) { var _this = _super.call(this, editorSettingFactory, elementRef) || this; _this.AGENDA_CONTENT_SELECTOR = ".agenda-view > .left > .wrapper > .timeline > .content-wrapper > .content"; _this.DAY_CONTENT_SELECTOR = ".day-view > .left > .wrapper > .timeline > .content > .wrapper"; _this.WEEK_CONTENT_SELECTOR = ".week-view > .left > .timeline > .timeline-wrapper > .content"; _this.MONTH_CONTENT_SELECTOR = ".month-view > .container-wrapper > .container"; _this.elementRef = elementRef; _this.needFocusService = needFocusService; _this.editable = false; _this.monthDayContainer = []; _this.dayTimeContainer = []; _this.weekDayContainer = []; _this.agendaRowContainer = []; _this.weekRowContainer = []; _this.dayRowContainer = []; _this.monthRowContainer = []; _this.monthMoreRowContainer = []; _this.calendarData = []; _this.entryWrappers = []; _this.currentView = MONTH_VIEW; _this.showAddTabBtn = false; _this.showBtnGroup = false; _this.firstTabAdding = false; _this.today = Date.today(); _this.defaultRowHeight = 46; _this.defaultEntryWidth = 140; _this.defaultEntryPadding = 3; _this.defaultRowBorderWeight = 1; _this.defaultWeekEntryWidth = 14.285714285714285714285714285714; // as percent _this.defaultMonthEntryWidth = 14.285714285714285714285714285714; // as percent _this.defaultMonthEntryHeight = 15; // as pt _this.defaultMonthHeight = 20; // as percent _this.defaultAgendaScrollDelay = 1000; _this.currentTimeTop = "0pt"; _this.defaultDropdownIdx = 0; _this.currentEntryMapper = null; _this.isAgendaScrolling = false; _this.dropdownShow = false; _this.dropdownItems = []; _this.agendaPosition = []; _this.agendaMap = {}; _this.viewChangeEvent = new EventEmitter(); _this.beforeViewChangeEvent = new EventEmitter(); _this.isAgendaViewClicked = false; _this.defaultTopArrowPopover = 10; _this.isMonthEntryClick = false; _this.isDayEntryClick = false; _this.isWeekEntryClick = false; _this.i18NResource = { header: { view: { day: "Day", week: "Week", month: "Month", agenda: "Agenda" } }, body: { calendar: { sunday: "Sun", monday: "Mon", tuesday: "Tue", wednesday: "Wed", thursday: "Thu", friday: "Fri", saturday: "Sat" }, agenda: { header: "Timeline" }, entry: { more: "More", item: "item(s)" } } }; // month // month _this.resetMonthDayContainer(); // week // week _this.resetWeekDayContainer(); // day for (var /** @type {?} */ i = 0; i < 24; i++) { var /** @type {?} */ label = ((i < 10) ? "0" + (i) : i) + ":00"; var /** @type {?} */ item = { label: label, time: Date.parse(label) }; _this.dayTimeContainer.push(item); } // tab // tab _this.tabComponentType = SimpleListPane; _this.tabComponentModel = new SimpleListModel('id', StringDataView, 'date', StringDataView); _this.timelineData = []; _this.noteData = []; // dropdown // dropdown _this.dropdownCompoType = StringDataView; // set model // set model _this.dayEntryModel = new CalendarEntryPopoverModel(DefaultComponentCalendarEntry, new ComponentCalendarEntryModel("", null, null, null), 0, 0, 'left'); _this.dayEntrySelected = null; _this.weekEntryModel = new CalendarEntryPopoverModel(DefaultComponentCalendarEntry, new ComponentCalendarEntryModel("", null, null, null), 0, 0, 'left'); _this.weekEntrySelected = null; _this.monthEntryModel = new CalendarEntryPopoverModel(DefaultComponentCalendarEntry, new ComponentCalendarEntryModel("", null, null, null), 0, 0, 'left'); _this.monthEntrySelected = null; _this.monthMoreEntryModel = new CalendarEntryPopoverModel(DefaultCalendarEntryListPopover, new CalendarEntryListPopoverModel("", null, null), 0, 0, 'left'); _this.monthMoreEntrySelected = null; return _this; } /** * @return {?} */ CalendarView.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); this.applyI18N(this.i18NResource); this.initEditor(); this.currentMonth = new Date(); this.currentEntryMapper = this.getCalendarDropdownMapper(this.defaultDropdownIdx); this.setCalendarMonth(this.currentMonth); if (this.tabPane !== null && typeof this.tabPane !== 'undefined') { var /** @type {?} */ timeLineModel = new TabModel("Incoming", null, this.tabComponentType, this.tabComponentModel, this.timelineData); this.tabPane.addTab(timeLineModel); var /** @type {?} */ noteModel = new TabModel("Passed", null, this.tabComponentType, this.tabComponentModel, this.noteData); this.tabPane.addTab(noteModel); } // has model when init this.dropdownItems = this.getCalendarDropdownLabelArray(); this.comDropdown.setData({ "comDropdownField": this.dropdownItems[0].value }); // set moreMonthType var /** @type {?} */ dayPopoverType = this.getEntryPopoverType(DAY_VIEW); this.dayEntryModel.model.type = dayPopoverType; var /** @type {?} */ weekPopoverType = this.getEntryPopoverType(WEEK_VIEW); this.weekEntryModel.model.type = weekPopoverType; var /** @type {?} */ monthPopoverType = this.getEntryPopoverType(MONTH_VIEW); this.monthEntryModel.model.type = monthPopoverType; this.monthMoreEntryModel.model.type = monthPopoverType; }; /** * @return {?} */ CalendarView.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.editor != null && (typeof this.editor !== 'undefined')) { this.editor.removeViewComponent(this); } }; /** * @return {?} */ CalendarView.prototype.initEditor = /** * @return {?} */ function () { var _this = this; if (this.editor != null && (typeof this.editor !== 'undefined')) { this.editor.addViewComponent(this); if (this.showEvent !== null && (typeof this.showEvent !== 'undefined')) { this.showEvent.subscribe(function (event) { _this.reloadPage(); }); } var /** @type {?} */ updateEvent = this.editor.getDataUpdateEvent(); if (updateEvent !== null && (typeof updateEvent !== 'undefined')) { updateEvent.subscribe(function (event) { var /** @type {?} */ data = null; if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { data = event.detail.data.data; } } if (data !== null) { // close popover // close popover _this.closePopover(null); try { for (var data_1 = tslib_1.__values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) { var d = data_1_1.value; _this.replaceCalendarData(d); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1); } finally { if (e_1) throw e_1.error; } } _this.closeAllPopover(); // rerender // rerender _this.reRenderViewData(_this.currentView, _this.currentMonth); } var e_1, _a; }); } var /** @type {?} */ deleteEvent = this.editor.getDataDeleteEvent(); if (deleteEvent !== null && (typeof deleteEvent !== 'undefined')) { deleteEvent.subscribe(function (event) { var /** @type {?} */ data = null; if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { data = event.detail.data.data; } } if (data !== null && typeof data !== 'undefined') { try { for (var data_2 = tslib_1.__values(data), data_2_1 = data_2.next(); !data_2_1.done; data_2_1 = data_2.next()) { var d = data_2_1.value; _this.removeData(d); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (data_2_1 && !data_2_1.done && (_a = data_2.return)) _a.call(data_2); } finally { if (e_2) throw e_2.error; } } _this.closeAllPopover(); // rerender // rerender _this.reRenderViewData(_this.currentView, _this.currentMonth); } var e_2, _a; }); } var /** @type {?} */ revertEvent = this.editor.getDataRevertEvent(); if (revertEvent !== null && (typeof revertEvent !== 'undefined')) { revertEvent.subscribe(function (event) { var /** @type {?} */ data = null; if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { data = event.detail.data.data; } } if (data !== null) { try { for (var data_3 = tslib_1.__values(data), data_3_1 = data_3.next(); !data_3_1.done; data_3_1 = data_3.next()) { var d = data_3_1.value; _this.replaceCalendarData(d); } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (data_3_1 && !data_3_1.done && (_a = data_3.return)) _a.call(data_3); } finally { if (e_3) throw e_3.error; } } _this.closeAllPopover(); // rerender // rerender _this.reRenderViewData(_this.currentView, _this.currentMonth); } var e_3, _a; }); } var /** @type {?} */ dataReloadEvent = this.editor.getDataReloadEvent(); if (dataReloadEvent !== null && (typeof dataReloadEvent !== 'undefined')) { dataReloadEvent.subscribe(function (event) { _this.reloadPage(); }); } var /** @type {?} */ dataQueryEvent = this.editor.getDataQueryEvent(); if (dataQueryEvent !== null && (typeof dataQueryEvent !== 'undefined')) { dataQueryEvent.subscribe(function (event) { _this.reloadPage(); }); } } }; /** * @return {?} */ CalendarView.prototype.closeAllPopover = /** * @return {?} */ function () { this.closePopover(null); }; /** * @return {?} */ CalendarView.prototype.getCalendarDropdownMapperArray = /** * @return {?} */ function () { var /** @type {?} */ mappers = []; if (this.model !== null && typeof this.model !== 'undefined') { if (this.model instanceof CalendarViewModel) { var /** @type {?} */ cvModel = /** @type {?} */ (this.model); var /** @type {?} */ entryMappers = cvModel.entryMappers; if (entryMappers !== null && typeof entryMappers !== 'undefined' && Array.isArray(entryMappers)) { try { for (var entryMappers_1 = tslib_1.__values(entryMappers), entryMappers_1_1 = entryMappers_1.next(); !entryMappers_1_1.done; entryMappers_1_1 = entryMappers_1.next()) { var m = entryMappers_1_1.value; mappers.push(m); } } catch (e_4_1) { e_4 = { error: e_4_1 }; } finally { try { if (entryMappers_1_1 && !entryMappers_1_1.done && (_a = entryMappers_1.return)) _a.call(entryMappers_1); } finally { if (e_4) throw e_4.error; } } } if (cvModel.fromDateTimeField !== null && typeof cvModel.fromDateTimeField !== 'undefined' && cvModel.toDateTimeField !== null && typeof cvModel.toDateTimeField !== 'undefined' && cvModel.titleField !== null && typeof cvModel.titleField !== 'undefined') { mappers.push(new DefaultCalendarEntryMapper('DEFAULT', cvModel.titleField, cvModel.fromDateTimeField, cvModel.toDateTimeField)); } } } return mappers; var e_4, _a; }; /** * @param {?} index * @return {?} */ CalendarView.prototype.getCalendarDropdownMapper = /** * @param {?} index * @return {?} */ function (index) { if (index === null || typeof index === 'undefined') { return null; } var /** @type {?} */ mapperArray = this.getCalendarDropdownMapperArray(); if (index >= 0 && index < mapperArray.length) { var /** @type {?} */ mapper = mapperArray[index]; if (mapper !== null) { return mapper; } } return null; }; /** * @return {?} */ CalendarView.prototype.getCalendarDropdownLabelArray = /** * @return {?} */ function () { var /** @type {?} */ entryMappers = this.getCalendarDropdownMapperArray(); var /** @type {?} */ labelArray = []; for (var /** @type {?} */ i = 0; i < entryMappers.length; i++) { var /** @type {?} */ mapper = entryMappers[i]; var /** @type {?} */ label = mapper.getLabel(); labelArray.push(new DefaultSelectItemModel(label, label)); } return labelArray; }; /** * @param {?} index * @return {?} */ CalendarView.prototype.getCalendarDropdownLabel = /** * @param {?} index * @return {?} */ function (index) { if (index < 0) { return null; } var /** @type {?} */ container = this.getCalendarDropdownLabelArray(); if (index < container.length) { return container[index]; } return null; }; /** * @param {?} view * @param {?=} $event * @return {?} */ CalendarView.prototype.closePopover = /** * @param {?} view * @param {?=} $event * @return {?} */ function (view, $event) { var /** @type {?} */ closeDay = false; var /** @type {?} */ closeWeek = false; var /** @type {?} */ closeMonth = false; if (view !== null && typeof view !== 'undefined') { if (DAY_VIEW === view) { closeDay = true; } else if (WEEK_VIEW === view) { closeWeek = true; } else if (MONTH_VIEW === view) { closeMonth = true; } else if (AGENDA_VIEW === view) { // do more when agenda has popover } } else { // close all closeDay = true; closeWeek = true; closeMonth = true; } if (closeDay) { if (this.dayEntryPopover !== null && typeof this.dayEntryPopover !== 'undefined') { if (this.dayEntrySelected !== null && typeof this.dayEntrySelected !== 'undefined') { if (this.dayEntrySelected.selected) { this.dayEntrySelected.selected = false; this.dayEntrySelected = null; this.dayEntryPopover.hide(); // if autosave just save to editor if (this.dayEntryPopover.isAutoSave() && this.dayEntryPopover.isDataDirty()) { this.dayEntryPopover.onAutoSaved($event); var /** @type {?} */ popoverData = this.dayEntryPopover.getData(); if (this.editor !== undefined && this.editor !== null) { this.editor.updateData(popoverData); } } this.dayEntryPopover.onPopoverClosed($event); } } } } if (closeWeek) { if (this.weekEntryPopover !== null && typeof this.weekEntryPopover !== 'undefined') { if (this.weekEntrySelected !== null && typeof this.weekEntrySelected !== 'undefined') { if (this.weekEntrySelected.selected) { this.weekEntrySelected.selected = false; this.weekEntrySelected = null; this.weekEntryPopover.hide(); // if autosave just save to editor if (this.weekEntryPopover.isAutoSave() && this.weekEntryPopover.isDataDirty()) { this.weekEntryPopover.onAutoSaved($event); var /** @type {?} */ popoverData = this.weekEntryPopover.getData(); if (this.editor !== undefined && this.editor !== null) { this.editor.updateData(popoverData); } } this.weekEntryPopover.onPopoverClosed($event); } } } } if (closeMonth) { if (this.monthEntryPopover !== null && typeof this.monthEntryPopover !== 'undefined') { if (this.monthEntrySelected !== null && typeof this.monthEntrySelected !== 'undefined') { if (this.monthEntrySelected.selected) { this.monthEntrySelected.selected = false; this.monthEntrySelected = null; this.monthEntryPopover.hide(); // if autosave just save to editor if (this.monthEntryPopover.isAutoSave() && this.monthEntryPopover.isDataDirty()) { this.monthEntryPopover.onAutoSaved($event); var /** @type {?} */ popoverData = this.monthEntryPopover.getData(); if (this.editor !== undefined && this.editor !== null) { this.editor.updateData(popoverData); } } this.monthEntryPopover.onPopoverClosed($event); } } } if (this.monthMoreEntryPopover !== null && typeof this.monthMoreEntryPopover !== 'undefined') { if (this.monthMoreEntrySelected !== null && typeof this.monthMoreEntrySelected !== 'undefined') { if (this.monthMoreEntrySelected.selected) { this.monthMoreEntrySelected.selected = false; this.monthMoreEntrySelected = null; this.monthMoreEntryPopover.hide(); } } } } }; /** * @param {?} data * @return {?} */ CalendarView.prototype.removeData = /** * @param {?} data * @return {?} */ function (data) { if (data === null && typeof data === 'undefined') { return; } if (this.editor !== null && typeof this.editor !== 'undefined') { var /** @type {?} */ comparator = this.editor.getDataComparator(); var /** @type {?} */ dataIndex = -1; for (var /** @type {?} */ i = 0; i < this.calendarData.length; i++) { var /** @type {?} */ item = this.calendarData[i]; if (comparator !== null) { if (comparator.equals(item, data)) { dataIndex = i; break; } } else { break; } } if (dataIndex > -1) { this.calendarData.splice(dataIndex, 1); } var /** @type {?} */ wrapperIndex = -1; for (var /** @type {?} */ i = 0; i < this.entryWrappers.length; i++) { var /** @type {?} */ entryWrapper = this.entryWrappers[i]; if (comparator !== null) { if (comparator.equals(entryWrapper.getData(), data)) { wrapperIndex = i; break; } } else { break; } } if (wrapperIndex > -1) { this.entryWrappers.splice(wrapperIndex, 1); } } }; /** * @param {?} data * @return {?} */ CalendarView.prototype.replaceCalendarData = /** * @param {?} data * @return {?} */ function (data) { if (data === null && typeof data === 'undefined') { return; } if (this.editor !== null && typeof this.editor !== 'undefined') { var /** @type {?} */ comparator = this.editor.getDataComparator(); var /** @type {?} */ dataIndex = -1; for (var /** @type {?} */ i = 0; i < this.calendarData.length; i++) { var /** @type {?} */ item = this.calendarData[i]; if (comparator !== null) { if (comparator.equals(item, data)) { dataIndex = i; break; } } else { break; } } var /** @type {?} */ cloneObj = null; if (dataIndex > -1) { cloneObj = JSON.parse(JSON.stringify(data)); this.calendarData[dataIndex] = cloneObj; } var /** @type {?} */ wrapperIndex = -1; for (var /** @type {?} */ i = 0; i < this.entryWrappers.length; i++) { var /** @type {?} */ entryWrapper = this.entryWrappers[i]; if (comparator !== null) { if (comparator.equals(entryWrapper.getData(), data)) { wrapperIndex = i; break; } } else { break; } } if (wrapperIndex > -1) { if (cloneObj !== null) { this.entryWrappers[wrapperIndex].setData(cloneObj); } } } }; /** * @return {?} */ CalendarView.prototype.reloadDataToCalendar = /** * @return {?} */ function () { this.calendarData = []; this.entryWrappers = []; if (this.editor !== null && typeof this.editor !== 'undefined' && this.editor.getData() !== null) { try { for (var _a = tslib_1.__values(this.editor.getData()), _b = _a.next(); !_b.done; _b = _a.next()) { var dataObj = _b.value; var /** @type {?} */ cloneObj = JSON.parse(JSON.stringify(dataObj)); this.calendarData.push(cloneObj); } } catch (e_5_1) { e_5 = { error: e_5_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_5) throw e_5.error; } } } var e_5, _c; }; /** * @return {?} */ CalendarView.prototype.reloadPage = /** * @return {?} */ function () { this.reloadDataToCalendar(); this.setCalendarMonth(this.currentMonth); }; /** * @param {?} view * @return {?} */ CalendarView.prototype.getEntryPopoverType = /** * @param {?} view * @return {?} */ function (view) { var /** @type {?} */ defaultType = null; if (this.model !== null && typeof this.model !== 'undefined') { if (this.model instanceof CalendarViewModel) { var /** @type {?} */ cvModel = /** @type {?} */ (this.model); var /** @type {?} */ popoverOption = cvModel.popoverTypeOption; var /** @type {?} */ selectedType = null; if (popoverOption !== null && typeof popoverOption !== 'undefined') { if (popoverOption.default !== null && typeof popoverOption.default !== 'undefined') { defaultType = popoverOption.default; } if (view !== null && typeof view !== 'undefined') { if (DAY_VIEW === view) { selectedType = popoverOption.day; } else if (WEEK_VIEW === view) { selectedType = popoverOption.week; } else if (MONTH_VIEW === view) { selectedType = popoverOption.month; } else if (AGENDA_VIEW === view) { selectedType = popoverOption.agenda; } } if (selectedType !== null && typeof selectedType !== 'undefined') { return selectedType; } } } } return defaultType; }; /** * @return {?} */ CalendarView.prototype.createTestData = /** * @return {?} */ function () { this.calendarData = []; var /** @type {?} */ testTime1 = new Date().clearTime(); var /** @type {?} */ testTime2 = new Date(testTime1).addHours(2); var /** @type {?} */ testTime1Over = new Date().clearTime(); var /** @type {?} */ testTime2Over = new Date(testTime1Over).addDays(7).addHours(2); var /** @type {?} */ testTime3Over = new Date().clearTime(); var /** @type {?} */ testTime4Over = new Date(testTime3Over).addDays(12); var /** @type {?} */ testTime3 = new Date().clearTime().addDays(1).addHours(5); var /** @type {?} */ testTime4 = new Date(testTime3).addHours(2); var /** @type {?} */ testTime5 = new Date().clearTime().addDays(-1).addHours(5); var /** @type {?} */ testTime6 = new Date(testTime5).addHours(2); var /** @type {?} */ testTime51 = new Date().clearTime().addDays(-1).addHours(5); var /** @type {?} */ testTime61 = new Date(testTime5).addHours(2); var /** @type {?} */ testTime7 = new Date(testTime5).addMinutes(15); var /** @type {?} */ testTime8 = new Date(testTime7).addHours(2); var /** @type {?} */ testTime9 = new Date(testTime5).addMinutes(30); var /** @type {?} */ testTime10 = new Date(testTime9).addHours(2); var /** @type {?} */ testTime11 = new Date().clearTime().addDays(-1).addHours(7); // 7 & 3 var /** @type {?} */ testTime12 = new Date(testTime11).addHours(3); var /** @type {?} */ testTime13 = new Date().clearTime().addDays(4); var /** @type {?} */ testTime14 = new Date(testTime13).addDays(14).addHours(7); this.calendarData.push({ id: 'AAAAA', date1: testTime1, date2: testTime2 }); this.calendarData.push({ id: 'BBBBB', date1: testTime3, date2: testTime4 }); this.calendarData.push({ id: 'CCCCC', date1: testTime5, date2: testTime6 }); this.calendarData.push({ id: 'DDDDD', date1: testTime7, date2: testTime8 }); this.calendarData.push({ id: 'EEEEE', date1: testTime9, date2: testTime10 }); this.calendarData.push({ id: 'GGGGG', date1: testTime11, date2: testTime12 }); this.calendarData.push({ id: 'HHHHH', date1: testTime13, date2: testTime14 }); // this.calendarData.push({ id: 'AAAAA', date1: testTime1Over, date2: testTime2Over }); // this.calendarData.push({ id: 'AAAAA', date1: testTime3Over, date2: testTime4Over }); // this.calendarData.push({ id: 'BBBBB', date1: testTime51, date2: testTime61 }); // this.calendarData.push({ id: 'BBBBB', date1: testTime51, date2: testTime61 }); }; /** * @return {?} */ CalendarView.prototype.setCurrentTimeIndicator = /** * @return {?} */ function () { var /** @type {?} */ currentTime = new Date(); var /** @type {?} */ newTop = '0pt'; var /** @type {?} */ minInHour = currentTime.getMinutes() / 60; var /** @type {?} */ totalHour = currentTime.getHours() + minInHour; if (totalHour > 0) { newTop = (this.defaultRowHeight * totalHour) + 'pt'; } this.currentTimeTop = newTop; }; /** * @param {?} dataObj * @return {?} */ CalendarView.prototype.getResolveWrapperObject = /** * @param {?} dataObj * @return {?} */ function (dataObj) { if (dataObj === null || typeof dataObj === 'undefined') { return null; } var /** @type {?} */ fromTime = null; var /** @type {?} */ toTime = null; var /** @type {?} */ title = null; var /** @type {?} */ calendarEntry = null; if (this.currentEntryMapper !== null && typeof this.currentEntryMapper !== 'undefined') { var /** @type {?} */ cEntryWrapper = this.getCalendarEntryWrapper(dataObj); if (cEntryWrapper === null) { cEntryWrapper = new CalendarEntryWrapper(dataObj, this.currentEntryMapper, this.elementRef); this.entryWrappers.push(cEntryWrapper); } calendarEntry = cEntryWrapper.getCalendarEntry(); if (calendarEntry !== null && typeof calendarEntry !== 'undefined') { title = calendarEntry.title; fromTime = calendarEntry.startDateTime; toTime = calendarEntry.endDateTime; } } return this.getWrapperObject(fromTime, toTime, title, calendarEntry); }; /** * @param {?} fromDate * @param {?} toDate * @param {?} title * @param {?} calendarEntry * @return {?} */ CalendarView.prototype.getWrapperObject = /** * @param {?} fromDate * @param {?} toDate * @param {?} title * @param {?} calendarEntry * @return {?} */ function (fromDate, toDate, title, calendarEntry) { var /** @type {?} */ result = { fromTime: fromDate, toTime: toDate, title: title, top: '0pt', left: '0pt', selected: false, height: this.defaultRowHeight + 'pt', entry: calendarEntry }; return result; }; /** * @param {?} wrapperObjectArray * @return {?} */ CalendarView.prototype.getWrapperObjectContainer = /** * @param {?} wrapperObjectArray * @return {?} */ function (wrapperObjectArray) { var /** @type {?} */ result = null; if (wrapperObjectArray === null || typeof wrapperObjectArray === 'undefined') { return result; } var /** @type {?} */ startDate = null; var /** @type {?} */ endDate = null; try { for (var wrapperObjectArray_1 = tslib_1.__values(wrapperObjectArray), wrapperObjectArray_1_1 = wrapperObjectArray_1.next(); !wrapperObjectArray_1_1.done; wrapperObjectArray_1_1 = wrapperObjectArray_1.next()) { var item = wrapperObjectArray_1_1.value; var /** @type {?} */ fromTime = item.fromTime; var /** @type {?} */ toTime = item.toTime; if (fromTime === null || typeof fromTime === 'undefined') { continue; } if (toTime === null || typeof toTime === 'undefined') { continue; } if (startDate !== null) { if (startDate.isAfter(fromTime)) { startDate = fromTime; } } else { startDate = fromTime; } if (endDate !== null) { if (endDate.isBefore(toTime)) { endDate = toTime; } } else { endDate = toTime; } } } catch (e_6_1) { e_6 = { error: e_6_1 }; } finally { try { if (wrapperObjectArray_1_1 && !wrapperObjectArray_1_1.done && (_a = wrapperObjectArray_1.return)) _a.call(wrapperObjectArray_1); } finally { if (e_6) throw e_6.error; } } result = { startDate: startDate, endDate: endDate, date: startDate, data: wrapperObjectArray }; return result; var e_6, _a; }; /** * @return {?} */ CalendarView.prototype.resetMonthDayContainer = /** * @return {?} */ function () { this.monthDayContainer = []; var /** @type {?} */ count = 1; for (var /** @type {?} */ i = 0; i < 5; i++) { var /** @type {?} */ container = []; for (var /** @type {?} */ j = 0; j < 7; j++) { if (count >= 32) { count = 1; } var /** @type {?} */ item = { day: '' }; container.push(item); count += 1; } this.monthDayContainer.push(container); } }; /** * @return {?} */ CalendarView.prototype.resetWeekDayContainer = /** * @return {?} */ function () { this.weekDayContainer = []; for (var /** @type {?} */ i = 0; i < 7; i++) { var /** @type {?} */ container = []; var /** @type {?} */ label = i + ""; var /** @type {?} */ item = { label: label, data: container }; this.weekDayContainer.push(item); } }; /** * @return {?} */ CalendarView.prototype.nextMonth = /** * @return {?} */ function () { if (this.currentMonth != null && (typeof this.currentMonth !== 'undefined')) { var /** @type {?} */ date = new Date(this.currentMonth).addMonths(1); this.setCalendarMonth(date); } }; /** * @return {?} */ CalendarView.prototype.prevMonth = /** * @return {?} */ function () { if (this.currentMonth != null && (typeof this.currentMonth !== 'undefined')) { var /** @type {?} */ date = new Date(this.currentMonth).addMonths(-1); this.setCalendarMonth(date); } }; /** * @return {?} */ CalendarView.prototype.nextWeek = /** * @return {?} */ function () { if (this.currentMonth != null && (typeof this.currentMonth !== 'undefined')) { var /** @type {?} */ date = new Date(this.currentMonth).addWeeks(1); this.setCalendarMonth(date); } }; /** * @return {?} */ CalendarView.prototype.prevWeek = /** * @return {?} */ function () { if (this.currentMonth != null && (typeof this.currentMonth !== 'undefined')) { var /** @type {?} */ date = new Date(this.currentMonth).addWeeks(-1); this.setCalendarMonth(date); } }; /** * @param {?} oldView * @param {?} newView * @param {?=} $event * @return {?} */ CalendarView.prototype.emitBeforeCalendarViewChangeEvent = /** * @param {?} oldView * @param {?} newView * @param {?=} $event * @return {?} */ function (oldView, newView, $event) { var /** @type {?} */ data = { action: CALENDAR_VIEW_CHANGE_EVENT, oldView: oldView, newView: newView }; var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_CHANGE_EVENT, this, data, $event); this.beforeViewChangeEvent.emit(ev); }; /** * @param {?} oldView * @param {?} newView * @param {?=} $event * @return {?} */ CalendarView.prototype.emitCalendarViewChangeEvent = /** * @param {?} oldView * @param {?} newView * @param {?=} $event * @return {?} */ function (oldView, newView, $event) { // emit event var /** @type {?} */ data = { action: CALENDAR_VIEW_CHANGE_EVENT, oldView: oldView, newView: newView }; var /** @type {?} */ ev = EventUtils.newCustomEvent(CHANGE_EVENT, this, data, $event); this.viewChangeEvent.emit(ev); }; /** * @param {?} $event * @param {?} entryData * @return {?} */ CalendarView.prototype.onDayEntryClicked = /** * @param {?} $event * @param {?} entryData * @return {?} */ function ($event, entryData) { var _this = this; if ($event !== null && typeof $event !== 'undefined') { $event.stopPropagation(); $event.cancelBubble = true; } var /** @type {?} */ tgWidth = 0; var /** @type {?} */ tgHeight = 0; var /** @type {?} */ tgTop = 0; var /** @type {?} */ tgLeft = 0; var /** @type {?} */ show = false; var /** @type {?} */ extraLeftPopover = 5; if (this.dayEntryPopover !== null && typeof this.dayEntryPopover !== 'undefined') { if (this.dayEntrySelected !== null && typeof this.dayEntrySelected !== 'undefined') { if (this.dayEntrySelected === entryData) { if (this.dayEntrySelected.selected) { this.dayEntrySelected.selected = false; this.dayEntrySelected = null; show = false; } else { this.dayEntrySelected.selected = true; this.dayEntryPopover.setCalendarEntryMapper(entryData.entry.wrapper.getEntryMapper()); this.dayEntryPopover.setData(entryData.entry.wrapper.data); show = true; } } else { // set old entry false this.dayEntrySelected.selected = false; // set new entry true this.dayEntrySelected = entryData; this.dayEntrySelected.selected = true; this.dayEntryPopover.setCalendarEntryMapper(entryData.entry.wrapper.getEntryMapper()); this.dayEntryPopover.setData(entryData.entry.wrapper.data); show = true; } } else { this.dayEntrySelected = entryData; this.dayEntrySelected.selected = true; this.dayEntryPopover.setCalendarEntryMapper(entryData.entry.wrapper.getEntryMapper()); this.dayEntryPopover.setData(entryData.entry.wrapper.data); show = true; } if (this.dayEntrydelayTimer !== null && typeof this.dayEntrydelayTimer !== 'undefined') { clearTimeout(this.dayEntrydelayTimer); this.dayEntrydelayTimer = null; } var /** @type {?} */ title_1 = null; var /** @type {?} */ selectedDate_1 = null; if (entryData !== null && typeof entryData !== 'undefined') { selectedDate_1 = entryData.fromTime; title_1 = entryData.title; } this.dayEntrydelayTimer = setTimeout(function () { if (typeof $(_this.elementRef.nativeElement).find('.day-view') !== 'undefined') { var /** @type {?} */ ele = $(_this.elementRef.nativeElement).find('.day-view').find('.entry.selected'); if (typeof ele !== 'undefined') { tgWidth = $(ele).width(); tgHeight = $(ele).height(); if (typeof $(ele).position() !== 'undefined') { tgTop = $(ele).position().top; tgLeft = $(ele).position().left; } } var /** @type {?} */ popoverPosition = 'left'; var /** @type {?} */ popoverWidth = $(_this.elementRef.nativeElement).find('.day-view').find('.phx-calendar-entry-popover').width(); var /** @type {?} */ popoverHeight = $(_this.elementRef.nativeElement).find('.day-view').find('.phx-calendar-entry-popover').height(); var /** @type {?} */ arrowTop = $(_this.elementRef.nativeElement).find('.day-view').find('.phx-calendar-entry-popover >.container-wrapper >.container-after').position().top; var /** @type {?} */ contentWidth = $(_this.elementRef.nativeElement).find(_this.DAY_CONTENT_SELECTOR).width(); var /** @type {?} */ contentHeight = $(_this.elementRef.nativeElement).find(_this.DAY_CONTENT_SELECTOR).height(); var /** @type {?} */ newLeft = tgLeft + tgWidth + extraLeftPopover; if (typeof tgWidth !== 'undefined' && typeof popoverWidth !== 'undefined' && typeof contentWidth !== 'undefined') { var /** @type {?} */ popoverMaxLeft = newLeft + popoverWidth; if (popoverMaxLeft > contentWidth) { // render right newLeft = tgLeft - extraLeftPopover - popoverWidth; popoverPosition = 'right'; } } var /** @type {?} */ newArrowTop = _this.defaultTopArrowPopover; // default if (typeof tgTop !== 'undefined' && typeof tgHeight !== 'undefined' && typeof popoverHeight !== 'undefined') { var /** @type {?} */ lastPopoverBound = tgTop + popoverHeight; if (lastPopoverBound > contentHeight) { // recal top var /** @type {?} */ difVal = lastPopoverBound - contentHeight; tgTop = tgTop - difVal; newArrowTop = difVal; } } _this.dayEntryModel.top = tgTop; _this.dayEntryModel.left = newLeft; _this.dayEntryModel.position = popoverPosition; _this.dayEntryModel.model.title = title_1; _this.dayEntryModel.model.description = selectedDate_1 === null ? '' : selectedDate_1.toString("dd/MM/yyyy"); _this.dayEntryModel.model.date = selectedDate_1; _this.dayEntryPopover.setArrowTop(newArrowTop); } if (show) { _this.isDayEntryClick = true; _this.needFocusService.setFocusingComponent(_this); _this.dayEntryPopover.show(); } else { _this.isDayEntryClick = false; _this.dayEntryPopover.hide(); } }, 5); } }; /** * @param {?} $event * @param {?} entryData * @return {?} */ CalendarView.prototype.onWeekEntryClicked = /** * @param {?} $event * @param {?} entryData * @return {?} */ function ($event, entryData) { var _this = this; if ($event !== null && typeof $event !== 'undefined') { $event.stopPropagation(); $event.cancelBubble = true; } var /** @type {?} */ tgWidth = 0; var /** @type {?} */ tgHeight = 0; var /** @type {?} */ tgTop = 0; var /** @type {?} */ tgLeft = 0; var /** @type {?} */ show = false; var /** @type {?} */ extraLeftPopover = 5; if (this.weekEntryPopover !== null && typeof this.weekEntryPopover !== 'undefined') { if (this.weekEntrySelected !== null && typeof this.weekEntrySelected !== 'undefined') { if (this.weekEntrySelected === entryData) { if (this.weekEntrySelected.selected) { this.weekEntrySelected.selected = false; this.weekEntrySelected = null; show = false; } else { this.weekEntrySelected.selected = true; this.weekEntryPopover.setCalendarEntryMapper(entryData.entry.wrapper.getEntryMapper()); this.weekEntryPopover.setData(entryData.entry.wrapper.data); show = true; } } else { // set old entry false this.weekEntrySelected.selected = false; // set new entry true this.weekEntrySelected = entryData; this.weekEntrySelected.selected = true; this.weekEntryPopover.setCalendarEntryMapper(entryData.entry.wrapper.getEntryMapper()); this.weekEntryPopover.setData(entryData.entry.wrapper.data); show = true; }