@syncfusion/ej2-schedule 27.1.55 → 27.1.57
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/dist/ej2-schedule.min.js +2 -2
- package/dist/ej2-schedule.umd.min.js +2 -2
- package/dist/ej2-schedule.umd.min.js.map +1 -1
- package/dist/es6/ej2-schedule.es2015.js +68 -13
- package/dist/es6/ej2-schedule.es2015.js.map +1 -1
- package/dist/es6/ej2-schedule.es5.js +68 -13
- package/dist/es6/ej2-schedule.es5.js.map +1 -1
- package/dist/global/ej2-schedule.min.js +2 -2
- package/dist/global/ej2-schedule.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +9 -9
- package/src/recurrence-editor/date-generator.js +4 -3
- package/src/schedule/base/constant.d.ts +8 -0
- package/src/schedule/base/constant.js +8 -0
- package/src/schedule/event-renderer/agenda-base.d.ts +1 -1
- package/src/schedule/event-renderer/agenda-base.js +16 -1
- package/src/schedule/event-renderer/event-base.d.ts +2 -0
- package/src/schedule/event-renderer/event-base.js +32 -5
- package/src/schedule/renderer/agenda.js +5 -1
|
@@ -66,6 +66,14 @@ const cellSelect = 'cellSelect';
|
|
|
66
66
|
const virtualScrollStart = 'virtualScrollStart';
|
|
67
67
|
/** @private */
|
|
68
68
|
const virtualScrollStop = 'virtualScrollStop';
|
|
69
|
+
/** @private */
|
|
70
|
+
const noEvents = 'noEvents';
|
|
71
|
+
/** @private */
|
|
72
|
+
const agendaCells = 'agendaCells';
|
|
73
|
+
/** @private */
|
|
74
|
+
const resourceHeader = 'resourceHeader';
|
|
75
|
+
/** @private */
|
|
76
|
+
const dateHeader = 'dateHeader';
|
|
69
77
|
/**
|
|
70
78
|
* Specifies schedule internal events
|
|
71
79
|
*/
|
|
@@ -4031,7 +4039,7 @@ function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCount = M
|
|
|
4031
4039
|
dailyType(modifiedDate, ruleObject.until, data, ruleObject);
|
|
4032
4040
|
break;
|
|
4033
4041
|
case 'WEEKLY':
|
|
4034
|
-
weeklyType(modifiedDate, ruleObject.until, data, ruleObject);
|
|
4042
|
+
weeklyType(modifiedDate, ruleObject.until, data, ruleObject, startDayOfWeek);
|
|
4035
4043
|
break;
|
|
4036
4044
|
case 'MONTHLY':
|
|
4037
4045
|
monthlyType(modifiedDate, ruleObject.until, data, ruleObject);
|
|
@@ -4134,10 +4142,11 @@ function dailyType(startDate, endDate, data, ruleObject) {
|
|
|
4134
4142
|
* @param {Date} endDate Accepts the end date
|
|
4135
4143
|
* @param {number[]} data Accepts the collection of dates
|
|
4136
4144
|
* @param {RecRule} ruleObject Accepts the recurrence rule object
|
|
4145
|
+
* @param {number} startDayOfWeek Accepts the start day index of week
|
|
4137
4146
|
* @returns {void}
|
|
4138
4147
|
* @private
|
|
4139
4148
|
*/
|
|
4140
|
-
function weeklyType(startDate, endDate, data, ruleObject) {
|
|
4149
|
+
function weeklyType(startDate, endDate, data, ruleObject, startDayOfWeek) {
|
|
4141
4150
|
let tempDate = new Date(startDate.getTime());
|
|
4142
4151
|
if (!ruleObject.day.length) {
|
|
4143
4152
|
ruleObject.day.push(DAYINDEX[startDate.getDay()]);
|
|
@@ -4186,7 +4195,7 @@ function weeklyType(startDate, endDate, data, ruleObject) {
|
|
|
4186
4195
|
}
|
|
4187
4196
|
else {
|
|
4188
4197
|
tempDate = getStartDateForWeek(startDate, ruleObject.day);
|
|
4189
|
-
if (interval > 1 && dayIndex.indexOf(ruleObject.day[0]) < startDate.getDay()) {
|
|
4198
|
+
if (interval > 1 && dayIndex.indexOf(ruleObject.day[0]) < (startDate.getDay() - startDayOfWeek)) {
|
|
4190
4199
|
tempDate.setDate(tempDate.getDate() + ((interval - 1) * 7));
|
|
4191
4200
|
}
|
|
4192
4201
|
while (compareDates(tempDate, endDate)) {
|
|
@@ -6056,11 +6065,14 @@ class EventBase {
|
|
|
6056
6065
|
if (eventsData.length > 0) {
|
|
6057
6066
|
const selectedObject = eventsData[eventsData.length - 1];
|
|
6058
6067
|
const eventStartTime = selectedObject[this.parent.eventFields.startTime];
|
|
6059
|
-
let nearestTime
|
|
6068
|
+
let nearestTime;
|
|
6060
6069
|
const isAllDay = this.isAllDayAppointment(selectedObject);
|
|
6061
|
-
if (this.parent.currentView === 'Month' || isAllDay) {
|
|
6070
|
+
if (this.parent.currentView === 'Month' || isAllDay || !this.parent.activeViewOptions.timeScale.enable) {
|
|
6062
6071
|
nearestTime = new Date(+eventStartTime).setHours(0, 0, 0, 0);
|
|
6063
6072
|
}
|
|
6073
|
+
else {
|
|
6074
|
+
nearestTime = this.findNearestSlot(eventStartTime);
|
|
6075
|
+
}
|
|
6064
6076
|
let targetArea;
|
|
6065
6077
|
if (isAllDay && ['Day', 'Week', 'WorkWeek'].indexOf(this.parent.currentView) !== -1) {
|
|
6066
6078
|
targetArea = this.parent.getAllDayRow();
|
|
@@ -6069,7 +6081,8 @@ class EventBase {
|
|
|
6069
6081
|
targetArea = this.parent.getContentTable();
|
|
6070
6082
|
}
|
|
6071
6083
|
let queryString = '[data-date="' + new Date(nearestTime).getTime() + '"]';
|
|
6072
|
-
if (this.parent.activeViewOptions.group.resources
|
|
6084
|
+
if (!isNullOrUndefined(this.parent.activeViewOptions.group.resources) &&
|
|
6085
|
+
this.parent.activeViewOptions.group.resources.length > 0) {
|
|
6073
6086
|
queryString += '[data-group-index="' + this.getGroupIndexFromEvent(selectedObject) + '"]';
|
|
6074
6087
|
}
|
|
6075
6088
|
target = targetArea.querySelector(queryString);
|
|
@@ -6083,6 +6096,25 @@ class EventBase {
|
|
|
6083
6096
|
}
|
|
6084
6097
|
return target;
|
|
6085
6098
|
}
|
|
6099
|
+
findNearestSlot(appointmentTime) {
|
|
6100
|
+
const msMajorInterval = this.parent.activeViewOptions.timeScale.interval * MS_PER_MINUTE;
|
|
6101
|
+
const msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;
|
|
6102
|
+
const numberOfSlots = Math.round(MS_PER_DAY / msInterval);
|
|
6103
|
+
const startTime = new Date(appointmentTime);
|
|
6104
|
+
startTime.setHours(0, 0, 0, 0);
|
|
6105
|
+
const slots = Array.from({ length: numberOfSlots }, (_, i) => {
|
|
6106
|
+
const slotTime = new Date(startTime.getTime() + i * msInterval);
|
|
6107
|
+
return slotTime;
|
|
6108
|
+
});
|
|
6109
|
+
const nearestSlot = slots.reduce((nearest, slot) => {
|
|
6110
|
+
const difference = Math.abs(appointmentTime.getTime() - slot.getTime());
|
|
6111
|
+
if (!nearest || difference < Math.abs(appointmentTime.getTime() - nearest.getTime())) {
|
|
6112
|
+
return slot;
|
|
6113
|
+
}
|
|
6114
|
+
return nearest;
|
|
6115
|
+
}, null);
|
|
6116
|
+
return Math.trunc(nearestSlot.getTime() / 1000) * 1000;
|
|
6117
|
+
}
|
|
6086
6118
|
getGroupIndexFromEvent(eventData) {
|
|
6087
6119
|
let levelIndex;
|
|
6088
6120
|
let resource;
|
|
@@ -6371,7 +6403,7 @@ class EventBase {
|
|
|
6371
6403
|
const newTimezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();
|
|
6372
6404
|
const firstDay = this.parent.activeViewOptions.firstDayOfWeek;
|
|
6373
6405
|
const calendarMode = this.parent.calendarMode;
|
|
6374
|
-
if (event[this.parent.eventFields.recurrenceRule] &&
|
|
6406
|
+
if (event[this.parent.eventFields.recurrenceRule] && this.isDayBasedRecurrence(event) &&
|
|
6375
6407
|
this.parent.timezone && event[this.parent.eventFields.startTimezone] && event[this.parent.eventFields.endTimezone]) {
|
|
6376
6408
|
startDate = this.parent.tzModule.convert(event[this.parent.eventFields.startTime], this.parent.timezone, event[this.parent.eventFields.startTimezone]);
|
|
6377
6409
|
}
|
|
@@ -6391,7 +6423,7 @@ class EventBase {
|
|
|
6391
6423
|
}
|
|
6392
6424
|
let isDSTAdjusted = false;
|
|
6393
6425
|
let convertedDates = [];
|
|
6394
|
-
if (event[this.parent.eventFields.recurrenceRule] &&
|
|
6426
|
+
if (event[this.parent.eventFields.recurrenceRule] && this.isDayBasedRecurrence(event) &&
|
|
6395
6427
|
this.parent.timezone && event[this.parent.eventFields.startTimezone] && event[this.parent.eventFields.endTimezone]) {
|
|
6396
6428
|
isDSTAdjusted = true;
|
|
6397
6429
|
convertedDates.push(...dates.map((date) => this.parent.tzModule.convert(new Date(date), event[this.parent.eventFields.startTimezone], this.parent.timezone).getTime()));
|
|
@@ -6411,6 +6443,10 @@ class EventBase {
|
|
|
6411
6443
|
}
|
|
6412
6444
|
return occurrenceCollection;
|
|
6413
6445
|
}
|
|
6446
|
+
isDayBasedRecurrence(event) {
|
|
6447
|
+
return (event[this.parent.eventFields.recurrenceRule].includes('BYMONTHDAY')
|
|
6448
|
+
|| event[this.parent.eventFields.recurrenceRule].includes('BYDAY'));
|
|
6449
|
+
}
|
|
6414
6450
|
getDSTAdjustedTime(date, event) {
|
|
6415
6451
|
let occurDate = date;
|
|
6416
6452
|
if (this.parent.timezone &&
|
|
@@ -25934,12 +25970,24 @@ class AgendaBase extends ViewBase {
|
|
|
25934
25970
|
}
|
|
25935
25971
|
else if (data.type === 'eventColumn') {
|
|
25936
25972
|
const elementType = (data.eventData.length === 0) ? 'noEvents' : 'data';
|
|
25973
|
+
for (let i = 0; i < ntr.childNodes.length; i++) {
|
|
25974
|
+
const currentElement = ntr.childNodes.item(i);
|
|
25975
|
+
const renderCellElementType = currentElement.classList.contains('e-resource-column') ?
|
|
25976
|
+
resourceHeader : dateHeader;
|
|
25977
|
+
this.parent.trigger(renderCell, {
|
|
25978
|
+
elementType: renderCellElementType, element: currentElement, date: data.date, groupIndex: data.groupIndex
|
|
25979
|
+
});
|
|
25980
|
+
}
|
|
25937
25981
|
ntd = this.createAgendaContentElement(elementType, data.eventData, ntd, data.groupOrder, data.groupIndex);
|
|
25938
25982
|
ntd.setAttribute('data-date', data.date.getTime().toString());
|
|
25939
25983
|
if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {
|
|
25940
25984
|
addClass([ntd], [AGENDA_CELLS_CLASS, AGENDA_DAY_PADDING_CLASS]);
|
|
25941
25985
|
}
|
|
25942
25986
|
ntr.appendChild(ntd);
|
|
25987
|
+
const renderCellType = (data.eventData.length === 0) ? noEvents : agendaCells;
|
|
25988
|
+
this.parent.trigger(renderCell, {
|
|
25989
|
+
elementType: renderCellType, element: ntd, date: data.date, groupIndex: data.groupIndex
|
|
25990
|
+
});
|
|
25943
25991
|
}
|
|
25944
25992
|
else {
|
|
25945
25993
|
ntd.setAttribute('rowspan', data.rowSpan.toString());
|
|
@@ -25980,15 +26028,18 @@ class AgendaBase extends ViewBase {
|
|
|
25980
26028
|
}
|
|
25981
26029
|
return dateHeader;
|
|
25982
26030
|
}
|
|
25983
|
-
renderEmptyContent(tBody, agendaDate) {
|
|
26031
|
+
renderEmptyContent(tBody, agendaDate, hasNoEvents) {
|
|
25984
26032
|
const eTr = this.createTableRowElement(agendaDate, 'noEvents');
|
|
25985
26033
|
const eTd = eTr.children[0];
|
|
25986
|
-
const noEvents = createElement('div', {
|
|
26034
|
+
const noEvents$1 = createElement('div', {
|
|
25987
26035
|
className: AGENDA_EMPTY_EVENT_CLASS,
|
|
25988
26036
|
innerHTML: this.parent.localeObj.getConstant('noEvents')
|
|
25989
26037
|
});
|
|
25990
|
-
eTd.appendChild(noEvents);
|
|
26038
|
+
eTd.appendChild(noEvents$1);
|
|
25991
26039
|
tBody.appendChild(eTr);
|
|
26040
|
+
if (hasNoEvents) {
|
|
26041
|
+
this.parent.trigger(renderCell, { elementType: noEvents, element: eTd, date: agendaDate });
|
|
26042
|
+
}
|
|
25992
26043
|
}
|
|
25993
26044
|
createTableRowElement(date, type) {
|
|
25994
26045
|
const daysCount = getDaysCount(this.parent.selectedDate.getTime(), date.getTime());
|
|
@@ -26135,7 +26186,7 @@ class Agenda extends AgendaBase {
|
|
|
26135
26186
|
}
|
|
26136
26187
|
}
|
|
26137
26188
|
if (tBody.childNodes.length <= 0) {
|
|
26138
|
-
this.renderEmptyContent(tBody, agendaDate);
|
|
26189
|
+
this.renderEmptyContent(tBody, agendaDate, true);
|
|
26139
26190
|
}
|
|
26140
26191
|
}
|
|
26141
26192
|
renderContent(tBody, agendaDate, lastDate) {
|
|
@@ -26192,11 +26243,15 @@ class Agenda extends AgendaBase {
|
|
|
26192
26243
|
const elementType = (!this.parent.hideEmptyAgendaDays && filterData.length === 0) ? 'noEvents' : 'data';
|
|
26193
26244
|
dTd.appendChild(this.createDateHeaderElement(agendaDate));
|
|
26194
26245
|
nTr.appendChild(dTd);
|
|
26246
|
+
this.parent.trigger(renderCell, { elementType: dateHeader, element: dTd, date: agendaDate });
|
|
26195
26247
|
const cTd = this.createAgendaContentElement(elementType, filterData, aTd);
|
|
26196
26248
|
nTr.appendChild(cTd);
|
|
26197
26249
|
if (cTd.querySelectorAll('li').length > 0) {
|
|
26198
26250
|
tBody.appendChild(nTr);
|
|
26199
26251
|
}
|
|
26252
|
+
const renderCellElementType = (!this.parent.hideEmptyAgendaDays && filterData.length === 0) ?
|
|
26253
|
+
noEvents : agendaCells;
|
|
26254
|
+
this.parent.trigger(renderCell, { elementType: renderCellElementType, element: cTd, date: agendaDate });
|
|
26200
26255
|
}
|
|
26201
26256
|
else if (this.parent.activeViewOptions.allowVirtualScrolling) {
|
|
26202
26257
|
day--;
|
|
@@ -28279,5 +28334,5 @@ class Print {
|
|
|
28279
28334
|
}
|
|
28280
28335
|
}
|
|
28281
28336
|
|
|
28282
|
-
export { Agenda, DEFAULT_WEEKS, Day, DragAndDrop, ExcelExport, Gregorian, HeaderRenderer, ICalendarExport, ICalendarImport, Islamic, MS_PER_DAY, MS_PER_MINUTE, Month, MonthAgenda, Print, RecurrenceEditor, Resize, Schedule, TimelineMonth, TimelineViews, TimelineYear, Timezone, ViewBase, WEEK_LENGTH, Week, WorkWeek, Year, actionBegin, actionComplete, actionFailure, addDays, addMonths, addYears, capitalizeFirstWord, cellClick, cellDoubleClick, cellMouseDown, cellSelect, contentReady, dataBinding, dataBound, dataReady, documentClick, drag, dragStart, dragStop, eventClick, eventDoubleClick, eventRendered, eventsLoaded, extractObjectFromRule, findIndexInData, firstDateOfMonth, generate, generateSummary, getCalendarUtil, getDateCount, getDateFromRecurrenceDateString, getDateFromString, getDateInMs, getDaysCount, getElementHeight, getElementHeightFromClass, getElementTop, getElementWidth, getElementWidthFromClass, getMaxDays, getOuterHeight, getRecurrenceStringFromDate, getScrollBarWidth, getStartEndHours, getTranslateX, getTranslateY, getUniversalTime, getWeekFirstDate, getWeekLastDate, getWeekMiddleDate, getWeekNumber, hover, initialEnd, initialLoad, inlineClick, isDaylightSavingTime, isIPadDevice, isMobile, lastDateOfMonth, moreEventsClick, navigating, popupClose, popupOpen, print, removeChildren, renderCell, resetScrollbarWidth, resetTime, resizeStart, resizeStop, resizing, scroll, scrollUiUpdate, select, setTime, timezoneData, uiUpdate, virtualScroll, virtualScrollStart, virtualScrollStop };
|
|
28337
|
+
export { Agenda, DEFAULT_WEEKS, Day, DragAndDrop, ExcelExport, Gregorian, HeaderRenderer, ICalendarExport, ICalendarImport, Islamic, MS_PER_DAY, MS_PER_MINUTE, Month, MonthAgenda, Print, RecurrenceEditor, Resize, Schedule, TimelineMonth, TimelineViews, TimelineYear, Timezone, ViewBase, WEEK_LENGTH, Week, WorkWeek, Year, actionBegin, actionComplete, actionFailure, addDays, addMonths, addYears, agendaCells, capitalizeFirstWord, cellClick, cellDoubleClick, cellMouseDown, cellSelect, contentReady, dataBinding, dataBound, dataReady, dateHeader, documentClick, drag, dragStart, dragStop, eventClick, eventDoubleClick, eventRendered, eventsLoaded, extractObjectFromRule, findIndexInData, firstDateOfMonth, generate, generateSummary, getCalendarUtil, getDateCount, getDateFromRecurrenceDateString, getDateFromString, getDateInMs, getDaysCount, getElementHeight, getElementHeightFromClass, getElementTop, getElementWidth, getElementWidthFromClass, getMaxDays, getOuterHeight, getRecurrenceStringFromDate, getScrollBarWidth, getStartEndHours, getTranslateX, getTranslateY, getUniversalTime, getWeekFirstDate, getWeekLastDate, getWeekMiddleDate, getWeekNumber, hover, initialEnd, initialLoad, inlineClick, isDaylightSavingTime, isIPadDevice, isMobile, lastDateOfMonth, moreEventsClick, navigating, noEvents, popupClose, popupOpen, print, removeChildren, renderCell, resetScrollbarWidth, resetTime, resizeStart, resizeStop, resizing, resourceHeader, scroll, scrollUiUpdate, select, setTime, timezoneData, uiUpdate, virtualScroll, virtualScrollStart, virtualScrollStop };
|
|
28283
28338
|
//# sourceMappingURL=ej2-schedule.es2015.js.map
|