gantt-lib 0.145.0 → 0.145.2

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.
@@ -1,2 +1,2 @@
1
- export { an as CascadeContext, C as CriticalPathOptions, D as DAY_MS, i as DependencyError, L as LinkType, q as ScaleTaskSubtreeAnchor, r as ScaleTaskSubtreeErrorCode, s as ScaleTaskSubtreeExternalPolicy, t as ScaleTaskSubtreeOptions, S as ScaleTaskSubtreeResult, u as ScaleTaskSubtreeWarning, ao as ScheduleCommandOptions, ap as ScheduleCommandResult, aq as ScheduleDependency, ar as ScheduleTask, as as ScheduleTaskUpdate, T as Task, at as TaskDependency, V as ValidationResult, au as addBusinessDays, x as alignToWorkingDay, y as areTasksHierarchicallyRelated, z as buildAdjacencyList, E as buildTaskRangeFromEnd, F as buildTaskRangeFromStart, H as calculateSuccessorDate, I as cascadeByLinks, av as cascadeTaskProgress, J as clampTaskRangeForIncomingFS, K as computeCriticalPath, N as computeLagFromDates, O as computeParentDates, P as computeParentProgress, aw as createCascadeContext, Q as detectCycles, U as extendCriticalIdsToParents, X as findParentId, Y as getAllDependencyEdges, Z as getAllDescendants, _ as getBusinessDayOffset, ax as getBusinessDaysCount, $ as getChildren, a0 as getDependencyLag, a1 as getSuccessorChain, a2 as getTaskDuration, a3 as getTransitiveCascadeChain, a4 as isAncestorTask, a5 as isTaskParent, a6 as moveTaskRange, a7 as moveTaskWithCascade, a8 as normalizeDependencyLag, a9 as normalizePredecessorDates, aa as normalizeTaskDependencyLags, ab as normalizeUTCDate, ac as parseDateOnly, ad as recalculateIncomingLags, ae as recalculateProjectSchedule, af as recalculateTaskFromDependencies, ag as reflowTasksOnModeSwitch, ah as removeDependenciesBetweenTasks, ai as resizeTaskWithCascade, aj as scaleTaskSubtreeDuration, ak as shiftBusinessDayOffset, ay as subtractBusinessDays, al as universalCascade, am as validateDependencies } from '../../index-Hg8BjZ_h.mjs';
1
+ export { an as CascadeContext, C as CriticalPathOptions, D as DAY_MS, i as DependencyError, L as LinkType, q as ScaleTaskSubtreeAnchor, r as ScaleTaskSubtreeErrorCode, s as ScaleTaskSubtreeExternalPolicy, t as ScaleTaskSubtreeOptions, S as ScaleTaskSubtreeResult, u as ScaleTaskSubtreeWarning, ao as ScheduleCommandOptions, ap as ScheduleCommandResult, aq as ScheduleDependency, ar as ScheduleTask, as as ScheduleTaskUpdate, T as Task, at as TaskDependency, V as ValidationResult, au as addBusinessDays, x as alignToWorkingDay, y as areTasksHierarchicallyRelated, z as buildAdjacencyList, E as buildTaskRangeFromEnd, F as buildTaskRangeFromStart, H as calculateSuccessorDate, I as cascadeByLinks, av as cascadeTaskProgress, J as clampTaskRangeForIncomingFS, K as computeCriticalPath, N as computeLagFromDates, O as computeParentDates, P as computeParentProgress, aw as createCascadeContext, Q as detectCycles, U as extendCriticalIdsToParents, X as findParentId, Y as getAllDependencyEdges, Z as getAllDescendants, _ as getBusinessDayOffset, ax as getBusinessDaysCount, $ as getChildren, a0 as getDependencyLag, a1 as getSuccessorChain, a2 as getTaskDuration, a3 as getTransitiveCascadeChain, a4 as isAncestorTask, a5 as isTaskParent, a6 as moveTaskRange, a7 as moveTaskWithCascade, a8 as normalizeDependencyLag, a9 as normalizePredecessorDates, aa as normalizeTaskDependencyLags, ab as normalizeUTCDate, ac as parseDateOnly, ad as recalculateIncomingLags, ae as recalculateProjectSchedule, af as recalculateTaskFromDependencies, ag as reflowTasksOnModeSwitch, ah as removeDependenciesBetweenTasks, ai as resizeTaskWithCascade, aj as scaleTaskSubtreeDuration, ak as shiftBusinessDayOffset, ay as subtractBusinessDays, al as universalCascade, am as validateDependencies } from '../../index-Cue-aV4x.mjs';
2
2
  import 'react';
@@ -1,2 +1,2 @@
1
- export { an as CascadeContext, C as CriticalPathOptions, D as DAY_MS, i as DependencyError, L as LinkType, q as ScaleTaskSubtreeAnchor, r as ScaleTaskSubtreeErrorCode, s as ScaleTaskSubtreeExternalPolicy, t as ScaleTaskSubtreeOptions, S as ScaleTaskSubtreeResult, u as ScaleTaskSubtreeWarning, ao as ScheduleCommandOptions, ap as ScheduleCommandResult, aq as ScheduleDependency, ar as ScheduleTask, as as ScheduleTaskUpdate, T as Task, at as TaskDependency, V as ValidationResult, au as addBusinessDays, x as alignToWorkingDay, y as areTasksHierarchicallyRelated, z as buildAdjacencyList, E as buildTaskRangeFromEnd, F as buildTaskRangeFromStart, H as calculateSuccessorDate, I as cascadeByLinks, av as cascadeTaskProgress, J as clampTaskRangeForIncomingFS, K as computeCriticalPath, N as computeLagFromDates, O as computeParentDates, P as computeParentProgress, aw as createCascadeContext, Q as detectCycles, U as extendCriticalIdsToParents, X as findParentId, Y as getAllDependencyEdges, Z as getAllDescendants, _ as getBusinessDayOffset, ax as getBusinessDaysCount, $ as getChildren, a0 as getDependencyLag, a1 as getSuccessorChain, a2 as getTaskDuration, a3 as getTransitiveCascadeChain, a4 as isAncestorTask, a5 as isTaskParent, a6 as moveTaskRange, a7 as moveTaskWithCascade, a8 as normalizeDependencyLag, a9 as normalizePredecessorDates, aa as normalizeTaskDependencyLags, ab as normalizeUTCDate, ac as parseDateOnly, ad as recalculateIncomingLags, ae as recalculateProjectSchedule, af as recalculateTaskFromDependencies, ag as reflowTasksOnModeSwitch, ah as removeDependenciesBetweenTasks, ai as resizeTaskWithCascade, aj as scaleTaskSubtreeDuration, ak as shiftBusinessDayOffset, ay as subtractBusinessDays, al as universalCascade, am as validateDependencies } from '../../index-Hg8BjZ_h.js';
1
+ export { an as CascadeContext, C as CriticalPathOptions, D as DAY_MS, i as DependencyError, L as LinkType, q as ScaleTaskSubtreeAnchor, r as ScaleTaskSubtreeErrorCode, s as ScaleTaskSubtreeExternalPolicy, t as ScaleTaskSubtreeOptions, S as ScaleTaskSubtreeResult, u as ScaleTaskSubtreeWarning, ao as ScheduleCommandOptions, ap as ScheduleCommandResult, aq as ScheduleDependency, ar as ScheduleTask, as as ScheduleTaskUpdate, T as Task, at as TaskDependency, V as ValidationResult, au as addBusinessDays, x as alignToWorkingDay, y as areTasksHierarchicallyRelated, z as buildAdjacencyList, E as buildTaskRangeFromEnd, F as buildTaskRangeFromStart, H as calculateSuccessorDate, I as cascadeByLinks, av as cascadeTaskProgress, J as clampTaskRangeForIncomingFS, K as computeCriticalPath, N as computeLagFromDates, O as computeParentDates, P as computeParentProgress, aw as createCascadeContext, Q as detectCycles, U as extendCriticalIdsToParents, X as findParentId, Y as getAllDependencyEdges, Z as getAllDescendants, _ as getBusinessDayOffset, ax as getBusinessDaysCount, $ as getChildren, a0 as getDependencyLag, a1 as getSuccessorChain, a2 as getTaskDuration, a3 as getTransitiveCascadeChain, a4 as isAncestorTask, a5 as isTaskParent, a6 as moveTaskRange, a7 as moveTaskWithCascade, a8 as normalizeDependencyLag, a9 as normalizePredecessorDates, aa as normalizeTaskDependencyLags, ab as normalizeUTCDate, ac as parseDateOnly, ad as recalculateIncomingLags, ae as recalculateProjectSchedule, af as recalculateTaskFromDependencies, ag as reflowTasksOnModeSwitch, ah as removeDependenciesBetweenTasks, ai as resizeTaskWithCascade, aj as scaleTaskSubtreeDuration, ak as shiftBusinessDayOffset, ay as subtractBusinessDays, al as universalCascade, am as validateDependencies } from '../../index-Cue-aV4x.js';
2
2
  import 'react';
@@ -1255,8 +1255,8 @@ function recalculateProjectSchedule(snapshot, options) {
1255
1255
  }
1256
1256
  }
1257
1257
  const queue = snapshot.filter((task) => (indegree.get(task.id) ?? 0) === 0).map((task) => task.id);
1258
- while (queue.length > 0) {
1259
- const currentId = queue.shift();
1258
+ for (let queueIndex = 0; queueIndex < queue.length; queueIndex++) {
1259
+ const currentId = queue[queueIndex];
1260
1260
  for (const successorId of successorIdsByTask.get(currentId) ?? []) {
1261
1261
  const nextIndegree = (indegree.get(successorId) ?? 0) - 1;
1262
1262
  indegree.set(successorId, nextIndegree);
@@ -1307,7 +1307,13 @@ function recalculateProjectSchedule(snapshot, options) {
1307
1307
  queue.push(successorId);
1308
1308
  }
1309
1309
  }
1310
- const parentsByDepth = snapshot.filter((task) => isTaskParent(task.id, snapshot)).map((task) => {
1310
+ const childrenByParent = /* @__PURE__ */ new Map();
1311
+ for (const task of snapshot) if (task.parentId) {
1312
+ const children = childrenByParent.get(task.parentId) ?? [];
1313
+ children.push(task.id);
1314
+ childrenByParent.set(task.parentId, children);
1315
+ }
1316
+ const parentsByDepth = snapshot.filter((task) => childrenByParent.has(task.id)).map((task) => {
1311
1317
  let depth = 0;
1312
1318
  let current = task.parentId ? workingMap.get(task.parentId) : void 0;
1313
1319
  while (current) {
@@ -1316,17 +1322,21 @@ function recalculateProjectSchedule(snapshot, options) {
1316
1322
  }
1317
1323
  return { taskId: task.id, depth };
1318
1324
  }).sort((left, right) => right.depth - left.depth);
1319
- const workingTasks = () => Array.from(workingMap.values());
1320
1325
  for (const { taskId } of parentsByDepth) {
1321
1326
  const parent = workingMap.get(taskId);
1322
1327
  if (!parent || parent.locked) {
1323
1328
  continue;
1324
1329
  }
1325
- const { startDate, endDate } = computeParentDates(taskId, workingTasks());
1330
+ let startTime = Infinity, endTime = -Infinity;
1331
+ for (const childId of childrenByParent.get(taskId)) {
1332
+ const child = workingMap.get(childId);
1333
+ startTime = Math.min(startTime, new Date(child.startDate).getTime());
1334
+ endTime = Math.max(endTime, new Date(child.endDate).getTime());
1335
+ }
1326
1336
  workingMap.set(taskId, {
1327
1337
  ...parent,
1328
- startDate: toIsoDate(startDate),
1329
- endDate: toIsoDate(endDate)
1338
+ startDate: toIsoDate(new Date(startTime)),
1339
+ endDate: toIsoDate(new Date(endTime))
1330
1340
  });
1331
1341
  }
1332
1342
  return createChangedResult(snapshot, Array.from(workingMap.values()));