gantt-lib 0.3.2 → 0.3.4
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/dist/index.css.map +1 -1
- package/dist/index.js +21 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -34
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +24 -264
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1111,8 +1111,8 @@ var TaskRow = React2.memo(
|
|
|
1111
1111
|
}
|
|
1112
1112
|
const msPerDay = 1e3 * 60 * 60 * 24;
|
|
1113
1113
|
const duration = taskEnd.getTime() - taskStart.getTime() + msPerDay;
|
|
1114
|
-
const
|
|
1115
|
-
const elapsed =
|
|
1114
|
+
const elapsedFromToday = today.getTime() - taskStart.getTime();
|
|
1115
|
+
const elapsed = Math.min(Math.max(0, elapsedFromToday), duration);
|
|
1116
1116
|
const expected = elapsed / duration * 100;
|
|
1117
1117
|
return actualProgress < expected;
|
|
1118
1118
|
}, [task.startDate, task.endDate, task.progress, highlightExpiredTasks]);
|
|
@@ -1322,7 +1322,7 @@ var TodayIndicator_default = TodayIndicator;
|
|
|
1322
1322
|
import React4, { useMemo as useMemo4 } from "react";
|
|
1323
1323
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1324
1324
|
var arePropsEqual2 = (prevProps, nextProps) => {
|
|
1325
|
-
return prevProps.dayWidth === nextProps.dayWidth && prevProps.dateRange.length === nextProps.dateRange.length && prevProps.totalHeight
|
|
1325
|
+
return prevProps.dayWidth === nextProps.dayWidth && prevProps.dateRange.length === nextProps.dateRange.length && prevProps.totalHeight === nextProps.totalHeight;
|
|
1326
1326
|
};
|
|
1327
1327
|
var GridBackground = React4.memo(
|
|
1328
1328
|
({ dateRange, dayWidth, totalHeight }) => {
|
|
@@ -2551,7 +2551,7 @@ var GanttChart = forwardRef(({
|
|
|
2551
2551
|
const todayOffset = todayIndex * dayWidth;
|
|
2552
2552
|
const containerWidth = container.clientWidth;
|
|
2553
2553
|
const scrollLeft = Math.round(todayOffset - containerWidth / 2 + dayWidth / 2);
|
|
2554
|
-
container.
|
|
2554
|
+
container.scrollTo({ left: Math.max(0, scrollLeft), behavior: "smooth" });
|
|
2555
2555
|
}, [dateRange, dayWidth]);
|
|
2556
2556
|
const scrollToTask = useCallback6((taskId) => {
|
|
2557
2557
|
const container = scrollContainerRef.current;
|
|
@@ -2568,7 +2568,7 @@ var GanttChart = forwardRef(({
|
|
|
2568
2568
|
if (taskIndex === -1) return;
|
|
2569
2569
|
const taskOffset = taskIndex * dayWidth;
|
|
2570
2570
|
const scrollLeft = Math.round(taskOffset - dayWidth * 2);
|
|
2571
|
-
container.
|
|
2571
|
+
container.scrollTo({ left: Math.max(0, scrollLeft), behavior: "smooth" });
|
|
2572
2572
|
}, [tasks, dateRange, dayWidth]);
|
|
2573
2573
|
useImperativeHandle(
|
|
2574
2574
|
ref,
|
|
@@ -2596,39 +2596,26 @@ var GanttChart = forwardRef(({
|
|
|
2596
2596
|
const newStart = new Date(updatedTask.startDate);
|
|
2597
2597
|
const newEnd = new Date(updatedTask.endDate);
|
|
2598
2598
|
const datesChanged = origStart.getTime() !== newStart.getTime() || origEnd.getTime() !== newEnd.getTime();
|
|
2599
|
-
if (!datesChanged
|
|
2599
|
+
if (!datesChanged) {
|
|
2600
2600
|
onChange?.((currentTasks) => currentTasks.map((t) => t.id === updatedTask.id ? updatedTask : t));
|
|
2601
2601
|
return;
|
|
2602
2602
|
}
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
const duration = taskEnd.getTime() - taskStart.getTime() + msPerDay;
|
|
2619
|
-
const elapsedCutoff = taskEnd.getTime() < today.getTime() ? taskEnd.getTime() : today.getTime();
|
|
2620
|
-
const elapsed = elapsedCutoff - taskStart.getTime();
|
|
2621
|
-
const expectedProgress = Math.min(100, Math.max(0, elapsed / duration * 100));
|
|
2622
|
-
const isExpired = actualProgress < expectedProgress;
|
|
2623
|
-
const durationDays = Math.round(duration / msPerDay);
|
|
2624
|
-
const elapsedDays = Math.round(elapsed / msPerDay);
|
|
2625
|
-
console.log(` [${t.id}] START=${t.startDate} END=${t.endDate} TODAY=${today.toISOString().split("T")[0]} PROGRESS=${actualProgress}% DURATION=${durationDays}d ELAPSED=${elapsedDays}d EXPECTED=${expectedProgress.toFixed(1)}% EXPIRED=${isExpired ? "YES" : "NO"}`);
|
|
2603
|
+
let cascadedTasksForCallback;
|
|
2604
|
+
if (disableConstraints) {
|
|
2605
|
+
cascadedTasksForCallback = [updatedTask];
|
|
2606
|
+
} else {
|
|
2607
|
+
const cascadedChain = cascadeByLinks(updatedTask.id, newStart, newEnd, tasks);
|
|
2608
|
+
cascadedTasksForCallback = [updatedTask, ...cascadedChain];
|
|
2609
|
+
}
|
|
2610
|
+
if (disableConstraints) {
|
|
2611
|
+
onChange?.((currentTasks) => currentTasks.map((t) => t.id === updatedTask.id ? updatedTask : t));
|
|
2612
|
+
} else {
|
|
2613
|
+
onChange?.((currentTasks) => {
|
|
2614
|
+
const m = new Map(cascadedTasksForCallback.map((t) => [t.id, t]));
|
|
2615
|
+
return currentTasks.map((t) => m.get(t.id) ?? t);
|
|
2616
|
+
});
|
|
2617
|
+
onCascade?.(cascadedTasksForCallback);
|
|
2626
2618
|
}
|
|
2627
|
-
onChange?.((currentTasks) => {
|
|
2628
|
-
const m = new Map(allCascaded.map((t) => [t.id, t]));
|
|
2629
|
-
return currentTasks.map((t) => m.get(t.id) ?? t);
|
|
2630
|
-
});
|
|
2631
|
-
onCascade?.(allCascaded);
|
|
2632
2619
|
}, [tasks, onChange, disableConstraints, onCascade]);
|
|
2633
2620
|
const dependencyOverrides = useMemo9(() => {
|
|
2634
2621
|
const map = new Map(cascadeOverrides);
|