@syncfusion/ej2-gantt 21.2.8 → 21.2.9
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/CHANGELOG.md +20 -0
- package/dist/ej2-gantt.min.js +2 -2
- package/dist/ej2-gantt.umd.min.js +2 -2
- package/dist/ej2-gantt.umd.min.js.map +1 -1
- package/dist/es6/ej2-gantt.es2015.js +132 -50
- package/dist/es6/ej2-gantt.es2015.js.map +1 -1
- package/dist/es6/ej2-gantt.es5.js +127 -45
- package/dist/es6/ej2-gantt.es5.js.map +1 -1
- package/dist/global/ej2-gantt.min.js +2 -2
- package/dist/global/ej2-gantt.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +15 -15
- package/src/gantt/actions/dependency.js +9 -0
- package/src/gantt/actions/edit.d.ts +1 -0
- package/src/gantt/actions/edit.js +13 -3
- package/src/gantt/base/gantt-chart.js +13 -2
- package/src/gantt/base/task-processor.js +44 -17
- package/src/gantt/base/tree-grid.js +2 -2
- package/src/gantt/export/export-helper.js +3 -0
- package/src/gantt/renderer/chart-rows.d.ts +1 -0
- package/src/gantt/renderer/chart-rows.js +39 -19
- package/src/gantt/renderer/timeline.js +4 -2
|
@@ -2039,29 +2039,53 @@ class TaskProcessor extends DateProcessor {
|
|
|
2039
2039
|
startDate = this.checkStartDate(startDate, data.ganttProperties, false);
|
|
2040
2040
|
if (!isNullOrUndefined(duration)) {
|
|
2041
2041
|
endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
|
|
2042
|
+
if (taskSettings.duration) {
|
|
2043
|
+
remainingDuration = data.ganttProperties.duration - sumOfDuration;
|
|
2044
|
+
if (remainingDuration <= 0) {
|
|
2045
|
+
continue;
|
|
2046
|
+
}
|
|
2047
|
+
duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&
|
|
2048
|
+
duration > remainingDuration ? remainingDuration : duration;
|
|
2049
|
+
endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
|
|
2050
|
+
}
|
|
2051
|
+
else if (!taskSettings.duration && taskSettings.endDate) {
|
|
2052
|
+
endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >
|
|
2053
|
+
data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;
|
|
2054
|
+
duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
|
|
2055
|
+
if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()
|
|
2056
|
+
&& endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
|
|
2057
|
+
ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
|
|
2058
|
+
continue;
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2042
2061
|
}
|
|
2043
2062
|
else {
|
|
2044
2063
|
endDate = this.getDateFromFormat(endDate);
|
|
2064
|
+
if (endDate && (isNullOrUndefined(duration) || String(duration) === '')) {
|
|
2065
|
+
if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {
|
|
2066
|
+
this.setTime(this.parent.defaultEndTime, endDate);
|
|
2067
|
+
}
|
|
2068
|
+
}
|
|
2045
2069
|
endDate = this.checkEndDate(endDate, data.ganttProperties, false);
|
|
2046
2070
|
duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2071
|
+
if (taskSettings.duration) {
|
|
2072
|
+
remainingDuration = data.ganttProperties.duration - sumOfDuration - 1;
|
|
2073
|
+
if (remainingDuration <= 0) {
|
|
2074
|
+
continue;
|
|
2075
|
+
}
|
|
2076
|
+
duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&
|
|
2077
|
+
duration > remainingDuration ? remainingDuration : duration;
|
|
2078
|
+
endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
|
|
2052
2079
|
}
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
&& endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
|
|
2063
|
-
ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
|
|
2064
|
-
continue;
|
|
2080
|
+
else if (!taskSettings.duration && taskSettings.endDate) {
|
|
2081
|
+
endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >
|
|
2082
|
+
data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;
|
|
2083
|
+
duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
|
|
2084
|
+
if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()
|
|
2085
|
+
&& endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
|
|
2086
|
+
ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
|
|
2087
|
+
continue;
|
|
2088
|
+
}
|
|
2065
2089
|
}
|
|
2066
2090
|
}
|
|
2067
2091
|
segment = {};
|
|
@@ -3886,6 +3910,9 @@ class TaskProcessor extends DateProcessor {
|
|
|
3886
3910
|
}
|
|
3887
3911
|
}
|
|
3888
3912
|
this.parent.setRecordValue('isMilestone', milestone, parentProp, true);
|
|
3913
|
+
if (!isNullOrUndefined(this.parent.taskFields.milestone)) {
|
|
3914
|
+
this.updateMappingData(parentData, 'milestone');
|
|
3915
|
+
}
|
|
3889
3916
|
if (parentProp.isAutoSchedule) {
|
|
3890
3917
|
this.calculateDuration(parentData);
|
|
3891
3918
|
}
|
|
@@ -5305,7 +5332,13 @@ class GanttChart {
|
|
|
5305
5332
|
* @private
|
|
5306
5333
|
*/
|
|
5307
5334
|
getRecordByTaskBar(target) {
|
|
5308
|
-
|
|
5335
|
+
let item;
|
|
5336
|
+
if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {
|
|
5337
|
+
item = this.parent.flatData[this.getIndexByTaskBar(target)];
|
|
5338
|
+
}
|
|
5339
|
+
else {
|
|
5340
|
+
item = this.parent.currentViewData[this.getIndexByTaskBar(target)];
|
|
5341
|
+
}
|
|
5309
5342
|
return item;
|
|
5310
5343
|
}
|
|
5311
5344
|
/**
|
|
@@ -5663,7 +5696,12 @@ class GanttChart {
|
|
|
5663
5696
|
else {
|
|
5664
5697
|
const id = row.getAttribute('rowUniqueId');
|
|
5665
5698
|
const record = this.parent.getRecordByID(id);
|
|
5666
|
-
|
|
5699
|
+
if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {
|
|
5700
|
+
recordIndex = this.parent.flatData.indexOf(record);
|
|
5701
|
+
}
|
|
5702
|
+
else {
|
|
5703
|
+
recordIndex = this.parent.currentViewData.indexOf(record);
|
|
5704
|
+
}
|
|
5667
5705
|
}
|
|
5668
5706
|
return recordIndex;
|
|
5669
5707
|
}
|
|
@@ -7067,9 +7105,11 @@ class Timeline {
|
|
|
7067
7105
|
const validStartLeft = this.parent.dataOperation.getTaskLeft(validStartDate, false);
|
|
7068
7106
|
const validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);
|
|
7069
7107
|
let isChanged;
|
|
7108
|
+
let taskbarModule = this.parent.editModule.taskbarEditModule;
|
|
7070
7109
|
if (!isNullOrUndefined(maxStartLeft) && ((minStartDate < this.timelineStartDate) ||
|
|
7071
|
-
(!isNullOrUndefined(
|
|
7072
|
-
|
|
7110
|
+
(!isNullOrUndefined(taskbarModule)) && (!isNullOrUndefined(taskbarModule.taskBarEditAction)
|
|
7111
|
+
&& taskbarModule.taskBarEditAction !== 'ProgressResizing' &&
|
|
7112
|
+
taskbarModule.taskBarEditAction !== 'RightResizing')) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
|
|
7073
7113
|
isChanged = 'prevTimeSpan';
|
|
7074
7114
|
minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;
|
|
7075
7115
|
}
|
|
@@ -7663,7 +7703,7 @@ class GanttTreeGrid {
|
|
|
7663
7703
|
this.parent.columnByField = {};
|
|
7664
7704
|
this.parent.customColumns = [];
|
|
7665
7705
|
const tasksMapping = ['id', 'name', 'startDate', 'endDate', 'duration', 'dependency',
|
|
7666
|
-
'progress', 'baselineStartDate', 'baselineEndDate', 'resourceInfo', 'notes', 'work', 'manual', 'type'];
|
|
7706
|
+
'progress', 'baselineStartDate', 'baselineEndDate', 'resourceInfo', 'notes', 'work', 'manual', 'type', 'milestone'];
|
|
7667
7707
|
for (let i = 0; i < length; i++) {
|
|
7668
7708
|
let column = {};
|
|
7669
7709
|
if (typeof ganttObj.columns[i] === 'string') {
|
|
@@ -8005,7 +8045,7 @@ class GanttTreeGrid {
|
|
|
8005
8045
|
}
|
|
8006
8046
|
} // eslint-disable-next-line
|
|
8007
8047
|
durationValueAccessor(field, data, column) {
|
|
8008
|
-
const ganttProp = data.ganttProperties;
|
|
8048
|
+
const ganttProp = (!isNullOrUndefined(data)) ? data.ganttProperties : null;
|
|
8009
8049
|
if (!isNullOrUndefined(ganttProp)) {
|
|
8010
8050
|
return this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);
|
|
8011
8051
|
}
|
|
@@ -8784,7 +8824,7 @@ class ChartRows extends DateProcessor {
|
|
|
8784
8824
|
(isNullOrUndefined(data.ganttProperties.segments) || (!isNullOrUndefined(data.ganttProperties.segments) &&
|
|
8785
8825
|
data.ganttProperties.segments.length === 0))) {
|
|
8786
8826
|
if (template !== '' && !isNullOrUndefined(progressDiv) && progressDiv.length > 0) {
|
|
8787
|
-
|
|
8827
|
+
const templateElement = this.createDivElement(template)[0];
|
|
8788
8828
|
if (this.parent.disableHtmlEncode) {
|
|
8789
8829
|
templateElement.innerText = labelString;
|
|
8790
8830
|
}
|
|
@@ -8799,7 +8839,7 @@ class ChartRows extends DateProcessor {
|
|
|
8799
8839
|
!this.isTemplate(childLabel) &&
|
|
8800
8840
|
progressDiv[0].querySelectorAll('.e-task-label')[0].children[0])
|
|
8801
8841
|
progressDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();
|
|
8802
|
-
if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent
|
|
8842
|
+
if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&
|
|
8803
8843
|
childLabel && !childLabel['elementRef'] && tempDiv.innerHTML !== '')
|
|
8804
8844
|
progressDiv[0].querySelectorAll('.e-task-label')[0].textContent = childLabel;
|
|
8805
8845
|
}
|
|
@@ -9470,7 +9510,7 @@ class ChartRows extends DateProcessor {
|
|
|
9470
9510
|
!this.isTemplate(parentLabel) &&
|
|
9471
9511
|
progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0])
|
|
9472
9512
|
progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();
|
|
9473
|
-
if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent
|
|
9513
|
+
if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&
|
|
9474
9514
|
parentLabel && !parentLabel['elementRef'] && div.innerHTML !== '')
|
|
9475
9515
|
progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent = parentLabel;
|
|
9476
9516
|
}
|
|
@@ -9500,11 +9540,19 @@ class ChartRows extends DateProcessor {
|
|
|
9500
9540
|
* @returns {NodeList} .
|
|
9501
9541
|
* @private
|
|
9502
9542
|
*/
|
|
9503
|
-
getTableTrNode() {
|
|
9543
|
+
getTableTrNode(i) {
|
|
9504
9544
|
const table = createElement('table');
|
|
9505
9545
|
const className = (this.parent.gridLines === 'Horizontal' || this.parent.gridLines === 'Both') ?
|
|
9506
9546
|
'e-chart-row-border' : '';
|
|
9507
|
-
|
|
9547
|
+
const rows = this.parent.treeGrid.grid.contentModule.getRows()[i];
|
|
9548
|
+
let activecls;
|
|
9549
|
+
if (rows && rows.isSelected) {
|
|
9550
|
+
activecls = 'e-active';
|
|
9551
|
+
}
|
|
9552
|
+
else {
|
|
9553
|
+
activecls = '';
|
|
9554
|
+
}
|
|
9555
|
+
table.innerHTML = '<tr class="' + this.getRowClassName(this.templateData) + ' ' + chartRow + ' ' + (activecls) + '"' +
|
|
9508
9556
|
'style="display:' + this.getExpandDisplayProp(this.templateData) + ';height:' +
|
|
9509
9557
|
this.parent.rowHeight + 'px;">' +
|
|
9510
9558
|
'<td class="' + chartRowCell + ' ' + className
|
|
@@ -9614,7 +9662,7 @@ class ChartRows extends DateProcessor {
|
|
|
9614
9662
|
return this.createDivElement(template);
|
|
9615
9663
|
}
|
|
9616
9664
|
childTaskbarProgressResizer() {
|
|
9617
|
-
|
|
9665
|
+
const width = this.parent.enableRtl ? (this.templateData.ganttProperties.progressWidth + 8) : (this.templateData.ganttProperties.progressWidth - 6);
|
|
9618
9666
|
const template = '<div class="' + childProgressResizer + '"' +
|
|
9619
9667
|
'style="' + (this.parent.enableRtl ? 'right:' : 'left:') + width + 'px;margin-top:' +
|
|
9620
9668
|
(this.taskBarHeight - 4) + 'px;"><div class="' + progressBarHandler + '"' +
|
|
@@ -9941,7 +9989,7 @@ class ChartRows extends DateProcessor {
|
|
|
9941
9989
|
this.parent.renderTemplates();
|
|
9942
9990
|
this.triggerQueryTaskbarInfo();
|
|
9943
9991
|
this.parent.modifiedRecords = [];
|
|
9944
|
-
if (this.parent.viewType
|
|
9992
|
+
if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation) {
|
|
9945
9993
|
this.updateOverlapped();
|
|
9946
9994
|
}
|
|
9947
9995
|
if (collapsedResourceRecord.length) {
|
|
@@ -9965,7 +10013,7 @@ class ChartRows extends DateProcessor {
|
|
|
9965
10013
|
getGanttChartRow(i, tempTemplateData) {
|
|
9966
10014
|
this.templateData = tempTemplateData;
|
|
9967
10015
|
let taskBaselineTemplateNode = null;
|
|
9968
|
-
const parentTrNode = this.getTableTrNode();
|
|
10016
|
+
const parentTrNode = this.getTableTrNode(i);
|
|
9969
10017
|
const leftLabelNode = this.getLeftLabelNode(i);
|
|
9970
10018
|
const taskbarContainerNode = this.taskbarContainer();
|
|
9971
10019
|
taskbarContainerNode[0].setAttribute('aria-label', this.generateAriaLabel(this.templateData));
|
|
@@ -10405,8 +10453,8 @@ class ChartRows extends DateProcessor {
|
|
|
10405
10453
|
}
|
|
10406
10454
|
// To update the row height when allow overallocation set to false
|
|
10407
10455
|
updateDragDropRecords(data, tr) {
|
|
10408
|
-
|
|
10409
|
-
|
|
10456
|
+
const childRecords = data.childRecords;
|
|
10457
|
+
const rowIndex = this.parent.currentViewData.indexOf(data);
|
|
10410
10458
|
let treeGridContentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :
|
|
10411
10459
|
this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];
|
|
10412
10460
|
if (!tr) {
|
|
@@ -10516,6 +10564,19 @@ class ChartRows extends DateProcessor {
|
|
|
10516
10564
|
}
|
|
10517
10565
|
}
|
|
10518
10566
|
}
|
|
10567
|
+
updateResourceTaskbarElement(tRow, parentTr) {
|
|
10568
|
+
const cloneElement = tRow.querySelector('.e-taskbar-main-container');
|
|
10569
|
+
addClass([cloneElement], 'collpse-parent-border');
|
|
10570
|
+
const id = tRow.querySelector('.' + taskBarMainContainer).getAttribute('rowUniqueId');
|
|
10571
|
+
const ganttData = this.parent.getRecordByID(id);
|
|
10572
|
+
let zIndex = "";
|
|
10573
|
+
if (ganttData && !isNullOrUndefined(ganttData.ganttProperties.eOverlapIndex)) {
|
|
10574
|
+
zIndex = (ganttData.ganttProperties.eOverlapIndex).toString();
|
|
10575
|
+
}
|
|
10576
|
+
const cloneChildElement = cloneElement.cloneNode(true);
|
|
10577
|
+
cloneChildElement.style.zIndex = zIndex;
|
|
10578
|
+
parentTr[0].childNodes[0].childNodes[0].childNodes[0].appendChild(cloneChildElement);
|
|
10579
|
+
}
|
|
10519
10580
|
getResourceParent(record) {
|
|
10520
10581
|
const chartRows = this.parent.ganttChartModule.getChartRows();
|
|
10521
10582
|
//Below code is for rendering taskbartemplate in resource view with multi taskbar
|
|
@@ -10539,20 +10600,19 @@ class ChartRows extends DateProcessor {
|
|
|
10539
10600
|
parentTrNode[0].childNodes[0].childNodes[0].appendChild(collapseParent);
|
|
10540
10601
|
const tasks = this.parent.dataOperation.setSortedChildTasks(record);
|
|
10541
10602
|
this.parent.dataOperation.updateOverlappingIndex(tasks);
|
|
10542
|
-
|
|
10543
|
-
|
|
10544
|
-
|
|
10545
|
-
|
|
10546
|
-
|
|
10547
|
-
|
|
10548
|
-
|
|
10549
|
-
|
|
10550
|
-
|
|
10551
|
-
|
|
10603
|
+
let tRow;
|
|
10604
|
+
if (this.parent.enableVirtualization) {
|
|
10605
|
+
for (let i = 0; i < record.childRecords.length; i++) {
|
|
10606
|
+
tRow = this.getGanttChartRow(record.childRecords[i].index, this.parent.flatData[record.childRecords[i].index]);
|
|
10607
|
+
this.updateResourceTaskbarElement(tRow, parentTrNode);
|
|
10608
|
+
}
|
|
10609
|
+
}
|
|
10610
|
+
else {
|
|
10611
|
+
for (let i = 0; i < chartRows.length; i++) {
|
|
10612
|
+
if (chartRows[i].classList.contains('gridrowtaskId'
|
|
10613
|
+
+ record.ganttProperties.rowUniqueID + 'level' + (record.level + 1))) {
|
|
10614
|
+
this.updateResourceTaskbarElement(chartRows[i], parentTrNode);
|
|
10552
10615
|
}
|
|
10553
|
-
const cloneChildElement = cloneElement.cloneNode(true);
|
|
10554
|
-
cloneChildElement.style.zIndex = zIndex;
|
|
10555
|
-
parentTrNode[0].childNodes[0].childNodes[0].childNodes[0].appendChild(cloneChildElement);
|
|
10556
10616
|
}
|
|
10557
10617
|
}
|
|
10558
10618
|
parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(leftLabelNode)[0]);
|
|
@@ -11059,6 +11119,15 @@ class Dependency {
|
|
|
11059
11119
|
for (let count = 0; count < totLength; count++) {
|
|
11060
11120
|
if (flatData[count].ganttProperties.predecessorsName) {
|
|
11061
11121
|
this.validatePredecessorDates(flatData[count]);
|
|
11122
|
+
let predecessorCollection = flatData[count].ganttProperties.predecessor;
|
|
11123
|
+
if (predecessorCollection && predecessorCollection.length > 1) {
|
|
11124
|
+
for (let i = 0; i < predecessorCollection.length; i++) {
|
|
11125
|
+
const validateRecord = this.parent.getRecordByID(predecessorCollection[i].to);
|
|
11126
|
+
if (validateRecord) {
|
|
11127
|
+
this.validatePredecessorDates(validateRecord);
|
|
11128
|
+
}
|
|
11129
|
+
}
|
|
11130
|
+
}
|
|
11062
11131
|
if (flatData[count].hasChildRecords && this.parent.editModule && !this.parent.allowUnscheduledTasks
|
|
11063
11132
|
&& this.parent.allowParentDependency) {
|
|
11064
11133
|
this.parent.editModule['updateChildItems'](flatData[count]);
|
|
@@ -23471,6 +23540,7 @@ class Edit$2 {
|
|
|
23471
23540
|
this.isFromDeleteMethod = false;
|
|
23472
23541
|
this.targetedRecords = [];
|
|
23473
23542
|
this.isNewRecordAdded = false;
|
|
23543
|
+
this.isValidatedEditedRecord = false;
|
|
23474
23544
|
/** @hidden */
|
|
23475
23545
|
this.updateParentRecords = [];
|
|
23476
23546
|
/** @hidden */
|
|
@@ -24123,8 +24193,9 @@ class Edit$2 {
|
|
|
24123
24193
|
(isNullOrUndefined(taskData.startDate) && !isNullOrUndefined(prevStart)) ||
|
|
24124
24194
|
(isNullOrUndefined(taskData.endDate) && !isNullOrUndefined(prevEnd)) ||
|
|
24125
24195
|
(prevStart && prevStart.getTime() !== taskData.startDate.getTime())
|
|
24126
|
-
|
|
24127
|
-
|| (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration
|
|
24196
|
+
|| (prevEnd && prevEnd.getTime() !== taskData.endDate.getTime())
|
|
24197
|
+
|| (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration)
|
|
24198
|
+
|| (!isNullOrUndefined(prevDuration) && prevDuration === taskData.duration &&
|
|
24128
24199
|
prevDurationUnit !== taskData.durationUnit)) {
|
|
24129
24200
|
isMoved = true;
|
|
24130
24201
|
}
|
|
@@ -24237,6 +24308,11 @@ class Edit$2 {
|
|
|
24237
24308
|
this.parent.connectorLineEditModule.openValidationDialog(validateObject);
|
|
24238
24309
|
}
|
|
24239
24310
|
else {
|
|
24311
|
+
if (this.parent.editModule && this.parent.editModule.dialogModule &&
|
|
24312
|
+
this.parent.editModule.dialogModule['isEdit'] && this.predecessorUpdated) {
|
|
24313
|
+
this.isValidatedEditedRecord = true;
|
|
24314
|
+
this.parent.predecessorModule.validatePredecessor(args.data, [], '');
|
|
24315
|
+
}
|
|
24240
24316
|
this.parent.connectorLineEditModule.applyPredecessorOption();
|
|
24241
24317
|
}
|
|
24242
24318
|
}
|
|
@@ -24300,7 +24376,10 @@ class Edit$2 {
|
|
|
24300
24376
|
if (this.taskbarMoved) {
|
|
24301
24377
|
this.parent.editedTaskBarItem = ganttRecord;
|
|
24302
24378
|
}
|
|
24303
|
-
this.
|
|
24379
|
+
if (!this.isValidatedEditedRecord) {
|
|
24380
|
+
this.parent.predecessorModule.validatePredecessor(ganttRecord, [], '');
|
|
24381
|
+
}
|
|
24382
|
+
this.isValidatedEditedRecord = false;
|
|
24304
24383
|
this.parent.predecessorModule.isValidatedParentTaskID = '';
|
|
24305
24384
|
}
|
|
24306
24385
|
if (this.parent.allowParentDependency && ganttRecord.hasChildRecords && this.parent.previousRecords[ganttRecord.uniqueID].ganttProperties.startDate &&
|
|
@@ -34327,7 +34406,10 @@ class ExportHelper {
|
|
|
34327
34406
|
const footerBrush = new PdfSolidBrush(this.ganttStyle.footer.backgroundColor);
|
|
34328
34407
|
footer.graphics.drawRectangle(pen, footerBrush, 0, 0, pdfDoc.pageSettings.width, 35);
|
|
34329
34408
|
/* eslint-disable-next-line */
|
|
34330
|
-
|
|
34409
|
+
let font = new PdfStandardFont(this.ganttStyle.fontFamily, this.ganttStyle.footer.fontSize, this.ganttStyle.footer.fontStyle);
|
|
34410
|
+
if (this.ganttStyle.font) {
|
|
34411
|
+
font = this.ganttStyle.font;
|
|
34412
|
+
}
|
|
34331
34413
|
const brush = new PdfSolidBrush(this.ganttStyle.footer.fontColor);
|
|
34332
34414
|
const pageNumber = new PdfPageNumberField(font);
|
|
34333
34415
|
const count = new PdfPageCountField(font, brush);
|