@syncfusion/ej2-schedule 27.1.51 → 27.1.53

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.
@@ -7469,8 +7469,27 @@ class VerticalEvent extends EventBase {
7469
7469
  if (this.parent.activeViewOptions.group.resources.length > 0) {
7470
7470
  this.overlapList = this.filterEventsByResource(this.resources[parseInt(resource.toString(), 10)], this.overlapList);
7471
7471
  }
7472
+ const queue = [];
7472
7473
  this.overlapList.forEach((obj) => {
7473
- let filterList = appointmentList.filter((data) => data[fieldMapping.endTime] > obj[fieldMapping.startTime] && data[fieldMapping.startTime] <= obj[fieldMapping.endTime]);
7474
+ queue.push(obj);
7475
+ let filterList = [];
7476
+ const processedIds = new Set();
7477
+ while (queue.length > 0) {
7478
+ const currentObj = queue.shift();
7479
+ const overlaps = appointmentList.filter((data) => {
7480
+ return data[fieldMapping.endTime] > currentObj[fieldMapping.startTime] &&
7481
+ data[fieldMapping.startTime] <= currentObj[fieldMapping.endTime] &&
7482
+ !processedIds.has(data[fieldMapping.id]);
7483
+ });
7484
+ overlaps.forEach((overlap) => {
7485
+ filterList.push(overlap);
7486
+ processedIds.add(overlap[fieldMapping.id]);
7487
+ queue.push(overlap);
7488
+ });
7489
+ if (processedIds.size < appointmentList.length - 1) {
7490
+ break;
7491
+ }
7492
+ }
7474
7493
  if (this.parent.activeViewOptions.group.resources.length > 0) {
7475
7494
  filterList = this.filterEventsByResource(this.resources[parseInt(resource.toString(), 10)], filterList);
7476
7495
  }
@@ -8270,7 +8289,7 @@ class MonthEvent extends EventBase {
8270
8289
  renderEventElement(event, appointmentElement, cellTd) {
8271
8290
  const eventType = appointmentElement.classList.contains(BLOCK_APPOINTMENT_CLASS) ? 'blockEvent' : 'event';
8272
8291
  const isAppointment = appointmentElement.classList.contains(APPOINTMENT_CLASS);
8273
- const eventObj = this.getEventData(event);
8292
+ const eventObj = this.parent.currentView === 'Month' ? this.getSpannedTime(event) : this.getEventData(event);
8274
8293
  const args = { data: eventObj, element: appointmentElement, cancel: false, type: eventType };
8275
8294
  this.parent.trigger(eventRendered, args, (eventArgs) => {
8276
8295
  if (eventArgs.cancel) {
@@ -8281,6 +8300,16 @@ class MonthEvent extends EventBase {
8281
8300
  }
8282
8301
  });
8283
8302
  }
8303
+ getSpannedTime(event) {
8304
+ const eventObj = extend({}, event, null, true);
8305
+ if ((eventObj[this.fields.startTime]).getDate() === (eventObj.data[this.fields.startTime]).getDate()) {
8306
+ eventObj[this.fields.startTime] = eventObj.data[this.fields.startTime];
8307
+ }
8308
+ if ((eventObj[this.fields.endTime]).getDate() === (eventObj.data[this.fields.endTime]).getDate()) {
8309
+ eventObj[this.fields.endTime] = eventObj.data[this.fields.endTime];
8310
+ }
8311
+ return eventObj;
8312
+ }
8284
8313
  getEventData(event) {
8285
8314
  const eventObj = extend({}, event, null, true);
8286
8315
  eventObj[this.fields.startTime] = event.data[this.fields.startTime];
@@ -10800,7 +10829,7 @@ class EventTooltip {
10800
10829
  this.parent.resetTemplates(['tooltipTemplate', 'headerTooltipTemplate']);
10801
10830
  }
10802
10831
  setContent(content) {
10803
- this.tooltipObj.setProperties({ content: content }, true);
10832
+ this.tooltipObj.setProperties({ content: content, windowCollision: true }, true);
10804
10833
  }
10805
10834
  close() {
10806
10835
  this.tooltipObj.close();
@@ -12937,6 +12966,9 @@ class EventWindow {
12937
12966
  else if (element.classList.contains('e-checkbox')) {
12938
12967
  fieldSelector = 'e-checkbox';
12939
12968
  }
12969
+ else if (element.classList.contains('e-numerictextbox')) {
12970
+ fieldSelector = 'e-numerictextbox';
12971
+ }
12940
12972
  const classSelector = isDropDowns ? `.${fieldSelector}:not(.e-control)` : `.${fieldSelector}`;
12941
12973
  const control = closest(element, classSelector) || element.querySelector(`.${fieldSelector}`);
12942
12974
  if (control) {
@@ -13667,6 +13699,9 @@ class EventWindow {
13667
13699
  else if (element.classList.contains('e-checkbox')) {
13668
13700
  value = element.ej2_instances[0].checked;
13669
13701
  }
13702
+ else if (element.classList.contains('e-numerictextbox')) {
13703
+ value = element.ej2_instances[0].value;
13704
+ }
13670
13705
  else {
13671
13706
  if (element.type === 'checkbox') {
13672
13707
  value = element.checked;
@@ -13711,6 +13746,11 @@ class EventWindow {
13711
13746
  instance.checked = value;
13712
13747
  instance.dataBind();
13713
13748
  }
13749
+ else if (element.classList.contains('e-numerictextbox')) {
13750
+ const instance = element.ej2_instances[0];
13751
+ instance.value = value;
13752
+ instance.dataBind();
13753
+ }
13714
13754
  else {
13715
13755
  if (element.type !== 'checkbox') {
13716
13756
  element.value = value || '';
@@ -13748,6 +13788,11 @@ class EventWindow {
13748
13788
  instance.checked = false;
13749
13789
  instance.dataBind();
13750
13790
  }
13791
+ else if (element.classList.contains('e-numerictextbox')) {
13792
+ const instance = element.ej2_instances[0];
13793
+ instance.value = null;
13794
+ instance.dataBind();
13795
+ }
13751
13796
  else {
13752
13797
  if (element.type === 'checkbox') {
13753
13798
  element.checked = false;
@@ -18764,8 +18809,9 @@ let Schedule = class Schedule extends Component {
18764
18809
  const msMajorInterval = this.activeViewOptions.timeScale.interval * MS_PER_MINUTE;
18765
18810
  const msInterval = msMajorInterval / this.activeViewOptions.timeScale.slotCount;
18766
18811
  const offsetDiff = ((viewStartHour.getTimezoneOffset() - startHour.getTimezoneOffset()) * MS_PER_MINUTE);
18812
+ const endOffsetDiff = Math.abs((viewStartHour.getTimezoneOffset() - endHour.getTimezoneOffset()) * MS_PER_MINUTE);
18767
18813
  let startIndex = Math.round((startHour.getTime() - viewStartHour.getTime() + offsetDiff) / msInterval);
18768
- let endIndex = Math.ceil((endHour.getTime() - viewStartHour.getTime() + offsetDiff) / msInterval);
18814
+ let endIndex = Math.ceil((endHour.getTime() - viewStartHour.getTime() - endOffsetDiff) / msInterval);
18769
18815
  const tempStartIndex = startIndex;
18770
18816
  const tempEndIndex = endIndex;
18771
18817
  const cells = [];
@@ -20708,11 +20754,8 @@ class Resize extends ActionBase {
20708
20754
  const eventStart = new Date(this.actionObj.event[this.parent.eventFields.startTime].getTime());
20709
20755
  const eventEnd = new Date(this.actionObj.event[this.parent.eventFields.endTime].getTime());
20710
20756
  let resizeTime;
20711
- let isDateHeader = false;
20712
20757
  let headerName = this.parent.currentView;
20713
- const isTimeViews = ['TimelineDay', 'TimelineWeek', 'TimelineWorkWeek'].indexOf(this.parent.currentView) > -1;
20714
20758
  const isTimelineMonth = this.parent.currentView === 'TimelineMonth';
20715
- const isWithoutScale = isTimelineMonth || isTimeViews && !this.parent.activeViewOptions.timeScale.enable;
20716
20759
  if (this.parent.activeView.isTimelineView()) {
20717
20760
  const tr = this.parent.getContentTable().querySelector('tr');
20718
20761
  if (this.parent.activeViewOptions.headerRows.length > 0) {
@@ -20744,7 +20787,6 @@ class Resize extends ActionBase {
20744
20787
  }
20745
20788
  cellIndex = !isTimelineMonth ? Math.round(offsetValue / (this.parent.getElementWidth(tr) / noOfDays)) :
20746
20789
  Math.floor(offsetValue / Math.floor(this.parent.getElementWidth(tr) / noOfDays));
20747
- isDateHeader = isTimeViews && headerName === 'Date';
20748
20790
  cellIndex = isLeft ? cellIndex : isTimelineMonth ? cellIndex + 1 : cellIndex;
20749
20791
  isLastCell = cellIndex === tdCollections.length;
20750
20792
  cellIndex = (cellIndex < 0) ? 0 : (cellIndex >= noOfDays) ? noOfDays - 1 : cellIndex;
@@ -20810,15 +20852,14 @@ class Resize extends ActionBase {
20810
20852
  !this.parent.activeViewOptions.timeScale.enable;
20811
20853
  if (isLeft) {
20812
20854
  if ((eventEnd.getTime() - resizeTime.getTime()) <= 0) {
20813
- resizeTime = isWithoutScale ? resetTime(eventEnd) : eventStart;
20855
+ resizeTime = isNotHourSlot ? resetTime(eventEnd) : eventStart;
20814
20856
  }
20815
20857
  this.actionObj.start = !isNotHourSlot ? this.calculateIntervalTime(resizeTime) : resizeTime;
20816
20858
  }
20817
20859
  else {
20818
- const isTimeScaleViews = isTimeViews && this.parent.activeViewOptions.timeScale.enable;
20819
- let resizeEnd = ((!isTimeScaleViews || isDateHeader || isTimeViews && ['Week', 'Month', 'Year'].indexOf(headerName) > -1)
20820
- && resizeTime.getHours() === 0 && resizeTime.getMinutes() === 0) ? addDays(resizeTime, 1) : resizeTime;
20821
- if (isWithoutScale && (resizeEnd.getTime() - eventStart.getTime()) <= 0) {
20860
+ let resizeEnd = (isNotHourSlot && resizeTime.getHours() === 0 && resizeTime.getMinutes() === 0) ?
20861
+ addDays(resizeTime, 1) : resizeTime;
20862
+ if (isNotHourSlot && (resizeEnd.getTime() - eventStart.getTime()) <= 0) {
20822
20863
  resizeEnd = addDays(resetTime(eventStart), 1);
20823
20864
  }
20824
20865
  this.actionObj.end = !isNotHourSlot ? this.calculateIntervalTime(resizeEnd) : resizeEnd;