@syncfusion/ej2-schedule 20.3.61 → 20.4.38

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.
Files changed (157) hide show
  1. package/.eslintrc.json +16 -1
  2. package/CHANGELOG.md +8 -0
  3. package/README.md +62 -46
  4. package/dist/ej2-schedule.min.js +2 -2
  5. package/dist/ej2-schedule.umd.min.js +2 -2
  6. package/dist/ej2-schedule.umd.min.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es2015.js +786 -524
  8. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  9. package/dist/es6/ej2-schedule.es5.js +821 -535
  10. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  11. package/dist/global/ej2-schedule.min.js +2 -2
  12. package/dist/global/ej2-schedule.min.js.map +1 -1
  13. package/dist/global/index.d.ts +1 -1
  14. package/package.json +22 -30
  15. package/src/common/calendar-util.js +1 -1
  16. package/src/recurrence-editor/date-generator.js +26 -26
  17. package/src/recurrence-editor/recurrence-editor.js +5 -5
  18. package/src/schedule/actions/action-base.js +3 -3
  19. package/src/schedule/actions/crud.js +16 -16
  20. package/src/schedule/actions/drag.js +36 -32
  21. package/src/schedule/actions/keyboard.js +10 -8
  22. package/src/schedule/actions/resize.js +6 -6
  23. package/src/schedule/actions/touch.js +4 -3
  24. package/src/schedule/actions/virtual-scroll.js +10 -7
  25. package/src/schedule/base/interface.d.ts +8 -1
  26. package/src/schedule/base/resource.d.ts +1 -0
  27. package/src/schedule/base/resource.js +179 -93
  28. package/src/schedule/base/schedule-model.d.ts +7 -0
  29. package/src/schedule/base/schedule.d.ts +23 -0
  30. package/src/schedule/base/schedule.js +73 -22
  31. package/src/schedule/base/util.js +4 -6
  32. package/src/schedule/event-renderer/agenda-base.js +36 -31
  33. package/src/schedule/event-renderer/event-base.js +25 -25
  34. package/src/schedule/event-renderer/inline-edit.js +8 -5
  35. package/src/schedule/event-renderer/month.js +17 -14
  36. package/src/schedule/event-renderer/timeline-view.js +11 -11
  37. package/src/schedule/event-renderer/vertical-view.d.ts +1 -0
  38. package/src/schedule/event-renderer/vertical-view.js +97 -70
  39. package/src/schedule/event-renderer/year.js +25 -17
  40. package/src/schedule/exports/calendar-export.js +4 -4
  41. package/src/schedule/exports/calendar-import.js +14 -15
  42. package/src/schedule/exports/excel-export.js +1 -1
  43. package/src/schedule/models/group-model.d.ts +8 -0
  44. package/src/schedule/models/group.d.ts +7 -0
  45. package/src/schedule/models/group.js +3 -0
  46. package/src/schedule/models/views-model.d.ts +8 -1
  47. package/src/schedule/models/views.d.ts +7 -1
  48. package/src/schedule/models/views.js +3 -0
  49. package/src/schedule/popups/event-tooltip.js +3 -2
  50. package/src/schedule/popups/event-window.js +36 -30
  51. package/src/schedule/popups/quick-popups.js +6 -6
  52. package/src/schedule/renderer/agenda.js +5 -5
  53. package/src/schedule/renderer/header-renderer.d.ts +1 -1
  54. package/src/schedule/renderer/header-renderer.js +21 -5
  55. package/src/schedule/renderer/month-agenda.js +11 -4
  56. package/src/schedule/renderer/month.js +44 -16
  57. package/src/schedule/renderer/renderer.js +3 -3
  58. package/src/schedule/renderer/timeline-header-row.js +7 -7
  59. package/src/schedule/renderer/timeline-month.js +5 -5
  60. package/src/schedule/renderer/timeline-view.js +2 -2
  61. package/src/schedule/renderer/timeline-year.js +20 -14
  62. package/src/schedule/renderer/vertical-view.js +24 -9
  63. package/src/schedule/renderer/view-base.d.ts +3 -0
  64. package/src/schedule/renderer/view-base.js +11 -3
  65. package/src/schedule/renderer/year.js +11 -5
  66. package/styles/bootstrap-dark.css +364 -101
  67. package/styles/bootstrap.css +363 -99
  68. package/styles/bootstrap4.css +375 -141
  69. package/styles/bootstrap5-dark.css +339 -137
  70. package/styles/bootstrap5.css +339 -137
  71. package/styles/fabric-dark.css +330 -101
  72. package/styles/fabric.css +316 -106
  73. package/styles/fluent-dark.css +395 -102
  74. package/styles/fluent.css +395 -102
  75. package/styles/highcontrast-light.css +407 -98
  76. package/styles/highcontrast.css +399 -113
  77. package/styles/material-dark.css +362 -110
  78. package/styles/material.css +404 -110
  79. package/styles/recurrence-editor/_layout.scss +42 -28
  80. package/styles/recurrence-editor/bootstrap-dark.css +137 -28
  81. package/styles/recurrence-editor/bootstrap-dark.scss +5 -0
  82. package/styles/recurrence-editor/bootstrap.css +137 -28
  83. package/styles/recurrence-editor/bootstrap.scss +5 -0
  84. package/styles/recurrence-editor/bootstrap4.css +171 -28
  85. package/styles/recurrence-editor/bootstrap4.scss +5 -0
  86. package/styles/recurrence-editor/bootstrap5-dark.css +178 -28
  87. package/styles/recurrence-editor/bootstrap5-dark.scss +5 -0
  88. package/styles/recurrence-editor/bootstrap5.css +178 -28
  89. package/styles/recurrence-editor/bootstrap5.scss +5 -0
  90. package/styles/recurrence-editor/fabric-dark.css +113 -28
  91. package/styles/recurrence-editor/fabric-dark.scss +5 -0
  92. package/styles/recurrence-editor/fabric.css +106 -28
  93. package/styles/recurrence-editor/fabric.scss +5 -0
  94. package/styles/recurrence-editor/fluent-dark.css +158 -28
  95. package/styles/recurrence-editor/fluent-dark.scss +5 -0
  96. package/styles/recurrence-editor/fluent.css +158 -28
  97. package/styles/recurrence-editor/fluent.scss +5 -0
  98. package/styles/recurrence-editor/highcontrast-light.css +110 -28
  99. package/styles/recurrence-editor/highcontrast-light.scss +5 -0
  100. package/styles/recurrence-editor/highcontrast.css +110 -28
  101. package/styles/recurrence-editor/highcontrast.scss +5 -0
  102. package/styles/recurrence-editor/material-dark.css +138 -28
  103. package/styles/recurrence-editor/material-dark.scss +5 -0
  104. package/styles/recurrence-editor/material.css +163 -28
  105. package/styles/recurrence-editor/material.scss +5 -0
  106. package/styles/recurrence-editor/tailwind-dark.css +126 -28
  107. package/styles/recurrence-editor/tailwind-dark.scss +5 -0
  108. package/styles/recurrence-editor/tailwind.css +126 -28
  109. package/styles/recurrence-editor/tailwind.scss +5 -0
  110. package/styles/schedule/_bootstrap-dark-definition.scss +63 -4
  111. package/styles/schedule/_bootstrap-definition.scss +62 -3
  112. package/styles/schedule/_bootstrap4-definition.scss +65 -5
  113. package/styles/schedule/_bootstrap5-definition.scss +63 -5
  114. package/styles/schedule/_fabric-dark-definition.scss +61 -3
  115. package/styles/schedule/_fabric-definition.scss +62 -3
  116. package/styles/schedule/_fluent-definition.scss +63 -6
  117. package/styles/schedule/_fusionnew-definition.scss +60 -3
  118. package/styles/schedule/_highcontrast-definition.scss +62 -3
  119. package/styles/schedule/_highcontrast-light-definition.scss +62 -3
  120. package/styles/schedule/_layout.scss +117 -506
  121. package/styles/schedule/_material-dark-definition.scss +63 -4
  122. package/styles/schedule/_material-definition.scss +63 -4
  123. package/styles/schedule/_material3-definition.scss +62 -3
  124. package/styles/schedule/_tailwind-definition.scss +63 -6
  125. package/styles/schedule/_theme.scss +97 -62
  126. package/styles/schedule/bootstrap-dark.css +332 -73
  127. package/styles/schedule/bootstrap-dark.scss +11 -0
  128. package/styles/schedule/bootstrap.css +331 -71
  129. package/styles/schedule/bootstrap.scss +11 -0
  130. package/styles/schedule/bootstrap4.css +343 -113
  131. package/styles/schedule/bootstrap4.scss +11 -0
  132. package/styles/schedule/bootstrap5-dark.css +307 -109
  133. package/styles/schedule/bootstrap5-dark.scss +11 -0
  134. package/styles/schedule/bootstrap5.css +307 -109
  135. package/styles/schedule/bootstrap5.scss +11 -0
  136. package/styles/schedule/fabric-dark.css +298 -73
  137. package/styles/schedule/fabric-dark.scss +11 -0
  138. package/styles/schedule/fabric.css +284 -78
  139. package/styles/schedule/fabric.scss +11 -0
  140. package/styles/schedule/fluent-dark.css +363 -74
  141. package/styles/schedule/fluent-dark.scss +11 -0
  142. package/styles/schedule/fluent.css +363 -74
  143. package/styles/schedule/fluent.scss +11 -0
  144. package/styles/schedule/highcontrast-light.css +375 -70
  145. package/styles/schedule/highcontrast-light.scss +11 -0
  146. package/styles/schedule/highcontrast.css +367 -85
  147. package/styles/schedule/highcontrast.scss +11 -0
  148. package/styles/schedule/material-dark.css +330 -82
  149. package/styles/schedule/material-dark.scss +11 -0
  150. package/styles/schedule/material.css +372 -82
  151. package/styles/schedule/material.scss +11 -0
  152. package/styles/schedule/tailwind-dark.css +246 -111
  153. package/styles/schedule/tailwind-dark.scss +11 -0
  154. package/styles/schedule/tailwind.css +246 -111
  155. package/styles/schedule/tailwind.scss +11 -0
  156. package/styles/tailwind-dark.css +279 -140
  157. package/styles/tailwind.css +279 -140
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { isNullOrUndefined, createElement, remove, closest, addClass, removeClass, extend } from '@syncfusion/ej2-base';
2
+ import { isNullOrUndefined, createElement, remove, closest, addClass, removeClass, extend, append } from '@syncfusion/ej2-base';
3
3
  import { Toolbar } from '@syncfusion/ej2-navigations';
4
4
  import { Calendar } from '@syncfusion/ej2-calendars';
5
5
  import { Popup } from '@syncfusion/ej2-popups';
@@ -148,13 +148,29 @@ var HeaderRenderer = /** @class */ (function () {
148
148
  addClass([selEle[this.parent.viewIndex]], ['e-active-view']);
149
149
  }
150
150
  };
151
- HeaderRenderer.prototype.updateDateRange = function (text) {
151
+ HeaderRenderer.prototype.updateDateRange = function (date) {
152
152
  var selEle = this.toolbarObj.element.querySelector('.e-date-range');
153
- if (selEle) {
153
+ if (!selEle) {
154
+ return;
155
+ }
156
+ var textEle = selEle.querySelector('.e-tbar-btn-text');
157
+ if (this.parent.activeViewOptions.dateRangeTemplate) {
158
+ textEle.textContent = '';
159
+ var args = {
160
+ startDate: this.parent.activeView.getStartDate(),
161
+ endDate: this.parent.activeView.getEndDate(), currentView: this.parent.currentView
162
+ };
163
+ var viewName = this.parent.activeViewOptions.dateRangeTemplateName;
164
+ var templateId = this.parent.element.id + '_' + viewName + 'dateRangeTemplate';
165
+ var dateTemplate = [].slice.call(this.parent.getDateRangeTemplate()(args, this.parent, 'dateRangeTemplate', templateId, false));
166
+ append(dateTemplate, textEle);
167
+ }
168
+ else {
169
+ var text = this.parent.activeView.getDateRangeText(date);
154
170
  selEle.setAttribute('aria-label', text);
155
- selEle.querySelector('.e-tbar-btn-text').innerHTML = text;
156
- this.refresh();
171
+ textEle.textContent = text;
157
172
  }
173
+ this.refresh();
158
174
  };
159
175
  HeaderRenderer.prototype.refresh = function () {
160
176
  if (this.toolbarObj) {
@@ -12,7 +12,7 @@ var __extends = (this && this.__extends) || (function () {
12
12
  };
13
13
  })();
14
14
  /* eslint-disable @typescript-eslint/no-explicit-any */
15
- import { createElement, addClass, formatUnit, remove } from '@syncfusion/ej2-base';
15
+ import { EventHandler, createElement, addClass, formatUnit, remove } from '@syncfusion/ej2-base';
16
16
  import { AgendaBase } from '../event-renderer/agenda-base';
17
17
  import { Month } from './month';
18
18
  import * as util from '../base/util';
@@ -56,11 +56,18 @@ var MonthAgenda = /** @class */ (function (_super) {
56
56
  }
57
57
  var contentArea = this.getContentAreaElement().firstElementChild;
58
58
  var dateHeader = this.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);
59
- var availHeight = this.parent.element.offsetHeight - headerHeight - dateHeader.offsetHeight - contentArea.offsetHeight;
59
+ var availHeight = this.parent.element.offsetHeight - headerHeight - dateHeader.offsetHeight;
60
+ var contentAreaHeight = (this.parent.activeViewOptions.interval > 1) ?
61
+ Math.round(availHeight * 0.8) : contentArea.offsetHeight;
62
+ var appContainerHeight = availHeight - contentAreaHeight;
60
63
  var wrapperContainer = this.element.querySelector('.' + cls.WRAPPER_CONTAINER_CLASS);
61
64
  var eventWrapper = this.element.querySelector('.' + cls.APPOINTMENT_WRAP_CLASS);
62
65
  if (this.parent.height !== 'auto') {
63
- wrapperContainer.style.height = eventWrapper.style.height = formatUnit(availHeight);
66
+ if (this.parent.activeViewOptions.interval > 1) {
67
+ contentArea.style.height = formatUnit(contentAreaHeight);
68
+ EventHandler.add(contentArea, 'scroll', this.onContentScroll, this);
69
+ }
70
+ wrapperContainer.style.height = eventWrapper.style.height = formatUnit(appContainerHeight);
64
71
  }
65
72
  };
66
73
  MonthAgenda.prototype.onDataReady = function (args) {
@@ -77,7 +84,7 @@ var MonthAgenda = /** @class */ (function (_super) {
77
84
  for (var _i = 0, _a = this.renderDates; _i < _a.length; _i++) {
78
85
  var date = _a[_i];
79
86
  var filterData = this.appointmentFiltering(date);
80
- var workCell = this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS)[count];
87
+ var workCell = this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS)[parseInt(count.toString(), 10)];
81
88
  if (filterData.length > 0) {
82
89
  if (!workCell.querySelector('.' + cls.APPOINTMENT_INDICATOR_CLASS)) {
83
90
  workCell.appendChild(createElement('div', { className: cls.APPOINTMENT_INDICATOR_CLASS }));
@@ -133,7 +133,9 @@ var Month = /** @class */ (function (_super) {
133
133
  }
134
134
  if (leftPanelElement) {
135
135
  if (this.parent.currentView === 'MonthAgenda') {
136
- height = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS).offsetHeight;
136
+ height = (this.parent.activeViewOptions.interval > 1) ?
137
+ this.getContentAreaElement().firstElementChild.offsetHeight :
138
+ this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS).offsetHeight;
137
139
  }
138
140
  leftPanelElement.style.height = 'auto';
139
141
  leftPanelElement.style.height = formatUnit(height - this.getScrollXIndent(content));
@@ -149,7 +151,14 @@ var Month = /** @class */ (function (_super) {
149
151
  }
150
152
  if (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0) {
151
153
  var resourceLevel = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];
152
- colLevels = [this.getDateSlots(resourceLevel.renderDates, resourceLevel.workDays)];
154
+ var levels_1 = this.getDateSlots(resourceLevel.renderDates, resourceLevel.workDays);
155
+ if (this.parent.activeViewOptions.group.byDate && this.parent.activeViewOptions.group.hideNonWorkingDays) {
156
+ var index = levels_1.findIndex(function (x, index) {
157
+ return index !== 0 && x.date.getDay() === levels_1[0].date.getDay();
158
+ });
159
+ levels_1 = index > -1 ? levels_1.slice(0, index) : levels_1;
160
+ }
161
+ colLevels = [levels_1];
153
162
  }
154
163
  }
155
164
  else {
@@ -168,7 +177,7 @@ var Month = /** @class */ (function (_super) {
168
177
  if (isCurrentMonth && currentDateIndex.indexOf(this.parent.getCurrentTime().getDay()) === col) {
169
178
  classList.push(cls.CURRENT_DAY_CLASS);
170
179
  }
171
- dateSlots.push({ date: renderDates[col], type: 'monthDay', className: classList, colSpan: 1, workDays: workDays });
180
+ dateSlots.push({ date: renderDates[parseInt(col.toString(), 10)], type: 'monthDay', className: classList, colSpan: 1, workDays: workDays });
172
181
  }
173
182
  return dateSlots;
174
183
  };
@@ -185,6 +194,9 @@ var Month = /** @class */ (function (_super) {
185
194
  clsList.push(type);
186
195
  if (this.parent.activeViewOptions.group.byDate) {
187
196
  clsList.push('e-by-date');
197
+ if (this.parent.currentView !== 'Month') {
198
+ this.parent.activeViewOptions.group.hideNonWorkingDays = false;
199
+ }
188
200
  }
189
201
  if (this.parent.activeViewOptions.allowVirtualScrolling && !this.parent.uiStateValues.isGroupAdaptive) {
190
202
  clsList.push(cls.VIRTUAL_SCROLL_CLASS);
@@ -298,10 +310,10 @@ var Month = /** @class */ (function (_super) {
298
310
  this.createColGroup(table, this.colLevels[this.colLevels.length - 1]);
299
311
  var trEle = createElement('tr');
300
312
  for (var i = 0; i < this.colLevels.length; i++) {
301
- var level = this.colLevels[i];
313
+ var level = this.colLevels[parseInt(i.toString(), 10)];
302
314
  var ntr = trEle.cloneNode();
303
315
  for (var j = 0; j < level.length; j++) {
304
- var td = level[j];
316
+ var td = level[parseInt(j.toString(), 10)];
305
317
  ntr.appendChild(this.createHeaderCell(td));
306
318
  }
307
319
  table.querySelector('tbody').appendChild(ntr);
@@ -359,10 +371,10 @@ var Month = /** @class */ (function (_super) {
359
371
  date: new Date(+renderDate), groupIndex: resData.groupIndex, workDays: resData.workDays,
360
372
  type: 'monthCells', className: classList || [cls.WORK_CELLS_CLASS]
361
373
  };
362
- if (!slotDatas[rowIndex]) {
363
- slotDatas[rowIndex] = [];
374
+ if (!slotDatas[parseInt(rowIndex.toString(), 10)]) {
375
+ slotDatas[parseInt(rowIndex.toString(), 10)] = [];
364
376
  }
365
- slotDatas[rowIndex].push(data);
377
+ slotDatas[parseInt(rowIndex.toString(), 10)].push(data);
366
378
  };
367
379
  var includeResource = this.parent.currentView !== 'MonthAgenda' &&
368
380
  this.parent.activeViewOptions.group.resources.length > 0;
@@ -388,22 +400,38 @@ var Month = /** @class */ (function (_super) {
388
400
  var startIndex = this.renderDates.map(Number).indexOf(+level[0].date);
389
401
  for (var i = 0; i < (this.renderDates.length / count); i++) {
390
402
  var colDates = dates.splice(0, count);
391
- for (var j = startIndex; j < (this.colLevels[0].length + startIndex) && j < colDates.length; j++) {
392
- var colDate = colDates[j];
403
+ var k = startIndex;
404
+ var _loop_1 = function (j) {
405
+ var colDate = colDates[parseInt(k.toString(), 10)];
406
+ k++;
393
407
  if (includeResource) {
394
- var lastRow = this.colLevels[(this.colLevels.length - 1)];
395
- var resourcesTd = lastRow.slice(0, lastRow.length / count);
408
+ var lastRow = this_1.colLevels[(this_1.colLevels.length - 1)];
409
+ var rowCount = lastRow.length / count;
410
+ var resourcesTd = lastRow.slice(0, rowCount);
411
+ if (this_1.parent.activeViewOptions.group.hideNonWorkingDays) {
412
+ resourcesTd = lastRow.filter(function (x) { return x.date.getDay() === colDate.getDay(); });
413
+ if (resourcesTd.length === 0) {
414
+ j = j - 1;
415
+ return out_j_1 = j, "continue";
416
+ }
417
+ }
396
418
  for (var resIndex = 0; resIndex < resourcesTd.length; resIndex++) {
397
419
  var clsList = void 0;
398
420
  if (resIndex !== 0) {
399
421
  clsList = [cls.WORK_CELLS_CLASS, cls.DISABLE_DATE];
400
422
  }
401
- prepareSlots(i, colDate, resourcesTd[resIndex], clsList);
423
+ prepareSlots(i, colDate, resourcesTd[parseInt(resIndex.toString(), 10)], clsList);
402
424
  }
403
425
  }
404
426
  else {
405
- prepareSlots(i, colDate, this.colLevels[this.colLevels.length - 1][0]);
427
+ prepareSlots(i, colDate, this_1.colLevels[this_1.colLevels.length - 1][0]);
406
428
  }
429
+ out_j_1 = j;
430
+ };
431
+ var this_1 = this, out_j_1;
432
+ for (var j = startIndex; j < (this.colLevels[0].length + startIndex) && j < colDates.length; j++) {
433
+ _loop_1(j);
434
+ j = out_j_1;
407
435
  }
408
436
  }
409
437
  }
@@ -447,8 +475,8 @@ var Month = /** @class */ (function (_super) {
447
475
  var slotDatas = this.getContentSlots();
448
476
  for (var row = 0; row < slotDatas.length; row++) {
449
477
  var ntr = tr.cloneNode();
450
- for (var col = 0; col < slotDatas[row].length; col++) {
451
- var ntd = this.createContentTd(slotDatas[row][col], td);
478
+ for (var col = 0; col < slotDatas[parseInt(row.toString(), 10)].length; col++) {
479
+ var ntd = this.createContentTd(slotDatas[parseInt(row.toString(), 10)][parseInt(col.toString(), 10)], td);
452
480
  ntr.appendChild(ntd);
453
481
  }
454
482
  trows.push(ntr);
@@ -20,8 +20,8 @@ var Render = /** @class */ (function () {
20
20
  if (this.parent.activeView) {
21
21
  var templates = [
22
22
  'cellTemplate', 'eventTemplate', 'tooltipTemplate', 'majorSlotTemplate', 'minorSlotTemplate',
23
- 'headerTooltipTemplate', 'dateHeaderTemplate', 'dayHeaderTemplate', 'mothHeaderTemplate',
24
- 'headerIndentTemplate', 'resourceHeaderTemplate', 'cellHeaderTemplate'
23
+ 'headerTooltipTemplate', 'dateHeaderTemplate', 'dayHeaderTemplate', 'monthHeaderTemplate',
24
+ 'headerIndentTemplate', 'resourceHeaderTemplate', 'cellHeaderTemplate', 'dateRangeTemplate'
25
25
  ];
26
26
  this.parent.resetTemplates(templates);
27
27
  this.parent.activeView.removeEventListener();
@@ -125,7 +125,7 @@ var Render = /** @class */ (function () {
125
125
  else if (this.parent.element.classList.contains(cls.READ_ONLY)) {
126
126
  removeClass([this.parent.element], cls.READ_ONLY);
127
127
  }
128
- this.parent.headerModule.updateDateRange(this.parent.activeView.getDateRangeText());
128
+ this.parent.headerModule.updateDateRange();
129
129
  this.parent.headerModule.updateHeaderItems('remove');
130
130
  }
131
131
  };
@@ -13,8 +13,8 @@ var TimelineHeaderRow = /** @class */ (function () {
13
13
  for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {
14
14
  var d = dates_1[_i];
15
15
  var key = d.getFullYear();
16
- result[key] = result[key] || [];
17
- result[key].push(d);
16
+ result[parseInt(key.toString(), 10)] = result[parseInt(key.toString(), 10)] || [];
17
+ result[parseInt(key.toString(), 10)].push(d);
18
18
  }
19
19
  return result;
20
20
  };
@@ -23,8 +23,8 @@ var TimelineHeaderRow = /** @class */ (function () {
23
23
  for (var _i = 0, dates_2 = dates; _i < dates_2.length; _i++) {
24
24
  var d = dates_2[_i];
25
25
  var key = (d.getFullYear() - 1970) * 12 + d.getMonth();
26
- result[key] = result[key] || [];
27
- result[key].push(d);
26
+ result[parseInt(key.toString(), 10)] = result[parseInt(key.toString(), 10)] || [];
27
+ result[parseInt(key.toString(), 10)].push(d);
28
28
  }
29
29
  return result;
30
30
  };
@@ -38,8 +38,8 @@ var TimelineHeaderRow = /** @class */ (function () {
38
38
  if (this.parent.firstDayOfWeek && this.parent.firstDayOfWeek > new Date(+d).getDay()) {
39
39
  key = key - 1;
40
40
  }
41
- result[key] = result[key] || [];
42
- result[key].push(d);
41
+ result[parseInt(key.toString(), 10)] = result[parseInt(key.toString(), 10)] || [];
42
+ result[parseInt(key.toString(), 10)].push(d);
43
43
  }
44
44
  return result;
45
45
  };
@@ -51,7 +51,7 @@ var TimelineHeaderRow = /** @class */ (function () {
51
51
  var tdDatas = [];
52
52
  var keys = Object.keys(data);
53
53
  for (var i = 0; i < keys.length; i++) {
54
- var dates = data[keys[i]];
54
+ var dates = data[keys[parseInt(i.toString(), 10)]];
55
55
  var htmlCol = void 0;
56
56
  if (row.template) {
57
57
  var args = { date: dates[0], type: type };
@@ -101,7 +101,7 @@ var TimelineMonth = /** @class */ (function (_super) {
101
101
  var data = _a[_i];
102
102
  data.className = [cls.WORK_CELLS_CLASS];
103
103
  if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
104
- var resLevel = this.parent.resourceBase.renderedResources[row];
104
+ var resLevel = this.parent.resourceBase.renderedResources[parseInt(row.toString(), 10)];
105
105
  data.workDays = resLevel.resourceData[resLevel.resource.workDaysField] || this.parent.workDays;
106
106
  data.className = data.className.concat(resLevel.className);
107
107
  data.groupIndex = resLevel.groupIndex;
@@ -111,10 +111,10 @@ var TimelineMonth = /** @class */ (function (_super) {
111
111
  date: new Date(+data.date), colSpan: data.colSpan, groupIndex: data.groupIndex, workDays: data.workDays,
112
112
  type: 'monthCells', className: data.className
113
113
  };
114
- if (!slotDatas[row]) {
115
- slotDatas[row] = [];
114
+ if (!slotDatas[parseInt(row.toString(), 10)]) {
115
+ slotDatas[parseInt(row.toString(), 10)] = [];
116
116
  }
117
- slotDatas[row].push(slotData);
117
+ slotDatas[parseInt(row.toString(), 10)].push(slotData);
118
118
  }
119
119
  }
120
120
  return slotDatas;
@@ -153,7 +153,7 @@ var TimelineMonth = /** @class */ (function (_super) {
153
153
  TimelineMonth.prototype.getAdjustedDate = function (startTime) {
154
154
  var timeSlots = this.colLevels[this.colLevels.length - 1];
155
155
  for (var i = 0; i < timeSlots.length; i++) {
156
- if (timeSlots[i].date.getTime() > startTime.getTime()) {
156
+ if (timeSlots[parseInt(i.toString(), 10)].date.getTime() > startTime.getTime()) {
157
157
  return timeSlots[i - 1].date;
158
158
  }
159
159
  }
@@ -212,7 +212,7 @@ var TimelineViews = /** @class */ (function (_super) {
212
212
  return 1;
213
213
  };
214
214
  TimelineViews.prototype.getResourceTdData = function (i, tdData) {
215
- var resLevel = this.parent.resourceBase.renderedResources[i];
215
+ var resLevel = this.parent.resourceBase.renderedResources[parseInt(i.toString(), 10)];
216
216
  var resSHr = resLevel.resourceData[resLevel.resource.startHourField] || this.parent.workHours.start;
217
217
  var resEHr = resLevel.resourceData[resLevel.resource.endHourField] || this.parent.workHours.end;
218
218
  tdData.startHour = this.parent.getStartEndTime(resSHr);
@@ -262,7 +262,7 @@ var TimelineViews = /** @class */ (function (_super) {
262
262
  else {
263
263
  var timeSlots = this.colLevels[this.colLevels.length - 1];
264
264
  for (var i = 0; i < timeSlots.length; i++) {
265
- if (timeSlots[i].date.getTime() > date.getTime()) {
265
+ if (timeSlots[parseInt(i.toString(), 10)].date.getTime() > date.getTime()) {
266
266
  return timeSlots[i - 1].date;
267
267
  }
268
268
  }
@@ -66,11 +66,11 @@ var TimelineYear = /** @class */ (function (_super) {
66
66
  var months = this.getMonths();
67
67
  var dayHeaderDates = this.getMonthDates(new Date(this.parent.selectedDate.getFullYear(), months[0], 1));
68
68
  for (var column = 0; column < this.columnCount; column++) {
69
- var date = new Date(this.parent.selectedDate.getFullYear(), months[column], 1);
69
+ var date = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(column.toString(), 10)], 1);
70
70
  var innerTd = createElement('td', { className: cls.HEADER_CELLS_CLASS });
71
71
  if (this.parent.activeViewOptions.orientation === 'Horizontal') {
72
72
  if (this.parent.dayHeaderTemplate) {
73
- append(this.renderDayMonthHeaderTemplate(dayHeaderDates[column], column, 'dayHeaderTemplate'), innerTd);
73
+ append(this.renderDayMonthHeaderTemplate(dayHeaderDates[parseInt(column.toString(), 10)], column, 'dayHeaderTemplate'), innerTd);
74
74
  }
75
75
  else {
76
76
  innerTd.innerHTML = "<span>" + this.parent.getDayNames('abbreviated')[column % 7] + "</span>";
@@ -78,7 +78,7 @@ var TimelineYear = /** @class */ (function (_super) {
78
78
  }
79
79
  else {
80
80
  if (this.parent.monthHeaderTemplate) {
81
- append(this.renderDayMonthHeaderTemplate(date, months[column], 'monthHeaderTemplate'), innerTd);
81
+ append(this.renderDayMonthHeaderTemplate(date, months[parseInt(column.toString(), 10)], 'monthHeaderTemplate'), innerTd);
82
82
  }
83
83
  else {
84
84
  innerTd.innerHTML = "<span>" + this.getMonthName(date) + "</span>";
@@ -194,7 +194,7 @@ var TimelineYear = /** @class */ (function (_super) {
194
194
  var dayHeaderDates = this.getMonthDates(new Date(this.parent.selectedDate.getFullYear(), months[0], 1));
195
195
  for (var month = 0; month < this.rowCount; month++) {
196
196
  wrapper.appendChild(createElement('div', { className: cls.APPOINTMENT_CONTAINER_CLASS }));
197
- var monthDate = new Date(this.parent.selectedDate.getFullYear(), months[month], 1);
197
+ var monthDate = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(month.toString(), 10)], 1);
198
198
  var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
199
199
  var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));
200
200
  var tr = createElement('tr');
@@ -214,7 +214,7 @@ var TimelineYear = /** @class */ (function (_super) {
214
214
  }
215
215
  else {
216
216
  if (this.parent.dayHeaderTemplate) {
217
- append(this.renderDayMonthHeaderTemplate(dayHeaderDates[month], month, 'dayHeaderTemplate'), monthTd);
217
+ append(this.renderDayMonthHeaderTemplate(dayHeaderDates[parseInt(month.toString(), 10)], month, 'dayHeaderTemplate'), monthTd);
218
218
  }
219
219
  else {
220
220
  monthTd.innerHTML = "<span>" + this.parent.getDayNames('abbreviated')[month % 7] + "</span>";
@@ -226,11 +226,11 @@ var TimelineYear = /** @class */ (function (_super) {
226
226
  for (var column = 0; column < this.columnCount; column++) {
227
227
  var isDateAvail = void 0;
228
228
  if (this.parent.activeViewOptions.orientation === 'Vertical') {
229
- monthDate = new Date(this.parent.selectedDate.getFullYear(), months[column], 1);
229
+ monthDate = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(column.toString(), 10)], 1);
230
230
  monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
231
231
  monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));
232
232
  var dayDate = (month - monthStart.getDay()) + 1;
233
- date = new Date(this.parent.selectedDate.getFullYear(), months[column], dayDate);
233
+ date = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(column.toString(), 10)], dayDate);
234
234
  isDateAvail = dayDate > 0 && date.getTime() < monthEnd.getTime();
235
235
  }
236
236
  else {
@@ -256,6 +256,9 @@ var TimelineYear = /** @class */ (function (_super) {
256
256
  if (this.parent.activeViewOptions.workDays.indexOf(date.getDay()) > -1) {
257
257
  classList.push(cls.WORKDAY_CLASS);
258
258
  }
259
+ if (!this.parent.isMinMaxDate(date)) {
260
+ addClass([td], cls.DISABLE_DATES);
261
+ }
259
262
  if (this.isCurrentDate(date)) {
260
263
  classList.push(cls.CURRENT_DAY_CLASS);
261
264
  if (this.parent.activeViewOptions.orientation === 'Horizontal') {
@@ -271,6 +274,9 @@ var TimelineYear = /** @class */ (function (_super) {
271
274
  }
272
275
  else {
273
276
  addClass([td], cls.OTHERMONTH_CLASS);
277
+ if (!this.parent.isMinMaxDate(date)) {
278
+ addClass([td], cls.DISABLE_DATES);
279
+ }
274
280
  }
275
281
  if (td.classList.contains(cls.OTHERMONTH_CLASS)) {
276
282
  continue;
@@ -298,9 +304,9 @@ var TimelineYear = /** @class */ (function (_super) {
298
304
  tRow.push(tr);
299
305
  var resData = void 0;
300
306
  if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
301
- resData = this.parent.resourceBase.renderedResources[row];
307
+ resData = this.parent.resourceBase.renderedResources[parseInt(row.toString(), 10)];
302
308
  }
303
- var monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[row], 1);
309
+ var monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[parseInt(row.toString(), 10)], 1);
304
310
  var date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
305
311
  for (var month = 0; month < this.columnCount; month++) {
306
312
  var classList = [];
@@ -312,7 +318,7 @@ var TimelineYear = /** @class */ (function (_super) {
312
318
  else {
313
319
  classList.push(cls.WORKDAY_CLASS);
314
320
  }
315
- monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[month], 1);
321
+ monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[parseInt(month.toString(), 10)], 1);
316
322
  date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
317
323
  var tdELe = createElement('td', {
318
324
  className: cls.WORK_CELLS_CLASS,
@@ -339,9 +345,9 @@ var TimelineYear = /** @class */ (function (_super) {
339
345
  contentBody.appendChild(tr);
340
346
  var resData = void 0;
341
347
  if (this.parent.activeViewOptions.orientation === 'Vertical' && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
342
- resData = this.parent.resourceBase.renderedResources[row];
348
+ resData = this.parent.resourceBase.renderedResources[parseInt(row.toString(), 10)];
343
349
  }
344
- var monthDate = new Date(this.parent.selectedDate.getFullYear(), months[row], 1);
350
+ var monthDate = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(row.toString(), 10)], 1);
345
351
  var date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
346
352
  if (this.parent.activeViewOptions.orientation === 'Horizontal') {
347
353
  var monthTr = tr.cloneNode();
@@ -370,11 +376,11 @@ var TimelineYear = /** @class */ (function (_super) {
370
376
  else {
371
377
  classList.push(cls.WORKDAY_CLASS);
372
378
  }
373
- monthDate = new Date(this.parent.selectedDate.getFullYear(), months[month], 1);
379
+ monthDate = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(month.toString(), 10)], 1);
374
380
  date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
375
381
  }
376
382
  else {
377
- groupIndex = this.colLevels.slice(-1)[0][month].groupIndex;
383
+ groupIndex = this.colLevels.slice(-1)[0][parseInt(month.toString(), 10)].groupIndex;
378
384
  classList.push(cls.WORKDAY_CLASS);
379
385
  }
380
386
  var td = createElement('td', {
@@ -116,6 +116,9 @@ var VerticalView = /** @class */ (function (_super) {
116
116
  }
117
117
  if (!args.isPreventScrollUpdate) {
118
118
  if (this.parent.uiStateValues.isInitial) {
119
+ if (this.parent.currentView.indexOf('Timeline') > -1) {
120
+ content.scrollTop = this.parent.uiStateValues.top;
121
+ }
119
122
  this.scrollToWorkHour();
120
123
  this.parent.uiStateValues.isInitial = false;
121
124
  }
@@ -181,6 +184,18 @@ var VerticalView = /** @class */ (function (_super) {
181
184
  var columnLevels = [];
182
185
  if (this.parent.activeViewOptions.group.resources.length > 0) {
183
186
  columnLevels = this.parent.resourceBase.generateResourceLevels(level);
187
+ if (this.parent.activeViewOptions.group.hideNonWorkingDays) {
188
+ while (columnLevels[0].length === 0) {
189
+ this.parent.setProperties({ selectedDate: this.parent.activeView.getNextPreviousDate(this.previousNextAction) }, true);
190
+ this.parent.activeView.getRenderDates();
191
+ if (this.parent.headerModule) {
192
+ this.parent.headerModule.setCalendarDate(this.parent.selectedDate);
193
+ this.parent.headerModule.updateDateRange();
194
+ }
195
+ level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);
196
+ columnLevels = this.parent.resourceBase.generateResourceLevels(level);
197
+ }
198
+ }
184
199
  if (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0) {
185
200
  var resourceLevel = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];
186
201
  var resStartHour = resourceLevel.resourceData[resourceLevel.resource.startHourField];
@@ -328,11 +343,11 @@ var VerticalView = /** @class */ (function (_super) {
328
343
  }
329
344
  var curTimeWrap = [].slice.call(this.element.querySelectorAll('.' + cls.TIMELINE_WRAPPER_CLASS));
330
345
  for (var i = 0, length_1 = currentDateIndex[0]; i < length_1; i++) {
331
- curTimeWrap[i].appendChild(createElement('div', { className: cls.PREVIOUS_TIMELINE_CLASS, styles: 'top:' + topInPx }));
346
+ curTimeWrap[parseInt(i.toString(), 10)].appendChild(createElement('div', { className: cls.PREVIOUS_TIMELINE_CLASS, styles: 'top:' + topInPx }));
332
347
  }
333
348
  for (var _i = 0, currentDateIndex_1 = currentDateIndex; _i < currentDateIndex_1.length; _i++) {
334
349
  var day = currentDateIndex_1[_i];
335
- curTimeWrap[day].appendChild(createElement('div', { className: cls.CURRENT_TIMELINE_CLASS, styles: 'top:' + topInPx }));
350
+ curTimeWrap[parseInt(day.toString(), 10)].appendChild(createElement('div', { className: cls.CURRENT_TIMELINE_CLASS, styles: 'top:' + topInPx }));
336
351
  }
337
352
  var currentTimeEle = createElement('div', {
338
353
  innerHTML: this.parent.getTimeString(this.parent.getCurrentTime()),
@@ -341,8 +356,8 @@ var VerticalView = /** @class */ (function (_super) {
341
356
  });
342
357
  if (rowIndex <= timeTrs.length) {
343
358
  removeClass(timeCellsWrap.querySelectorAll('.' + cls.HIDE_CHILDS_CLASS), cls.HIDE_CHILDS_CLASS);
344
- if (timeTrs[rowIndex]) {
345
- addClass([timeTrs[rowIndex].lastElementChild], cls.HIDE_CHILDS_CLASS);
359
+ if (timeTrs[parseInt(rowIndex.toString(), 10)]) {
360
+ addClass([timeTrs[parseInt(rowIndex.toString(), 10)].lastElementChild], cls.HIDE_CHILDS_CLASS);
346
361
  }
347
362
  prepend([currentTimeEle], timeCellsWrap);
348
363
  currentTimeEle.style.top = formatUnit(currentTimeEle.offsetTop - (currentTimeEle.offsetHeight / 2));
@@ -501,7 +516,7 @@ var VerticalView = /** @class */ (function (_super) {
501
516
  var nth;
502
517
  for (var i = 0; i < rowCount; i++) {
503
518
  var ntr_1 = trEle.cloneNode();
504
- var data_1 = { className: [(this.colLevels[i][0] && this.colLevels[i][0].className[0])], type: 'emptyCells' };
519
+ var data_1 = { className: [(this.colLevels[parseInt(i.toString(), 10)][0] && this.colLevels[parseInt(i.toString(), 10)][0].className[0])], type: 'emptyCells' };
505
520
  if (this.parent.activeViewOptions.showWeekNumber && data_1.className.indexOf(cls.HEADER_CELLS_CLASS) !== -1) {
506
521
  data_1.className.push(cls.WEEK_NUMBER_CLASS);
507
522
  var weekNo = this.parent.getWeekNumberContent(this.renderDates);
@@ -543,9 +558,9 @@ var VerticalView = /** @class */ (function (_super) {
543
558
  var lastLevel = this.colLevels[rowCount - 1];
544
559
  for (var i = 0; i < rowCount; i++) {
545
560
  var ntr = trEle.cloneNode();
546
- var level = this.colLevels[i];
561
+ var level = this.colLevels[parseInt(i.toString(), 10)];
547
562
  for (var j = 0; j < level.length; j++) {
548
- ntr.appendChild(this.createTd(level[j]));
563
+ ntr.appendChild(this.createTd(level[parseInt(j.toString(), 10)]));
549
564
  }
550
565
  tbl.querySelector('tbody').appendChild(ntr);
551
566
  }
@@ -557,7 +572,7 @@ var VerticalView = /** @class */ (function (_super) {
557
572
  VerticalView.prototype.createAllDayRow = function (table, tdData) {
558
573
  var ntr = createElement('tr', { className: cls.ALLDAY_ROW_CLASS });
559
574
  for (var j = 0; j < tdData.length; j++) {
560
- var td = extend({}, tdData[j]);
575
+ var td = extend({}, tdData[parseInt(j.toString(), 10)]);
561
576
  td.className = [cls.ALLDAY_CELLS_CLASS];
562
577
  td.type = 'alldayCells';
563
578
  var ntd = this.createTd(td);
@@ -786,7 +801,7 @@ var VerticalView = /** @class */ (function (_super) {
786
801
  var startDate = new Date(new Date(timeSlots[0].date.getTime()).
787
802
  setHours(startTime.getHours(), startTime.getMinutes(), startTime.getMilliseconds()));
788
803
  for (var i = 0; i < timeSlots.length; i++) {
789
- if (timeSlots[i].date.getTime() > startDate.getTime()) {
804
+ if (timeSlots[parseInt(i.toString(), 10)].date.getTime() > startDate.getTime()) {
790
805
  startTime.setHours(timeSlots[i - 1].date.getHours(), timeSlots[i - 1].date.getMinutes(), timeSlots[i - 1].date.getMilliseconds());
791
806
  return new Date(startTime);
792
807
  }
@@ -4,6 +4,7 @@ import { TdData } from '../base/interface';
4
4
  * view base
5
5
  */
6
6
  export declare class ViewBase {
7
+ previousNextAction: string;
7
8
  element: HTMLElement;
8
9
  parent: Schedule;
9
10
  renderDates: Date[];
@@ -42,6 +43,8 @@ export declare class ViewBase {
42
43
  generateColumnLevels(): TdData[][];
43
44
  getColumnLevels(): TdData[][];
44
45
  highlightCurrentTime(): void;
46
+ getStartDate(): Date;
47
+ getEndDate(): Date;
45
48
  startDate(): Date;
46
49
  endDate(): Date;
47
50
  getStartHour(): Date;
@@ -12,6 +12,7 @@ var ViewBase = /** @class */ (function () {
12
12
  * @param {Schedule} parent Accepts the schedule instance
13
13
  */
14
14
  function ViewBase(parent) {
15
+ this.previousNextAction = 'next';
15
16
  this.parent = parent;
16
17
  }
17
18
  ViewBase.prototype.isTimelineView = function () {
@@ -61,7 +62,7 @@ var ViewBase = /** @class */ (function () {
61
62
  for (var row = 0; row < trCount; row++) {
62
63
  eventContainer = createElement('div', { className: cls.APPOINTMENT_CONTAINER_CLASS });
63
64
  if (this.parent.resourceBase && !this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.renderedResources) {
64
- eventContainer.setAttribute('data-group-index', this.parent.resourceBase.renderedResources[row].groupIndex.toString());
65
+ eventContainer.setAttribute('data-group-index', this.parent.resourceBase.renderedResources[parseInt(row.toString(), 10)].groupIndex.toString());
65
66
  }
66
67
  eventRows.push(eventContainer);
67
68
  }
@@ -189,6 +190,12 @@ var ViewBase = /** @class */ (function () {
189
190
  ViewBase.prototype.highlightCurrentTime = function () {
190
191
  // Here showTimeIndicator functionalities
191
192
  };
193
+ ViewBase.prototype.getStartDate = function () {
194
+ return this.renderDates[0];
195
+ };
196
+ ViewBase.prototype.getEndDate = function () {
197
+ return this.renderDates[this.renderDates.length - 1];
198
+ };
192
199
  ViewBase.prototype.startDate = function () {
193
200
  return this.renderDates[0];
194
201
  };
@@ -288,6 +295,7 @@ var ViewBase = /** @class */ (function () {
288
295
  return renderDates;
289
296
  };
290
297
  ViewBase.prototype.getNextPreviousDate = function (type) {
298
+ this.previousNextAction = type;
291
299
  if (this.parent.currentView === 'Day' || this.parent.currentView === 'TimelineDay') {
292
300
  if (this.parent.activeViewOptions.showWeekend) {
293
301
  var daysCount = this.parent.activeViewOptions.interval;
@@ -558,8 +566,8 @@ var ViewBase = /** @class */ (function () {
558
566
  if (index >= renderedCount) {
559
567
  break;
560
568
  }
561
- index += lastLevel[i].colSpan;
562
- this.parent.resourceBase.expandedResources.push(lastLevel[i]);
569
+ index += lastLevel[parseInt(i.toString(), 10)].colSpan;
570
+ this.parent.resourceBase.expandedResources.push(lastLevel[parseInt(i.toString(), 10)]);
563
571
  }
564
572
  if (this.parent.activeViewOptions.group.byDate) {
565
573
  this.colLevels[0] = this.parent.resourceBase.expandedResources;