UNPKG

jsgantt-improved-prime

Version:
688 lines 29.5 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var general_utils_1 = require("./utils/general_utils"); var draw_utils_1 = require("./utils/draw_utils"); var date_utils_1 = require("./utils/date_utils"); // function to open window to display task link exports.taskLink = function (pRef, pWidth, pHeight) { var vWidth, vHeight; if (pWidth) vWidth = pWidth; else vWidth = 400; if (pHeight) vHeight = pHeight; else vHeight = 400; window.open(pRef, 'newwin', 'height=' + vHeight + ',width=' + vWidth); // let OpenWindow = }; exports.sortTasks = function (pList, pID, pIdx) { if (pList.length < 2) { return pIdx; } var sortIdx = pIdx; var sortArr = new Array(); for (var i = 0; i < pList.length; i++) { if (pList[i].getParent() == pID) sortArr.push(pList[i]); } if (sortArr.length > 0) { sortArr.sort(function (a, b) { var i = a.getStart().getTime() - b.getStart().getTime(); if (i == 0) i = a.getEnd().getTime() - b.getEnd().getTime(); if (i == 0) return a.getID() - b.getID(); else return i; }); } for (var j = 0; j < sortArr.length; j++) { for (var i = 0; i < pList.length; i++) { if (pList[i].getID() == sortArr[j].getID()) { pList[i].setSortIdx(sortIdx++); sortIdx = exports.sortTasks(pList, pList[i].getID(), sortIdx); } } } return sortIdx; }; exports.TaskItemObject = function (object) { var pDataObject = __assign({}, object); general_utils_1.internalProperties.forEach(function (property) { delete pDataObject[property]; }); return new exports.TaskItem(object.pID, object.pName, object.pStart, object.pEnd, object.pClass, object.pLink, object.pMile, object.pRes, object.pComp, object.pGroup, object.pParent, object.pOpen, object.pDepend, object.pCaption, object.pNotes, object.pGantt, object.pCost, object.pPlanStart, object.pPlanEnd, object.pDuration, object.pBarText, object); }; exports.TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGantt, pCost, pPlanStart, pPlanEnd, pDuration, pBarText, pDataObject) { if (pCost === void 0) { pCost = null; } if (pPlanStart === void 0) { pPlanStart = null; } if (pPlanEnd === void 0) { pPlanEnd = null; } if (pDuration === void 0) { pDuration = null; } if (pBarText === void 0) { pBarText = null; } if (pDataObject === void 0) { pDataObject = null; } var vGantt = pGantt ? pGantt : this; var _id = document.createTextNode(pID).data; var vID = general_utils_1.hashKey(document.createTextNode(pID).data); var vName = document.createTextNode(pName).data; var vStart = null; var vEnd = null; var vPlanStart = null; var vPlanEnd = null; var vGroupMinStart = null; var vGroupMinEnd = null; var vClass = document.createTextNode(pClass).data; var vLink = document.createTextNode(pLink).data; var vMile = parseInt(document.createTextNode(pMile).data); var vRes = document.createTextNode(pRes).data; var vComp = parseFloat(document.createTextNode(pComp).data); var vCost = parseInt(document.createTextNode(pCost).data); var vGroup = parseInt(document.createTextNode(pGroup).data); var vDataObject = pDataObject; var vCompVal; var parent = document.createTextNode(pParent).data; if (parent && parent !== '0') { parent = general_utils_1.hashKey(parent).toString(); } var vParent = parent; var vOpen = (vGroup == 2) ? 1 : parseInt(document.createTextNode(pOpen).data); var vDepend = new Array(); var vDependType = new Array(); var vCaption = document.createTextNode(pCaption).data; var vDuration = pDuration || ''; var vBarText = pBarText || ''; var vLevel = 0; var vNumKid = 0; var vWeight = 0; var vVisible = 1; var vSortIdx = 0; var vToDelete = false; var x1, y1, x2, y2; var vNotes; var vParItem = null; var vCellDiv = null; var vBarDiv = null; var vTaskDiv = null; var vPlanTaskDiv = null; var vListChildRow = null; var vChildRow = null; var vGroupSpan = null; vNotes = document.createElement('span'); vNotes.className = 'gTaskNotes'; if (pNotes != null) { vNotes.innerHTML = pNotes; general_utils_1.stripUnwanted(vNotes); } if (pStart != null && pStart != '') { vStart = (pStart instanceof Date) ? pStart : date_utils_1.parseDateStr(document.createTextNode(pStart).data, vGantt.getDateInputFormat()); vGroupMinStart = vStart; } if (pEnd != null && pEnd != '') { vEnd = (pEnd instanceof Date) ? pEnd : date_utils_1.parseDateStr(document.createTextNode(pEnd).data, vGantt.getDateInputFormat()); vGroupMinEnd = vEnd; } if (pPlanStart != null && pPlanStart != '') { vPlanStart = (pPlanStart instanceof Date) ? pPlanStart : date_utils_1.parseDateStr(document.createTextNode(pPlanStart).data, vGantt.getDateInputFormat()); vGroupMinStart = vPlanStart; } if (pPlanEnd != null && pPlanEnd != '') { vPlanEnd = (pPlanEnd instanceof Date) ? pPlanEnd : date_utils_1.parseDateStr(document.createTextNode(pPlanEnd).data, vGantt.getDateInputFormat()); vGroupMinEnd = vPlanEnd; } if (pDepend != null) { var vDependStr = pDepend + ''; var vDepList = vDependStr.split(','); var n = vDepList.length; for (var k = 0; k < n; k++) { if (vDepList[k].toUpperCase().endsWith('SS')) { vDepend[k] = vDepList[k].substring(0, vDepList[k].length - 2); vDependType[k] = 'SS'; } else if (vDepList[k].toUpperCase().endsWith('FF')) { vDepend[k] = vDepList[k].substring(0, vDepList[k].length - 2); vDependType[k] = 'FF'; } else if (vDepList[k].toUpperCase().endsWith('SF')) { vDepend[k] = vDepList[k].substring(0, vDepList[k].length - 2); vDependType[k] = 'SF'; } else if (vDepList[k].toUpperCase().endsWith('FS')) { vDepend[k] = vDepList[k].substring(0, vDepList[k].length - 2); vDependType[k] = 'FS'; } else { vDepend[k] = vDepList[k]; vDependType[k] = 'FS'; } if (vDepend[k]) { vDepend[k] = general_utils_1.hashKey(vDepend[k]).toString(); } } } this.getID = function () { return vID; }; this.getOriginalID = function () { return _id; }; this.getGantt = function () { return vGantt; }; this.getName = function () { return vName; }; this.getStart = function () { if (vStart) return vStart; else if (vPlanStart) return vPlanStart; else return new Date(); }; this.getStartVar = function () { return vStart; }; this.getEnd = function () { if (vEnd) return vEnd; else if (vPlanEnd) return vPlanEnd; else if (vStart && vDuration) { var date = new Date(vStart); var vUnits = vDuration.split(' '); var value = parseInt(vUnits[0]); switch (vUnits[1]) { case 'hour': date.setMinutes(date.getMinutes() + (value * 60)); break; case 'day': date.setMinutes(date.getMinutes() + (value * 60 * 24)); break; case 'week': date.setMinutes(date.getMinutes() + (value * 60 * 24 * 7)); break; case 'month': date.setMonth(date.getMonth() + (value)); break; case 'quarter': date.setMonth(date.getMonth() + (value * 3)); break; } return date; } else return new Date(); }; this.getPlanStart = function () { return vPlanStart ? vPlanStart : vStart; }; this.getPlanEnd = function () { return vPlanEnd ? vPlanEnd : vEnd; }; this.getCost = function () { return vCost; }; this.getGroupMinStart = function () { return vGroupMinStart; }; this.getGroupMinEnd = function () { return vGroupMinEnd; }; this.getClass = function () { return vClass; }; this.getLink = function () { return vLink; }; this.getMile = function () { return vMile; }; this.getDepend = function () { if (vDepend) return vDepend; else return null; }; this.getDataObject = function () { return vDataObject; }; this.getDepType = function () { if (vDependType) return vDependType; else return null; }; this.getCaption = function () { if (vCaption) return vCaption; else return ''; }; this.getResource = function () { if (vRes) return vRes; else return '\u00A0'; }; this.getCompVal = function () { if (vComp) return vComp; else if (vCompVal) return vCompVal; else return 0; }; this.getCompStr = function () { if (vComp) return vComp + '%'; else if (vCompVal) return vCompVal + '%'; else return ''; }; this.getCompRestStr = function () { if (vComp) return (100 - vComp) + '%'; else if (vCompVal) return (100 - vCompVal) + '%'; else return ''; }; this.getNotes = function () { return vNotes; }; this.getSortIdx = function () { return vSortIdx; }; this.getToDelete = function () { return vToDelete; }; this.getDuration = function (pFormat, pLang) { if (vMile) { vDuration = '-'; } else if (!vEnd && vDuration) { return vDuration; } else { var vUnits = null; switch (pFormat) { case 'week': vUnits = 'day'; break; case 'month': vUnits = 'week'; break; case 'quarter': vUnits = 'month'; break; default: vUnits = pFormat; break; } // let vTaskEnd = new Date(this.getEnd().getTime()); // if ((vTaskEnd.getTime() - (vTaskEnd.getTimezoneOffset() * 60000)) % (86400000) == 0) { // vTaskEnd = new Date(vTaskEnd.getFullYear(), vTaskEnd.getMonth(), vTaskEnd.getDate() + 1, vTaskEnd.getHours(), vTaskEnd.getMinutes(), vTaskEnd.getSeconds()); // } // let tmpPer = (getOffset(this.getStart(), vTaskEnd, 999, vUnits)) / 1000; var hours = (this.getEnd().getTime() - this.getStart().getTime()) / 1000 / 60 / 60; var tmpPer = void 0; switch (vUnits) { case 'hour': tmpPer = Math.round(hours); vDuration = tmpPer + ' ' + ((tmpPer != 1) ? pLang['hrs'] : pLang['hr']); break; case 'day': tmpPer = Math.round(hours / 24); vDuration = tmpPer + ' ' + ((tmpPer != 1) ? pLang['dys'] : pLang['dy']); break; case 'week': tmpPer = Math.round(hours / 24 / 7); vDuration = tmpPer + ' ' + ((tmpPer != 1) ? pLang['wks'] : pLang['wk']); break; case 'month': tmpPer = Math.round(hours / 24 / 7 / 30); vDuration = tmpPer + ' ' + ((tmpPer != 1) ? pLang['mths'] : pLang['mth']); break; case 'quarter': tmpPer = Math.round(hours / 24 / 7 / 30 / 3); vDuration = tmpPer + ' ' + ((tmpPer != 1) ? pLang['qtrs'] : pLang['qtr']); break; } } return vDuration; }; this.getBarText = function () { return vBarText; }; this.getParent = function () { return vParent; }; this.getGroup = function () { return vGroup; }; this.getOpen = function () { return vOpen; }; this.getLevel = function () { return vLevel; }; this.getNumKids = function () { return vNumKid; }; this.getWeight = function () { return vWeight; }; this.getStartX = function () { return x1; }; this.getStartY = function () { return y1; }; this.getEndX = function () { return x2; }; this.getEndY = function () { return y2; }; this.getVisible = function () { return vVisible; }; this.getParItem = function () { return vParItem; }; this.getCellDiv = function () { return vCellDiv; }; this.getBarDiv = function () { return vBarDiv; }; this.getTaskDiv = function () { return vTaskDiv; }; this.getPlanTaskDiv = function () { return vPlanTaskDiv; }; this.getChildRow = function () { return vChildRow; }; this.getListChildRow = function () { return vListChildRow; }; this.getGroupSpan = function () { return vGroupSpan; }; this.setName = function (pName) { vName = pName; }; this.setNotes = function (pNotes) { vNotes = pNotes; }; this.setClass = function (pClass) { vClass = pClass; }; this.setCost = function (pCost) { vCost = pCost; }; this.setResource = function (pRes) { vRes = pRes; }; this.setDuration = function (pDuration) { vDuration = pDuration; }; this.setDataObject = function (pDataObject) { vDataObject = pDataObject; }; this.setStart = function (pStart) { if (pStart instanceof Date) { vStart = pStart; } else { var temp = new Date(pStart); if (temp instanceof Date && !isNaN(temp.valueOf())) { vStart = temp; } } }; this.setEnd = function (pEnd) { if (pEnd instanceof Date) { vEnd = pEnd; } else { var temp = new Date(pEnd); if (temp instanceof Date && !isNaN(temp.valueOf())) { vEnd = temp; } } }; this.setPlanStart = function (pPlanStart) { if (pPlanStart instanceof Date) vPlanStart = pPlanStart; else vPlanStart = new Date(pPlanStart); }; this.setPlanEnd = function (pPlanEnd) { if (pPlanEnd instanceof Date) vPlanEnd = pPlanEnd; else vPlanEnd = new Date(pPlanEnd); }; this.setGroupMinStart = function (pStart) { if (pStart instanceof Date) vGroupMinStart = pStart; }; this.setGroupMinEnd = function (pEnd) { if (pEnd instanceof Date) vGroupMinEnd = pEnd; }; this.setLevel = function (pLevel) { vLevel = parseInt(document.createTextNode(pLevel).data); }; this.setNumKid = function (pNumKid) { vNumKid = parseInt(document.createTextNode(pNumKid).data); }; this.setWeight = function (pWeight) { vWeight = parseInt(document.createTextNode(pWeight).data); }; this.setCompVal = function (pCompVal) { vCompVal = parseFloat(document.createTextNode(pCompVal).data); }; this.setComp = function (pComp) { vComp = parseInt(document.createTextNode(pComp).data); }; this.setStartX = function (pX) { x1 = parseInt(document.createTextNode(pX).data); }; this.setStartY = function (pY) { y1 = parseInt(document.createTextNode(pY).data); }; this.setEndX = function (pX) { x2 = parseInt(document.createTextNode(pX).data); }; this.setEndY = function (pY) { y2 = parseInt(document.createTextNode(pY).data); }; this.setOpen = function (pOpen) { vOpen = parseInt(document.createTextNode(pOpen).data); }; this.setVisible = function (pVisible) { vVisible = parseInt(document.createTextNode(pVisible).data); }; this.setSortIdx = function (pSortIdx) { vSortIdx = parseInt(document.createTextNode(pSortIdx).data); }; this.setToDelete = function (pToDelete) { if (pToDelete) vToDelete = true; else vToDelete = false; }; this.setParItem = function (pParItem) { if (pParItem) vParItem = pParItem; }; this.setCellDiv = function (pCellDiv) { if (typeof HTMLDivElement !== 'function' || pCellDiv instanceof HTMLDivElement) vCellDiv = pCellDiv; }; //"typeof HTMLDivElement !== 'function'" to play nice with ie6 and 7 this.setGroup = function (pGroup) { if (pGroup === true || pGroup === 'true') { vGroup = 1; } else if (pGroup === false || pGroup === 'false') { vGroup = 0; } else { vGroup = parseInt(document.createTextNode(pGroup).data); } }; this.setBarText = function (pBarText) { if (pBarText) vBarText = pBarText; }; this.setBarDiv = function (pDiv) { if (typeof HTMLDivElement !== 'function' || pDiv instanceof HTMLDivElement) vBarDiv = pDiv; }; this.setTaskDiv = function (pDiv) { if (typeof HTMLDivElement !== 'function' || pDiv instanceof HTMLDivElement) vTaskDiv = pDiv; }; this.setPlanTaskDiv = function (pDiv) { if (typeof HTMLDivElement !== 'function' || pDiv instanceof HTMLDivElement) vPlanTaskDiv = pDiv; }; this.setChildRow = function (pRow) { if (typeof HTMLTableRowElement !== 'function' || pRow instanceof HTMLTableRowElement) vChildRow = pRow; }; this.setListChildRow = function (pRow) { if (typeof HTMLTableRowElement !== 'function' || pRow instanceof HTMLTableRowElement) vListChildRow = pRow; }; this.setGroupSpan = function (pSpan) { if (typeof HTMLSpanElement !== 'function' || pSpan instanceof HTMLSpanElement) vGroupSpan = pSpan; }; this.getAllData = function () { return { pID: vID, pName: vName, pStart: vStart, pEnd: vEnd, pPlanStart: vPlanStart, pPlanEnd: vPlanEnd, pGroupMinStart: vGroupMinStart, pGroupMinEnd: vGroupMinEnd, pClass: vClass, pLink: vLink, pMile: vMile, pRes: vRes, pComp: vComp, pCost: vCost, pGroup: vGroup, pDataObjec: vDataObject }; }; }; /** * @param pTask * @param templateStrOrFn template string or function(task). In any case parameters in template string are substituted. * If string - just a static template. * If function(task): string - per task template. Can return null|undefined to fallback to default template. * If function(task): Promise<string>) - async per task template. Tooltip will show 'Loading...' if promise is not yet complete. * Otherwise returned template will be handled in the same manner as in other cases. */ exports.createTaskInfo = function (pTask, templateStrOrFn) { var _this = this; if (templateStrOrFn === void 0) { templateStrOrFn = null; } var vTmpDiv; var vTaskInfoBox = document.createDocumentFragment(); var vTaskInfo = draw_utils_1.newNode(vTaskInfoBox, 'div', null, 'gTaskInfo'); var setupTemplate = function (template) { vTaskInfo.innerHTML = ""; if (template) { var allData_1 = pTask.getAllData(); general_utils_1.internalProperties.forEach(function (key) { var lang; if (general_utils_1.internalPropertiesLang[key]) { lang = _this.vLangs[_this.vLang][general_utils_1.internalPropertiesLang[key]]; } if (!lang) { lang = key; } var val = allData_1[key]; template = template.replace("{{" + key + "}}", val); if (lang) { template = template.replace("{{Lang:" + key + "}}", lang); } else { template = template.replace("{{Lang:" + key + "}}", key); } }); draw_utils_1.newNode(vTaskInfo, 'span', null, 'gTtTemplate', template); } else { draw_utils_1.newNode(vTaskInfo, 'span', null, 'gTtTitle', pTask.getName()); if (_this.vShowTaskInfoStartDate == 1) { vTmpDiv = draw_utils_1.newNode(vTaskInfo, 'div', null, 'gTILine gTIsd'); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskLabel', _this.vLangs[_this.vLang]['startdate'] + ': '); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskText', date_utils_1.formatDateStr(pTask.getStart(), _this.vDateTaskDisplayFormat, _this.vLangs[_this.vLang])); } if (_this.vShowTaskInfoEndDate == 1) { vTmpDiv = draw_utils_1.newNode(vTaskInfo, 'div', null, 'gTILine gTIed'); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskLabel', _this.vLangs[_this.vLang]['enddate'] + ': '); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskText', date_utils_1.formatDateStr(pTask.getEnd(), _this.vDateTaskDisplayFormat, _this.vLangs[_this.vLang])); } if (_this.vShowTaskInfoDur == 1 && !pTask.getMile()) { vTmpDiv = draw_utils_1.newNode(vTaskInfo, 'div', null, 'gTILine gTId'); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskLabel', _this.vLangs[_this.vLang]['duration'] + ': '); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskText', pTask.getDuration(_this.vFormat, _this.vLangs[_this.vLang])); } if (_this.vShowTaskInfoComp == 1) { vTmpDiv = draw_utils_1.newNode(vTaskInfo, 'div', null, 'gTILine gTIc'); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskLabel', _this.vLangs[_this.vLang]['completion'] + ': '); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskText', pTask.getCompStr()); } if (_this.vShowTaskInfoRes == 1) { vTmpDiv = draw_utils_1.newNode(vTaskInfo, 'div', null, 'gTILine gTIr'); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskLabel', _this.vLangs[_this.vLang]['resource'] + ': '); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskText', pTask.getResource()); } if (_this.vShowTaskInfoLink == 1 && pTask.getLink() != '') { vTmpDiv = draw_utils_1.newNode(vTaskInfo, 'div', null, 'gTILine gTIl'); var vTmpNode = draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskLabel'); vTmpNode = draw_utils_1.newNode(vTmpNode, 'a', null, 'gTaskText', _this.vLangs[_this.vLang]['moreinfo']); vTmpNode.setAttribute('href', pTask.getLink()); } if (_this.vShowTaskInfoNotes == 1) { vTmpDiv = draw_utils_1.newNode(vTaskInfo, 'div', null, 'gTILine gTIn'); draw_utils_1.newNode(vTmpDiv, 'span', null, 'gTaskLabel', _this.vLangs[_this.vLang]['notes'] + ': '); if (pTask.getNotes()) vTmpDiv.appendChild(pTask.getNotes()); } } }; var callback; if (typeof templateStrOrFn === 'function') { callback = function () { var strOrPromise = templateStrOrFn(pTask); if (!strOrPromise || typeof strOrPromise === 'string') { setupTemplate(strOrPromise); } else if (strOrPromise.then) { setupTemplate(_this.vLangs[_this.vLang]['tooltipLoading'] || _this.vLangs['en']['tooltipLoading']); return strOrPromise.then(setupTemplate); } }; } else { setupTemplate(templateStrOrFn); } return { component: vTaskInfoBox, callback: callback }; }; exports.AddTaskItem = function (value) { var vExists = false; for (var i = 0; i < this.vTaskList.length; i++) { if (this.vTaskList[i].getID() == value.getID()) { i = this.vTaskList.length; vExists = true; } } if (!vExists) { this.vTaskList.push(value); this.vProcessNeeded = true; } }; exports.AddTaskItemObject = function (object) { if (!object.pGantt) { object.pGantt = this; } return this.AddTaskItem(exports.TaskItemObject(object)); }; exports.RemoveTaskItem = function (pID) { // simply mark the task for removal at this point - actually remove it next time we re-draw the chart for (var i = 0; i < this.vTaskList.length; i++) { if (this.vTaskList[i].getID() == pID) this.vTaskList[i].setToDelete(true); else if (this.vTaskList[i].getParent() == pID) this.RemoveTaskItem(this.vTaskList[i].getID()); } this.vProcessNeeded = true; }; exports.ClearTasks = function () { var _this = this; this.vTaskList.map(function (task) { return _this.RemoveTaskItem(task.getID()); }); this.vProcessNeeded = true; }; // Recursively process task tree ... set min, max dates of parent tasks and identfy task level. exports.processRows = function (pList, pID, pRow, pLevel, pOpen, pUseSort, vDebug) { if (vDebug === void 0) { vDebug = false; } var vMinDate = new Date(); var vMaxDate = new Date(); var vVisible = pOpen; var vCurItem = null; var vCompSum = 0; var vMinSet = 0; var vMaxSet = 0; var vNumKid = 0; var vWeight = 0; var vLevel = pLevel; var vList = pList; var vComb = false; var i = 0; for (i = 0; i < pList.length; i++) { if (pList[i].getToDelete()) { pList.splice(i, 1); i--; } if (i >= 0 && pList[i].getID() == pID) vCurItem = pList[i]; } for (i = 0; i < pList.length; i++) { if (pList[i].getParent() == pID) { vVisible = pOpen; pList[i].setParItem(vCurItem); pList[i].setVisible(vVisible); if (vVisible == 1 && pList[i].getOpen() == 0) vVisible = 0; if (pList[i].getMile() && pList[i].getParItem() && pList[i].getParItem().getGroup() == 2) { //remove milestones owned by combined groups pList.splice(i, 1); i--; continue; } pList[i].setLevel(vLevel); if (pList[i].getGroup()) { if (pList[i].getParItem() && pList[i].getParItem().getGroup() == 2) pList[i].setGroup(2); exports.processRows(vList, pList[i].getID(), i, vLevel + 1, vVisible, 0); } if (vMinSet == 0 || pList[i].getStart() < vMinDate) { vMinDate = pList[i].getStart(); vMinSet = 1; } if (vMaxSet == 0 || pList[i].getEnd() > vMaxDate) { vMaxDate = pList[i].getEnd(); vMaxSet = 1; } vNumKid++; vWeight += pList[i].getEnd() - pList[i].getStart() + 1; vCompSum += pList[i].getCompVal() * (pList[i].getEnd() - pList[i].getStart() + 1); pList[i].setSortIdx(i * pList.length); } } if (pRow >= 0) { if (pList[pRow].getGroupMinStart() != null && pList[pRow].getGroupMinStart() < vMinDate) { vMinDate = pList[pRow].getGroupMinStart(); } if (pList[pRow].getGroupMinEnd() != null && pList[pRow].getGroupMinEnd() > vMaxDate) { vMaxDate = pList[pRow].getGroupMinEnd(); } pList[pRow].setStart(vMinDate); pList[pRow].setEnd(vMaxDate); pList[pRow].setNumKid(vNumKid); pList[pRow].setWeight(vWeight); pList[pRow].setCompVal(Math.ceil(vCompSum / vWeight)); } if (pID == 0 && pUseSort == 1) { var bd = void 0; if (vDebug) { bd = new Date(); console.log('before afterTasks', bd); } exports.sortTasks(pList, 0, 0); if (vDebug) { var ad = new Date(); console.log('after afterTasks', ad, (ad.getTime() - bd.getTime())); } pList.sort(function (a, b) { return a.getSortIdx() - b.getSortIdx(); }); } if (pID == 0 && pUseSort != 1) // Need to sort combined tasks regardless { for (i = 0; i < pList.length; i++) { if (pList[i].getGroup() == 2) { vComb = true; var bd = void 0; if (vDebug) { bd = new Date(); console.log('before sortTasks', bd); } exports.sortTasks(pList, pList[i].getID(), pList[i].getSortIdx() + 1); if (vDebug) { var ad = new Date(); console.log('after sortTasks', ad, (ad.getTime() - bd.getTime())); } } } if (vComb == true) pList.sort(function (a, b) { return a.getSortIdx() - b.getSortIdx(); }); } }; //# sourceMappingURL=task.js.map