gantt-task-react-powern 0.6.43 → 0.6.45
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 +92 -104
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +92 -104
- 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/calendar.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/types/public-types.d.ts +12 -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
|
}
|
|
@@ -1474,7 +1477,7 @@ var GridBody = function GridBody(_ref) {
|
|
|
1474
1477
|
}));
|
|
1475
1478
|
}
|
|
1476
1479
|
|
|
1477
|
-
if (viewMode
|
|
1480
|
+
if (viewShowsOffDays(viewMode)) {
|
|
1478
1481
|
var _dates;
|
|
1479
1482
|
|
|
1480
1483
|
var pEnd = (_dates = dates[i + 1]) != null ? _dates : addToDate(dates[i], 1, "day");
|
|
@@ -1541,7 +1544,7 @@ var GridBody = function GridBody(_ref) {
|
|
|
1541
1544
|
y2: visibleStartY,
|
|
1542
1545
|
className: styles$5.gridRowLine
|
|
1543
1546
|
}));
|
|
1544
|
-
var showPerRowOffDays = viewMode
|
|
1547
|
+
var showPerRowOffDays = viewShowsOffDays(viewMode);
|
|
1545
1548
|
|
|
1546
1549
|
for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
|
|
1547
1550
|
var vi = _step.value;
|
|
@@ -1677,6 +1680,7 @@ var TopPartOfCalendar = function TopPartOfCalendar(_ref) {
|
|
|
1677
1680
|
}, value));
|
|
1678
1681
|
};
|
|
1679
1682
|
|
|
1683
|
+
var MONTH_LABEL_HALF_WIDTH = 32;
|
|
1680
1684
|
var Calendar = function Calendar(_ref) {
|
|
1681
1685
|
var dateSetup = _ref.dateSetup,
|
|
1682
1686
|
locale = _ref.locale,
|
|
@@ -1938,6 +1942,8 @@ var Calendar = function Calendar(_ref) {
|
|
|
1938
1942
|
var topDefaultHeight = headerHeight * 0.5;
|
|
1939
1943
|
var dates = dateSetup.dates;
|
|
1940
1944
|
var weekStartDay = (_projectCalendar$week = projectCalendar === null || projectCalendar === void 0 ? void 0 : projectCalendar.week_start) != null ? _projectCalendar$week : 1;
|
|
1945
|
+
var chartWidth = columnWidth * dates.length;
|
|
1946
|
+
var monthStartIndex = 0;
|
|
1941
1947
|
|
|
1942
1948
|
for (var i = 0; i < dates.length; i++) {
|
|
1943
1949
|
var date = dates[i];
|
|
@@ -1969,32 +1975,23 @@ var Calendar = function Calendar(_ref) {
|
|
|
1969
1975
|
x: columnWidth * i + columnWidth * 0.5,
|
|
1970
1976
|
className: styles$6.calendarTopText + " " + styles$6.textAnchorMiddle
|
|
1971
1977
|
}, bottomValue));
|
|
1978
|
+
var isMonthEnd = i + 1 === dates.length || date.getMonth() !== dates[i + 1].getMonth();
|
|
1972
1979
|
|
|
1973
|
-
if (
|
|
1980
|
+
if (isMonthEnd) {
|
|
1974
1981
|
var topValue = shortMonth(date) + " " + date.getFullYear();
|
|
1982
|
+
var segmentStart = columnWidth * monthStartIndex;
|
|
1983
|
+
var segmentEnd = columnWidth * (i + 1);
|
|
1984
|
+
var xText = Math.min(Math.max((segmentStart + segmentEnd) / 2, MONTH_LABEL_HALF_WIDTH), chartWidth - MONTH_LABEL_HALF_WIDTH);
|
|
1975
1985
|
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
1976
1986
|
key: topValue + i,
|
|
1977
1987
|
value: topValue,
|
|
1978
|
-
x1Line:
|
|
1988
|
+
x1Line: segmentEnd,
|
|
1979
1989
|
y1Line: 0,
|
|
1980
1990
|
y2Line: topDefaultHeight,
|
|
1981
|
-
xText:
|
|
1982
|
-
yText: topDefaultHeight * 0.9
|
|
1983
|
-
}));
|
|
1984
|
-
}
|
|
1985
|
-
|
|
1986
|
-
if (i + 1 === dates.length) {
|
|
1987
|
-
var _topValue = shortMonth(date) + " " + date.getFullYear();
|
|
1988
|
-
|
|
1989
|
-
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
1990
|
-
key: _topValue + "last",
|
|
1991
|
-
value: _topValue,
|
|
1992
|
-
x1Line: columnWidth * (i + 1),
|
|
1993
|
-
y1Line: 0,
|
|
1994
|
-
y2Line: topDefaultHeight,
|
|
1995
|
-
xText: columnWidth * (i + 1) - date.getDate() * columnWidth * 0.5,
|
|
1991
|
+
xText: xText,
|
|
1996
1992
|
yText: topDefaultHeight * 0.9
|
|
1997
1993
|
}));
|
|
1994
|
+
monthStartIndex = i + 1;
|
|
1998
1995
|
}
|
|
1999
1996
|
}
|
|
2000
1997
|
|
|
@@ -2295,9 +2292,13 @@ var drawPathAndTriangle = function drawPathAndTriangle(taskFrom, taskTo, rowHeig
|
|
|
2295
2292
|
return [path, trianglePoints];
|
|
2296
2293
|
};
|
|
2297
2294
|
|
|
2298
|
-
var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
2295
|
+
var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, segmentBars) {
|
|
2296
|
+
if (segmentBars === void 0) {
|
|
2297
|
+
segmentBars = true;
|
|
2298
|
+
}
|
|
2299
|
+
|
|
2299
2300
|
var barTasks = tasks.map(function (t, i) {
|
|
2300
|
-
return convertToBarTask(t, i, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor);
|
|
2301
|
+
return convertToBarTask(t, i, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, segmentBars);
|
|
2301
2302
|
});
|
|
2302
2303
|
var indexById = new Map();
|
|
2303
2304
|
|
|
@@ -2325,7 +2326,7 @@ var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, ro
|
|
|
2325
2326
|
return barTasks;
|
|
2326
2327
|
};
|
|
2327
2328
|
|
|
2328
|
-
var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
2329
|
+
var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, segmentBars) {
|
|
2329
2330
|
var barTask;
|
|
2330
2331
|
|
|
2331
2332
|
switch (task.type) {
|
|
@@ -2334,18 +2335,18 @@ var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth
|
|
|
2334
2335
|
break;
|
|
2335
2336
|
|
|
2336
2337
|
case "project":
|
|
2337
|
-
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor);
|
|
2338
|
+
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, segmentBars);
|
|
2338
2339
|
break;
|
|
2339
2340
|
|
|
2340
2341
|
default:
|
|
2341
|
-
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor);
|
|
2342
|
+
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, segmentBars);
|
|
2342
2343
|
break;
|
|
2343
2344
|
}
|
|
2344
2345
|
|
|
2345
2346
|
return barTask;
|
|
2346
2347
|
};
|
|
2347
2348
|
|
|
2348
|
-
var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor) {
|
|
2349
|
+
var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, segmentBars) {
|
|
2349
2350
|
var x1;
|
|
2350
2351
|
var x2;
|
|
2351
2352
|
var actualx1;
|
|
@@ -2378,35 +2379,12 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
2378
2379
|
var plannedSegments;
|
|
2379
2380
|
var actualSegments;
|
|
2380
2381
|
|
|
2381
|
-
if (task.calendar && task.start && task.end && task.start.getTime() > 0) {
|
|
2382
|
-
|
|
2383
|
-
var intervals = getWorkingIntervals(task.start, planEnd, task.calendar);
|
|
2384
|
-
var segs = intervals.map(function (iv) {
|
|
2385
|
-
return {
|
|
2386
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
2387
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
2388
|
-
};
|
|
2389
|
-
}).filter(function (s) {
|
|
2390
|
-
return s.x2 > s.x1;
|
|
2391
|
-
});
|
|
2392
|
-
if (segs.length > 0) plannedSegments = segs;
|
|
2382
|
+
if (segmentBars && task.calendar && task.start && task.end && task.start.getTime() > 0) {
|
|
2383
|
+
plannedSegments = getWorkingSegments(task.start, task.end, task.calendar, dates, columnWidth);
|
|
2393
2384
|
}
|
|
2394
2385
|
|
|
2395
|
-
if (task.calendar && task.actualStart && task.actualEnd && task.actualStart.getTime() > 0) {
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
var _intervals = getWorkingIntervals(task.actualStart, actEnd, task.calendar);
|
|
2399
|
-
|
|
2400
|
-
var _segs = _intervals.map(function (iv) {
|
|
2401
|
-
return {
|
|
2402
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
2403
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
2404
|
-
};
|
|
2405
|
-
}).filter(function (s) {
|
|
2406
|
-
return s.x2 > s.x1;
|
|
2407
|
-
});
|
|
2408
|
-
|
|
2409
|
-
if (_segs.length > 0) actualSegments = _segs;
|
|
2386
|
+
if (segmentBars && task.calendar && task.actualStart && task.actualEnd && task.actualStart.getTime() > 0) {
|
|
2387
|
+
actualSegments = getWorkingSegments(task.actualStart, task.actualEnd, task.calendar, dates, columnWidth);
|
|
2410
2388
|
}
|
|
2411
2389
|
|
|
2412
2390
|
var styles = _extends({
|
|
@@ -2439,6 +2417,18 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
2439
2417
|
});
|
|
2440
2418
|
};
|
|
2441
2419
|
|
|
2420
|
+
var getWorkingSegments = function getWorkingSegments(start, end, calendar, dates, columnWidth) {
|
|
2421
|
+
var segs = getWorkingIntervals(start, addToDate(startOfDate(end, "day"), 1, "day"), calendar).map(function (iv) {
|
|
2422
|
+
return {
|
|
2423
|
+
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
2424
|
+
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
2425
|
+
};
|
|
2426
|
+
}).filter(function (s) {
|
|
2427
|
+
return s.x2 > s.x1;
|
|
2428
|
+
});
|
|
2429
|
+
return segs.length > 0 ? segs : undefined;
|
|
2430
|
+
};
|
|
2431
|
+
|
|
2442
2432
|
var convertToMilestone = function convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
2443
2433
|
var x = task.start && task.end ? taskXCoordinate(task.end, dates, columnWidth) : 0;
|
|
2444
2434
|
var y = taskYCoordinate(index, rowHeight, taskHeight);
|
|
@@ -3332,6 +3322,7 @@ var TaskItem = function TaskItem(props) {
|
|
|
3332
3322
|
}, taskItem[1]));
|
|
3333
3323
|
};
|
|
3334
3324
|
|
|
3325
|
+
var HIDDEN_ACTUAL_COLOR = "rgba(0, 0, 0, 0)";
|
|
3335
3326
|
var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
3336
3327
|
var _svg$current;
|
|
3337
3328
|
|
|
@@ -3363,7 +3354,12 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3363
3354
|
projectCalendar = _ref.projectCalendar,
|
|
3364
3355
|
visibleStartY = _ref.visibleStartY,
|
|
3365
3356
|
visibleEndY = _ref.visibleEndY,
|
|
3366
|
-
sliderTime = _ref.sliderTime
|
|
3357
|
+
sliderTime = _ref.sliderTime,
|
|
3358
|
+
_ref$hideActualBefore = _ref.hideActualBeforeSlider,
|
|
3359
|
+
hideActualBeforeSlider = _ref$hideActualBefore === void 0 ? false : _ref$hideActualBefore,
|
|
3360
|
+
plannedInProgressColor = _ref.plannedInProgressColor,
|
|
3361
|
+
_ref$segmentBars = _ref.segmentBars,
|
|
3362
|
+
segmentBars = _ref$segmentBars === void 0 ? true : _ref$segmentBars;
|
|
3367
3363
|
var point = svg === null || svg === void 0 ? void 0 : (_svg$current = svg.current) === null || _svg$current === void 0 ? void 0 : _svg$current.createSVGPoint();
|
|
3368
3364
|
|
|
3369
3365
|
var _useState = React.useState(0),
|
|
@@ -3430,17 +3426,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3430
3426
|
finalTask.actualx2 = taskXCoordinate(finalTask.actualEnd, dates, columnWidth);
|
|
3431
3427
|
}
|
|
3432
3428
|
|
|
3433
|
-
|
|
3434
|
-
var actIntervals = getWorkingIntervals(finalTask.actualStart, actEnd, cal);
|
|
3435
|
-
var actSegs = actIntervals.map(function (iv) {
|
|
3436
|
-
return {
|
|
3437
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
3438
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
3439
|
-
};
|
|
3440
|
-
}).filter(function (s) {
|
|
3441
|
-
return s.x2 > s.x1;
|
|
3442
|
-
});
|
|
3443
|
-
finalTask.actualSegments = actSegs.length > 0 ? actSegs : undefined;
|
|
3429
|
+
finalTask.actualSegments = segmentBars ? getWorkingSegments(finalTask.actualStart, finalTask.actualEnd, cal, dates, columnWidth) : undefined;
|
|
3444
3430
|
var offTimeDays = finalTask.calendar ? getOffDays(finalTask.calendar, finalTask.actualStart, finalTask.actualEnd) : [];
|
|
3445
3431
|
var actDays = Math.max(1, Math.round((finalTask.actualEnd.getTime() - finalTask.actualStart.getTime()) / (1000 * 60 * 60 * 24)) - offTimeDays.length);
|
|
3446
3432
|
finalTask.actualDuration = actDays;
|
|
@@ -3466,17 +3452,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3466
3452
|
finalTask.x2 = taskXCoordinate(finalTask.end, dates, columnWidth);
|
|
3467
3453
|
}
|
|
3468
3454
|
|
|
3469
|
-
|
|
3470
|
-
var planIntervals = getWorkingIntervals(finalTask.start, planEnd, cal);
|
|
3471
|
-
var planSegs = planIntervals.map(function (iv) {
|
|
3472
|
-
return {
|
|
3473
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
3474
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
3475
|
-
};
|
|
3476
|
-
}).filter(function (s) {
|
|
3477
|
-
return s.x2 > s.x1;
|
|
3478
|
-
});
|
|
3479
|
-
finalTask.plannedSegments = planSegs.length > 0 ? planSegs : undefined;
|
|
3455
|
+
finalTask.plannedSegments = segmentBars ? getWorkingSegments(finalTask.start, finalTask.end, cal, dates, columnWidth) : undefined;
|
|
3480
3456
|
|
|
3481
3457
|
var _offTimeDays = finalTask.calendar ? getOffDays(finalTask.calendar, finalTask.start, finalTask.end) : [];
|
|
3482
3458
|
|
|
@@ -3568,17 +3544,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3568
3544
|
newChangedTask.actualx2 = taskXCoordinate(newChangedTask.actualEnd, dates, columnWidth);
|
|
3569
3545
|
}
|
|
3570
3546
|
|
|
3571
|
-
|
|
3572
|
-
var actIntervals = getWorkingIntervals(newChangedTask.actualStart, actEnd, cal);
|
|
3573
|
-
var actSegs = actIntervals.map(function (iv) {
|
|
3574
|
-
return {
|
|
3575
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
3576
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
3577
|
-
};
|
|
3578
|
-
}).filter(function (s) {
|
|
3579
|
-
return s.x2 > s.x1;
|
|
3580
|
-
});
|
|
3581
|
-
newChangedTask.actualSegments = actSegs.length > 0 ? actSegs : undefined;
|
|
3547
|
+
newChangedTask.actualSegments = segmentBars ? getWorkingSegments(newChangedTask.actualStart, newChangedTask.actualEnd, cal, dates, columnWidth) : undefined;
|
|
3582
3548
|
var offTimeDays = newChangedTask.calendar ? getOffDays(newChangedTask.calendar, newChangedTask.actualStart, newChangedTask.actualEnd) : [];
|
|
3583
3549
|
var actDays = Math.max(1, Math.round((newChangedTask.actualEnd.getTime() - newChangedTask.actualStart.getTime()) / (1000 * 60 * 60 * 24)) - offTimeDays.length);
|
|
3584
3550
|
newChangedTask.actualDuration = actDays;
|
|
@@ -3616,17 +3582,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3616
3582
|
newChangedTask.x2 = taskXCoordinate(newChangedTask.end, dates, columnWidth);
|
|
3617
3583
|
}
|
|
3618
3584
|
|
|
3619
|
-
|
|
3620
|
-
var planIntervals = getWorkingIntervals(newChangedTask.start, planEnd, cal);
|
|
3621
|
-
var planSegs = planIntervals.map(function (iv) {
|
|
3622
|
-
return {
|
|
3623
|
-
x1: taskXCoordinate(iv.start, dates, columnWidth),
|
|
3624
|
-
x2: taskXCoordinate(iv.end, dates, columnWidth)
|
|
3625
|
-
};
|
|
3626
|
-
}).filter(function (s) {
|
|
3627
|
-
return s.x2 > s.x1;
|
|
3628
|
-
});
|
|
3629
|
-
newChangedTask.plannedSegments = planSegs.length > 0 ? planSegs : undefined;
|
|
3585
|
+
newChangedTask.plannedSegments = segmentBars ? getWorkingSegments(newChangedTask.start, newChangedTask.end, cal, dates, columnWidth) : undefined;
|
|
3630
3586
|
|
|
3631
3587
|
var _offTimeDays2 = newChangedTask.calendar ? getOffDays(newChangedTask.calendar, newChangedTask.start, newChangedTask.end) : [];
|
|
3632
3588
|
|
|
@@ -3703,7 +3659,7 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3703
3659
|
svg.current.addEventListener("mouseup", handleMouseUp);
|
|
3704
3660
|
setIsMoving(true);
|
|
3705
3661
|
}
|
|
3706
|
-
}, [ganttEvent, xStep, initEventX1Delta, onProgressChange, timeStep, onDateChange, onCalendarError, projectCalendar, svg, isMoving, point, rtl, setFailedTask, setGanttEvent, onBarTasksUpdate, dates, columnWidth]);
|
|
3662
|
+
}, [ganttEvent, xStep, initEventX1Delta, onProgressChange, timeStep, onDateChange, onCalendarError, projectCalendar, svg, isMoving, point, rtl, segmentBars, setFailedTask, setGanttEvent, onBarTasksUpdate, dates, columnWidth]);
|
|
3707
3663
|
|
|
3708
3664
|
var handleBarEventStart = function handleBarEventStart(action, task, event, type) {
|
|
3709
3665
|
try {
|
|
@@ -3858,6 +3814,17 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3858
3814
|
|
|
3859
3815
|
var lineX = sliderTime !== undefined ? taskXCoordinate(new Date(sliderTime), dates, columnWidth) : null;
|
|
3860
3816
|
var totalHeight = tasks.length * rowHeight;
|
|
3817
|
+
var sliderDate = sliderTime != null ? new Date(sliderTime) : null;
|
|
3818
|
+
|
|
3819
|
+
var isActualBeforeSlider = function isActualBeforeSlider(task) {
|
|
3820
|
+
return hideActualBeforeSlider && !!sliderDate && !!task.actualStart && startOfDate(task.actualStart, "day") > sliderDate;
|
|
3821
|
+
};
|
|
3822
|
+
|
|
3823
|
+
var isInProgressAtSlider = function isInProgressAtSlider(_ref2) {
|
|
3824
|
+
var w = _ref2.inProgressWindow;
|
|
3825
|
+
return !!plannedInProgressColor && !!sliderDate && !!w && startOfDate(w.start, "day") <= sliderDate && (!w.end || addToDate(startOfDate(w.end, "day"), 1, "day") > sliderDate);
|
|
3826
|
+
};
|
|
3827
|
+
|
|
3861
3828
|
return React__default.createElement("g", {
|
|
3862
3829
|
className: "content"
|
|
3863
3830
|
}, lineX !== null && lineX > 0 && React__default.createElement("line", {
|
|
@@ -3883,6 +3850,19 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
3883
3850
|
y: 0
|
|
3884
3851
|
});
|
|
3885
3852
|
|
|
3853
|
+
if (isActualBeforeSlider(task)) {
|
|
3854
|
+
task.styles = _extends({}, task.styles, {
|
|
3855
|
+
taskProgressColor: HIDDEN_ACTUAL_COLOR
|
|
3856
|
+
});
|
|
3857
|
+
}
|
|
3858
|
+
|
|
3859
|
+
if (isInProgressAtSlider(task)) {
|
|
3860
|
+
task.styles = _extends({}, task.styles, {
|
|
3861
|
+
backgroundColor: plannedInProgressColor,
|
|
3862
|
+
backgroundSelectedColor: plannedInProgressColor
|
|
3863
|
+
});
|
|
3864
|
+
}
|
|
3865
|
+
|
|
3886
3866
|
if (!task && _task.typeInternal === "milestone") {
|
|
3887
3867
|
return React__default.createElement("g", {
|
|
3888
3868
|
key: _task.id,
|
|
@@ -4035,6 +4015,8 @@ var HorizontalScroll = function HorizontalScroll(_ref) {
|
|
|
4035
4015
|
};
|
|
4036
4016
|
|
|
4037
4017
|
var GANTT_MIN_WIDTH_RATIO = 0.4;
|
|
4018
|
+
var PRIMARY_PATH_COLOR = "#AA00FF";
|
|
4019
|
+
var SECONDARY_PATH_COLOR = "#ff82e4";
|
|
4038
4020
|
var TABLE_GANTT_DIVIDER_WIDTH = 20;
|
|
4039
4021
|
var Gantt = function Gantt(_ref) {
|
|
4040
4022
|
var _ref3;
|
|
@@ -4129,7 +4111,10 @@ var Gantt = function Gantt(_ref) {
|
|
|
4129
4111
|
shouldNotShowLoadingOverlay = _ref$shouldNotShowLoa === void 0 ? true : _ref$shouldNotShowLoa,
|
|
4130
4112
|
projectCalendar = _ref.projectCalendar,
|
|
4131
4113
|
onCalendarError = _ref.onCalendarError,
|
|
4132
|
-
sliderTime = _ref.sliderTime
|
|
4114
|
+
sliderTime = _ref.sliderTime,
|
|
4115
|
+
_ref$hideActualBefore = _ref.hideActualBeforeSlider,
|
|
4116
|
+
hideActualBeforeSlider = _ref$hideActualBefore === void 0 ? false : _ref$hideActualBefore,
|
|
4117
|
+
plannedInProgressColor = _ref.plannedInProgressColor;
|
|
4133
4118
|
var wrapperRef = React.useRef(null);
|
|
4134
4119
|
var taskListRef = React.useRef(null);
|
|
4135
4120
|
var isDraggingTable = React.useRef(false);
|
|
@@ -4405,11 +4390,11 @@ var Gantt = function Gantt(_ref) {
|
|
|
4405
4390
|
uncolorAll(tasks);
|
|
4406
4391
|
|
|
4407
4392
|
if (scheduleType !== "lookAhead") {
|
|
4408
|
-
colorPath(secondaryPath,
|
|
4409
|
-
colorPath(primaryPath,
|
|
4393
|
+
colorPath(secondaryPath, SECONDARY_PATH_COLOR, tasks, "secondary");
|
|
4394
|
+
colorPath(primaryPath, PRIMARY_PATH_COLOR, tasks, "primary");
|
|
4410
4395
|
}
|
|
4411
4396
|
|
|
4412
|
-
setBarTasks(convertToBarTasks(filteredTasks, newDates, effectiveColumnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor));
|
|
4397
|
+
setBarTasks(convertToBarTasks(filteredTasks, newDates, effectiveColumnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, viewShowsOffDays(viewMode)));
|
|
4413
4398
|
setIsProcessing(false);
|
|
4414
4399
|
}, delayToRender);
|
|
4415
4400
|
}, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, shouldNotShowLoadingOverlay, effectiveColumnWidth, projectCalendar]);
|
|
@@ -4764,7 +4749,10 @@ var Gantt = function Gantt(_ref) {
|
|
|
4764
4749
|
projectCalendar: projectCalendar,
|
|
4765
4750
|
visibleStartY: visibleStartY,
|
|
4766
4751
|
visibleEndY: visibleEndY,
|
|
4767
|
-
sliderTime: sliderTime
|
|
4752
|
+
sliderTime: sliderTime,
|
|
4753
|
+
hideActualBeforeSlider: hideActualBeforeSlider,
|
|
4754
|
+
plannedInProgressColor: plannedInProgressColor,
|
|
4755
|
+
segmentBars: viewShowsOffDays(viewMode)
|
|
4768
4756
|
};
|
|
4769
4757
|
var tableTasks = React.useMemo(function () {
|
|
4770
4758
|
return ganttEvent.changedTask ? barTasks.map(function (t) {
|