@syncfusion/ej2-gantt
Version:
Essential JS 2 Gantt Component
10 lines • 1.27 MB
JavaScript
/*!
* filename: ej2-gantt.min.js
* version : 31.2.15
* Copyright Syncfusion Inc. 2001 - 2025. All rights reserved.
* Use of this code is subject to the terms of our license.
* A copy of the current license can be obtained at any time by e-mailing
* licensing@syncfusion.com. Any infringement will be prosecuted under
* applicable laws.
*/
this.ej=this.ej||{},this.ej.gantt=function(e,t,i,a,r,n,s,o,l,d,h,p,u,c,g){"use strict";function f(e,t,i){for(var a=e;a&&(i?a.id!==t:!a.classList.contains(t));)a=a.parentElement;return a}function m(e){return t.isNullOrUndefined(e.startDate)&&t.isNullOrUndefined(e.endDate)&&t.isNullOrUndefined(e.duration)?null:!(t.isNullOrUndefined(e.startDate)||t.isNullOrUndefined(e.endDate)||t.isNullOrUndefined(e.duration))}function y(e){return!(!e.dataSource||e.dataSource instanceof a.DataManager||!("result"in e.dataSource))}function D(e){for(var t={},i=0,a=Object.keys(e);i<a.length;i++){var r=a[i];t[e[r]]=r}return t}function v(e){return!t.isNullOrUndefined(e)&&"object"==typeof e&&0===Object.keys(e).length}function k(e){var t=e.getFullYear(),i=e.getMonth(),a=e.getDate(),r=e.getHours(),n=e.getMinutes(),s=e.getSeconds(),o=e.getMilliseconds();return Date.UTC(t,i,a,r,n,s,o)}function b(e){if(e instanceof a.DataManager){var t=e.adaptor;return t instanceof a.ODataAdaptor||t instanceof a.ODataV4Adaptor||t instanceof a.WebApiAdaptor||t instanceof a.WebMethodAdaptor||t instanceof a.CacheAdaptor||t instanceof a.RemoteSaveAdaptor||t instanceof a.UrlAdaptor}return!1}function w(e,i,a,r){if(a){for(var n=void 0,s=0;s<e.length;s++)n=o=i?e[parseInt(s.toString(),10)].taskData:t.extend({},e[parseInt(s.toString(),10)].taskData,{},!0);return n}for(var n=[],s=0;s<e.length;s++){!t.isNullOrUndefined(r)&&r.timezone&&T(e[s],r);var o=i?e[parseInt(s.toString(),10)].taskData:t.extend({},e[parseInt(s.toString(),10)].taskData,{},!0);n.push(o)}return n}function T(e,i){if(e&&!t.isNullOrUndefined(e.ganttProperties)){var a=e.taskData,r=e.ganttProperties;a[i.taskFields.startDate]=i.dateValidationModule.remove(r.startDate,i.timezone),null!==i.taskFields.endDate&&(a[i.taskFields.endDate]=i.dateValidationModule.remove(r.endDate,i.timezone)),(i.taskFields.baselineStartDate||i.taskFields.baselineEndDate)&&(a[i.taskFields.baselineStartDate]=i.dateValidationModule.remove(r.baselineStartDate,i.timezone),a[i.taskFields.baselineEndDate]=i.dateValidationModule.remove(r.baselineEndDate,i.timezone)),i.editModule.processCustomDateColumns(e,a,i,"remove")}return null}function P(e,t){for(var i,a=0;a<t.length;a++)i=new RegExp("\\{"+a+"\\}","gm"),e=e.replace(i,t[a].toString());return e}function S(e,i,a,r){for(var n=-1,s=0;s<a.length;s++)if(t.getValue(i,a[s])===t.getValue(i,e)&&t.isNullOrUndefined(r)||!t.isNullOrUndefined(r)&&t.getValue(i,a[s])===t.getValue(i,e)&&t.getValue(r,a[s])===t.getValue(r,e)){n=s;break}return n}function C(e){return 76*e/92}function R(e){return 92*e/76}function M(){return O++}var O=0;!function(e){e[e.AsSoonAsPossible=0]="AsSoonAsPossible",e[e.AsLateAsPossible=1]="AsLateAsPossible",e[e.MustStartOn=2]="MustStartOn",e[e.MustFinishOn=3]="MustFinishOn",e[e.StartNoEarlierThan=4]="StartNoEarlierThan",e[e.StartNoLaterThan=5]="StartNoLaterThan",e[e.FinishNoEarlierThan=6]="FinishNoEarlierThan",e[e.FinishNoLaterThan=7]="FinishNoLaterThan"}(e.ConstraintType||(e.ConstraintType={}));var x=function(){function i(e){this.fromSegments=!1,this.mondayTimeRangeLength=0,this.tuesdayTimeRangeLength=0,this.wednesdayTimeRangeLength=0,this.thursdayTimeRangeLength=0,this.fridayTimeRangeLength=0,this.saturdayTimeRangeLength=0,this.sundayTimeRangeLength=0,this.parent=e}return i.prototype.isValidateNonWorkDays=function(e){return!t.isNullOrUndefined(e)&&e.isAutoSchedule&&(!this.parent.includeWeekend||this.parent.totalHolidayDates.length>0)||t.isNullOrUndefined(e)&&(!this.parent.includeWeekend||this.parent.totalHolidayDates.length>0)},i.prototype.checkStartDate=function(e,i,a,r,n){if(t.isNullOrUndefined(e))return null;var s=new Date(e.getTime()),o=this.parent.getCurrentDayStartTime(s),l=this.parent.getCurrentDayEndTime(s),d=new Date(e.getTime()),h=this.getSecondsInDecimal(d);if(a=t.isNullOrUndefined(a)?!t.isNullOrUndefined(i)&&i.isMilestone:a,h<o&&(!a||r))this.setTime(o,d);else if(h<o&&a)this.setTime(o,d);else if(h===l&&(!i||!a)||h>l)d.setDate(d.getDate()+1),o=this.parent.getCurrentDayStartTime(d),this.setTime(o,d);else if(h>o&&h<l){var p=this.parent.workingTimeRanges;this.parent.weekWorkingTime.length>0&&(p=this.parent.getWorkingRange(d));for(var u=0;u<p.length;u++){var c=p[u];if(h>=c.to&&p[u+1]&&h<p[u+1].from){(h!==c.to||i&&a)&&h===c.to||this.setTime(p[u+1].from,d);break}}}var g;if(!this.parent.autoCalculateDateScheduling||this.parent.isLoad&&this.parent.treeGrid.loadChildOnDemand&&this.parent.taskFields.hasChildMapping)return new Date(d.getTime());do{g=new Date(d.getTime());var f=this.parent.totalHolidayDates.length;if(this.isValidateNonWorkDays(i)){o=this.parent.getCurrentDayStartTime(g),i&&(l=n?this.parent.getCurrentDayEndTime(i.baselineEndDate?i.baselineEndDate:g):this.parent.getCurrentDayEndTime(i.endDate?i.isAutoSchedule?i.endDate:i.autoEndDate:g));var m=!a||r?o:l;if(!this.parent.includeWeekend&&!n){var y=new Date(d.getTime());d=this.getNextWorkingDay(d),m=this.parent.getCurrentDayStartTime(d),y.getTime()===d.getTime()||a||this.setTime(m,d)}if(!n)for(var D=0;D<f;D++){var v=this.getDateFromFormat(new Date(this.parent.totalHolidayDates[D])),k=new Date(v.getTime());v.setHours(0,0,0,0),k.setHours(23,59,59,59),d.getTime()>=v.getTime()&&d.getTime()<k.getTime()&&(d.setDate(d.getDate()+1),m=this.parent.getCurrentDayStartTime(d),this.setTime(m,d))}}}while(g.getTime()!==d.getTime());return new Date(d.getTime())},i.prototype.getAdjustedStartDate=function(e,t){var i=new Date(e);i.setDate(i.getDate()+1);var a=this.parent.dateValidationModule.checkEndDate(i);return this.parent.dateValidationModule.getStartDate(a,t.duration,t.durationUnit,t)},i.prototype.getDateByConstraint=function(i,a,r){var n=i.ganttProperties?i.ganttProperties:i,s=new Date(n.constraintDate),o=this.parent.isLoad;if(t.isNullOrUndefined(r)&&(r=!0),(!s||!a)&&r)return null;s=this.parent.editModule&&this.parent.editModule.dialogModule&&this.parent.editModule.dialogModule.dialogConstraintDate?new Date(this.parent.editModule.dialogModule.dialogConstraintDate):this.parent.assignTimeToDate(s,this.parent.getCurrentDayStartTime(s));var l=null,d=this.parent.getRecordByID(n.taskId);switch(d&&d.parentItem&&(l=d.parentItem),n.constraintType){case e.ConstraintType.AsSoonAsPossible:return o?a:(n.constraintDate=null,n.predecessor&&n.predecessor.length>0?this.parent.assignTimeToDate(a,this.parent.getCurrentDayStartTime(a)):l?this.parent.getRecordByID(l.taskId).ganttProperties.startDate:this.parent.dateValidationModule.checkStartDate(new Date(this.parent.projectStartDate)));case e.ConstraintType.AsLateAsPossible:if(o)return a;if(l){h=this.parent.dateValidationModule.checkEndDate(this.parent.getRecordByID(l.taskId).ganttProperties.endDate);return p=this.parent.dateValidationModule.getStartDate(h,n.duration,n.durationUnit,n)}var h=this.parent.dateValidationModule.checkEndDate(new Date(this.parent.projectEndDate)),p=this.parent.dateValidationModule.getStartDate(h,n.duration,n.durationUnit,n);return p;case e.ConstraintType.MustStartOn:var u=s.getTime()!==n.startDate.getTime(),c=void 0;this.parent.editModule&&this.parent.editModule.dialogModule&&(c=this.parent.editModule.dialogModule.dialogConstraintValue);var g=t.isNullOrUndefined(c)||2===c||3===c;return u&&!o&&g&&(this.parent.constraintViolationType="MustStartOn"),c=null,o?this.parent.dateValidationModule.checkStartDate(new Date(s)):this.parent.assignTimeToDate(a,this.parent.getCurrentDayStartTime(a));case e.ConstraintType.MustFinishOn:return(u=s.getTime()!==n.endDate.getTime())&&!o&&(this.parent.constraintViolationType="MustFinishOn"),this.getAdjustedStartDate(s,n);case e.ConstraintType.StartNoEarlierThan:return s.getTime()<a.getTime()||!o?this.parent.assignTimeToDate(a,this.parent.getCurrentDayStartTime(a)):this.parent.dateValidationModule.checkStartDate(new Date(s));case e.ConstraintType.StartNoLaterThan:if((u=s.getTime()<a.getTime())&&!o&&(this.parent.constraintViolationType="StartNoLaterThan"),!o){var f=this.parent.editModule&&this.parent.editModule.cellEditModule,m=this.parent.taskFields&&this.parent.taskFields.constraintDate;return f&&f.isCellEdit&&f.editedColumn&&u&&f.editedColumn.field===m?s:this.parent.editModule&&this.parent.editModule.dialogModule&&u&&this.parent.editModule.dialogModule.dialogConstraintDate?s:this.parent.assignTimeToDate(a,this.parent.getCurrentDayStartTime(a))}return u&&o?this.parent.dateValidationModule.checkStartDate(new Date(s)):a;case e.ConstraintType.FinishNoEarlierThan:return(y=this.getEndDate(a,n.duration,n.durationUnit,n,!1,!1)).getTime()<s.getTime()?this.getAdjustedStartDate(s,n):a;case e.ConstraintType.FinishNoLaterThan:var y=this.getEndDate(a,n.duration,n.durationUnit,n,!1,!1);return(u=s.getTime()<y.getTime())&&!o&&(this.parent.constraintViolationType="FinishNoLaterThan"),o?u?this.getAdjustedStartDate(s,n):a:u?this.getAdjustedStartDate(s,n):this.parent.assignTimeToDate(a,this.parent.getCurrentDayEndTime(a));default:return a}},i.prototype.checkEndDate=function(e,i,a,r){if(t.isNullOrUndefined(e))return null;var n,s;if(this.parent.weekWorkingTime.length>0){var o=new Date(e.getTime());(!this.parent.includeWeekend&&i&&i.isAutoSchedule||this.parent.editModule&&this.parent.editModule.taskbarEditModule&&this.parent.editModule.taskbarEditModule.taskBarEditRecord&&!this.parent.editModule.taskbarEditModule.taskBarEditRecord.ganttProperties.isAutoSchedule)&&(o=this.getNextWorkingDay(o)),n=this.parent.getStartTime(o),s=this.parent.getEndTime(o)}else n=this.parent.defaultStartTime,s=this.parent.defaultEndTime;var l=new Date(e.getTime()),d=this.getSecondsInDecimal(l);if(d>s)this.setTime(s,l);else if(d<=n&&86400!==s&&!a){var h=this.parent.taskFields;this.parent.editModule&&this.parent.editModule.editedRecord&&!this.parent.editModule.editedRecord[h.startDate]&&this.parent.editModule.editedRecord[h.endDate]?l.setDate(l.getDate()):l.setDate(l.getDate()-1),s=this.parent.getCurrentDayEndTime(l),this.setTime(s,l)}else if(d>n&&d<s)for(var p=0;p<this.parent.workingTimeRanges.length;p++)if(d>this.parent.workingTimeRanges[p].to&&this.parent.workingTimeRanges[p+1]&&d<=this.parent.workingTimeRanges[p+1].from){this.setTime(this.parent.workingTimeRanges[p].to,l);break}var u;if(!this.parent.autoCalculateDateScheduling||this.parent.isLoad&&this.parent.treeGrid.loadChildOnDemand&&this.parent.taskFields.hasChildMapping)return t.isNullOrUndefined(l)||86400===this.parent.defaultEndTime||(s=this.parent.getCurrentDayEndTime(e),this.setTime(s,l)),new Date(l.getTime());do{u=new Date(l.getTime());var c=this.parent.totalHolidayDates.length;if(this.isValidateNonWorkDays(i)&&!r){if(!this.parent.includeWeekend){var g=new Date(l.getTime());l=this.getPreviousWorkingDay(l),s=this.parent.getCurrentDayEndTime(l),g.getTime()!==l.getTime()&&this.setTime(s,l)}for(var f=0;f<c;f++){var m=this.getDateFromFormat(new Date(this.parent.totalHolidayDates[f])),y=new Date(m.getTime()),D=new Date(l.getTime());D.setMinutes(l.getMilliseconds()-2),m.setHours(0,0,0,0),y.setHours(23,59,59,59),(l.getTime()>=m.getTime()&&l.getTime()<y.getTime()||D.getTime()>=m.getTime()&&D.getTime()<y.getTime())&&(l.setDate(l.getDate()-1),s=this.parent.getCurrentDayEndTime(l),l.getTime()===m.getTime()&&86400===s&&0===this.getSecondsInDecimal(l)||this.setTime(s,l))}}}while(u.getTime()!==l.getTime());return new Date(l.getTime())},i.prototype.checkBaselineStartDate=function(e,i){if(t.isNullOrUndefined(e))return null;var a=this.parent.getCurrentDayStartTime(e),r=this.parent.getCurrentDayEndTime(i&&i.endDate?i.isAutoSchedule?i.endDate:i.autoEndDate:e),n=new Date(e.getTime()),s=this.getSecondsInDecimal(n);if(s<a)this.setTime(a,n);else if(s>r)n.setDate(n.getDate()+1),a=this.parent.weekWorkingTime.length>0?this.parent.getStartTime(n):this.parent.defaultStartTime,this.setTime(a,n);else if(s>a&&s<r)for(var o=0;o<this.parent.workingTimeRanges.length;o++)if(s>this.parent.workingTimeRanges[o].to&&this.parent.workingTimeRanges[o+1]&&s<this.parent.workingTimeRanges[o+1].from){this.setTime(this.parent.workingTimeRanges[o+1].from,n);break}return n},i.prototype.checkBaselineEndDate=function(e,i){if(t.isNullOrUndefined(e))return null;var a=this.parent.getCurrentDayEndTime(e),r=this.parent.getCurrentDayStartTime(i&&i.startDate?i.isAutoSchedule?i.startDate:i.autoStartDate:e),n=new Date(e.getTime()),s=this.getSecondsInDecimal(n);if(s>a)this.setTime(a,n);else if(s<r&&!t.isNullOrUndefined(i)&&!i.isMilestone)n.setDate(n.getDate()-1),a=this.parent.getCurrentDayEndTime(n),this.setTime(a,n);else if(s>r&&s<a)for(var o=0;o<this.parent.workingTimeRanges.length;o++)if(s>this.parent.workingTimeRanges[o].to&&this.parent.workingTimeRanges[o+1]&&s<=this.parent.workingTimeRanges[o+1].from){this.setTime(this.parent.workingTimeRanges[o].to,n);break}return i&&i.baselineStartDate&&n&&i.baselineStartDate.getTime()>n.getTime()&&n.setDate(n.getDate()+1),n},i.prototype.calculateStartDate=function(e,i){var a=e.ganttProperties,r=null;i?(t.isNullOrUndefined(a.baselineEndDate)||t.isNullOrUndefined(a.baselineDuration)||(r=this.getStartDate(a.baselineEndDate,a.baselineDuration,a.durationUnit,a,void 0,!0)),this.parent.setRecordValue("baselineStartDate",r,a,!0),this.parent.taskFields.baselineStartDate&&this.parent.dataOperation.updateMappingData(e,"baselineStartDate")):(t.isNullOrUndefined(a.endDate)||t.isNullOrUndefined(a.duration)||(r=this.getStartDate(a.endDate,a.duration,a.durationUnit,a)),this.parent.setRecordValue("startDate",r,a,!0),this.parent.taskFields.startDate&&this.parent.dataOperation.updateMappingData(e,"startDate"))},i.prototype.getFieldMappings=function(e){return{startdateField:e?"baselineStartDate":"startDate",enddateField:e?"baselineEndDate":"endDate",durationField:e?"baselineDuration":"duration"}},i.prototype.calculateEndDate=function(e,i){var a,r,n=e.ganttProperties,s=null,o=this.getFieldMappings(i),l=o.startdateField,d=o.enddateField,h=o.durationField;if(t.isNullOrUndefined(n[l]))s=e[this.parent.taskFields[d]],t.isNullOrUndefined(s)||(r=this.parent.getCurrentDayEndTime(s),this.setTime(r,s)),this.parent.setRecordValue(d,s,n,!0);else{if(!t.isNullOrUndefined(n[d])&&t.isNullOrUndefined(n[h])&&(1===this.compareDates(n[l],n[d])&&(this.parent.setRecordValue(l,new Date(n[d].getTime()),n,!0),a=this.parent.getCurrentDayStartTime(n.isAutoSchedule&&!i?n.autoStartDate:n[l]),r=this.parent.getCurrentDayEndTime(n.isAutoSchedule&&!i?n.autoEndDate:n[d]),this.setTime(a,n[l])),this.calculateDuration(e,i)),!t.isNullOrUndefined(n[h])){var p=!i&&!t.isNullOrUndefined(n.segments)&&n.segments.length>1?this.totalDuration(n.segments):n[h];s=this.getEndDate(n[l],p,n.durationUnit,n,!1,i)}this.parent.setRecordValue(d,s,n,!0)}this.parent.taskFields[d]&&this.parent.dataOperation.updateMappingData(e,d)},i.prototype.totalDuration=function(e){for(var t=0,i=0;i<e.length;i++)t+=e[i].duration+e[i].offsetDuration;return t},i.prototype.calculateDuration=function(e,i){var a,r=e.ganttProperties;if(!i&&!t.isNullOrUndefined(r.segments)&&r.segments.length>0&&!t.isNullOrUndefined(this.parent.editModule.taskbarEditModule))a=this.parent.editModule.taskbarEditModule.sumOfDuration(r.segments);else if(i||t.isNullOrUndefined(this.parent.taskFields.milestone)||t.isNullOrUndefined(r.startDate)||t.isNullOrUndefined(r.endDate)||r.startDate.getTime()!==r.endDate.getTime()||!1!==e.taskData[this.parent.taskFields.milestone]){var n=i?r.baselineStartDate:r.startDate,s=i?r.baselineEndDate:r.endDate,o=r.durationUnit,l=!i&&r.isAutoSchedule,d=!i&&r.isMilestone;a=this.getDuration(n,s,o,l,d)}else a=1;var h=i?"baselineDuration":"duration";this.parent.setRecordValue(h,a,r,!0);var p=i?this.parent.columnByField[this.parent.columnMapping.baselineDuration]:this.parent.columnByField[this.parent.columnMapping.duration];if(!(t.isNullOrUndefined(this.parent.editModule)||t.isNullOrUndefined(this.parent.editModule.cellEditModule)||this.parent.editModule.cellEditModule.isCellEdit||t.isNullOrUndefined(p))){if(!t.isNullOrUndefined(p.edit)&&!t.isNullOrUndefined(p.edit.read)){var u=this.parent.editModule.dialogModule.dialog;if(!t.isNullOrUndefined(u)){var c=i?u.querySelector("#"+this.parent.element.id+"BaselineDuration"):u.querySelector("#"+this.parent.element.id+"Duration");if(!t.isNullOrUndefined(c)){var g=c.ej2_instances[0];t.isNullOrUndefined(g)||g.value===a.toString()||(g.value=a.toString(),g.dataBind())}}}(this.parent.taskFields.duration||this.parent.taskFields.baselineDuration)&&(this.parent.dataOperation.updateMappingData(e,h),this.parent.taskFields.durationUnit&&this.parent.dataOperation.updateMappingData(e,"durationUnit"))}},i.prototype.getNonworkingTime=function(e,i,a,r,n){var s=this.parent;r=!!t.isNullOrUndefined(r)||r;var o=!n&&!s.includeWeekend&&s.autoCalculateDateScheduling&&!(s.isLoad&&s.treeGrid.loadChildOnDemand&&s.taskFields.hasChildMapping)&&a?this.getWeekendCount(e,i):0,l=this.getNumberOfSeconds(e,i,r),d=a&&s.autoCalculateDateScheduling&&!(s.isLoad&&s.treeGrid.loadChildOnDemand&&s.taskFields.hasChildMapping)&&!n?this.getHolidaysCount(e,i):0,h=(l-86400*o-86400*d)/86400,p=this.getNonWorkingSecondsOnDate(e,i,a,n);return(s.weekWorkingTime.length>0?this.nonWorkingSeconds(e,i,a,h):h*(86400-s.secondsPerDay))+86400*o+86400*d+p},i.prototype.nonWorkingSeconds=function(e,i,a,r,n){var s=e.getTime()>i.getTime()?new Date(i.getTime()):new Date(e.getTime()),o=e.getTime()>i.getTime()?new Date(e.getTime()):new Date(i.getTime()),l=0,d=0;if(n){var h=this.parent.getCurrentDayStartTime(s),p=this.parent.getCurrentDayEndTime(s);s.getHours()<p/3600&&s.getHours()>=h/3600||s.setDate(s.getDate()+1)}else s.setDate(s.getDate()+1),s.setHours(0,0,0,0),o.setHours(0,0,0,0);if(!(r>0||t.isNullOrUndefined(r)))return 0;for(;n&&s.getTime()<=o.getTime()||!n&&s.getTime()<o.getTime();){if(a){if(this.isOnHolidayOrWeekEnd(s,!0))do{s.setDate(s.getDate()+1)}while(this.isOnHolidayOrWeekEnd(s,!0));this.parent.includeWeekend||this.getNextWorkingDay(s)}if(s.getTime()<=o.getTime()){d++;var u=this.parent.getSecondsPerDay(s);if(l+=n?u:86400-u,s.setDate(s.getDate()+1),a){if(this.isOnHolidayOrWeekEnd(s,!0))do{s.setDate(s.getDate()+1)}while(this.isOnHolidayOrWeekEnd(s,!0));this.parent.includeWeekend||this.getNextWorkingDay(s)}}}return n&&(l>0?l/=d:l=this.parent.secondsPerDay),l},i.prototype.getDuration=function(e,t,i,a,r,n){if(void 0===n&&(n=!0),!e||!t)return null;var s,o=0,l=this.parent.getFormatedDate(e)===this.parent.getFormatedDate(t);if(this.parent.weekWorkingTime.length>0){var d=new Date(e);s=this.nonWorkingSeconds(e,t,a,void 0,!0);for(var h=0;d<=t;){var p=this.parent.getFormatedDate(d),u=this.parent.getSecondsPerDay(d),c=new Date(d),g=new Date(d);c.setHours(0,0,0,0),g.setHours(0,0,0,0),c.setSeconds(this.parent.getCurrentDayStartTime(d)),g.setSeconds(this.parent.getCurrentDayEndTime(d)),p===this.parent.getFormatedDate(e)&&c.setTime(e.getTime()),p===this.parent.getFormatedDate(t)&&g.setTime(t.getTime());var f=this.getTimeDifference(c,g,n)/1e3,m=this.getNonworkingTime(c,g,a,n);h+=Math.max(0,f-m)/u,d.setDate(d.getDate()+1)}r&&l||(o=this.calculateDurationValue(i,h,s))}else{s=this.parent.secondsPerDay;var y=this.getTimeDifference(e,t,n)/1e3-this.getNonworkingTime(e,t,a,n);r&&l||(o=this.calculateDurationValue(i,y/s,s))}return parseFloat(o.toString())},i.prototype.calculateDurationValue=function(e,t,i){return e&&"day"!==e?"minute"===e?t*(i/60):t*(i/3600):t},i.prototype.getDurationAsSeconds=function(e,t,i){var a;return a=this.parent.weekWorkingTime.length>0?this.parent.getSecondsPerDay(i):this.parent.secondsPerDay,t&&"day"!==t.toLocaleLowerCase()?"hour"===t.toLocaleLowerCase()?3600*e:60*e:a*e},i.prototype.getEndDate=function(e,t,i,a,r,n){var s,o=new Date(e.getTime()),l=new Date(e.getTime()),d=new Date(e.getTime());s=this.parent.weekWorkingTime.length>0&&(!i||"day"===i.toLocaleLowerCase())?this.calculateSecondDuration(t,d,s,e,!0):this.getDurationAsSeconds(t,i,e);for(;s>0;)l.setSeconds(l.getSeconds()+s),(s-=s-this.getNonworkingTime(o,l,a.isAutoSchedule,!0,n))>0&&(l=this.checkStartDate(l,a,r,void 0,n)),o=new Date(l.getTime());return l},i.prototype.getStartDate=function(e,t,i,a,r,n){var s,o=new Date(e.getTime()),l=new Date(e.getTime()),d=new Date(o.getTime());s=this.parent.weekWorkingTime.length>0?this.calculateSecondDuration(t,d,s,o,!1):this.getDurationAsSeconds(t,i,o);for(;s>0;)l.setSeconds(l.getSeconds()-s),(s-=s-this.getNonworkingTime(l,o,a.isAutoSchedule,!0,n))>0&&(o=this.checkEndDate(l,a,n)),o=new Date(l.getTime());if(r&&a.isMilestone){l.setDate(l.getDate()-1);var h=this.parent.getCurrentDayEndTime(a.endDate?a.isAutoSchedule?a.endDate:a.autoEndDate:l);this.parent.dateValidationModule.setTime(h,l),l=this.parent.dateValidationModule.checkStartDate(l,a,!0)}return l},i.prototype.calculateSecondDuration=function(e,t,i,a,r){if(e<1)i=this.parent.getSecondsPerDay(t)*e;else{i=0;var n=e,s=this.parent.getCurrentDayStartTime(t),o=this.parent.getCurrentDayEndTime(t);for(t.getHours()<o/3600&&t.getHours()>s/3600||!this.fromSegments||(r?t.setDate(t.getDate()+1):t.setDate(t.getDate()-1));n>0;){if(this.isOnHolidayOrWeekEnd(t,!0))do{r?t.setDate(t.getDate()+1):t.setDate(t.getDate()-1)}while(this.isOnHolidayOrWeekEnd(t,!0));this.parent.includeWeekend||(t=r?this.getNextWorkingDay(t):this.getPreviousWorkingDay(t));var l=this.parent.getSecondsPerDay(t),d=0;if(this.getSecondsInDecimal(a)!==this.parent.getStartTime(a)&&!Number.isInteger(n)){var h=e.toString().split(".");l*=d=parseFloat("."+h[1]),n-=d}n<1&&(l*=n),i+=l,r?t.setDate(t.getDate()+1):t.setDate(t.getDate()-1),d||n--}}return i},i.prototype.getProjectStartDate=function(e,i){if(!t.isNullOrUndefined(this.parent.cloneProjectStartDate)){"string"==typeof this.parent.cloneProjectStartDate&&(this.parent.cloneProjectStartDate=this.getDateFromFormat(this.parent.cloneProjectStartDate));o=this.checkStartDate(this.parent.cloneProjectStartDate);return this.parent.cloneProjectStartDate=o,new Date(o.getTime())}if(t.isNullOrUndefined(this.parent.projectStartDate)){if(t.isNullOrUndefined(i))return null;var a=this.parent.flatData,r=void 0;a.length>0?r=a[0].ganttProperties.startDate:(r=new Date).setHours(0,0,0,0);for(var n=1;n<a.length;n++){var s=a[n].ganttProperties.startDate;t.isNullOrUndefined(s)||-1!==this.compareDates(s,r)||(r=s)}this.parent.cloneProjectStartDate=this.checkStartDate(r,e)}else{var o=this.getDateFromFormat(this.parent.projectStartDate);this.parent.cloneProjectStartDate=this.checkStartDate(o)}return new Date(this.parent.cloneProjectStartDate.getTime())},i.prototype.getValidStartDate=function(e,i,a){var r=null,n=a?e.baselineStartDate:i?e.autoStartDate:e.startDate,s=a?e.baselineEndDate:i?e.autoEndDate:e.endDate,o=!e.isAutoSchedule&&e.autoDuration?e.autoDuration:e.duration;if(t.isNullOrUndefined(n))if(t.isNullOrUndefined(s)){if(!t.isNullOrUndefined(o)){var l=this.parent.getTaskByUniqueID(e.uniqueID);if(this.parent.allowUnscheduledTasks&&l&&l.parentItem&&t.isNullOrUndefined(n)&&t.isNullOrUndefined(s)){for(var d=this.parent.getParentTask(l.parentItem);d&&!d.ganttProperties.startDate;)d=this.parent.getParentTask(d.parentItem);r=d&&d.ganttProperties.startDate?d.ganttProperties.startDate:this.parent.cloneProjectStartDate}else r=this.getProjectStartDate(e)}}else{r=new Date(s.getTime());var h=this.parent.getCurrentDayStartTime(r);this.setTime(h,r)}else r=new Date(n.getTime());return r},i.prototype.getValidEndDate=function(e,i,a){var r=null,n=a?e.baselineStartDate:i?e.autoStartDate:e.startDate,s=a?e.baselineEndDate:i?e.autoEndDate:e.endDate,o=i?e.autoDuration:e.duration;if(t.isNullOrUndefined(s))if(t.isNullOrUndefined(n)){if(!t.isNullOrUndefined(o)){var l=this.getValidStartDate(e);l&&(r=this.getEndDate(l,o,e.durationUnit,e,!1))}}else if(e.isMilestone)r=this.checkStartDate(n);else{r=new Date(n.getTime());var d=this.parent.getCurrentDayEndTime(s||r);this.setTime(d,r)}else r=new Date(s.getTime());return r},i.prototype.getWorkingTime=function(e,i,a,r,n,s,o,l){if(!t.isNullOrUndefined(i.from)&&!t.isNullOrUndefined(i.to)){a.setHours(0,0,0,0);var d=new Date(a.getTime());a.setTime(a.getTime()+36e5*i.from);var h=new Date(a.getTime());if(24===i.to){d.setTime(d.getTime()+864e5)}else d.setTime(d.getTime()+36e5*i.to);var p=new Date(d.getTime()),u=p.getTime()-h.getTime(),c=this.getSecondsInDecimal(h),g=this.getSecondsInDecimal(p);0===g&&(g=86400),r+=u/1e3,0===n&&(this.parent.defaultStartTime=c,this.parent.weekWorkingTime.length>0&&this.assignStartTime(e,c)),n!==this[e.toLowerCase()+"TimeRangeLength"]-1&&""!==e||(this.parent.defaultEndTime=g,this.parent.weekWorkingTime.length>0&&this.assignEndTime(e,g)),n>0?""===e?(s.push(s[s.length-1]+c-o[n-1].to),o[n-1].to<c&&l.push({from:o[n-1].to,to:c,isWorking:!1,interval:c-o[n-1].to})):(this.parent[e.toLowerCase()+"NonWorkingHours"].push(this.parent[e.toLowerCase()+"NonWorkingHours"][this.parent[e.toLowerCase()+"NonWorkingHours"].length-1]+c-this.parent[e.toLowerCase()+"NonWorkingTimeRanges"][n-1].to),this.parent[e.toLowerCase()+"WorkingTimeRanges"][n-1].to<c&&this.parent[e.toLowerCase()+"NonWorkingTimeRanges"].push({from:this.parent[e.toLowerCase()+"WorkingTimeRanges"][n-1].to,to:c,isWorking:!1,interval:c-this.parent[e.toLowerCase()+"WorkingTimeRanges"][n-1].to})):""===e?(s.push(0),l.push({from:0,to:c,isWorking:!1,interval:c})):(this.parent[e.toLowerCase()+"NonWorkingHours"].push(0),this.parent[e.toLowerCase()+"NonWorkingTimeRanges"].push({from:0,to:c,isWorking:!1,interval:c})),""===e?(o.push({from:c,to:g}),l.push({from:c,to:g,isWorking:!0,interval:g-c})):(this.parent[e.toLowerCase()+"WorkingTimeRanges"].push({from:c,to:g}),this.parent[e.toLowerCase()+"NonWorkingTimeRanges"].push({from:c,to:g,isWorking:!0,interval:g-c}))}return r},i.prototype.assignStartTime=function(e,t){switch(e){case"Monday":this.parent.mondayDefaultStartTime=t;break;case"Tuesday":this.parent.tuesdayDefaultStartTime=t;break;case"Wednesday":this.parent.wednesdayDefaultStartTime=t;break;case"Thursday":this.parent.thursdayDefaultStartTime=t;break;case"Friday":this.parent.fridayDefaultStartTime=t;break;case"Saturday":this.parent.saturdayDefaultStartTime=t;break;case"Sunday":this.parent.sundayDefaultStartTime=t}},i.prototype.assignEndTime=function(e,t){switch(e){case"Monday":this.parent.mondayDefaultEndTime=t;break;case"Tuesday":this.parent.tuesdayDefaultEndTime=t;break;case"Wednesday":this.parent.wednesdayDefaultEndTime=t;break;case"Thursday":this.parent.thursdayDefaultEndTime=t;break;case"Friday":this.parent.fridayDefaultEndTime=t;break;case"Saturday":this.parent.saturdayDefaultEndTime=t;break;case"Sunday":this.parent.sundayDefaultEndTime=t}},i.prototype.calculateWeekWorkTime=function(e,t,i,a,r,n,s){for(var o=0,l=0;l<t.length;l++){var d=t[l];o+=this.getWorkingTime(e,d,i,a,l,r,n,s)}return this.parent[e.toLowerCase()+"DefaultStartTime"]/3600!=24&&this.parent[e.toLowerCase()+"NonWorkingTimeRanges"].push({from:this.parent[e.toLowerCase()+"DefaultEndTime"],to:86400,isWorking:!1,interval:86400-this.parent[e.toLowerCase()+"DefaultEndTime"]}),o},i.prototype.getSecondsPerDay=function(){var e=0,i=new Date("10/11/2018");this.parent.nonWorkingHours=[];var a=this.parent.nonWorkingHours;this.parent.workingTimeRanges=[];var r=this.parent.workingTimeRanges;this.parent.nonWorkingTimeRanges=[];for(var n=this.parent.nonWorkingTimeRanges,s=0,o=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];s<o.length;s++)this[(y=o[s]).toLowerCase()+"TimeRangeLength"]=this.parent.dayWorkingTime.length;if(this.parent.weekWorkingTime.length>0){for(var l=0;l<this.parent.weekWorkingTime.length;l++)this[this.parent.weekWorkingTime[l].dayOfWeek.toLowerCase()+"TimeRangeLength"]=this.parent.weekWorkingTime[l].timeRange.length;for(var d=this.parent.weekWorkingTime,h=this.parent.dayWorkingTime,p=0,u=d;p<u.length;p++){var c=u[p];if(c.timeRange&&c.timeRange.length>0){this.parent[c.dayOfWeek.toLowerCase()+"NonWorkingHours"]=[],this.parent[c.dayOfWeek.toLowerCase()+"NonWorkingTimeRanges"]=[],this.parent[c.dayOfWeek.toLowerCase()+"WorkingTimeRanges"]=[];var g=this.calculateWeekWorkTime(c.dayOfWeek,c.timeRange,i,e,a,r,n);this.parent[c.dayOfWeek.toLowerCase()+"Seconds"]=g}}for(var f=0,m=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];f<m.length;f++){var y=m[f],D=this.parent[y.toLowerCase()+"DefaultStartTime"];if(t.isNullOrUndefined(D)){var v=this.calculateWeekWorkTime(y,h,i,e,a,r,n);this.parent[y.toLowerCase()+"Seconds"]=v}}}for(var k=this.parent.dayWorkingTime,b=k.length,w=0,T=0;T<b;T++){var P=k[T];w+=this.getWorkingTime("",P,i,e,T,a,r,n)}return this.parent.defaultEndTime/3600!=24&&n.push({from:this.parent.defaultEndTime,to:86400,isWorking:!1,interval:86400-this.parent.defaultEndTime}),e=w},i.prototype.getDurationValue=function(e){var i=null,a=null;if("string"==typeof e){var r=e.match(/(\d*\.*\d+|.+$)/g);if(r&&r.length<=2){a=parseFloat(r[0].toString().trim());var n=r[1]?r[1].toString().trim().toLowerCase():null;-1!==t.getValue("minute",this.parent.durationUnitEditText).indexOf(n)?i="minute":-1!==t.getValue("hour",this.parent.durationUnitEditText).indexOf(n)?i="hour":-1!==t.getValue("day",this.parent.durationUnitEditText).indexOf(n)&&(i="day")}}else a=e,i=null;return{duration:a,durationUnit:i}},i.prototype.getNextWorkingDay=function(e){var t=e.getDay();return-1!==this.parent.nonWorkingDayIndex.indexOf(t)?(e.setDate(e.getDate()+1),e=this.getNextWorkingDay(e)):e},i.prototype.getWeekendCount=function(e,t){var i=0,a=new Date(e.getTime()),r=new Date(t.getTime());for(a.setHours(0,0,0,0),a.setDate(a.getDate()+1),r.setHours(0,0,0,0);a.getTime()<r.getTime();)-1!==this.parent.nonWorkingDayIndex.indexOf(a.getDay())&&(i+=1),a.setDate(a.getDate()+1);return i},i.prototype.getNumberOfSeconds=function(e,t,i){var a=new Date(e.getTime()),r=new Date(t.getTime()),n=0;return a.setDate(a.getDate()+1),a.setHours(0,0,0,0),r.setHours(0,0,0,0),a.getTime()<r.getTime()&&(n=this.getTimeDifference(a,r,i)/1e3),n%86400!=0&&(n=n-n%86400+86400),n},i.prototype.getHolidaysCount=function(e,t){var i=0,a=this.parent.totalHolidayDates,r=new Date(e.getTime()),n=new Date(t.getTime());if(r.setDate(r.getDate()+1),r.setHours(0,0,0,0),n.setHours(0,0,0,0),r.getTime()<n.getTime())for(var s=0;s<a.length;s++){var o=this.getDateFromFormat(new Date(a[s]));r.getTime()<=o.getTime()&&n.getTime()>o.getTime()&&(!this.parent.includeWeekend&&-1===this.parent.nonWorkingDayIndex.indexOf(o.getDay())||this.parent.includeWeekend)&&(i+=1)}return i},i.prototype.getHolidayDates=function(){for(var e=this.parent.holidays,i=[],a=0;a<e.length;a++){var r=this.getDateFromFormat(e[a].from),n=this.getDateFromFormat(e[a].to);if(!t.isNullOrUndefined(r)||!t.isNullOrUndefined(n))if(t.isNullOrUndefined(r)||t.isNullOrUndefined(n)){var s=r||n;s.setHours(0,0,0,0),-1===i.indexOf(s.getTime())&&i.push(s.getTime())}else for(;r<=n;)r.setHours(0,0,0,0),-1===i.indexOf(r.getTime())&&i.push(r.getTime()),r.setDate(r.getDate()+1)}return i},i.prototype.isOnHolidayOrWeekEnd=function(e,i){var a=this.parent;if(i=t.isNullOrUndefined(i)?a.includeWeekend:i,a.autoCalculateDateScheduling||a.isLoad&&a.treeGrid.loadChildOnDemand&&a.taskFields.hasChildMapping||(i=!0),!i&&-1!==this.parent.nonWorkingDayIndex.indexOf(e.getDay()))return!0;var r=a.totalHolidayDates;if(!r||0===r.length)return!1;for(var n=e.getTime(),s=0;s<r.length;s++){var o=this.getDateFromFormat(new Date(r[s])),l=o.setHours(0,0,0,0),d=o.setHours(23,59,59,999);if(n>=l&&n<=d)return!0}return!1},i.prototype.getNonWorkingSecondsOnDate=function(e,i,a,r){var n,s,o=this.getSecondsInDecimal(e),l=this.getSecondsInDecimal(i),d=-1,h=-1,p=0,u=!(!a||!this.parent.autoCalculateDateScheduling||this.parent.isLoad&&this.parent.treeGrid.loadChildOnDemand&&this.parent.taskFields.hasChildMapping||r)&&this.isOnHolidayOrWeekEnd(e,null),c=!(!a||!this.parent.autoCalculateDateScheduling||this.parent.isLoad&&this.parent.treeGrid.loadChildOnDemand&&this.parent.taskFields.hasChildMapping||r)&&this.isOnHolidayOrWeekEnd(i,null);if(this.parent.weekWorkingTime.length>0){n=this.parent.getNonWorkingRange(e);for(f=0;f<n.length;f++)o>=(g=n[f]).from&&o<=g.to&&(d=f);s=this.parent.getNonWorkingRange(i);for(f=0;f<s.length;f++)l>=(g=s[f]).from&&l<=g.to&&(h=f)}else{n=this.parent.nonWorkingTimeRanges,s=this.parent.nonWorkingTimeRanges;for(f=0;f<n.length;f++){var g=n[f];o>=g.from&&o<=g.to&&(d=f),l>=g.from&&l<=g.to&&(h=f)}}if(e.getDate()!==i.getDate()||e.getMonth()!==i.getMonth()||e.getFullYear()!==i.getFullYear()){if(u)p+=86400-o;else for(f=d;f<n.length;f++)t.isNullOrUndefined(n[f])||n[f].isWorking||(p+=f===d?n[f].to-o:n[f].interval);if(c)p+=l;else for(f=0;f<=h;f++)s[f].isWorking||(p+=f===h?l-s[f].from:s[f].interval)}else if(d!==h)if(c)p+=l-o;else for(var f=d;f<=h;f++)t.isNullOrUndefined(n[f])||n[f].isWorking||(p+=f===d?n[f].to-o:f===h?l-n[f].from:n[f].interval);else c?p+=l-o:n[d].isWorking||(p=l-o);return p},i.prototype.getPreviousWorkingDay=function(e){var t=e.getDay(),i=0===t?6:t-1,a=this.parent.getCurrentDayEndTime(e);return-1!==this.parent.nonWorkingDayIndex.indexOf(t)||-1!==this.parent.nonWorkingDayIndex.indexOf(i)&&86400!==a&&0===this.getSecondsInDecimal(e)?(e.setDate(e.getDate()-1),-1!==this.parent.nonWorkingDayIndex.indexOf(e.getDay())&&(e=this.getPreviousWorkingDay(e)),e):e},i.prototype.getNonWorkingDayIndex=function(){var e=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],t=e.length;0===this.parent.workWeek.length&&(this.parent.workWeek=["Monday","Tuesday","Wednesday","Thursday","Friday"]);for(var i=this.parent.workWeek.slice(),a=i.length,r=0;r<a;r++)i[r]=i[r].toLowerCase();this.parent.nonWorkingDayIndex=[];for(r=0;r<t;r++)-1===i.indexOf(e[r])&&this.parent.nonWorkingDayIndex.push(r)},i.prototype.setTime=function(e,t){var i=e/3600,a=(e-3600*(i=parseInt(i,10)))/60,r=e-3600*i-60*(a=parseInt(a,10));t.setHours(i,a,r)},i.prototype.getTimeDifference=function(e,t,i){var a=new Date(e.getTime()),r=new Date(t.getTime());return i&&this.updateDateWithTimeZone(a,r),r.getTime()-a.getTime()},i.prototype.updateDateWithTimeZone=function(e,t){var i,a,r=e.getTimezoneOffset(),n=t.getTimezoneOffset();if(r!==n){var s=new Date((new Date).getFullYear(),0,1).getTimezoneOffset();if(s!==r?(a=e,i=r):s!==n&&(a=t,i=n),s<0){o=s-i;a.setTime(a.getTime()+60*o*1e3)}else if(s>=0){var o=i-s;a.setTime(a.getTime()-60*o*1e3)}}},i.prototype.getSecondsInDecimal=function(e){return 60*e.getHours()*60+60*e.getMinutes()+e.getSeconds()+e.getMilliseconds()/1e3},i.prototype.offset=function(e,t){var i=e.getTimezoneOffset();try{var a=new Date(e.toLocaleString("en-US",{timeZone:t}));return isNaN(a.getTime())?0:(e.getTime()-a.getTime())/6e4+i}catch(e){return 0}},i.prototype.remove=function(e,i){return t.isNullOrUndefined(e)||(e=this.reverse(e,i,e.getTimezoneOffset())),e},i.prototype.reverse=function(e,t,i){"string"==typeof t&&(t=this.offset(e,t)),"string"==typeof i&&(i=this.offset(e,i));var a=e.getTimezoneOffset(),r=(e=new Date(e.getTime()+6e4*(t-i))).getTimezoneOffset();return new Date(e.getTime()+6e4*(r-a))},i.prototype.convert=function(e,t){var i=e.getTimezoneOffset(),a=this.offset(e,t);"string"==typeof i&&(i=this.offset(e,i)),"string"==typeof a&&(a=this.offset(e,a));var r=e.getTimezoneOffset(),n=(e=new Date(e.getTime()+6e4*(i-a))).getTimezoneOffset();return new Date(e.getTime()+6e4*(n-r))},i.prototype.getDateFromFormat=function(e,i){var a;if(t.isNullOrUndefined(e))return null;if(e instanceof Date)a=new Date(e.getTime());else{var r=this.parent.globalize.parseDate(e,{format:this.parent.getDateFormat(),type:"dateTime"});a=t.isNullOrUndefined(r)&&!isNaN(new Date(e).getTime())?new Date(e):r}var n=!this.parent.isOnAdded;return!t.isNullOrUndefined(this.parent.timezone)&&i&&(n&&this.parent.timezone||this.parent.isLoad)?this.convert(a,this.parent.timezone):a},i.prototype.compareDates=function(e,i){return t.isNullOrUndefined(e)||t.isNullOrUndefined(i)?!t.isNullOrUndefined(e)&&t.isNullOrUndefined(i)?1:t.isNullOrUndefined(e)&&!t.isNullOrUndefined(i)?-1:null:e.getTime()>i.getTime()?1:e.getTime()<i.getTime()?-1:0},i.prototype.getDurationString=function(e,i){var a="";if(!t.isNullOrUndefined(e)&&(a+=parseFloat(e.toFixed(2))+" ",!t.isNullOrUndefined(i))){var r=1!==e;"day"===i?a+=r?this.parent.localeObj.getConstant("days"):this.parent.localeObj.getConstant("day"):"hour"===i?a+=r?this.parent.localeObj.getConstant("hours"):this.parent.localeObj.getConstant("hour"):"minute"===i&&(a+=r?this.parent.localeObj.getConstant("minutes"):this.parent.localeObj.getConstant("minute"))}return a},i.prototype.getWorkString=function(e,i){var a="";if(!t.isNullOrUndefined(e)&&(a+=parseFloat(e).toFixed(2)+" ",!t.isNullOrUndefined(i))){var r=1!==e;"day"===i?a+=r?this.parent.localeObj.getConstant("days"):this.parent.localeObj.getConstant("day"):"hour"===i?a+=r?this.parent.localeObj.getConstant("hours"):this.parent.localeObj.getConstant("hour"):"minute"===i&&(a+=r?this.parent.localeObj.getConstant("minutes"):this.parent.localeObj.getConstant("minute"))}return a},i.prototype.calculateProjectDatesForValidatedTasks=function(e){var i=this,a="string"==typeof this.parent.projectStartDate?new Date(this.parent.projectStartDate):this.parent.projectStartDate,r="string"==typeof this.parent.projectEndDate?new Date(this.parent.projectEndDate):this.parent.projectEndDate,n=null,s=null,o=t.getValue("dataOperation.dataArray",this.parent);if(a&&r||!o||0!==o.length){if(o.length>0){var l=o.slice().sort(function(e,t){return new Date(e[i.parent.taskFields.startDate]).getTime()-new Date(t[i.parent.taskFields.startDate]).getTime()}),d=o.slice().sort(function(e,t){return new Date(t[i.parent.taskFields.endDate]).getTime()-new Date(e[i.parent.taskFields.endDate]).getTime()});n=l[0][this.parent.taskFields.startDate],s=d[d.length-1][this.parent.taskFields.endDate]}}else n=this.getDateFromFormat(new Date),s=this.getDateFromFormat(new Date(n.getTime()));this.parent.cloneProjectStartDate=a?new Date(a.getTime()):"string"==typeof n?new Date(n):n,this.parent.cloneProjectEndDate=r?new Date(r.getTime()):"string"==typeof s?new Date(s):s},i.prototype.calculateProjectDates=function(e){var i=this;if(this.parent.isLoad&&this.parent.enablePersistence&&this.parent.cloneProjectStartDate&&this.parent.cloneProjectEndDate)return this.parent.cloneProjectStartDate=this.getDateFromFormat(this.parent.cloneProjectStartDate),void(this.parent.cloneProjectEndDate=this.getDateFromFormat(this.parent.cloneProjectEndDate));var a="string"==typeof this.parent.projectStartDate?new Date(this.parent.projectStartDate):this.parent.projectStartDate,r="string"==typeof this.parent.projectEndDate?new Date(this.parent.projectEndDate):this.parent.projectEndDate,n=this.parent.timelineModule.isZooming&&this.parent.cloneProjectStartDate?this.getDateFromFormat(this.parent.cloneProjectStartDate):this.getDateFromFormat(a),s=this.parent.timelineModule.isZooming&&this.parent.cloneProjectEndDate?this.getDateFromFormat(this.parent.cloneProjectEndDate):this.getDateFromFormat(r),o=null,l=null,d=this.parent.flatData,h=this.parent.currentViewData,p=[],u=function(e){t.isNullOrUndefined(e)||p.push(e)},c=function(e){e.length>0&&(e.sort(function(e,t){return e.getTime()-t.getTime()}),o=new Date(e[0].getTime()),l=e.length>1?new Date(e[e.length-1].getTime()):null)};if((!n||!s)&&d.length>0||e||this.parent.timelineModule.isZoomToFit){(h.length>0&&this.parent.timelineModule.isZoomToFit&&this.parent.treeGrid.filterModule&&this.parent.treeGrid.filterModule.filteredResult.length>0?h:d).forEach(function(e){p=[];var a,r,n=e.ganttProperties;t.isNullOrUndefined(n.startDate)&&t.isNullOrUndefined(n.endDate)?(a=null,r=null):(a=i.getValidStartDate(n),r=i.getValidEndDate(n)),u(o),u(l),u(a),u(r),i.parent.renderBaseline&&!i.parent.timelineModule.isZoomToFit&&(u(n.baselineStartDate),u(n.baselineEndDate)),n.indicators&&n.indicators.length>0&&!i.parent.timelineModule.isZoomToFit&&n.indicators.forEach(function(e){u(i.getDateFromFormat(e.date))}),c(p)}),p=[],u(o),u(l),this.parent.eventMarkers.length>0&&!this.parent.timelineModule.isZoomToFit&&this.parent.eventMarkers.forEach(function(e,t){u(i.getDateFromFormat(e.day))}),this.parent.totalHolidayDates.length>0&&!this.parent.timelineModule.isZoomToFit&&this.parent.totalHolidayDates.forEach(function(e,t){u(new Date(e))}),c(p),o&&l||(o?o=t.isNullOrUndefined(o)?this.getDateFromFormat(new Date):o:(o=t.isNullOrUndefined(o)?this.getDateFromFormat(new Date):o).setHours(0,0,0,0),(l=this.getDateFromFormat(new Date(o.getTime()))).setDate(l.getDate()+20))}else n&&s||0!==d.length||(o=this.getDateFromFormat(new Date),l=this.getDateFromFormat(new Date(o.getTime())));e?(t.setValue("minStartDate",o,e),t.setValue("maxEndDate",l,e)):(this.prevProjectStartDate=this.parent.cloneProjectStartDate,this.parent.cloneProjectStartDate=o?this.parent.timelineModule.isZoomToFit?o:t.isNullOrUndefined(n)?o:new Date(n.getTime()):new Date(n.getTime()),this.parent.cloneProjectEndDate=l?this.parent.timelineModule.isZoomToFit?l:t.isNullOrUndefined(s)?l:new Date(s.getTime()):new Date(s.getTime())),this.parent.isProjectDateUpdated=!0},i.prototype.splitTasksDuration=function(e){var t=0,i=e[0].startDate,a=e[e.length-1].endDate;return"Hour"===this.parent.timelineModule.bottomTier?t+=Math.ceil(this.getTimeDifference(i,a)/36e5):"Minutes"===this.parent.timelineModule.bottomTier?t+=Math.ceil(this.getTimeDifference(i,a)/6e4):t+=Math.ceil(this.getTimeDifference(i,a)/864e5),t},i}(),I=function(){var e=function(t,i){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(t,i)};return function(t,i){function a(){this.constructor=t}e(t,i),t.prototype=null===i?Object.create(i):(a.prototype=i.prototype,new a)}}(),E=function(e){function i(t){var i=e.call(this,t)||this;return i.customSegmentProperties=[],i.processedParentItems=new Set,i.isBaseline=!1,i.uid=0,i.isTaskIDInteger=!0,i.cache={},i.offsetUpdateParentList=[],i.recordIndex=0,i.taskIds={},i.hierarchyData=[],i.addEventListener(),i}return I(i,e),i.prototype.addEventListener=function(){this.parent.on("beforeDataManipulate",this.checkDataBinding.bind(this))},i.prototype.checkDataBinding=function(e){var i=this;if(e&&(this.parent.flatData=[],this.parent.currentViewData=[],this.parent.updatedRecords=[],this.dataArray=[],this.taskIds={},this.parent.ids=[],this.recordIndex=0,this.hierarchyData=[],this.parent.predecessorsCollection=[],this.parent.treeGrid.parentData=[],this.parent.taskIds=[]),t.isNullOrUndefined(this.parent.dataSource))this.parent.dataSource=[],this.parent.processTimeline(),this.parent.renderGantt(e);else if(this.parent.dataSource instanceof a.DataManager)this.initDataSource(e);else{if(this.parent.dataSource instanceof Object&&y(this.parent)){var r=t.getValue("result",this.parent.dataSource);this.dataArray=r}else this.dataArray=this.parent.dataSource;this.processTimeline(),this.cloneDataSource(),this.parent.renderGantt(e),this.parent.flatData.map(function(e){i.parent.chartRowsModule.updateSegment(e.ganttProperties.segments,e.ganttProperties.taskId)})}this.parent.flatData.map(function(e){i.parent.chartRowsModule.updateSegment(e.ganttProperties.segments,e.ganttProperties.taskId)})},i.prototype.processTimeline=function(){this.parent.processTimeline(),this.parent.enableValidation||(this.parent.dataOperation.calculateProjectDatesForValidatedTasks(),this.parent.timelineModule.validateTimelineProp())},i.prototype.initDataSource=function(e){var t=this,i=this.parent.query instanceof a.Query?this.parent.query:new a.Query;i.requiresCount();var r=this.parent.dataSource;this.parent.loadChildOnDemand&&this.parent.taskFields.hasChildMapping?(this.processTimeline(),this.parent.renderGantt(e)):r.executeQuery(i).then(function(i){t.dataArray=i.result,t.processTimeline(),(!t.parent.loadChildOnDemand||t.parent.loadChildOnDemand&&!t.parent.taskFields.hasChildMapping)&&t.cloneDataSource(),t.parent.renderGantt(e)}).catch(function(i){t.parent.processTimeline(),t.parent.renderGantt(e),t.parent.trigger("actionFailure",{error:i})})},i.prototype.constructDataSource=function(e){for(var i,r=new a.DataManager(e).executeLocal((new a.Query).group(this.parent.taskFields.parentID)),n=[],s=0;s<r.length;s++){var o=r[s];if(!t.isNullOrUndefined(o.key)){var l=o.key.toString();if((i=void 0!==this.taskIds[l]?this.taskIds[l]:-1)>-1&&!t.isNullOrUndefined(o.key)){e[i][this.parent.taskFields.child]=o.items;continue}}(-1!==i||this.parent.loadChildOnDemand&&this.parent.taskFields.hasChildMapping)&&n.push.apply(n,o.items)}this.hierarchyData=this.dataReorder(e,n)},i.prototype.cloneDataSource=function(){var e=this.parent.taskFields.id,i=this.parent.taskFields.parentID,r=[];if(t.isNullOrUndefined(e)||t.isNullOrUndefined(i))r=this.dataArray;else{var n=[],s=void 0;this.parent.loadChildOnDemand&&this.parent.taskFields.hasChildMapping&&!this.parent.enableVirtualization&&(s=JSON.parse(JSON.stringify(this.dataArray)));for(var o=0;o<this.dataArray.length;o++){var l=this.dataArray[o];if(l.parentItem&&delete l.parentItem,n.push(t.extend({},{},l,!0)),!t.isNullOrUndefined(l[e])){var d=l[e].toString();this.taskIds[d]=o}}this.parent.taskFields.child||this.parent.setProperties({taskFields:{child:"Children"}},!0),t.isNullOrUndefined(s)?this.constructDataSource(n):(this.constructDataSource(this.dataArray),this.dataArray=s),r=this.hierarchyData}if(this.parent.taskFields.segmentId&&(this.segmentCollection=new a.DataManager(this.parent.segmentData).executeLocal((new a.Query).group(this.parent.taskFields.segmentId)),this.parent.taskFields.segments||(this.parent.taskFields.segments="Segments")),"ProjectView"!==this.parent.viewType){var h=t.extend([],[],this.parent.resources,!0),p=[];if(this.constructResourceViewDataSource(h,r,p),p.length>0){var u={},c=this.parent.resourceFields.name||"resourceName";u[this.parent.resourceFields.id]=0,u[c]=this.parent.localeObj.getConstant("unassignedTask"),u[this.parent.taskFields.child]=p,h.push(u)}r=h}this.prepareDataSource(r)},i.prototype.constructResourceViewDataSource=function(e,t,i){for(var a=this,r=0;r<t.length;r++)!function(r){var n=t[r],s=null!==a.parent.taskFields.child?a.parent.taskFields.child:a.parent.taskFields.child="Children",o=n&&n[a.parent.taskFields.resourceInfo],l=a.parent.resourceFields.id;if(n[s]&&0!==n[s].length||!o||!o.length)(!n[s]||n[s]&&0===n[s].length)&&i.push(n);else if("string"==typeof o){a.isResourceString=!0;for(var d=o,h=0;h<e.length;h++)if(e[h][a.parent.resourceFields.name].toString()===d.toString()){e[h][s]?e[h][s].push(n):e[h][s]=[n];break}}else o.forEach(function(t){for(var i="object"==typeof t?t[l]:t,a=0;a<e.length;a++)if(e[a][l].toString()===i.toString()){e[a][s]?e[a][s].push(n):e[a][s]=[n];break}});n[a.parent.taskFields.child]&&n[a.parent.taskFields.child].length&&a.constructResourceViewDataSource(e,n[a.parent.taskFields.child],i)}(r)},i.prototype.prepareDataSource=function(e){this.prepareRecordCollection(e,0),this.parent.initialLoadData=t.extend({},{},this.parent.flatData,!0),(!this.parent.autoCalculateDateScheduling||this.parent.isLoad&&this.parent.treeGrid.loadChildOnDemand&&this.parent.taskFields.hasChildMapping)&&(this.parent.dataMap=this.parent.flatData.reduce(function(e,t){return e.set(t.uniqueID,t),e},new Map)),"ResourceView"===this.parent.viewType&&this.calculateSharedTaskUniqueIds(),this.parent.taskFields.dependency&&this.parent.predecessorModule&&this.parent.predecessorModule.ensurePredecessorCollection()},i.prototype.calculateSharedTaskUniqueIds=function(){for(var e=this,t=0;t<this.parent.getTaskIds().length;t++)!function(t){var i=[];if(i[0]=e.parent.getTaskIds()[t][0],i[1]=e.parent.getTaskIds()[t].slice(1),"R"!==i[0]){var a=[],r=[];e.parent.flatData.filter(function(e){e.ganttProperties.taskId.toString()===i[1]&&0!==e.level&&(r.push(e.ganttProperties.rowUniqueID),a.push(e))});for(var n=0;n<a.length;n++)a[n].ganttProperties.sharedTaskUniqueIds=r}}(t)},i.prototype.appendGanttRecord=function(e){this.parent.flatData.push(e)},i.prototype.prepareRecordCollection=function(e,i,a){var r=this;if(Array.isArray(e)){var n=this.parent.taskFields,s=n.hasChildMapping,o=n.segmentId,l=n.constraintDate,d=n.constraintType,h=this.parent.enableValidation,p=(this.parent.autoCalculateDateScheduling,this.parent.isLoad),u=this.parent.treeGrid.loadChildOnDemand,c=this.parent.viewType,g=this.parent.allowParentDependency,f=this.parent.dataSource instanceof Object&&y(this.parent)&&!t.isNullOrUndefined(n.child);e.forEach(function(e){if(o&&r.segmentCollection){var t=r.segmentCollection.find(function(t){return t.key===e[n.id]});t&&t.items&&t.items.length&&(e[n.segments]=t.items)}s&&e.parentUniqueID&&(a=r.parent.getTaskByUniqueID(e.parentUniqueID)),l&&d&&!e.constraintDate&&!e[d]&&(e[d]=0,e[l]=e[n.startDate]||e[n.endDate]);var m=r.createRecord(e,i,a,!0,f);(!h||p&&u&&s)&&r.updateTaskLeftWidth(m),m.index=r.recordIndex++,r.parent.ids[m.index]=m.ganttProperties.rowUniqueID,r.appendGanttRecord(m),r.parent.setTaskIds(m);var y=e[n.child]||e.taskData&&e.taskData[n.child];if(!("ResourceView"!==c||y&&0!==y.length||m.parentItem||0!==m.level)){var D=m.ganttProperties,v=m;r.parent.setRecordValue(D.isAutoSchedule?"startDate":"autoStartDate",null,D,!0),r.parent.setRecordValue(D.isAutoSchedule?"endDate":"autoEndDate",null,D,!0),r.parent.setRecordValue("isMilestone",!1,D,!0),D.isAutoSchedule&&r.calculateDuration(v),r.updateWorkWithDuration(v),r.parent.setRecordValue("work",D.work,D,!0),r.parent.setRecordValue("taskType","FixedDuration",D,!0),n.type&&r.updateMappingData(v,"type"),r.parent.setRecordValue("progress",0,D,!0),r.parent.setRecordValue("totalProgress",0,D,!0),r.parent.setRecordValue("totalDuration",0,D,!0),D.isAutoSchedule||(r.parent.setRecordValue("autoDuration",r.calculateAutoDuration(D),D,!0),r.updateAutoWidthLeft(v)),g||r.resetDependency(v),r.updateWidthLeft(v),r.updateTaskData(v)}s&&(a=null),y&&y.length>0&&r.prepareRecordCollection(y,m.level+1,m)})}},i.prototype.addCustomFieldValue=function(e,t,i){var a=this.parent.ganttColumns,r=a.length;if(r)for(var n=0;n<r;n++){var s=a[n];void 0===t[s.field]&&(i?t[s.field]=void 0!==e[s.field]?e[s.field]:null:this.parent.setRecordValue(s.field,e[s.field]