gantt-task-react-powern 0.6.44 → 0.6.46
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/README.md +3 -0
- package/dist/components/gantt/task-gantt-content.d.ts +6 -0
- package/dist/helpers/bar-helper.d.ts +10 -2
- package/dist/helpers/calendar-helper.d.ts +4 -1
- package/dist/helpers/date-helper.d.ts +5 -0
- package/dist/index.js +113 -91
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +113 -91
- package/dist/index.modern.js.map +1 -1
- package/dist/test/bar-segments.test.d.ts +1 -0
- package/dist/test/calendar-helper.test.d.ts +1 -0
- package/dist/test/hide-actual-before-slider.test.d.ts +1 -0
- package/dist/test/slider-bar-colors.test.d.ts +1 -0
- package/dist/test/task-list-select-all.test.d.ts +1 -0
- package/dist/types/public-types.d.ts +18 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -72,6 +72,8 @@ npm start
|
|
|
72
72
|
| endDate | Date | Project-level end date used for calendar/critical-path bounds. |
|
|
73
73
|
| projectCalendar | CalendarDefinition | Working calendar (shifts, off days, holidays) applied to scheduling. |
|
|
74
74
|
| sliderTime | number | Vertical slider time marker (ms) drawn on the chart. |
|
|
75
|
+
| hideActualBeforeSlider | boolean | Draws actual bars transparent until `sliderTime` reaches their actual start day. |
|
|
76
|
+
| plannedInProgressColor | string | Planned bar fill while `sliderTime` is inside the task's `inProgressWindow`. |
|
|
75
77
|
| [EventOption](#EventOption) | interface | Specifies gantt events. |
|
|
76
78
|
| [DisplayOption](#DisplayOption) | interface | Specifies view type and display timeline language. |
|
|
77
79
|
| [StylingOption](#StylingOption) | interface | Specifies chart and global tasks styles |
|
|
@@ -159,6 +161,7 @@ npm start
|
|
|
159
161
|
| optionalId | string | Optional secondary id (e.g. external system id). |
|
|
160
162
|
| dependencies | DependencyType[] | Parent dependencies. Each entry is `{ id: string; type: "SS" \| "SF" \| "FS" \| "FF" }`. |
|
|
161
163
|
| criticalPathArrows | object[] | Arrows on the critical path: `{ taskId: string; arrowColor: string; criticalPathType: string }`. |
|
|
164
|
+
| inProgressWindow | object | `{ start: Date; end?: Date }`: days the planned bar takes `plannedInProgressColor` (open-ended without `end`). |
|
|
162
165
|
| styles | object | Specifies the taskbar styling settings locally. Object is passed with the following attributes: |
|
|
163
166
|
| | | - **backgroundColor**: String. Specifies the taskbar background fill color locally. |
|
|
164
167
|
| | | - **backgroundSelectedColor**: String. Specifies the taskbar background fill color locally on select. |
|
|
@@ -28,5 +28,11 @@ export declare type TaskGanttContentProps = {
|
|
|
28
28
|
setSelectedTask: (taskId: string) => void;
|
|
29
29
|
onBarTasksUpdate?: (task: BarTask) => void;
|
|
30
30
|
sliderTime?: number;
|
|
31
|
+
/** Draw actual bars transparent until sliderTime reaches their actual start day. */
|
|
32
|
+
hideActualBeforeSlider?: boolean;
|
|
33
|
+
/** Planned bar fill while sliderTime is inside the task's `inProgressWindow`. */
|
|
34
|
+
plannedInProgressColor?: string;
|
|
35
|
+
/** Split calendar bars around off days; false in Month/Quarter views. */
|
|
36
|
+
segmentBars?: boolean;
|
|
31
37
|
} & EventOption;
|
|
32
38
|
export declare const TaskGanttContent: React.FC<TaskGanttContentProps>;
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import { Task } from "../types/public-types";
|
|
1
|
+
import { CalendarDefinition, Task } from "../types/public-types";
|
|
2
2
|
import { BarTask } from "../types/bar-task";
|
|
3
3
|
import { BarMoveAction } from "../types/gantt-task-actions";
|
|
4
|
-
export declare const convertToBarTasks: (tasks: Task[], dates: Date[], columnWidth: number, rowHeight: number, taskHeight: number, barCornerRadius: number, handleWidth: number, rtl: boolean, barProgressColor: string, barProgressSelectedColor: string, barBackgroundColor: string, barBackgroundSelectedColor: string, projectProgressColor: string, projectProgressSelectedColor: string, projectBackgroundColor: string, projectBackgroundSelectedColor: string, milestoneBackgroundColor: string, milestoneBackgroundSelectedColor: string) => BarTask[];
|
|
4
|
+
export declare const convertToBarTasks: (tasks: Task[], dates: Date[], columnWidth: number, rowHeight: number, taskHeight: number, barCornerRadius: number, handleWidth: number, rtl: boolean, barProgressColor: string, barProgressSelectedColor: string, barBackgroundColor: string, barBackgroundSelectedColor: string, projectProgressColor: string, projectProgressSelectedColor: string, projectBackgroundColor: string, projectBackgroundSelectedColor: string, milestoneBackgroundColor: string, milestoneBackgroundSelectedColor: string, segmentBars?: boolean) => BarTask[];
|
|
5
|
+
/**
|
|
6
|
+
* x-ranges of the working intervals from `start` through the end of `end`'s
|
|
7
|
+
* day, or undefined when none fall inside the chart.
|
|
8
|
+
*/
|
|
9
|
+
export declare const getWorkingSegments: (start: Date, end: Date, calendar: CalendarDefinition, dates: Date[], columnWidth: number) => {
|
|
10
|
+
x1: number;
|
|
11
|
+
x2: number;
|
|
12
|
+
}[] | undefined;
|
|
5
13
|
export declare const taskXCoordinate: (xDate: Date, dates: Date[], columnWidth: number) => number;
|
|
6
14
|
export declare const progressWithByParams: (taskX1: number, taskX2: number, progress: number, rtl: boolean) => number[];
|
|
7
15
|
export declare const progressByProgressWidth: (progressWidth: number, barTask: BarTask) => number;
|
|
@@ -3,7 +3,10 @@ import { CalendarDefinition } from "../types/public-types";
|
|
|
3
3
|
export declare function parseTimeToMinutes(t: string): number;
|
|
4
4
|
/** True if the date falls on a calendar holiday. */
|
|
5
5
|
export declare function isHoliday(date: Date, cal: CalendarDefinition): boolean;
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* True if the date's weekday is in off_days or is a holiday. Local weekday, to
|
|
8
|
+
* match the local-midnight dates and day loops used everywhere else.
|
|
9
|
+
*/
|
|
7
10
|
export declare function isOffDay(date: Date, cal: CalendarDefinition): boolean;
|
|
8
11
|
/** Gets the timestamps (Milliseconds - UTC) of all off-days for a calendar between a start and end date*/
|
|
9
12
|
export declare function getOffDays(calendar: CalendarDefinition, start: Date, end: Date): number[];
|
|
@@ -27,4 +27,9 @@ export declare const getLocaleMonth: (date: Date, locale: string) => string;
|
|
|
27
27
|
export declare const getLocalDayOfWeek: (date: Date, locale: string, format?: "long" | "short" | "narrow" | undefined) => string;
|
|
28
28
|
export declare const getWeekNumberISO8601: (date: Date) => string;
|
|
29
29
|
export declare const getDaysInMonth: (month: number, year: number) => number;
|
|
30
|
+
/**
|
|
31
|
+
* Day-resolution views shade calendar off days and split task bars around
|
|
32
|
+
* them; Month and Quarter columns are too coarse, so they do neither.
|
|
33
|
+
*/
|
|
34
|
+
export declare const viewShowsOffDays: (viewMode?: ViewMode | undefined) => boolean;
|
|
30
35
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -269,6 +269,9 @@ var getMonday = function getMonday(date) {
|
|
|
269
269
|
var diff = date.getDate() - day + (day === 0 ? -6 : 1);
|
|
270
270
|
return new Date(date.setDate(diff));
|
|
271
271
|
};
|
|
272
|
+
var viewShowsOffDays = function viewShowsOffDays(viewMode) {
|
|
273
|
+
return viewMode !== exports.ViewMode.Month && viewMode !== exports.ViewMode.Quarter;
|
|
274
|
+
};
|
|
272
275
|
|
|
273
276
|
var styles = {"ganttTable":"_3_ygE","ganttTable_Header":"_1nBOt","ganttTable_HeaderSeparator":"_2eZzQ","ganttTable_HeaderResizeHandle":"_ddPJg","ganttTable_HeaderItem":"_WuQ0f","ganttTable_HeaderItemText":"_2X3fk"};
|
|
274
277
|
|
|
@@ -402,7 +405,7 @@ function isHoliday(date, cal) {
|
|
|
402
405
|
}
|
|
403
406
|
function isOffDay(date, cal) {
|
|
404
407
|
if (cal.off_days && cal.off_days.length > 0) {
|
|
405
|
-
return cal.off_days.includes(date.
|
|
408
|
+
return cal.off_days.includes(date.getDay()) || isHoliday(date, cal);
|
|
406
409
|
} else {
|
|
407
410
|
return false;
|
|
408
411
|
}
|
|
@@ -1095,6 +1098,7 @@ var TaskList = function TaskList(_ref) {
|
|
|
1095
1098
|
TaskListTable = _ref.TaskListTable,
|
|
1096
1099
|
taskLabelRenderer = _ref.taskLabelRenderer,
|
|
1097
1100
|
onMultiSelect = _ref.onMultiSelect,
|
|
1101
|
+
onSelectAll = _ref.onSelectAll,
|
|
1098
1102
|
containerWidth = _ref.containerWidth,
|
|
1099
1103
|
containerMaxWidth = _ref.containerMaxWidth,
|
|
1100
1104
|
onContentWidthChange = _ref.onContentWidthChange,
|
|
@@ -1169,9 +1173,13 @@ var TaskList = function TaskList(_ref) {
|
|
|
1169
1173
|
onContentWidthChange === null || onContentWidthChange === void 0 ? void 0 : onContentWidthChange(contentWidth);
|
|
1170
1174
|
}, [contentWidth, onContentWidthChange]);
|
|
1171
1175
|
|
|
1172
|
-
var _useState3 = React.useState(
|
|
1173
|
-
|
|
1174
|
-
|
|
1176
|
+
var _useState3 = React.useState(false),
|
|
1177
|
+
selectAllActive = _useState3[0],
|
|
1178
|
+
setSelectAllActive = _useState3[1];
|
|
1179
|
+
|
|
1180
|
+
var _useState4 = React.useState([]),
|
|
1181
|
+
pendingTaskSelect = _useState4[0],
|
|
1182
|
+
setPendingTaskSelect = _useState4[1];
|
|
1175
1183
|
|
|
1176
1184
|
var prevSelectedTasksRef = React.useRef([]);
|
|
1177
1185
|
var expandedTasks = React.useRef(new Set());
|
|
@@ -1280,6 +1288,19 @@ var TaskList = function TaskList(_ref) {
|
|
|
1280
1288
|
setSelectedTasks(newSelectedArray);
|
|
1281
1289
|
}
|
|
1282
1290
|
}, [tasks.length]);
|
|
1291
|
+
React.useEffect(function () {
|
|
1292
|
+
if (!selectAllActive) return;
|
|
1293
|
+
var selected = new Set(selectedTasks);
|
|
1294
|
+
if (tasks.every(function (task) {
|
|
1295
|
+
return selected.has(task.id);
|
|
1296
|
+
})) return;
|
|
1297
|
+
setPendingTaskSelect(taskIndex.roots.map(function (taskId) {
|
|
1298
|
+
return {
|
|
1299
|
+
taskId: taskId,
|
|
1300
|
+
selected: true
|
|
1301
|
+
};
|
|
1302
|
+
}));
|
|
1303
|
+
}, [tasks, taskIndex, selectAllActive, selectedTasks]);
|
|
1283
1304
|
|
|
1284
1305
|
var getDescendants = function getDescendants(taskId) {
|
|
1285
1306
|
var _taskIndex$childrenOf;
|
|
@@ -1317,6 +1338,11 @@ var TaskList = function TaskList(_ref) {
|
|
|
1317
1338
|
};
|
|
1318
1339
|
|
|
1319
1340
|
var handleTaskSelect = function handleTaskSelect(taskId, selected) {
|
|
1341
|
+
if (!selected && selectAllActive) {
|
|
1342
|
+
setSelectAllActive(false);
|
|
1343
|
+
onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(false);
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1320
1346
|
setPendingTaskSelect(function (prev) {
|
|
1321
1347
|
return [].concat(prev, [{
|
|
1322
1348
|
taskId: taskId,
|
|
@@ -1326,6 +1352,9 @@ var TaskList = function TaskList(_ref) {
|
|
|
1326
1352
|
};
|
|
1327
1353
|
|
|
1328
1354
|
var handleSelectAll = function handleSelectAll(selected) {
|
|
1355
|
+
setSelectAllActive(selected);
|
|
1356
|
+
onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(selected);
|
|
1357
|
+
|
|
1329
1358
|
if (selected) {
|
|
1330
1359
|
setPendingTaskSelect(taskIndex.roots.map(function (taskId) {
|
|
1331
1360
|
return {
|
|
@@ -1345,7 +1374,7 @@ var TaskList = function TaskList(_ref) {
|
|
|
1345
1374
|
fontSize: fontSize,
|
|
1346
1375
|
rowWidth: rowWidth,
|
|
1347
1376
|
scheduleType: scheduleType,
|
|
1348
|
-
allSelected: tasks.length > 0 && selectedTasks.length === tasks.length,
|
|
1377
|
+
allSelected: selectAllActive || tasks.length > 0 && selectedTasks.length === tasks.length,
|
|
1349
1378
|
onSelectAll: onMultiSelect ? handleSelectAll : undefined,
|
|
1350
1379
|
columnWidths: columnWidths,
|
|
1351
1380
|
onColumnResize: handleColumnResize
|
|
@@ -1474,7 +1503,7 @@ var GridBody = function GridBody(_ref) {
|
|
|
1474
1503
|
}));
|
|
1475
1504
|
}
|
|
1476
1505
|
|
|
1477
|
-
if (viewMode
|
|
1506
|
+
if (viewShowsOffDays(viewMode)) {
|
|
1478
1507
|
var _dates;
|
|
1479
1508
|
|
|
1480
1509
|
var pEnd = (_dates = dates[i + 1]) != null ? _dates : addToDate(dates[i], 1, "day");
|
|
@@ -1541,7 +1570,7 @@ var GridBody = function GridBody(_ref) {
|
|
|
1541
1570
|
y2: visibleStartY,
|
|
1542
1571
|
className: styles$5.gridRowLine
|
|
1543
1572
|
}));
|
|
1544
|
-
var showPerRowOffDays = viewMode
|
|
1573
|
+
var showPerRowOffDays = viewShowsOffDays(viewMode);
|
|
1545
1574
|
|
|
1546
1575
|
for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
|
|
1547
1576
|
var vi = _step.value;
|
|
@@ -2289,9 +2318,13 @@ var drawPathAndTriangle = function drawPathAndTriangle(taskFrom, taskTo, rowHeig
|
|
|
2289
2318
|
return [path, trianglePoints];
|
|
2290
2319
|
};
|
|
2291
2320
|
|
|
2292
|
-
var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
2321
|
+
var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, segmentBars) {
|
|
2322
|
+
if (segmentBars === void 0) {
|
|
2323
|
+
segmentBars = true;
|
|
2324
|
+
}
|
|
2325
|
+
|
|
2293
2326
|
var barTasks = tasks.map(function (t, i) {
|
|
2294
|
-
return convertToBarTask(t, i, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor);
|
|
2327
|
+
return convertToBarTask(t, i, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, segmentBars);
|
|
2295
2328
|
});
|
|
2296
2329
|
var indexById = new Map();
|
|
2297
2330
|
|
|
@@ -2319,7 +2352,7 @@ var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, ro
|
|
|
2319
2352
|
return barTasks;
|
|
2320
2353
|
};
|
|
2321
2354
|
|
|
2322
|
-
var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
2355
|
+
var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, segmentBars) {
|
|
2323
2356
|
var barTask;
|
|
2324
2357
|
|
|
2325
2358
|
switch (task.type) {
|
|
@@ -2328,18 +2361,18 @@ var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth
|
|
|
2328
2361
|
break;
|
|
2329
2362
|
|
|
2330
2363
|
case "project":
|
|
2331
|
-
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor);
|
|
2364
|
+
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, segmentBars);
|
|
2332
2365
|
break;
|
|
2333
2366
|
|
|
2334
2367
|
default:
|
|
2335
|
-
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor);
|
|
2368
|
+
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, segmentBars);
|
|
2336
2369
|
break;
|
|
2337
2370
|
}
|
|
2338
2371
|
|
|
2339
2372
|
return barTask;
|
|
2340
2373
|
};
|
|
2341
2374
|
|
|
2342
|
-
var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor) {
|
|
2375
|
+
var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, segmentBars) {
|
|
2343
2376
|
var x1;
|
|
2344
2377
|
var x2;
|
|
2345
2378
|
var actualx1;
|
|
@@ -2372,35 +2405,12 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
2372
2405
|
var plannedSegments;
|
|
2373
2406
|
var actualSegments;
|
|
2374
2407
|
|
|
2375
|
-
if (task.calendar && task.start && task.end && task.start.getTime() > 0) {
|
|
2376
|
-
|
|
2377
|
-
var intervals = getWorkingIntervals(task.start, planEnd, task.calendar);
|
|
2378
|
-
var segs = intervals.map(function (iv) {
|
|
2379
|
-
return {
|
|
2380
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
2381
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
2382
|
-
};
|
|
2383
|
-
}).filter(function (s) {
|
|
2384
|
-
return s.x2 > s.x1;
|
|
2385
|
-
});
|
|
2386
|
-
if (segs.length > 0) plannedSegments = segs;
|
|
2408
|
+
if (segmentBars && task.calendar && task.start && task.end && task.start.getTime() > 0) {
|
|
2409
|
+
plannedSegments = getWorkingSegments(task.start, task.end, task.calendar, dates, columnWidth);
|
|
2387
2410
|
}
|
|
2388
2411
|
|
|
2389
|
-
if (task.calendar && task.actualStart && task.actualEnd && task.actualStart.getTime() > 0) {
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
var _intervals = getWorkingIntervals(task.actualStart, actEnd, task.calendar);
|
|
2393
|
-
|
|
2394
|
-
var _segs = _intervals.map(function (iv) {
|
|
2395
|
-
return {
|
|
2396
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
2397
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
2398
|
-
};
|
|
2399
|
-
}).filter(function (s) {
|
|
2400
|
-
return s.x2 > s.x1;
|
|
2401
|
-
});
|
|
2402
|
-
|
|
2403
|
-
if (_segs.length > 0) actualSegments = _segs;
|
|
2412
|
+
if (segmentBars && task.calendar && task.actualStart && task.actualEnd && task.actualStart.getTime() > 0) {
|
|
2413
|
+
actualSegments = getWorkingSegments(task.actualStart, task.actualEnd, task.calendar, dates, columnWidth);
|
|
2404
2414
|
}
|
|
2405
2415
|
|
|
2406
2416
|
var styles = _extends({
|
|
@@ -2433,6 +2443,18 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
2433
2443
|
});
|
|
2434
2444
|
};
|
|
2435
2445
|
|
|
2446
|
+
var getWorkingSegments = function getWorkingSegments(start, end, calendar, dates, columnWidth) {
|
|
2447
|
+
var segs = getWorkingIntervals(start, addToDate(startOfDate(end, "day"), 1, "day"), calendar).map(function (iv) {
|
|
2448
|
+
return {
|
|
2449
|
+
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
2450
|
+
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
2451
|
+
};
|
|
2452
|
+
}).filter(function (s) {
|
|
2453
|
+
return s.x2 > s.x1;
|
|
2454
|
+
});
|
|
2455
|
+
return segs.length > 0 ? segs : undefined;
|
|
2456
|
+
};
|
|
2457
|
+
|
|
2436
2458
|
var convertToMilestone = function convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
2437
2459
|
var x = task.start && task.end ? taskXCoordinate(task.end, dates, columnWidth) : 0;
|
|
2438
2460
|
var y = taskYCoordinate(index, rowHeight, taskHeight);
|
|
@@ -3326,6 +3348,7 @@ var TaskItem = function TaskItem(props) {
|
|
|
3326
3348
|
}, taskItem[1]));
|
|
3327
3349
|
};
|
|
3328
3350
|
|
|
3351
|
+
var HIDDEN_ACTUAL_COLOR = "rgba(0, 0, 0, 0)";
|
|
3329
3352
|
var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
3330
3353
|
var _svg$current;
|
|
3331
3354
|
|
|
@@ -3357,7 +3380,12 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3357
3380
|
projectCalendar = _ref.projectCalendar,
|
|
3358
3381
|
visibleStartY = _ref.visibleStartY,
|
|
3359
3382
|
visibleEndY = _ref.visibleEndY,
|
|
3360
|
-
sliderTime = _ref.sliderTime
|
|
3383
|
+
sliderTime = _ref.sliderTime,
|
|
3384
|
+
_ref$hideActualBefore = _ref.hideActualBeforeSlider,
|
|
3385
|
+
hideActualBeforeSlider = _ref$hideActualBefore === void 0 ? false : _ref$hideActualBefore,
|
|
3386
|
+
plannedInProgressColor = _ref.plannedInProgressColor,
|
|
3387
|
+
_ref$segmentBars = _ref.segmentBars,
|
|
3388
|
+
segmentBars = _ref$segmentBars === void 0 ? true : _ref$segmentBars;
|
|
3361
3389
|
var point = svg === null || svg === void 0 ? void 0 : (_svg$current = svg.current) === null || _svg$current === void 0 ? void 0 : _svg$current.createSVGPoint();
|
|
3362
3390
|
|
|
3363
3391
|
var _useState = React.useState(0),
|
|
@@ -3424,17 +3452,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3424
3452
|
finalTask.actualx2 = taskXCoordinate(finalTask.actualEnd, dates, columnWidth);
|
|
3425
3453
|
}
|
|
3426
3454
|
|
|
3427
|
-
|
|
3428
|
-
var actIntervals = getWorkingIntervals(finalTask.actualStart, actEnd, cal);
|
|
3429
|
-
var actSegs = actIntervals.map(function (iv) {
|
|
3430
|
-
return {
|
|
3431
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
3432
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
3433
|
-
};
|
|
3434
|
-
}).filter(function (s) {
|
|
3435
|
-
return s.x2 > s.x1;
|
|
3436
|
-
});
|
|
3437
|
-
finalTask.actualSegments = actSegs.length > 0 ? actSegs : undefined;
|
|
3455
|
+
finalTask.actualSegments = segmentBars ? getWorkingSegments(finalTask.actualStart, finalTask.actualEnd, cal, dates, columnWidth) : undefined;
|
|
3438
3456
|
var offTimeDays = finalTask.calendar ? getOffDays(finalTask.calendar, finalTask.actualStart, finalTask.actualEnd) : [];
|
|
3439
3457
|
var actDays = Math.max(1, Math.round((finalTask.actualEnd.getTime() - finalTask.actualStart.getTime()) / (1000 * 60 * 60 * 24)) - offTimeDays.length);
|
|
3440
3458
|
finalTask.actualDuration = actDays;
|
|
@@ -3460,17 +3478,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3460
3478
|
finalTask.x2 = taskXCoordinate(finalTask.end, dates, columnWidth);
|
|
3461
3479
|
}
|
|
3462
3480
|
|
|
3463
|
-
|
|
3464
|
-
var planIntervals = getWorkingIntervals(finalTask.start, planEnd, cal);
|
|
3465
|
-
var planSegs = planIntervals.map(function (iv) {
|
|
3466
|
-
return {
|
|
3467
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
3468
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
3469
|
-
};
|
|
3470
|
-
}).filter(function (s) {
|
|
3471
|
-
return s.x2 > s.x1;
|
|
3472
|
-
});
|
|
3473
|
-
finalTask.plannedSegments = planSegs.length > 0 ? planSegs : undefined;
|
|
3481
|
+
finalTask.plannedSegments = segmentBars ? getWorkingSegments(finalTask.start, finalTask.end, cal, dates, columnWidth) : undefined;
|
|
3474
3482
|
|
|
3475
3483
|
var _offTimeDays = finalTask.calendar ? getOffDays(finalTask.calendar, finalTask.start, finalTask.end) : [];
|
|
3476
3484
|
|
|
@@ -3562,17 +3570,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3562
3570
|
newChangedTask.actualx2 = taskXCoordinate(newChangedTask.actualEnd, dates, columnWidth);
|
|
3563
3571
|
}
|
|
3564
3572
|
|
|
3565
|
-
|
|
3566
|
-
var actIntervals = getWorkingIntervals(newChangedTask.actualStart, actEnd, cal);
|
|
3567
|
-
var actSegs = actIntervals.map(function (iv) {
|
|
3568
|
-
return {
|
|
3569
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
3570
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
3571
|
-
};
|
|
3572
|
-
}).filter(function (s) {
|
|
3573
|
-
return s.x2 > s.x1;
|
|
3574
|
-
});
|
|
3575
|
-
newChangedTask.actualSegments = actSegs.length > 0 ? actSegs : undefined;
|
|
3573
|
+
newChangedTask.actualSegments = segmentBars ? getWorkingSegments(newChangedTask.actualStart, newChangedTask.actualEnd, cal, dates, columnWidth) : undefined;
|
|
3576
3574
|
var offTimeDays = newChangedTask.calendar ? getOffDays(newChangedTask.calendar, newChangedTask.actualStart, newChangedTask.actualEnd) : [];
|
|
3577
3575
|
var actDays = Math.max(1, Math.round((newChangedTask.actualEnd.getTime() - newChangedTask.actualStart.getTime()) / (1000 * 60 * 60 * 24)) - offTimeDays.length);
|
|
3578
3576
|
newChangedTask.actualDuration = actDays;
|
|
@@ -3610,17 +3608,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3610
3608
|
newChangedTask.x2 = taskXCoordinate(newChangedTask.end, dates, columnWidth);
|
|
3611
3609
|
}
|
|
3612
3610
|
|
|
3613
|
-
|
|
3614
|
-
var planIntervals = getWorkingIntervals(newChangedTask.start, planEnd, cal);
|
|
3615
|
-
var planSegs = planIntervals.map(function (iv) {
|
|
3616
|
-
return {
|
|
3617
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
3618
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
3619
|
-
};
|
|
3620
|
-
}).filter(function (s) {
|
|
3621
|
-
return s.x2 > s.x1;
|
|
3622
|
-
});
|
|
3623
|
-
newChangedTask.plannedSegments = planSegs.length > 0 ? planSegs : undefined;
|
|
3611
|
+
newChangedTask.plannedSegments = segmentBars ? getWorkingSegments(newChangedTask.start, newChangedTask.end, cal, dates, columnWidth) : undefined;
|
|
3624
3612
|
|
|
3625
3613
|
var _offTimeDays2 = newChangedTask.calendar ? getOffDays(newChangedTask.calendar, newChangedTask.start, newChangedTask.end) : [];
|
|
3626
3614
|
|
|
@@ -3697,7 +3685,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3697
3685
|
svg.current.addEventListener("mouseup", handleMouseUp);
|
|
3698
3686
|
setIsMoving(true);
|
|
3699
3687
|
}
|
|
3700
|
-
}, [ganttEvent, xStep, initEventX1Delta, onProgressChange, timeStep, onDateChange, onCalendarError, projectCalendar, svg, isMoving, point, rtl, setFailedTask, setGanttEvent, onBarTasksUpdate, dates, columnWidth]);
|
|
3688
|
+
}, [ganttEvent, xStep, initEventX1Delta, onProgressChange, timeStep, onDateChange, onCalendarError, projectCalendar, svg, isMoving, point, rtl, segmentBars, setFailedTask, setGanttEvent, onBarTasksUpdate, dates, columnWidth]);
|
|
3701
3689
|
|
|
3702
3690
|
var handleBarEventStart = function handleBarEventStart(action, task, event, type) {
|
|
3703
3691
|
try {
|
|
@@ -3852,6 +3840,17 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3852
3840
|
|
|
3853
3841
|
var lineX = sliderTime !== undefined ? taskXCoordinate(new Date(sliderTime), dates, columnWidth) : null;
|
|
3854
3842
|
var totalHeight = tasks.length * rowHeight;
|
|
3843
|
+
var sliderDate = sliderTime != null ? new Date(sliderTime) : null;
|
|
3844
|
+
|
|
3845
|
+
var isActualBeforeSlider = function isActualBeforeSlider(task) {
|
|
3846
|
+
return hideActualBeforeSlider && !!sliderDate && !!task.actualStart && startOfDate(task.actualStart, "day") > sliderDate;
|
|
3847
|
+
};
|
|
3848
|
+
|
|
3849
|
+
var isInProgressAtSlider = function isInProgressAtSlider(_ref2) {
|
|
3850
|
+
var w = _ref2.inProgressWindow;
|
|
3851
|
+
return !!plannedInProgressColor && !!sliderDate && !!w && startOfDate(w.start, "day") <= sliderDate && (!w.end || addToDate(startOfDate(w.end, "day"), 1, "day") > sliderDate);
|
|
3852
|
+
};
|
|
3853
|
+
|
|
3855
3854
|
return React__default.createElement("g", {
|
|
3856
3855
|
className: "content"
|
|
3857
3856
|
}, lineX !== null && lineX > 0 && React__default.createElement("line", {
|
|
@@ -3877,6 +3876,19 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3877
3876
|
y: 0
|
|
3878
3877
|
});
|
|
3879
3878
|
|
|
3879
|
+
if (isActualBeforeSlider(task)) {
|
|
3880
|
+
task.styles = _extends({}, task.styles, {
|
|
3881
|
+
taskProgressColor: HIDDEN_ACTUAL_COLOR
|
|
3882
|
+
});
|
|
3883
|
+
}
|
|
3884
|
+
|
|
3885
|
+
if (isInProgressAtSlider(task)) {
|
|
3886
|
+
task.styles = _extends({}, task.styles, {
|
|
3887
|
+
backgroundColor: plannedInProgressColor,
|
|
3888
|
+
backgroundSelectedColor: plannedInProgressColor
|
|
3889
|
+
});
|
|
3890
|
+
}
|
|
3891
|
+
|
|
3880
3892
|
if (!task && _task.typeInternal === "milestone") {
|
|
3881
3893
|
return React__default.createElement("g", {
|
|
3882
3894
|
key: _task.id,
|
|
@@ -4029,6 +4041,8 @@ var HorizontalScroll = function HorizontalScroll(_ref) {
|
|
|
4029
4041
|
};
|
|
4030
4042
|
|
|
4031
4043
|
var GANTT_MIN_WIDTH_RATIO = 0.4;
|
|
4044
|
+
var PRIMARY_PATH_COLOR = "#AA00FF";
|
|
4045
|
+
var SECONDARY_PATH_COLOR = "#ff82e4";
|
|
4032
4046
|
var TABLE_GANTT_DIVIDER_WIDTH = 20;
|
|
4033
4047
|
var Gantt = function Gantt(_ref) {
|
|
4034
4048
|
var _ref3;
|
|
@@ -4116,6 +4130,7 @@ var Gantt = function Gantt(_ref) {
|
|
|
4116
4130
|
onSelect = _ref.onSelect,
|
|
4117
4131
|
onExpanderClick = _ref.onExpanderClick,
|
|
4118
4132
|
onMultiSelect = _ref.onMultiSelect,
|
|
4133
|
+
onSelectAll = _ref.onSelectAll,
|
|
4119
4134
|
taskLabelRenderer = _ref.taskLabelRenderer,
|
|
4120
4135
|
_ref$delayToRender = _ref.delayToRender,
|
|
4121
4136
|
delayToRender = _ref$delayToRender === void 0 ? 500 : _ref$delayToRender,
|
|
@@ -4123,7 +4138,10 @@ var Gantt = function Gantt(_ref) {
|
|
|
4123
4138
|
shouldNotShowLoadingOverlay = _ref$shouldNotShowLoa === void 0 ? true : _ref$shouldNotShowLoa,
|
|
4124
4139
|
projectCalendar = _ref.projectCalendar,
|
|
4125
4140
|
onCalendarError = _ref.onCalendarError,
|
|
4126
|
-
sliderTime = _ref.sliderTime
|
|
4141
|
+
sliderTime = _ref.sliderTime,
|
|
4142
|
+
_ref$hideActualBefore = _ref.hideActualBeforeSlider,
|
|
4143
|
+
hideActualBeforeSlider = _ref$hideActualBefore === void 0 ? false : _ref$hideActualBefore,
|
|
4144
|
+
plannedInProgressColor = _ref.plannedInProgressColor;
|
|
4127
4145
|
var wrapperRef = React.useRef(null);
|
|
4128
4146
|
var taskListRef = React.useRef(null);
|
|
4129
4147
|
var isDraggingTable = React.useRef(false);
|
|
@@ -4399,11 +4417,11 @@ var Gantt = function Gantt(_ref) {
|
|
|
4399
4417
|
uncolorAll(tasks);
|
|
4400
4418
|
|
|
4401
4419
|
if (scheduleType !== "lookAhead") {
|
|
4402
|
-
colorPath(secondaryPath,
|
|
4403
|
-
colorPath(primaryPath,
|
|
4420
|
+
colorPath(secondaryPath, SECONDARY_PATH_COLOR, tasks, "secondary");
|
|
4421
|
+
colorPath(primaryPath, PRIMARY_PATH_COLOR, tasks, "primary");
|
|
4404
4422
|
}
|
|
4405
4423
|
|
|
4406
|
-
setBarTasks(convertToBarTasks(filteredTasks, newDates, effectiveColumnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor));
|
|
4424
|
+
setBarTasks(convertToBarTasks(filteredTasks, newDates, effectiveColumnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, viewShowsOffDays(viewMode)));
|
|
4407
4425
|
setIsProcessing(false);
|
|
4408
4426
|
}, delayToRender);
|
|
4409
4427
|
}, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, shouldNotShowLoadingOverlay, effectiveColumnWidth, projectCalendar]);
|
|
@@ -4758,7 +4776,10 @@ var Gantt = function Gantt(_ref) {
|
|
|
4758
4776
|
projectCalendar: projectCalendar,
|
|
4759
4777
|
visibleStartY: visibleStartY,
|
|
4760
4778
|
visibleEndY: visibleEndY,
|
|
4761
|
-
sliderTime: sliderTime
|
|
4779
|
+
sliderTime: sliderTime,
|
|
4780
|
+
hideActualBeforeSlider: hideActualBeforeSlider,
|
|
4781
|
+
plannedInProgressColor: plannedInProgressColor,
|
|
4782
|
+
segmentBars: viewShowsOffDays(viewMode)
|
|
4762
4783
|
};
|
|
4763
4784
|
var tableTasks = React.useMemo(function () {
|
|
4764
4785
|
return ganttEvent.changedTask ? barTasks.map(function (t) {
|
|
@@ -4787,6 +4808,7 @@ var Gantt = function Gantt(_ref) {
|
|
|
4787
4808
|
TaskListTable: TaskListTable,
|
|
4788
4809
|
taskLabelRenderer: taskLabelRenderer,
|
|
4789
4810
|
onMultiSelect: onMultiSelect,
|
|
4811
|
+
onSelectAll: onSelectAll,
|
|
4790
4812
|
containerWidth: userResizedRef.current && tableContainerWidth != null ? Math.min(tableContainerWidth, tableCap) : undefined,
|
|
4791
4813
|
containerMaxWidth: tableCap === Infinity ? undefined : tableCap,
|
|
4792
4814
|
onContentWidthChange: setTableContentWidth,
|