UNPKG

@syncfusion/ej2-schedule

Version:

Flexible scheduling library with more built-in features and enhanced customization options similar to outlook and google calendar, allowing the users to plan and manage their appointments with efficient data-binding support.

655 lines (654 loc) 37.7 kB
var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); /* eslint-disable @typescript-eslint/no-explicit-any */ import { addClass, append, createElement, extend, remove, isNullOrUndefined } from '@syncfusion/ej2-base'; import { setStyleAttribute, EventHandler } from '@syncfusion/ej2-base'; import { TimelineEvent } from './timeline-view'; import * as util from '../base/util'; import * as events from '../base/constant'; import * as cls from '../base/css-constant'; var EVENT_GAP = 2; /** * Year view events render */ var YearEvent = /** @class */ (function (_super) { __extends(YearEvent, _super); function YearEvent(parent) { var _this = _super.call(this, parent, 'day') || this; _this.isResource = false; return _this; } YearEvent.prototype.renderAppointments = function () { if (this.parent.dragAndDropModule) { this.parent.dragAndDropModule.setDragArea(); } this.fields = this.parent.eventFields; var elementSelector = (this.parent.currentView === 'Year') ? '.' + cls.WORK_CELLS_CLASS + ' ' + '.' + cls.APPOINTMENT_CLASS : '.' + cls.APPOINTMENT_WRAPPER_CLASS + ',.' + cls.MORE_INDICATOR_CLASS; var eventWrappers = [].slice.call(this.parent.element.querySelectorAll(elementSelector)); for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) { var wrapper = eventWrappers_1[_i]; remove(wrapper); } this.renderedEvents = []; if (this.parent.currentView === 'Year') { this.yearViewEvents(); } else { this.removeCellHeight(); if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) { this.isResource = true; this.timelineResourceEvents(); } else { this.timelineYearViewEvents(); } } this.parent.renderTemplates(); this.parent.notify(events.contentReady, {}); }; YearEvent.prototype.yearViewEvents = function () { var months = this.getMonths(); for (var _i = 0, months_1 = months; _i < months_1.length; _i++) { var month = months_1[_i]; var queryString = ".e-month-calendar:nth-child(" + (months.indexOf(month) + 1) + ") td.e-work-cells"; var workCells = [].slice.call(this.parent.element.querySelectorAll(queryString)); var monthDate = new Date(this.parent.selectedDate.getFullYear(), month, 1); var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime())); var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime())); var startDate = util.getWeekFirstDate(monthStart, this.parent.activeViewOptions.firstDayOfWeek); var endDate = util.addDays(util.getWeekLastDate(monthEnd, this.parent.activeViewOptions.firstDayOfWeek), 1); for (var index = 0; startDate.getTime() < endDate.getTime(); index++) { var start = util.resetTime(new Date(startDate.getTime())); var end = util.addDays(new Date(start.getTime()), 1); startDate = util.addDays(new Date(startDate.getTime()), 1); if (!this.parent.isMinMaxDate(start)) { continue; } var filterEvents = this.parent.eventBase.filterEvents(start, end); if (filterEvents.length > 0) { var workCell = workCells[parseInt(index.toString(), 10)]; if (workCell) { workCell.appendChild(createElement('div', { className: cls.APPOINTMENT_CLASS })); } } } } }; YearEvent.prototype.timelineYearViewEvents = function () { var _this = this; var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')'); this.cellWidth = this.parent.getElementWidth(workCell); this.cellHeader = util.getOuterHeight(workCell.querySelector('.' + cls.DATE_HEADER_CLASS)); var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS); this.eventHeight = this.parent.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS); var selector = "." + cls.MONTH_HEADER_WRAPPER + " tbody tr,." + cls.RESOURCE_COLUMN_TABLE_CLASS + " tbody tr,." + cls.CONTENT_TABLE_CLASS + " tbody tr"; this.addCellHeight(selector, this.eventHeight, EVENT_GAP, this.cellHeader, this.moreIndicatorHeight); var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS)); var months = this.getMonths(); var groupIndex = (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.uiStateValues.isGroupAdaptive) ? this.parent.uiStateValues.groupIndex : undefined; for (var row = 0; row < months.length; row++) { var wrapper = wrapperCollection[parseInt(row.toString(), 10)]; var td = row + 1; var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS }); wrapper.appendChild(eventWrapper); var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(row.toString(), 10)], 1); var monthEnd = new Date(monthStart.getFullYear(), monthStart.getMonth() + 1, 0); var dayIndex = monthStart.getDay(); var isSpannedCollection = []; if (this.parent.activeViewOptions.orientation === 'Horizontal') { this.renderedEvents = []; } while (monthStart.getTime() <= monthEnd.getTime()) { var leftValue = void 0; var rightValue = void 0; if (this.parent.activeViewOptions.orientation === 'Vertical') { var wrapper_1 = wrapperCollection[parseInt(dayIndex.toString(), 10)]; td = dayIndex + 1; eventWrapper = wrapper_1.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS); if (!eventWrapper) { eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS }); wrapper_1.appendChild(eventWrapper); } if (this.parent.enableRtl) { rightValue = row * this.cellWidth; } else { leftValue = row * this.cellWidth; } } else { if (this.parent.enableRtl) { rightValue = ((dayIndex + monthStart.getDate()) - 1) * this.cellWidth; } else { leftValue = ((dayIndex + monthStart.getDate()) - 1) * this.cellWidth; } } var rowTd = this.parent.element.querySelector(".e-content-wrap tr:nth-child(" + td + ") td"); this.cellHeight = rowTd.offsetHeight; var dayStart = util.resetTime(new Date(monthStart.getTime())); var dayEnd = util.addDays(new Date(dayStart.getTime()), 1); var resource = void 0; if (this.parent.uiStateValues.isGroupAdaptive) { resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]; } var dayEvents = this.parent.eventBase.filterEvents(dayStart, dayEnd, undefined, resource); dayEvents = this.parent.eventBase.sortByDateTime(dayEvents); var _loop_1 = function (index, count) { var eventData = extend({}, dayEvents[parseInt(index.toString(), 10)], null, true); this_1.updateSpannedEvents(eventData, dayStart, dayEnd); var overlapIndex = this_1.getIndex(dayStart); eventData.Index = overlapIndex; var availedHeight = this_1.cellHeader + (this_1.eventHeight * (overlapIndex + 1)) + EVENT_GAP + this_1.moreIndicatorHeight; var appArea = this_1.cellHeight - this_1.cellHeader - this_1.moreIndicatorHeight; var renderedAppCount = Math.floor(appArea / (this_1.eventHeight + EVENT_GAP)); var eventsPerRow = this_1.parent.rowAutoHeight ? 1 : this_1.parent.activeViewOptions.maxEventsPerRow; var moreIndicatorCount = this_1.parent.activeViewOptions.maxEventsPerRow ? count - eventsPerRow : (count - renderedAppCount) <= 0 ? 1 : count - renderedAppCount; if (this_1.parent.activeViewOptions.orientation === 'Horizontal') { var isRendered = this_1.renderedEvents.filter(function (eventObj) { return eventObj.Guid === eventData.Guid; }); var isSpanned = isSpannedCollection.filter(function (eventObj) { return eventObj.Guid === eventData.Guid; }); if (isRendered.length > 0 && isRendered[0].MoreIndicator || isSpanned.length > 0 && isSpanned[0].MoreIndicator) { var moreIndex = this_1.parent.activeViewOptions.orientation === 'Horizontal' ? row : dayIndex; this_1.renderMoreIndicator(eventWrapper, moreIndicatorCount, dayStart, moreIndex, leftValue, rightValue, groupIndex); return "continue"; } else if (isRendered.length > 0 || isSpanned.length > 0) { return "continue"; } } if (this_1.maxHeight && this_1.parent.currentView.indexOf('Timeline') !== -1 && overlapIndex > 0) { return "continue"; } if (this_1.parent.rowAutoHeight || this_1.shouldRenderAppointment(overlapIndex, availedHeight)) { this_1.renderEvent(eventWrapper, eventData, row, leftValue, rightValue, monthStart, dayIndex); if (this_1.parent.rowAutoHeight || this_1.cellHeight > availedHeight) { this_1.updateCellHeight(rowTd, availedHeight); } isSpannedCollection.push(eventData); } else { var moreIndex = this_1.parent.activeViewOptions.orientation === 'Horizontal' ? row : dayIndex; this_1.renderMoreIndicator(eventWrapper, moreIndicatorCount, dayStart, moreIndex, leftValue, rightValue, groupIndex); if (this_1.parent.activeViewOptions.orientation === 'Horizontal') { eventData.MoreIndicator = true; this_1.renderedEvents.push(eventData); isSpannedCollection.push(eventData); } } }; var this_1 = this; for (var index = 0, count = dayEvents.length; index < count; index++) { _loop_1(index, count); } monthStart = util.addDays(new Date(monthStart.getTime()), 1); if (this.parent.activeViewOptions.orientation === 'Vertical') { dayIndex++; this.renderedEvents = []; } } } if (this.parent.rowAutoHeight && this.parent.activeViewOptions.orientation === 'Vertical') { var appContainer = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS)); var tr_1 = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr')); appContainer.forEach(function (ele, index) { var app = [].slice.call(ele.querySelectorAll('.' + cls.APPOINTMENT_CLASS)); var appTop = tr_1[parseInt(index.toString(), 10)].offsetTop + _this.cellHeader + EVENT_GAP; app.forEach(function (app) { var overlap = parseInt(app.getAttribute('data-index'), 10); app.style.top = appTop + (overlap * _this.eventHeight) + 'px'; app.removeAttribute('data-index'); }); }); } }; YearEvent.prototype.updateSpannedEvents = function (eventObj, dayStart, dayEnd) { var isLeftRightResize = (this.isResource && this.parent.activeViewOptions.orientation === 'Vertical') || (!this.isResource && this.parent.activeViewOptions.orientation === 'Horizontal'); var data = { isLeft: true, isRight: true, isBottom: true, isTop: true }; if (dayStart.getTime() <= eventObj[this.fields.startTime].getTime()) { if (isLeftRightResize) { data.isLeft = false; } else { data.isTop = false; } } if ((dayEnd.getTime() >= eventObj[this.fields.endTime].getTime()) || (isLeftRightResize && !this.isResource && util.addDays(dayEnd, -1).getMonth() === eventObj[this.fields.endTime].getMonth()) || (isLeftRightResize && this.isResource && (dayEnd.getTime() <= eventObj[this.fields.endTime].getTime()))) { if (isLeftRightResize) { data.isRight = false; } else { data.isBottom = false; } } eventObj.data = data; }; YearEvent.prototype.timelineResourceEvents = function () { var _this = this; var contentTable = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS); var isVerticalScrollbarAvail = contentTable.offsetWidth > contentTable.clientWidth; var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS); this.cellWidth = this.parent.getElementWidth(workCell); this.cellHeader = 0; var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS); this.eventHeight = this.parent.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS); var selector = "." + cls.MONTH_HEADER_WRAPPER + " tbody tr,." + cls.RESOURCE_COLUMN_TABLE_CLASS + " tbody tr,." + cls.CONTENT_TABLE_CLASS + " tbody tr"; this.addCellHeight(selector, this.eventHeight, EVENT_GAP, this.cellHeader, this.moreIndicatorHeight); var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS)); var resources = this.parent.uiStateValues.isGroupAdaptive ? [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] : this.parent.activeViewOptions.allowVirtualScrolling ? this.parent.resourceBase.renderedResources : this.parent.resourceBase.lastResourceLevel; var months = this.getMonths(); if (this.parent.activeViewOptions.orientation === 'Horizontal') { for (var month = 0; month < months.length; month++) { var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(month.toString(), 10)], 1); for (var i = 0, len = resources.length; i < len; i++) { this.renderedEvents = []; this.renderResourceEvent(wrapperCollection[parseInt(month.toString(), 10)], resources[parseInt(i.toString(), 10)], month, i, monthStart); } } } else { for (var i = 0, len = resources.length; i < len; i++) { this.renderedEvents = []; for (var month = 0; month < months.length; month++) { var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(month.toString(), 10)], 1); this.renderResourceEvent(wrapperCollection[parseInt(i.toString(), 10)], resources[parseInt(i.toString(), 10)], month, i, monthStart); } } } if (this.parent.rowAutoHeight && !isVerticalScrollbarAvail && contentTable.offsetWidth > contentTable.clientWidth) { var appointments = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS)); appointments.forEach(function (ele) { ele.style.removeProperty('left'); ele.style.removeProperty('right'); }); var appContainer = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS)); var conTable_1 = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS); var tr_2 = [].slice.call(conTable_1.querySelectorAll('tbody tr')); appContainer.forEach(function (ele, index) { var appWrapper = [].slice.call(ele.children); var row = tr_2[parseInt(index.toString(), 10)]; appWrapper.forEach(function (appWrap, cellIndex) { var td = row.querySelector("td:nth-child(" + (cellIndex + 1) + ")"); var app = [].slice.call(appWrap.children); var width = _this.parent.getElementWidth(td); var left = td.offsetLeft; if (_this.parent.enableRtl) { var right_1 = conTable_1.offsetWidth - left - td.offsetWidth; app.forEach(function (app) { app.style.width = Math.floor(parseInt(app.style.width, 10) / width) * width + 'px'; app.style.right = right_1 + 'px'; }); } else { app.forEach(function (app) { app.style.width = Math.floor(parseInt(app.style.width, 10) / width) * width + 'px'; app.style.left = left + 'px'; }); } }); }); } }; YearEvent.prototype.shouldRenderAppointment = function (overlapIndex, availedHeight) { var eventsPerRow = this.parent.rowAutoHeight ? 1 : this.parent.activeViewOptions.maxEventsPerRow; if (this.parent.activeViewOptions.maxEventsPerRow && !this.parent.rowAutoHeight && !this.parent.eventSettings.enableIndicator) { return overlapIndex < eventsPerRow; } else if (this.maxOrIndicator) { return overlapIndex < 1; } else { return this.cellHeight > availedHeight; } }; YearEvent.prototype.renderResourceEvent = function (wrapper, resource, month, index, monthStart) { var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS }); wrapper.appendChild(eventWrapper); var monthEnd = util.addDays(util.lastDateOfMonth(new Date(monthStart.getTime())), 1); var eventDatas = this.parent.eventBase.filterEvents(monthStart, monthEnd, undefined, resource); var rowIndex = this.parent.activeViewOptions.orientation === 'Vertical' ? index : month; var td = this.parent.element.querySelector(".e-content-wrap tr:nth-child(" + (rowIndex + 1) + ") td"); this.cellHeight = td.offsetHeight; this.groupOrder = resource.groupOrder; var isSpannedCollection = []; var _loop_2 = function (a) { var data = eventDatas[parseInt(a.toString(), 10)]; var overlapIndex = void 0; var eventData = extend({}, data, null, true); if (this_2.parent.activeViewOptions.group.resources.length > 0) { var eventObj = this_2.isSpannedEvent(eventData, monthStart); overlapIndex = this_2.getIndex(eventObj[this_2.fields.startTime]); eventData.Index = overlapIndex; } else { overlapIndex = this_2.getIndex(eventData[this_2.fields.startTime]); eventData.Index = overlapIndex; } var availedHeight = this_2.cellHeader + (this_2.eventHeight * (a + 1)) + EVENT_GAP + this_2.moreIndicatorHeight; var leftValue = (this_2.parent.activeViewOptions.orientation === 'Vertical') ? month * this_2.cellWidth : index * this_2.cellWidth; if (!this_2.parent.isMinMaxDate(eventData[this_2.fields.startTime])) { return { value: void 0 }; } if (this_2.parent.activeViewOptions.orientation === 'Vertical' && this_2.parent.activeViewOptions.group.resources.length > 0) { var isRendered = this_2.renderedEvents.filter(function (eventObj) { return eventObj.Guid === eventData.Guid; }); var isSpanned = isSpannedCollection.filter(function (eventObj) { return eventObj.Guid === eventData.Guid; }); if (isRendered.length > 0 || isSpanned.length > 0) { return "continue"; } } if (this_2.maxHeight && this_2.parent.currentView.indexOf('Timeline') !== -1 && overlapIndex > 0) { return "continue"; } if (this_2.parent.rowAutoHeight || this_2.shouldRenderAppointment(overlapIndex, availedHeight)) { this_2.renderEvent(eventWrapper, eventData, month, leftValue, leftValue, monthStart, index); this_2.updateCellHeight(td, availedHeight); isSpannedCollection.push(eventData); } else { var moreIndex = this_2.parent.activeViewOptions.orientation === 'Horizontal' ? month : index; this_2.renderMoreIndicator(eventWrapper, eventDatas.length - a, monthStart, moreIndex, leftValue, leftValue, index); if (this_2.parent.activeViewOptions.orientation === 'Horizontal') { for (var i = index; i < eventDatas.length; i++) { this_2.renderedEvents.push(extend({}, eventDatas[parseInt(i.toString(), 10)], { Index: overlapIndex + i }, true)); } } return "break"; } }; var this_2 = this; for (var a = 0; a < eventDatas.length; a++) { var state_1 = _loop_2(a); if (typeof state_1 === "object") return state_1.value; if (state_1 === "break") break; } }; YearEvent.prototype.setMaxEventHeight = function (event, cell) { var height = (cell.offsetHeight - this.cellHeader) - (this.maxHeight ? 0 : this.moreIndicatorHeight); setStyleAttribute(event, { 'height': height + 'px', 'align-items': 'center' }); }; // eslint-disable-next-line max-len YearEvent.prototype.renderEvent = function (wrapper, eventData, row, left, right, monthDate, rowIndex) { var _this = this; var eventObj = this.isSpannedEvent(eventData, monthDate); var wrap = this.createEventElement(eventObj); var width; var index; if (eventObj.isSpanned.count === 1) { var endTime = util.addDays(eventObj[this.fields.endTime], -1); eventObj[this.fields.endTime] = (endTime > eventObj[this.fields.startTime]) ? endTime : eventObj[this.fields.endTime]; } if (eventObj[this.fields.startTime] > eventObj[this.fields.endTime]) { return; } if (this.parent.activeViewOptions.orientation === 'Horizontal') { index = row + 1; if (eventObj[this.fields.startTime].getTime() === eventObj[this.fields.endTime].getTime()) { eventObj.isSpanned.count = 1; } width = eventObj.isSpanned.count * this.cellWidth; } else { index = rowIndex + 1; width = this.isResource ? eventObj.isSpanned.count * this.cellWidth : this.cellWidth; } var rowTd = this.parent.element.querySelector(".e-content-wrap tr:nth-child(" + index + ") td"); var top = rowTd.offsetTop + this.cellHeader + (this.eventHeight * eventObj.Index) + EVENT_GAP; setStyleAttribute(wrap, { 'width': width + 'px', 'height': this.eventHeight + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px' }); if (this.maxOrIndicator && this.parent.currentView.indexOf('Timeline') !== -1) { this.setMaxEventHeight(wrap, rowTd); } if (!this.isResource && this.parent.rowAutoHeight && this.parent.activeViewOptions.orientation === 'Vertical') { wrap.setAttribute('data-index', eventObj.Index.toString()); } var args = { data: eventObj, element: wrap, cancel: false, type: 'event' }; this.parent.trigger(events.eventRendered, args, function (eventArgs) { if (!eventArgs.cancel) { wrapper.appendChild(wrap); _this.wireAppointmentEvents(wrap, eventObj); if (_this.parent.activeViewOptions.group.resources.length > 0) { _this.renderedEvents.push(extend({}, eventObj, null, true)); } else if (_this.parent.activeViewOptions.orientation === 'Vertical') { _this.renderedEvents.push(extend({}, eventObj, null, true)); } else if ((eventObj.isSpanned.isRight || eventObj.isSpanned.isLeft) && _this.parent.activeViewOptions.orientation === 'Horizontal' || !eventObj.isSpanned.isRight) { _this.renderedEvents.push(extend({}, eventObj, null, true)); } } }); }; // eslint-disable-next-line max-len YearEvent.prototype.renderMoreIndicator = function (wrapper, count, startDate, row, left, right, index) { if (this.parent.activeViewOptions.group.resources.length === 0 && wrapper.querySelector('[data-start-date="' + startDate.getTime() + '"]')) { return; } var endDate; if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) { endDate = util.addDays(util.lastDateOfMonth(new Date(startDate.getTime())), 1); } else { endDate = util.addDays(new Date(startDate.getTime()), 1); } var moreIndicator = this.getMoreIndicatorElement(count, startDate, endDate); var rowTr = this.parent.element.querySelector(".e-content-wrap tr:nth-child(" + (row + 1) + ")"); var top = rowTr.offsetTop + (this.cellHeight - this.moreIndicatorHeight); left = (Math.floor(left / this.cellWidth) * this.cellWidth); right = (Math.floor(right / this.cellWidth) * this.cellWidth); setStyleAttribute(moreIndicator, { 'width': this.cellWidth + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px' }); if (!isNullOrUndefined(index)) { moreIndicator.setAttribute('data-group-index', index.toString()); } wrapper.appendChild(moreIndicator); EventHandler.add(moreIndicator, 'click', this.moreIndicatorClick, this); }; YearEvent.prototype.createEventElement = function (record) { var eventSubject = (record[this.fields.subject] || this.parent.eventSettings.fields.subject.default || this.parent.localeObj.getConstant('addTitle')); var eventWrapper = createElement('div', { className: cls.APPOINTMENT_CLASS, attrs: { 'data-id': 'Appointment_' + record[this.fields.id], 'data-guid': record.Guid, 'role': 'button', 'tabindex': '0', 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-label': this.parent.getAnnouncementString(record) } }); if (this.cssClass) { addClass([eventWrapper], this.cssClass); } if (record[this.fields.isReadonly]) { addClass([eventWrapper], cls.READ_ONLY); } if (this.parent.activeViewOptions.group.resources.length > 0) { var resIndex = this.getGroupIndexFromEvent(record); eventWrapper.setAttribute('data-group-index', resIndex.toString()); } var templateElement = []; var eventObj = extend({}, record, null, true); if (this.parent.activeViewOptions.eventTemplate) { var templateId = this.parent.element.id + '_' + this.parent.activeViewOptions.eventTemplateName + 'eventTemplate'; templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, 'eventTemplate', templateId, false, undefined, undefined, this.parent.root); } else { var locationEle = (record[this.fields.location] || this.parent.eventSettings.fields.location.default || ''); var subjectEle = createElement('div', { className: cls.SUBJECT_CLASS, innerHTML: (eventSubject + (locationEle ? ';&nbsp' + locationEle : '')) }); var startTimeEle = createElement('div', { className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''), innerHTML: this.parent.getTimeString(eventObj[this.fields.startTime]) }); var endTimeEle = createElement('div', { className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''), innerHTML: this.parent.getTimeString(eventObj[this.fields.endTime]) }); addClass([subjectEle], 'e-text-center'); if (record[this.fields.isAllDay]) { templateElement = [subjectEle]; } else if (!eventObj.isLeft && !eventObj.isRight) { templateElement = [startTimeEle, subjectEle, endTimeEle]; } else { if (!eventObj.isLeft) { templateElement.push(startTimeEle); } templateElement.push(subjectEle); if (!eventObj.isRight) { templateElement.push(endTimeEle); } } } var appointmentDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS }); append(templateElement, appointmentDetails); eventWrapper.appendChild(appointmentDetails); this.parent.eventBase.renderSpannedIcon(eventWrapper, record.isSpanned); this.renderResizeHandler(eventWrapper, record.data, record[this.fields.isReadonly]); this.applyResourceColor(eventWrapper, eventObj, 'backgroundColor', this.groupOrder); return eventWrapper; }; YearEvent.prototype.isSpannedEvent = function (eventObj, monthDate) { var monthStart = new Date(monthDate.getFullYear(), monthDate.getMonth(), 1); var monthEnd = util.addDays(new Date(monthDate.getFullYear(), monthDate.getMonth() + 1, 0), 1); var eventData = extend({}, eventObj, null, true); var eventStart = eventData[this.fields.startTime]; var eventEnd = eventData[this.fields.endTime]; var isSpanned = { isLeft: false, isRight: false, count: 1 }; var yearStart = new Date(this.parent.selectedDate.getFullYear(), this.parent.firstMonthOfYear, 1); var yearEnd = util.addMonths(yearStart, this.parent.monthsCount); if (this.isResource) { this.updateSpannedEvents(eventObj, monthStart, monthEnd); } if (this.parent.activeViewOptions.orientation === 'Vertical' && this.parent.activeViewOptions.group.resources.length > 0) { this.updateSpannedEventDetails(eventStart, eventEnd, yearStart, yearEnd, eventData, isSpanned); var originalStartTime = eventData[this.fields.startTime]; var originalEndTime = new Date(eventData[this.fields.endTime] - 1); isSpanned.count = (originalEndTime.getMonth() - originalStartTime.getMonth()) + (this.parent.monthsCount * (originalEndTime.getFullYear() - originalStartTime.getFullYear())) + 1; } else { this.updateSpannedEventDetails(eventStart, eventEnd, monthStart, monthEnd, eventData, isSpanned); if (this.parent.activeViewOptions.group.resources.length === 0 || this.parent.uiStateValues.isGroupAdaptive) { var end = util.resetTime(eventData[this.fields.endTime]).getTime(); var start = util.resetTime(eventData[this.fields.startTime]).getTime(); if (eventObj[this.fields.isAllDay] && end === eventObj[this.fields.endTime].getTime() || isSpanned.isRight) { end = util.addDays(new Date(end), -1).getTime(); } isSpanned.count = Math.round((end - start) / util.MS_PER_DAY) + 1; } } eventData.isSpanned = isSpanned; if (util.resetTime(eventStart).getTime() < util.resetTime(this.parent.minDate).getTime()) { eventData[this.fields.startTime] = this.parent.minDate; } if (util.resetTime(eventEnd).getTime() > util.resetTime(this.parent.maxDate).getTime()) { eventData[this.fields.endTime] = this.parent.maxDate; } return eventData; }; YearEvent.prototype.updateSpannedEventDetails = function (eventStart, eventEnd, viewStart, viewEnd, eventObj, isSpanned) { if (eventStart.getTime() < viewStart.getTime()) { eventObj[this.fields.startTime] = viewStart; isSpanned.isLeft = true; } if (eventEnd.getTime() > viewEnd.getTime()) { eventObj[this.fields.endTime] = viewEnd; isSpanned.isRight = true; } }; YearEvent.prototype.getOverlapEvents = function (date, appointments) { var appointmentsList = []; var dateStart; var dateEnd; if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) { var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(date.getTime())); var monthEnd = util.addDays(this.parent.calendarUtil.getMonthEndDate(new Date(date.getTime())), -1); dateStart = util.resetTime(new Date(monthStart.getTime())).getTime(); dateEnd = util.resetTime(new Date(monthEnd.getTime())).getTime(); } else { if (this.parent.rowAutoHeight) { dateStart = util.resetTime(new Date(date.getTime())).getTime(); dateEnd = util.addDays(util.resetTime(new Date(date.getTime())), 1).getTime(); } else { dateStart = dateEnd = util.resetTime(new Date(date.getTime())).getTime(); } } for (var _i = 0, appointments_1 = appointments; _i < appointments_1.length; _i++) { var app = appointments_1[_i]; var appStart = new Date(app[this.fields.startTime].getTime()); var appEnd = new Date(app[this.fields.endTime].getTime()); var timeCondition = app[this.fields.isAllDay] ? util.resetTime(appEnd).getTime() > dateStart : util.resetTime(appEnd).getTime() >= dateStart; if (((util.resetTime(appStart).getTime() <= dateStart) && (timeCondition)) || (util.resetTime(appStart).getTime() >= dateStart) && (util.resetTime(appEnd).getTime() <= dateEnd)) { appointmentsList.push(app); } else if (this.parent.activeViewOptions.orientation === 'Vertical') { if (util.resetTime(appStart).getTime() >= dateStart && util.resetTime(appEnd).getTime() >= dateEnd) { appointmentsList.push(app); } } } return appointmentsList; }; YearEvent.prototype.getMonths = function () { var _this = this; // eslint-disable-next-line prefer-spread return Array.apply(null, { length: this.parent.monthsCount }).map(function (value, index) { return _this.parent.firstMonthOfYear + index; }); }; YearEvent.prototype.removeCellHeight = function () { var elementSelector = "." + cls.MONTH_HEADER_WRAPPER + " tbody tr,." + cls.RESOURCE_COLUMN_TABLE_CLASS + " tbody tr,." + cls.CONTENT_TABLE_CLASS + " tbody tr"; var rows = [].slice.call(this.element.querySelectorAll(elementSelector)); for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) { var row = rows_1[_i]; row.firstElementChild.style.height = ''; } }; YearEvent.prototype.destroy = function () { _super.prototype.destroy.call(this); this.parent = null; }; return YearEvent; }(TimelineEvent)); export { YearEvent };