@levelcaptech/gantt-task-react-custom 0.1.0 → 0.4.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.
- package/README.md +148 -80
- package/dist/components/calendar/calendar.d.ts +2 -0
- package/dist/components/gantt/task-gantt.d.ts +1 -0
- package/dist/components/grid/grid-body.d.ts +2 -0
- package/dist/components/other/horizontal-scroll.d.ts +7 -3
- package/dist/components/other/tooltip.d.ts +4 -1
- package/dist/components/task-list/overlay-editor.d.ts +19 -0
- package/dist/components/task-list/task-list-header.d.ts +5 -0
- package/dist/components/task-list/task-list-table.d.ts +11 -2
- package/dist/components/task-list/task-list.d.ts +40 -4
- package/dist/constants/taskOptions.d.ts +6 -0
- package/dist/helpers/calendar-helper.d.ts +38 -0
- package/dist/helpers/jp-holidays.d.ts +14 -0
- package/dist/helpers/task-helper.d.ts +11 -0
- package/dist/index.css +223 -12
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2227 -858
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +2215 -861
- package/dist/index.modern.js.map +1 -1
- package/dist/test/calendar-helper.test.d.ts +1 -0
- package/dist/test/overlay-editor.test.d.ts +1 -0
- package/dist/test/split-handle.test.d.ts +1 -0
- package/dist/test/task-helper.test.d.ts +1 -0
- package/dist/test/task-list-commit.test.d.ts +1 -0
- package/dist/test/task-list-editing.test.d.ts +1 -0
- package/dist/test/task-list-table-editing.test.d.ts +1 -0
- package/dist/test/task-model.test.d.ts +1 -0
- package/dist/types/public-types.d.ts +93 -1
- package/package.json +23 -6
package/dist/index.modern.js
CHANGED
|
@@ -1,63 +1,49 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return target;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
return _extends.apply(this, arguments);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
22
|
-
if (!o) return;
|
|
23
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
24
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
25
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
26
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
|
27
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function _arrayLikeToArray(arr, len) {
|
|
31
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
32
|
-
|
|
33
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
34
|
-
|
|
35
|
-
return arr2;
|
|
1
|
+
import React, { useState, useRef, useMemo, useCallback, useEffect } from 'react';
|
|
2
|
+
import { createPortal } from 'react-dom';
|
|
3
|
+
import { useSensors, useSensor, PointerSensor, DndContext } from '@dnd-kit/core';
|
|
4
|
+
import { SortableContext, horizontalListSortingStrategy, useSortable, arrayMove } from '@dnd-kit/sortable';
|
|
5
|
+
import { CSS as CSS$1 } from '@dnd-kit/utilities';
|
|
6
|
+
|
|
7
|
+
function _arrayLikeToArray(r, a) {
|
|
8
|
+
(null == a || a > r.length) && (a = r.length);
|
|
9
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
10
|
+
return n;
|
|
36
11
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (it) o = it;
|
|
44
|
-
var i = 0;
|
|
12
|
+
function _createForOfIteratorHelperLoose(r, e) {
|
|
13
|
+
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
14
|
+
if (t) return (t = t.call(r)).next.bind(t);
|
|
15
|
+
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
|
|
16
|
+
t && (r = t);
|
|
17
|
+
var o = 0;
|
|
45
18
|
return function () {
|
|
46
|
-
|
|
47
|
-
done:
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
value: o[i++]
|
|
19
|
+
return o >= r.length ? {
|
|
20
|
+
done: !0
|
|
21
|
+
} : {
|
|
22
|
+
done: !1,
|
|
23
|
+
value: r[o++]
|
|
52
24
|
};
|
|
53
25
|
};
|
|
54
26
|
}
|
|
55
|
-
|
|
56
27
|
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
57
28
|
}
|
|
29
|
+
function _extends() {
|
|
30
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
31
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
32
|
+
var t = arguments[e];
|
|
33
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
34
|
+
}
|
|
35
|
+
return n;
|
|
36
|
+
}, _extends.apply(null, arguments);
|
|
37
|
+
}
|
|
38
|
+
function _unsupportedIterableToArray(r, a) {
|
|
39
|
+
if (r) {
|
|
40
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
41
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
42
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
58
45
|
|
|
59
46
|
var ViewMode;
|
|
60
|
-
|
|
61
47
|
(function (ViewMode) {
|
|
62
48
|
ViewMode["Hour"] = "Hour";
|
|
63
49
|
ViewMode["QuarterDay"] = "Quarter Day";
|
|
@@ -74,15 +60,12 @@ var getCachedDateTimeFormat = function getCachedDateTimeFormat(locString, opts)
|
|
|
74
60
|
if (opts === void 0) {
|
|
75
61
|
opts = {};
|
|
76
62
|
}
|
|
77
|
-
|
|
78
63
|
var key = JSON.stringify([locString, opts]);
|
|
79
64
|
var dtf = intlDTCache[key];
|
|
80
|
-
|
|
81
65
|
if (!dtf) {
|
|
82
66
|
dtf = new Intl.DateTimeFormat(locString, opts);
|
|
83
67
|
intlDTCache[key] = dtf;
|
|
84
68
|
}
|
|
85
|
-
|
|
86
69
|
return dtf;
|
|
87
70
|
};
|
|
88
71
|
var addToDate = function addToDate(date, quantity, scale) {
|
|
@@ -91,31 +74,25 @@ var addToDate = function addToDate(date, quantity, scale) {
|
|
|
91
74
|
};
|
|
92
75
|
var startOfDate = function startOfDate(date, scale) {
|
|
93
76
|
var scores = ["millisecond", "second", "minute", "hour", "day", "month", "year"];
|
|
94
|
-
|
|
95
77
|
var shouldReset = function shouldReset(_scale) {
|
|
96
78
|
var maxScore = scores.indexOf(scale);
|
|
97
79
|
return scores.indexOf(_scale) <= maxScore;
|
|
98
80
|
};
|
|
99
|
-
|
|
100
81
|
var newDate = new Date(date.getFullYear(), shouldReset("year") ? 0 : date.getMonth(), shouldReset("month") ? 1 : date.getDate(), shouldReset("day") ? 0 : date.getHours(), shouldReset("hour") ? 0 : date.getMinutes(), shouldReset("minute") ? 0 : date.getSeconds(), shouldReset("second") ? 0 : date.getMilliseconds());
|
|
101
82
|
return newDate;
|
|
102
83
|
};
|
|
103
84
|
var ganttDateRange = function ganttDateRange(tasks, viewMode, preStepsCount) {
|
|
104
85
|
var newStartDate = tasks[0].start;
|
|
105
86
|
var newEndDate = tasks[0].start;
|
|
106
|
-
|
|
107
87
|
for (var _iterator = _createForOfIteratorHelperLoose(tasks), _step; !(_step = _iterator()).done;) {
|
|
108
88
|
var task = _step.value;
|
|
109
|
-
|
|
110
89
|
if (task.start < newStartDate) {
|
|
111
90
|
newStartDate = task.start;
|
|
112
91
|
}
|
|
113
|
-
|
|
114
92
|
if (task.end > newEndDate) {
|
|
115
93
|
newEndDate = task.end;
|
|
116
94
|
}
|
|
117
95
|
}
|
|
118
|
-
|
|
119
96
|
switch (viewMode) {
|
|
120
97
|
case ViewMode.Year:
|
|
121
98
|
newStartDate = addToDate(newStartDate, -1, "year");
|
|
@@ -123,49 +100,42 @@ var ganttDateRange = function ganttDateRange(tasks, viewMode, preStepsCount) {
|
|
|
123
100
|
newEndDate = addToDate(newEndDate, 1, "year");
|
|
124
101
|
newEndDate = startOfDate(newEndDate, "year");
|
|
125
102
|
break;
|
|
126
|
-
|
|
127
103
|
case ViewMode.QuarterYear:
|
|
128
104
|
newStartDate = addToDate(newStartDate, -3, "month");
|
|
129
105
|
newStartDate = startOfDate(newStartDate, "month");
|
|
130
106
|
newEndDate = addToDate(newEndDate, 3, "year");
|
|
131
107
|
newEndDate = startOfDate(newEndDate, "year");
|
|
132
108
|
break;
|
|
133
|
-
|
|
134
109
|
case ViewMode.Month:
|
|
135
110
|
newStartDate = addToDate(newStartDate, -1 * preStepsCount, "month");
|
|
136
111
|
newStartDate = startOfDate(newStartDate, "month");
|
|
137
112
|
newEndDate = addToDate(newEndDate, 1, "year");
|
|
138
113
|
newEndDate = startOfDate(newEndDate, "year");
|
|
139
114
|
break;
|
|
140
|
-
|
|
141
115
|
case ViewMode.Week:
|
|
142
116
|
newStartDate = startOfDate(newStartDate, "day");
|
|
143
117
|
newStartDate = addToDate(getMonday(newStartDate), -7 * preStepsCount, "day");
|
|
144
118
|
newEndDate = startOfDate(newEndDate, "day");
|
|
145
119
|
newEndDate = addToDate(newEndDate, 1.5, "month");
|
|
146
120
|
break;
|
|
147
|
-
|
|
148
121
|
case ViewMode.Day:
|
|
149
122
|
newStartDate = startOfDate(newStartDate, "day");
|
|
150
123
|
newStartDate = addToDate(newStartDate, -1 * preStepsCount, "day");
|
|
151
124
|
newEndDate = startOfDate(newEndDate, "day");
|
|
152
125
|
newEndDate = addToDate(newEndDate, 19, "day");
|
|
153
126
|
break;
|
|
154
|
-
|
|
155
127
|
case ViewMode.QuarterDay:
|
|
156
128
|
newStartDate = startOfDate(newStartDate, "day");
|
|
157
129
|
newStartDate = addToDate(newStartDate, -1 * preStepsCount, "day");
|
|
158
130
|
newEndDate = startOfDate(newEndDate, "day");
|
|
159
131
|
newEndDate = addToDate(newEndDate, 66, "hour");
|
|
160
132
|
break;
|
|
161
|
-
|
|
162
133
|
case ViewMode.HalfDay:
|
|
163
134
|
newStartDate = startOfDate(newStartDate, "day");
|
|
164
135
|
newStartDate = addToDate(newStartDate, -1 * preStepsCount, "day");
|
|
165
136
|
newEndDate = startOfDate(newEndDate, "day");
|
|
166
137
|
newEndDate = addToDate(newEndDate, 108, "hour");
|
|
167
138
|
break;
|
|
168
|
-
|
|
169
139
|
case ViewMode.Hour:
|
|
170
140
|
newStartDate = startOfDate(newStartDate, "hour");
|
|
171
141
|
newStartDate = addToDate(newStartDate, -1 * preStepsCount, "hour");
|
|
@@ -173,51 +143,40 @@ var ganttDateRange = function ganttDateRange(tasks, viewMode, preStepsCount) {
|
|
|
173
143
|
newEndDate = addToDate(newEndDate, 1, "day");
|
|
174
144
|
break;
|
|
175
145
|
}
|
|
176
|
-
|
|
177
146
|
return [newStartDate, newEndDate];
|
|
178
147
|
};
|
|
179
148
|
var seedDates = function seedDates(startDate, endDate, viewMode) {
|
|
180
149
|
var currentDate = new Date(startDate);
|
|
181
150
|
var dates = [currentDate];
|
|
182
|
-
|
|
183
151
|
while (currentDate < endDate) {
|
|
184
152
|
switch (viewMode) {
|
|
185
153
|
case ViewMode.Year:
|
|
186
154
|
currentDate = addToDate(currentDate, 1, "year");
|
|
187
155
|
break;
|
|
188
|
-
|
|
189
156
|
case ViewMode.QuarterYear:
|
|
190
157
|
currentDate = addToDate(currentDate, 3, "month");
|
|
191
158
|
break;
|
|
192
|
-
|
|
193
159
|
case ViewMode.Month:
|
|
194
160
|
currentDate = addToDate(currentDate, 1, "month");
|
|
195
161
|
break;
|
|
196
|
-
|
|
197
162
|
case ViewMode.Week:
|
|
198
163
|
currentDate = addToDate(currentDate, 7, "day");
|
|
199
164
|
break;
|
|
200
|
-
|
|
201
165
|
case ViewMode.Day:
|
|
202
166
|
currentDate = addToDate(currentDate, 1, "day");
|
|
203
167
|
break;
|
|
204
|
-
|
|
205
168
|
case ViewMode.HalfDay:
|
|
206
169
|
currentDate = addToDate(currentDate, 12, "hour");
|
|
207
170
|
break;
|
|
208
|
-
|
|
209
171
|
case ViewMode.QuarterDay:
|
|
210
172
|
currentDate = addToDate(currentDate, 6, "hour");
|
|
211
173
|
break;
|
|
212
|
-
|
|
213
174
|
case ViewMode.Hour:
|
|
214
175
|
currentDate = addToDate(currentDate, 1, "hour");
|
|
215
176
|
break;
|
|
216
177
|
}
|
|
217
|
-
|
|
218
178
|
dates.push(currentDate);
|
|
219
179
|
}
|
|
220
|
-
|
|
221
180
|
return dates;
|
|
222
181
|
};
|
|
223
182
|
var getLocaleMonth = function getLocaleMonth(date, locale) {
|
|
@@ -234,26 +193,21 @@ var getLocalDayOfWeek = function getLocalDayOfWeek(date, locale, format) {
|
|
|
234
193
|
bottomValue = bottomValue.replace(bottomValue[0], bottomValue[0].toLocaleUpperCase());
|
|
235
194
|
return bottomValue;
|
|
236
195
|
};
|
|
237
|
-
|
|
238
196
|
var getMonday = function getMonday(date) {
|
|
239
197
|
var day = date.getDay();
|
|
240
198
|
var diff = date.getDate() - day + (day === 0 ? -6 : 1);
|
|
241
199
|
return new Date(date.setDate(diff));
|
|
242
200
|
};
|
|
243
|
-
|
|
244
201
|
var getWeekNumberISO8601 = function getWeekNumberISO8601(date) {
|
|
245
202
|
var tmpDate = new Date(date.valueOf());
|
|
246
203
|
var dayNumber = (tmpDate.getDay() + 6) % 7;
|
|
247
204
|
tmpDate.setDate(tmpDate.getDate() - dayNumber + 3);
|
|
248
205
|
var firstThursday = tmpDate.valueOf();
|
|
249
206
|
tmpDate.setMonth(0, 1);
|
|
250
|
-
|
|
251
207
|
if (tmpDate.getDay() !== 4) {
|
|
252
208
|
tmpDate.setMonth(0, 1 + (4 - tmpDate.getDay() + 7) % 7);
|
|
253
209
|
}
|
|
254
|
-
|
|
255
210
|
var weekNumber = (1 + Math.ceil((firstThursday - tmpDate.valueOf()) / 604800000)).toString();
|
|
256
|
-
|
|
257
211
|
if (weekNumber.length === 1) {
|
|
258
212
|
return "0" + weekNumber;
|
|
259
213
|
} else {
|
|
@@ -264,14 +218,913 @@ var getDaysInMonth = function getDaysInMonth(month, year) {
|
|
|
264
218
|
return new Date(year, month + 1, 0).getDate();
|
|
265
219
|
};
|
|
266
220
|
|
|
267
|
-
var
|
|
221
|
+
var TASK_PROCESS_OPTIONS = ["設計", "開発", "テスト", "レビュー", "リリース", "その他"];
|
|
222
|
+
var TASK_STATUS_OPTIONS = ["未着手", "進行中", "完了", "保留"];
|
|
223
|
+
var TASK_STATUS_COLORS = {
|
|
224
|
+
未着手: "#9e9e9e",
|
|
225
|
+
進行中: "#2196f3",
|
|
226
|
+
完了: "#4caf50",
|
|
227
|
+
保留: "#ff9800"
|
|
228
|
+
};
|
|
229
|
+
var TASK_STATUS_BADGE_TEXT = {
|
|
230
|
+
未着手: "未",
|
|
231
|
+
進行中: "進",
|
|
232
|
+
完了: "完",
|
|
233
|
+
保留: "保"
|
|
234
|
+
};
|
|
268
235
|
|
|
269
|
-
var
|
|
236
|
+
var DEFAULT_VISIBLE_FIELDS = ["name", "start", "end", "process", "assignee", "plannedStart", "plannedEnd", "plannedEffort", "actualEffort", "status"];
|
|
237
|
+
var padTwo = function padTwo(value) {
|
|
238
|
+
return value.toString().padStart(2, "0");
|
|
239
|
+
};
|
|
240
|
+
var formatDate = function formatDate(date) {
|
|
241
|
+
if (!date) return "";
|
|
242
|
+
return date.getFullYear() + "-" + padTwo(date.getMonth() + 1) + "-" + padTwo(date.getDate());
|
|
243
|
+
};
|
|
244
|
+
var parseDateFromInput = function parseDateFromInput(value) {
|
|
245
|
+
if (!value) return undefined;
|
|
246
|
+
var _value$split$map = value.split("-").map(function (v) {
|
|
247
|
+
return parseInt(v, 10);
|
|
248
|
+
}),
|
|
249
|
+
year = _value$split$map[0],
|
|
250
|
+
month = _value$split$map[1],
|
|
251
|
+
day = _value$split$map[2];
|
|
252
|
+
if (Number.isNaN(year) || Number.isNaN(month) || Number.isNaN(day) || month < 1 || month > 12 || day < 1 || day > 31) {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
var date = new Date(year, month - 1, day);
|
|
256
|
+
if (Number.isNaN(date.getTime()) || date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
return date;
|
|
260
|
+
};
|
|
261
|
+
var formatEffort = function formatEffort(effort, unit) {
|
|
262
|
+
if (unit === void 0) {
|
|
263
|
+
unit = "MH";
|
|
264
|
+
}
|
|
265
|
+
if (effort === undefined || effort === null || !Number.isFinite(effort) || effort < 0) {
|
|
266
|
+
return "";
|
|
267
|
+
}
|
|
268
|
+
var base = unit === "MD" ? 8 : unit === "MM" ? 160 : 1;
|
|
269
|
+
var converted = effort / base;
|
|
270
|
+
var rounded = unit === "MH" ? effort : Math.round(converted * 10) / 10;
|
|
271
|
+
return "" + rounded + unit;
|
|
272
|
+
};
|
|
273
|
+
var sanitizeEffortInput = function sanitizeEffortInput(value) {
|
|
274
|
+
if (value === "") return undefined;
|
|
275
|
+
var parsed = Number(value);
|
|
276
|
+
if (!Number.isFinite(parsed) || parsed < 0) return undefined;
|
|
277
|
+
return parsed;
|
|
278
|
+
};
|
|
279
|
+
var DEFAULT_TASK_PROCESS = TASK_PROCESS_OPTIONS.includes("その他") ? "その他" : TASK_PROCESS_OPTIONS[0];
|
|
280
|
+
var normalizeProcess = function normalizeProcess(process) {
|
|
281
|
+
return TASK_PROCESS_OPTIONS.includes(process) ? process : DEFAULT_TASK_PROCESS;
|
|
282
|
+
};
|
|
283
|
+
var normalizeStatus = function normalizeStatus(status) {
|
|
284
|
+
return TASK_STATUS_OPTIONS.includes(status) ? status : TASK_STATUS_OPTIONS[0];
|
|
285
|
+
};
|
|
286
|
+
var getStatusColor = function getStatusColor(status) {
|
|
287
|
+
return TASK_STATUS_COLORS[normalizeStatus(status)];
|
|
288
|
+
};
|
|
289
|
+
var getStatusBadgeText = function getStatusBadgeText(status) {
|
|
290
|
+
return TASK_STATUS_BADGE_TEXT[normalizeStatus(status)];
|
|
291
|
+
};
|
|
292
|
+
var resolveVisibleFields = function resolveVisibleFields(visibleFields) {
|
|
293
|
+
return visibleFields && visibleFields.length > 0 ? visibleFields : DEFAULT_VISIBLE_FIELDS;
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
var styles = {"ganttTable":"_3_ygE","ganttTable_Header":"_1nBOt","ganttTable_HeaderSeparator":"_2eZzQ","ganttTable_HeaderItem":"_WuQ0f","ganttTable_HeaderItemDragging":"_Fc5Tl","ganttTable_DragHandle":"_b6dPy","ganttTable_DragHandleDisabled":"_3ZMNU","ganttTable_DragIcon":"_QZHO8","ganttTable_HeaderLabel":"_2ANS-","ganttTable_ResizeHandle":"_OJ-Vg","ganttTable_ResizeHandleActive":"_21P28"};
|
|
297
|
+
|
|
298
|
+
function createCommonjsModule(fn, module) {
|
|
299
|
+
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
var classnames = createCommonjsModule(function (module) {
|
|
303
|
+
/*!
|
|
304
|
+
Copyright (c) 2018 Jed Watson.
|
|
305
|
+
Licensed under the MIT License (MIT), see
|
|
306
|
+
http://jedwatson.github.io/classnames
|
|
307
|
+
*/
|
|
308
|
+
/* global define */
|
|
309
|
+
|
|
310
|
+
(function () {
|
|
311
|
+
|
|
312
|
+
var hasOwn = {}.hasOwnProperty;
|
|
313
|
+
|
|
314
|
+
function classNames () {
|
|
315
|
+
var classes = '';
|
|
316
|
+
|
|
317
|
+
for (var i = 0; i < arguments.length; i++) {
|
|
318
|
+
var arg = arguments[i];
|
|
319
|
+
if (arg) {
|
|
320
|
+
classes = appendClass(classes, parseValue(arg));
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
return classes;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
function parseValue (arg) {
|
|
328
|
+
if (typeof arg === 'string' || typeof arg === 'number') {
|
|
329
|
+
return arg;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (typeof arg !== 'object') {
|
|
333
|
+
return '';
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
if (Array.isArray(arg)) {
|
|
337
|
+
return classNames.apply(null, arg);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
|
|
341
|
+
return arg.toString();
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
var classes = '';
|
|
345
|
+
|
|
346
|
+
for (var key in arg) {
|
|
347
|
+
if (hasOwn.call(arg, key) && arg[key]) {
|
|
348
|
+
classes = appendClass(classes, key);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
return classes;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
function appendClass (value, newClass) {
|
|
356
|
+
if (!newClass) {
|
|
357
|
+
return value;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
if (value) {
|
|
361
|
+
return value + ' ' + newClass;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
return value + newClass;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if ( module.exports) {
|
|
368
|
+
classNames.default = classNames;
|
|
369
|
+
module.exports = classNames;
|
|
370
|
+
} else {
|
|
371
|
+
window.classNames = classNames;
|
|
372
|
+
}
|
|
373
|
+
}());
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
// A type of promise-like that resolves synchronously and supports only one observer
|
|
377
|
+
|
|
378
|
+
const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator";
|
|
379
|
+
|
|
380
|
+
const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))) : "@@asyncIterator";
|
|
381
|
+
|
|
382
|
+
// Asynchronously call a function and send errors to recovery continuation
|
|
383
|
+
function _catch(body, recover) {
|
|
384
|
+
try {
|
|
385
|
+
var result = body();
|
|
386
|
+
} catch(e) {
|
|
387
|
+
return recover(e);
|
|
388
|
+
}
|
|
389
|
+
if (result && result.then) {
|
|
390
|
+
return result.then(void 0, recover);
|
|
391
|
+
}
|
|
392
|
+
return result;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
var styles$1 = {"taskListWrapper":"_3ZbQT","taskListTableRow":"_34SS0","taskListCell":"_3lLk3","overlayEditor":"_3Nu1y","overlayEditorPending":"_2jEdG","overlayEditorError":"_2TWaP","taskListNameWrapper":"_nI1Xw","taskListExpander":"_2QjE6","taskListEmptyExpander":"_2TfEi","taskListInput":"_1bdaa","taskListSelect":"_1u3fW","statusWrapper":"_dRJfs","statusBadge":"_33mea","statusText":"_vpQEz"};
|
|
396
|
+
|
|
397
|
+
var NULL_CHAR_REGEX = new RegExp(String.fromCharCode(0), "g");
|
|
398
|
+
var ALPHANUMERIC_REGEX = /[a-zA-Z0-9]/;
|
|
399
|
+
var resolveOverlayInputType = function resolveOverlayInputType(columnId) {
|
|
400
|
+
switch (columnId) {
|
|
401
|
+
case "start":
|
|
402
|
+
case "end":
|
|
403
|
+
case "plannedStart":
|
|
404
|
+
case "plannedEnd":
|
|
405
|
+
return "date";
|
|
406
|
+
case "plannedEffort":
|
|
407
|
+
case "actualEffort":
|
|
408
|
+
return "number";
|
|
409
|
+
case "process":
|
|
410
|
+
case "status":
|
|
411
|
+
return "select";
|
|
412
|
+
case "name":
|
|
413
|
+
case "assignee":
|
|
414
|
+
default:
|
|
415
|
+
return "text";
|
|
416
|
+
}
|
|
417
|
+
};
|
|
418
|
+
var escapeSelectorValue = function escapeSelectorValue(value) {
|
|
419
|
+
if (typeof CSS !== "undefined" && typeof CSS.escape === "function") {
|
|
420
|
+
return CSS.escape(value);
|
|
421
|
+
}
|
|
422
|
+
var sanitized = value.replace(NULL_CHAR_REGEX, "\uFFFD");
|
|
423
|
+
return Array.from(sanitized).map(function (_char, index) {
|
|
424
|
+
var codePoint = _char.codePointAt(0);
|
|
425
|
+
if (codePoint === undefined) {
|
|
426
|
+
return "";
|
|
427
|
+
}
|
|
428
|
+
if (codePoint >= 0x1 && codePoint <= 0x1f || codePoint === 0x7f || index === 0 && codePoint >= 0x30 && codePoint <= 0x39 || index === 1 && codePoint >= 0x30 && codePoint <= 0x39 && sanitized.charCodeAt(0) === 0x2d) {
|
|
429
|
+
return "\\" + codePoint.toString(16) + " ";
|
|
430
|
+
}
|
|
431
|
+
if (_char === "-" || _char === "_" || ALPHANUMERIC_REGEX.test(_char)) {
|
|
432
|
+
return _char;
|
|
433
|
+
}
|
|
434
|
+
return "\\" + _char;
|
|
435
|
+
}).join("");
|
|
436
|
+
};
|
|
437
|
+
var OverlayEditor = function OverlayEditor(_ref) {
|
|
438
|
+
var editingState = _ref.editingState,
|
|
439
|
+
taskListRef = _ref.taskListRef,
|
|
440
|
+
headerContainerRef = _ref.headerContainerRef,
|
|
441
|
+
bodyContainerRef = _ref.bodyContainerRef,
|
|
442
|
+
onCommit = _ref.onCommit,
|
|
443
|
+
onCancel = _ref.onCancel;
|
|
444
|
+
var _useState = useState(null),
|
|
445
|
+
rect = _useState[0],
|
|
446
|
+
setRect = _useState[1];
|
|
447
|
+
var _useState2 = useState(null),
|
|
448
|
+
targetElement = _useState2[0],
|
|
449
|
+
setTargetElement = _useState2[1];
|
|
450
|
+
var inputRef = useRef(null);
|
|
451
|
+
var defaultValueRef = useRef("");
|
|
452
|
+
var compositionRef = useRef(false);
|
|
453
|
+
var rafIdRef = useRef(null);
|
|
454
|
+
var inputType = useMemo(function () {
|
|
455
|
+
return resolveOverlayInputType(editingState.columnId);
|
|
456
|
+
}, [editingState.columnId]);
|
|
457
|
+
var selectOptions = useMemo(function () {
|
|
458
|
+
if (editingState.columnId === "process") {
|
|
459
|
+
return TASK_PROCESS_OPTIONS;
|
|
460
|
+
}
|
|
461
|
+
if (editingState.columnId === "status") {
|
|
462
|
+
return TASK_STATUS_OPTIONS;
|
|
463
|
+
}
|
|
464
|
+
return [];
|
|
465
|
+
}, [editingState.columnId]);
|
|
466
|
+
var portalRoot = useMemo(function () {
|
|
467
|
+
if (typeof document === "undefined") {
|
|
468
|
+
return null;
|
|
469
|
+
}
|
|
470
|
+
return document.body;
|
|
471
|
+
}, []);
|
|
472
|
+
var resolveDefaultValue = useCallback(function (target) {
|
|
473
|
+
var _target$textContent;
|
|
474
|
+
var input = target.querySelector("input, textarea, select");
|
|
475
|
+
if (input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement) {
|
|
476
|
+
return input.value;
|
|
477
|
+
}
|
|
478
|
+
if (input instanceof HTMLSelectElement) {
|
|
479
|
+
return input.value;
|
|
480
|
+
}
|
|
481
|
+
return ((_target$textContent = target.textContent) != null ? _target$textContent : "").trim();
|
|
482
|
+
}, []);
|
|
483
|
+
var findTargetElement = useCallback(function () {
|
|
484
|
+
if (!taskListRef.current || !editingState.rowId || !editingState.columnId) {
|
|
485
|
+
return null;
|
|
486
|
+
}
|
|
487
|
+
var rowId = escapeSelectorValue(editingState.rowId);
|
|
488
|
+
var columnId = escapeSelectorValue(editingState.columnId);
|
|
489
|
+
return taskListRef.current.querySelector("[data-row-id=\"" + rowId + "\"][data-column-id=\"" + columnId + "\"]");
|
|
490
|
+
}, [editingState.columnId, editingState.rowId, taskListRef]);
|
|
491
|
+
var updateRect = useCallback(function () {
|
|
492
|
+
if (editingState.mode !== "editing") {
|
|
493
|
+
setRect(null);
|
|
494
|
+
setTargetElement(null);
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
var target = findTargetElement();
|
|
498
|
+
if (!target) {
|
|
499
|
+
setRect(null);
|
|
500
|
+
setTargetElement(null);
|
|
501
|
+
onCancel("unmounted");
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
if (targetElement !== target) {
|
|
505
|
+
var nextDefaultValue = resolveDefaultValue(target);
|
|
506
|
+
defaultValueRef.current = nextDefaultValue;
|
|
507
|
+
if (inputRef.current) {
|
|
508
|
+
inputRef.current.value = nextDefaultValue;
|
|
509
|
+
}
|
|
510
|
+
setTargetElement(target);
|
|
511
|
+
}
|
|
512
|
+
var nextRect = target.getBoundingClientRect();
|
|
513
|
+
setRect({
|
|
514
|
+
top: Math.round(nextRect.top),
|
|
515
|
+
left: Math.round(nextRect.left),
|
|
516
|
+
width: Math.round(nextRect.width),
|
|
517
|
+
height: Math.round(nextRect.height)
|
|
518
|
+
});
|
|
519
|
+
}, [editingState.mode, findTargetElement, onCancel, resolveDefaultValue, targetElement]);
|
|
520
|
+
var scheduleRectUpdate = useCallback(function () {
|
|
521
|
+
if (rafIdRef.current !== null) {
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
rafIdRef.current = window.requestAnimationFrame(function () {
|
|
525
|
+
rafIdRef.current = null;
|
|
526
|
+
updateRect();
|
|
527
|
+
});
|
|
528
|
+
}, [updateRect]);
|
|
529
|
+
useEffect(function () {
|
|
530
|
+
if (editingState.mode !== "editing") {
|
|
531
|
+
defaultValueRef.current = "";
|
|
532
|
+
compositionRef.current = false;
|
|
533
|
+
setRect(null);
|
|
534
|
+
setTargetElement(null);
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
scheduleRectUpdate();
|
|
538
|
+
}, [editingState.mode, scheduleRectUpdate]);
|
|
539
|
+
useEffect(function () {
|
|
540
|
+
if (editingState.mode !== "editing") {
|
|
541
|
+
return undefined;
|
|
542
|
+
}
|
|
543
|
+
var handleScroll = function handleScroll() {
|
|
544
|
+
return scheduleRectUpdate();
|
|
545
|
+
};
|
|
546
|
+
var handleResize = function handleResize() {
|
|
547
|
+
return scheduleRectUpdate();
|
|
548
|
+
};
|
|
549
|
+
window.addEventListener("scroll", handleScroll, {
|
|
550
|
+
capture: true,
|
|
551
|
+
passive: true
|
|
552
|
+
});
|
|
553
|
+
window.addEventListener("resize", handleResize, {
|
|
554
|
+
capture: true
|
|
555
|
+
});
|
|
556
|
+
document.addEventListener("scroll", handleScroll, {
|
|
557
|
+
capture: true,
|
|
558
|
+
passive: true
|
|
559
|
+
});
|
|
560
|
+
var scrollTargets = [taskListRef.current, bodyContainerRef === null || bodyContainerRef === void 0 ? void 0 : bodyContainerRef.current, headerContainerRef === null || headerContainerRef === void 0 ? void 0 : headerContainerRef.current].filter(Boolean);
|
|
561
|
+
scrollTargets.forEach(function (element) {
|
|
562
|
+
return element.addEventListener("scroll", handleScroll, {
|
|
563
|
+
capture: true,
|
|
564
|
+
passive: true
|
|
565
|
+
});
|
|
566
|
+
});
|
|
567
|
+
var ResizeObserverConstructor = typeof window !== "undefined" ? window.ResizeObserver : undefined;
|
|
568
|
+
var resizeObserver = ResizeObserverConstructor ? new ResizeObserverConstructor(function () {
|
|
569
|
+
return scheduleRectUpdate();
|
|
570
|
+
}) : null;
|
|
571
|
+
var observedElements = [targetElement, taskListRef.current, bodyContainerRef === null || bodyContainerRef === void 0 ? void 0 : bodyContainerRef.current, headerContainerRef === null || headerContainerRef === void 0 ? void 0 : headerContainerRef.current].filter(Boolean);
|
|
572
|
+
observedElements.forEach(function (element) {
|
|
573
|
+
return resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.observe(element);
|
|
574
|
+
});
|
|
575
|
+
return function () {
|
|
576
|
+
window.removeEventListener("scroll", handleScroll, {
|
|
577
|
+
capture: true
|
|
578
|
+
});
|
|
579
|
+
window.removeEventListener("resize", handleResize, {
|
|
580
|
+
capture: true
|
|
581
|
+
});
|
|
582
|
+
document.removeEventListener("scroll", handleScroll, {
|
|
583
|
+
capture: true
|
|
584
|
+
});
|
|
585
|
+
scrollTargets.forEach(function (element) {
|
|
586
|
+
return element.removeEventListener("scroll", handleScroll, {
|
|
587
|
+
capture: true
|
|
588
|
+
});
|
|
589
|
+
});
|
|
590
|
+
resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
|
|
591
|
+
};
|
|
592
|
+
}, [bodyContainerRef, editingState.mode, headerContainerRef, scheduleRectUpdate, targetElement, taskListRef]);
|
|
593
|
+
useEffect(function () {
|
|
594
|
+
return function () {
|
|
595
|
+
if (rafIdRef.current !== null) {
|
|
596
|
+
window.cancelAnimationFrame(rafIdRef.current);
|
|
597
|
+
rafIdRef.current = null;
|
|
598
|
+
}
|
|
599
|
+
};
|
|
600
|
+
}, []);
|
|
601
|
+
useEffect(function () {
|
|
602
|
+
if (editingState.mode !== "editing") {
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
605
|
+
var input = inputRef.current;
|
|
606
|
+
if (!input) {
|
|
607
|
+
return;
|
|
608
|
+
}
|
|
609
|
+
if (editingState.pending) {
|
|
610
|
+
input.focus();
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
input.focus();
|
|
614
|
+
if (input instanceof HTMLInputElement) {
|
|
615
|
+
input.select();
|
|
616
|
+
}
|
|
617
|
+
}, [editingState.mode, editingState.pending, targetElement]);
|
|
618
|
+
var handleCommit = useCallback(function () {
|
|
619
|
+
try {
|
|
620
|
+
if (editingState.pending) {
|
|
621
|
+
return Promise.resolve();
|
|
622
|
+
}
|
|
623
|
+
var input = inputRef.current;
|
|
624
|
+
if (!input) {
|
|
625
|
+
return Promise.resolve();
|
|
626
|
+
}
|
|
627
|
+
return Promise.resolve(onCommit(input.value, "enter")).then(function () {});
|
|
628
|
+
} catch (e) {
|
|
629
|
+
return Promise.reject(e);
|
|
630
|
+
}
|
|
631
|
+
}, [editingState.pending, onCommit]);
|
|
632
|
+
var handleKeyDown = useCallback(function (event) {
|
|
633
|
+
if (editingState.pending) {
|
|
634
|
+
if (event.key === "Escape" || event.key === "Enter") {
|
|
635
|
+
event.preventDefault();
|
|
636
|
+
}
|
|
637
|
+
return;
|
|
638
|
+
}
|
|
639
|
+
if (event.key === "Enter") {
|
|
640
|
+
event.preventDefault();
|
|
641
|
+
void handleCommit();
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
if (event.key === "Escape") {
|
|
645
|
+
event.preventDefault();
|
|
646
|
+
onCancel("escape");
|
|
647
|
+
}
|
|
648
|
+
}, [editingState.pending, handleCommit, onCancel]);
|
|
649
|
+
var handleBlur = useCallback(function () {
|
|
650
|
+
if (editingState.pending || compositionRef.current) {
|
|
651
|
+
return;
|
|
652
|
+
}
|
|
653
|
+
var input = inputRef.current;
|
|
654
|
+
if (!input) {
|
|
655
|
+
return;
|
|
656
|
+
}
|
|
657
|
+
if (input.value === defaultValueRef.current) {
|
|
658
|
+
onCancel("nochange-blur");
|
|
659
|
+
}
|
|
660
|
+
}, [editingState.pending, onCancel]);
|
|
661
|
+
var handleInput = useCallback(function (event) {
|
|
662
|
+
if (!editingState.pending) {
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
var input = event.currentTarget;
|
|
666
|
+
input.value = defaultValueRef.current;
|
|
667
|
+
}, [editingState.pending]);
|
|
668
|
+
var handleCompositionStart = function handleCompositionStart() {
|
|
669
|
+
compositionRef.current = true;
|
|
670
|
+
};
|
|
671
|
+
var handleCompositionEnd = function handleCompositionEnd() {
|
|
672
|
+
compositionRef.current = false;
|
|
673
|
+
};
|
|
674
|
+
var handleInputElementRef = useCallback(function (element) {
|
|
675
|
+
inputRef.current = element;
|
|
676
|
+
}, []);
|
|
677
|
+
if (editingState.mode !== "editing" || !rect || !portalRoot) {
|
|
678
|
+
return null;
|
|
679
|
+
}
|
|
680
|
+
return createPortal(React.createElement("div", {
|
|
681
|
+
className: styles$1.overlayEditor + " " + (editingState.pending ? styles$1.overlayEditorPending : ""),
|
|
682
|
+
"data-testid": "overlay-editor",
|
|
683
|
+
style: {
|
|
684
|
+
top: rect.top,
|
|
685
|
+
left: rect.left,
|
|
686
|
+
width: rect.width,
|
|
687
|
+
height: rect.height
|
|
688
|
+
}
|
|
689
|
+
}, inputType === "select" ? React.createElement("select", {
|
|
690
|
+
className: styles$1.taskListSelect,
|
|
691
|
+
"data-testid": "overlay-editor-input",
|
|
692
|
+
"aria-label": "\u30BB\u30EB\u7DE8\u96C6",
|
|
693
|
+
defaultValue: defaultValueRef.current,
|
|
694
|
+
style: {
|
|
695
|
+
height: "100%"
|
|
696
|
+
},
|
|
697
|
+
ref: handleInputElementRef,
|
|
698
|
+
disabled: editingState.pending,
|
|
699
|
+
onKeyDown: handleKeyDown,
|
|
700
|
+
onBlur: handleBlur,
|
|
701
|
+
onInput: handleInput,
|
|
702
|
+
onChange: handleInput
|
|
703
|
+
}, selectOptions.map(function (option) {
|
|
704
|
+
return React.createElement("option", {
|
|
705
|
+
key: option,
|
|
706
|
+
value: option
|
|
707
|
+
}, option);
|
|
708
|
+
})) : React.createElement("input", {
|
|
709
|
+
className: styles$1.taskListInput,
|
|
710
|
+
"data-testid": "overlay-editor-input",
|
|
711
|
+
type: inputType,
|
|
712
|
+
"aria-label": "\u30BB\u30EB\u7DE8\u96C6",
|
|
713
|
+
defaultValue: defaultValueRef.current,
|
|
714
|
+
style: {
|
|
715
|
+
height: "100%"
|
|
716
|
+
},
|
|
717
|
+
ref: handleInputElementRef,
|
|
718
|
+
readOnly: editingState.pending,
|
|
719
|
+
onKeyDown: handleKeyDown,
|
|
720
|
+
onBlur: handleBlur,
|
|
721
|
+
onInput: handleInput,
|
|
722
|
+
onChange: handleInput,
|
|
723
|
+
onCompositionStart: handleCompositionStart,
|
|
724
|
+
onCompositionEnd: handleCompositionEnd
|
|
725
|
+
}), editingState.errorMessage && React.createElement("div", {
|
|
726
|
+
className: styles$1.overlayEditorError,
|
|
727
|
+
role: "alert"
|
|
728
|
+
}, editingState.errorMessage)), portalRoot);
|
|
729
|
+
};
|
|
730
|
+
|
|
731
|
+
var TaskListEditingStateContext = React.createContext(null);
|
|
732
|
+
var DEFAULT_MIN_WIDTH = 32;
|
|
733
|
+
var getDefaultWidth = function getDefaultWidth(field, rowWidth) {
|
|
734
|
+
return field === "name" ? 140 : Number.parseInt(rowWidth, 10) || 155;
|
|
735
|
+
};
|
|
736
|
+
var TaskList = function TaskList(_ref) {
|
|
270
737
|
var headerHeight = _ref.headerHeight,
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
738
|
+
fontFamily = _ref.fontFamily,
|
|
739
|
+
fontSize = _ref.fontSize,
|
|
740
|
+
rowWidth = _ref.rowWidth,
|
|
741
|
+
rowHeight = _ref.rowHeight,
|
|
742
|
+
scrollY = _ref.scrollY,
|
|
743
|
+
_ref$horizontalScroll = _ref.horizontalScroll,
|
|
744
|
+
horizontalScroll = _ref$horizontalScroll === void 0 ? 0 : _ref$horizontalScroll,
|
|
745
|
+
tasks = _ref.tasks,
|
|
746
|
+
selectedTask = _ref.selectedTask,
|
|
747
|
+
setSelectedTask = _ref.setSelectedTask,
|
|
748
|
+
onExpanderClick = _ref.onExpanderClick,
|
|
749
|
+
ganttHeight = _ref.ganttHeight,
|
|
750
|
+
taskListRef = _ref.taskListRef,
|
|
751
|
+
headerContainerRef = _ref.headerContainerRef,
|
|
752
|
+
bodyContainerRef = _ref.bodyContainerRef,
|
|
753
|
+
horizontalContainerClass = _ref.horizontalContainerClass,
|
|
754
|
+
TaskListHeader = _ref.TaskListHeader,
|
|
755
|
+
TaskListTable = _ref.TaskListTable,
|
|
756
|
+
visibleFields = _ref.visibleFields,
|
|
757
|
+
onUpdateTask = _ref.onUpdateTask,
|
|
758
|
+
onCellCommit = _ref.onCellCommit,
|
|
759
|
+
effortDisplayUnit = _ref.effortDisplayUnit,
|
|
760
|
+
_ref$enableColumnDrag = _ref.enableColumnDrag,
|
|
761
|
+
enableColumnDrag = _ref$enableColumnDrag === void 0 ? true : _ref$enableColumnDrag,
|
|
762
|
+
onHorizontalScroll = _ref.onHorizontalScroll;
|
|
763
|
+
var internalHorizontalRef = useRef(null);
|
|
764
|
+
var internalHeaderRef = useRef(null);
|
|
765
|
+
var horizontalContainerRef = bodyContainerRef != null ? bodyContainerRef : internalHorizontalRef;
|
|
766
|
+
var headerRef = headerContainerRef != null ? headerContainerRef : internalHeaderRef;
|
|
767
|
+
useEffect(function () {
|
|
768
|
+
if (horizontalContainerRef.current) {
|
|
769
|
+
horizontalContainerRef.current.scrollTop = scrollY;
|
|
770
|
+
}
|
|
771
|
+
}, [scrollY, horizontalContainerRef]);
|
|
772
|
+
useEffect(function () {
|
|
773
|
+
if (horizontalContainerRef.current) {
|
|
774
|
+
horizontalContainerRef.current.scrollLeft = horizontalScroll;
|
|
775
|
+
}
|
|
776
|
+
if (headerRef.current) {
|
|
777
|
+
headerRef.current.scrollLeft = horizontalScroll;
|
|
778
|
+
}
|
|
779
|
+
}, [horizontalScroll, horizontalContainerRef, headerRef]);
|
|
780
|
+
var initialColumns = useMemo(function () {
|
|
781
|
+
return visibleFields.map(function (field) {
|
|
782
|
+
return {
|
|
783
|
+
id: field,
|
|
784
|
+
label: field,
|
|
785
|
+
width: getDefaultWidth(field, rowWidth),
|
|
786
|
+
minWidth: DEFAULT_MIN_WIDTH,
|
|
787
|
+
visible: true
|
|
788
|
+
};
|
|
789
|
+
});
|
|
790
|
+
}, [visibleFields, rowWidth]);
|
|
791
|
+
var _useState = useState(initialColumns),
|
|
792
|
+
columnsState = _useState[0],
|
|
793
|
+
setColumnsState = _useState[1];
|
|
794
|
+
useEffect(function () {
|
|
795
|
+
setColumnsState(function (prev) {
|
|
796
|
+
var existingMap = new Map(prev.map(function (column) {
|
|
797
|
+
return [column.id, column];
|
|
798
|
+
}));
|
|
799
|
+
var nextColumns = visibleFields.map(function (field) {
|
|
800
|
+
var existing = existingMap.get(field);
|
|
801
|
+
if (existing) {
|
|
802
|
+
return existing;
|
|
803
|
+
}
|
|
804
|
+
return {
|
|
805
|
+
id: field,
|
|
806
|
+
label: field,
|
|
807
|
+
width: getDefaultWidth(field, rowWidth),
|
|
808
|
+
minWidth: DEFAULT_MIN_WIDTH,
|
|
809
|
+
visible: true
|
|
810
|
+
};
|
|
811
|
+
});
|
|
812
|
+
return nextColumns;
|
|
813
|
+
});
|
|
814
|
+
}, [visibleFields, rowWidth]);
|
|
815
|
+
var visibleColumns = useMemo(function () {
|
|
816
|
+
return columnsState.filter(function (column) {
|
|
817
|
+
return column.visible;
|
|
818
|
+
});
|
|
819
|
+
}, [columnsState]);
|
|
820
|
+
var headerProps = {
|
|
821
|
+
headerHeight: headerHeight,
|
|
822
|
+
fontFamily: fontFamily,
|
|
823
|
+
fontSize: fontSize,
|
|
824
|
+
rowWidth: rowWidth,
|
|
825
|
+
visibleFields: visibleFields,
|
|
826
|
+
columnsState: columnsState,
|
|
827
|
+
setColumnsState: setColumnsState,
|
|
828
|
+
enableColumnDrag: enableColumnDrag
|
|
829
|
+
};
|
|
830
|
+
var selectedTaskId = selectedTask ? selectedTask.id : "";
|
|
831
|
+
var tableProps = {
|
|
832
|
+
rowHeight: rowHeight,
|
|
833
|
+
rowWidth: rowWidth,
|
|
834
|
+
fontFamily: fontFamily,
|
|
835
|
+
fontSize: fontSize,
|
|
836
|
+
tasks: tasks,
|
|
837
|
+
selectedTaskId: selectedTaskId,
|
|
838
|
+
setSelectedTask: setSelectedTask,
|
|
839
|
+
onExpanderClick: onExpanderClick,
|
|
840
|
+
visibleFields: visibleFields,
|
|
841
|
+
onUpdateTask: onUpdateTask,
|
|
842
|
+
onCellCommit: onCellCommit,
|
|
843
|
+
effortDisplayUnit: effortDisplayUnit,
|
|
844
|
+
columnsState: visibleColumns
|
|
845
|
+
};
|
|
846
|
+
var _useState2 = useState({
|
|
847
|
+
mode: "viewing",
|
|
848
|
+
rowId: null,
|
|
849
|
+
columnId: null,
|
|
850
|
+
trigger: null,
|
|
851
|
+
pending: false,
|
|
852
|
+
errorMessage: null
|
|
853
|
+
}),
|
|
854
|
+
editingState = _useState2[0],
|
|
855
|
+
setEditingState = _useState2[1];
|
|
856
|
+
var previousEditingStateRef = useRef(null);
|
|
857
|
+
var closeEditing = useCallback(function () {
|
|
858
|
+
setEditingState(function (prev) {
|
|
859
|
+
if (prev.mode === "viewing") {
|
|
860
|
+
return prev;
|
|
861
|
+
}
|
|
862
|
+
return {
|
|
863
|
+
mode: "viewing",
|
|
864
|
+
rowId: null,
|
|
865
|
+
columnId: null,
|
|
866
|
+
trigger: null,
|
|
867
|
+
pending: false,
|
|
868
|
+
errorMessage: null
|
|
869
|
+
};
|
|
870
|
+
});
|
|
871
|
+
}, []);
|
|
872
|
+
var mountedRef = useRef(true);
|
|
873
|
+
useEffect(function () {
|
|
874
|
+
return function () {
|
|
875
|
+
mountedRef.current = false;
|
|
876
|
+
};
|
|
877
|
+
}, []);
|
|
878
|
+
var cancelEditing = useCallback(function (reason) {
|
|
879
|
+
if (editingState.mode !== "editing") {
|
|
880
|
+
return;
|
|
881
|
+
}
|
|
882
|
+
console.debug("[edit:cancel]", {
|
|
883
|
+
rowId: editingState.rowId,
|
|
884
|
+
columnId: editingState.columnId,
|
|
885
|
+
reason: reason
|
|
886
|
+
});
|
|
887
|
+
closeEditing();
|
|
888
|
+
}, [closeEditing, editingState.columnId, editingState.mode, editingState.rowId]);
|
|
889
|
+
var commitEditing = useCallback(function (value, trigger) {
|
|
890
|
+
try {
|
|
891
|
+
if (!onCellCommit) {
|
|
892
|
+
return Promise.resolve();
|
|
893
|
+
}
|
|
894
|
+
if (editingState.mode !== "editing" || editingState.pending) {
|
|
895
|
+
return Promise.resolve();
|
|
896
|
+
}
|
|
897
|
+
if (!editingState.rowId || !editingState.columnId) {
|
|
898
|
+
return Promise.resolve();
|
|
899
|
+
}
|
|
900
|
+
var rowId = editingState.rowId;
|
|
901
|
+
var columnId = editingState.columnId;
|
|
902
|
+
setEditingState(function (prev) {
|
|
903
|
+
if (prev.mode !== "editing" || prev.pending || prev.rowId !== rowId || prev.columnId !== columnId) {
|
|
904
|
+
return prev;
|
|
905
|
+
}
|
|
906
|
+
return _extends({}, prev, {
|
|
907
|
+
pending: true,
|
|
908
|
+
errorMessage: null
|
|
909
|
+
});
|
|
910
|
+
});
|
|
911
|
+
return Promise.resolve(_catch(function () {
|
|
912
|
+
return Promise.resolve(onCellCommit({
|
|
913
|
+
rowId: rowId,
|
|
914
|
+
columnId: columnId,
|
|
915
|
+
value: value,
|
|
916
|
+
trigger: trigger
|
|
917
|
+
})).then(function () {
|
|
918
|
+
if (!mountedRef.current) {
|
|
919
|
+
return;
|
|
920
|
+
}
|
|
921
|
+
setEditingState(function (prev) {
|
|
922
|
+
if (prev.mode !== "editing" || prev.rowId !== rowId || prev.columnId !== columnId) {
|
|
923
|
+
return prev;
|
|
924
|
+
}
|
|
925
|
+
return {
|
|
926
|
+
mode: "viewing",
|
|
927
|
+
rowId: null,
|
|
928
|
+
columnId: null,
|
|
929
|
+
trigger: null,
|
|
930
|
+
pending: false,
|
|
931
|
+
errorMessage: null
|
|
932
|
+
};
|
|
933
|
+
});
|
|
934
|
+
});
|
|
935
|
+
}, function (error) {
|
|
936
|
+
console.error("[commit:error]", {
|
|
937
|
+
rowId: rowId,
|
|
938
|
+
columnId: columnId,
|
|
939
|
+
trigger: trigger,
|
|
940
|
+
message: error instanceof Error ? error.message : "unknown"
|
|
941
|
+
});
|
|
942
|
+
if (!mountedRef.current) {
|
|
943
|
+
return;
|
|
944
|
+
}
|
|
945
|
+
setEditingState(function (prev) {
|
|
946
|
+
if (prev.mode !== "editing" || prev.rowId !== rowId || prev.columnId !== columnId) {
|
|
947
|
+
return prev;
|
|
948
|
+
}
|
|
949
|
+
return _extends({}, prev, {
|
|
950
|
+
pending: false,
|
|
951
|
+
errorMessage: "Commit failed. Please retry."
|
|
952
|
+
});
|
|
953
|
+
});
|
|
954
|
+
}));
|
|
955
|
+
} catch (e) {
|
|
956
|
+
return Promise.reject(e);
|
|
957
|
+
}
|
|
958
|
+
}, [editingState, onCellCommit]);
|
|
959
|
+
var selectCell = useCallback(function (rowId, columnId) {
|
|
960
|
+
console.debug("[TaskList] select cell", {
|
|
961
|
+
rowId: rowId,
|
|
962
|
+
columnId: columnId
|
|
963
|
+
});
|
|
964
|
+
setEditingState({
|
|
965
|
+
mode: "selected",
|
|
966
|
+
rowId: rowId,
|
|
967
|
+
columnId: columnId,
|
|
968
|
+
trigger: null,
|
|
969
|
+
pending: false,
|
|
970
|
+
errorMessage: null
|
|
971
|
+
});
|
|
972
|
+
}, []);
|
|
973
|
+
var startEditing = useCallback(function (rowId, columnId, trigger) {
|
|
974
|
+
if (editingState.pending) {
|
|
975
|
+
console.debug("[TaskList] ignore enter editing", {
|
|
976
|
+
reason: "pending",
|
|
977
|
+
rowId: rowId,
|
|
978
|
+
columnId: columnId
|
|
979
|
+
});
|
|
980
|
+
return;
|
|
981
|
+
}
|
|
982
|
+
console.debug("[TaskList] enter editing", {
|
|
983
|
+
rowId: rowId,
|
|
984
|
+
columnId: columnId,
|
|
985
|
+
trigger: trigger
|
|
986
|
+
});
|
|
987
|
+
setEditingState({
|
|
988
|
+
mode: "editing",
|
|
989
|
+
rowId: rowId,
|
|
990
|
+
columnId: columnId,
|
|
991
|
+
trigger: trigger,
|
|
992
|
+
pending: false,
|
|
993
|
+
errorMessage: null
|
|
994
|
+
});
|
|
995
|
+
}, [editingState.pending]);
|
|
996
|
+
useEffect(function () {
|
|
997
|
+
var previous = previousEditingStateRef.current;
|
|
998
|
+
if (previous) {
|
|
999
|
+
var buildLogContext = function buildLogContext() {
|
|
1000
|
+
var _editingState$rowId, _editingState$columnI, _editingState$trigger;
|
|
1001
|
+
return {
|
|
1002
|
+
rowId: (_editingState$rowId = editingState.rowId) != null ? _editingState$rowId : previous.rowId,
|
|
1003
|
+
columnId: (_editingState$columnI = editingState.columnId) != null ? _editingState$columnI : previous.columnId,
|
|
1004
|
+
trigger: (_editingState$trigger = editingState.trigger) != null ? _editingState$trigger : previous.trigger
|
|
1005
|
+
};
|
|
1006
|
+
};
|
|
1007
|
+
if (previous.mode !== "editing" && editingState.mode === "editing") {
|
|
1008
|
+
console.log("[edit:start]", buildLogContext());
|
|
1009
|
+
}
|
|
1010
|
+
if (!previous.pending && editingState.pending) {
|
|
1011
|
+
console.log("[commit:start]", buildLogContext());
|
|
1012
|
+
}
|
|
1013
|
+
if (previous.pending && !editingState.pending) {
|
|
1014
|
+
var logContext = buildLogContext();
|
|
1015
|
+
if (editingState.mode === "editing") {
|
|
1016
|
+
console.log("[commit:reject]", logContext);
|
|
1017
|
+
} else {
|
|
1018
|
+
console.log("[commit:resolve]", logContext);
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
if (previous.mode === "editing" && editingState.mode !== "editing") {
|
|
1022
|
+
console.log("[edit:end]", _extends({}, buildLogContext(), {
|
|
1023
|
+
to: editingState.mode
|
|
1024
|
+
}));
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
previousEditingStateRef.current = editingState;
|
|
1028
|
+
}, [editingState]);
|
|
1029
|
+
var editingContextValue = useMemo(function () {
|
|
1030
|
+
return {
|
|
1031
|
+
editingState: editingState,
|
|
1032
|
+
selectCell: selectCell,
|
|
1033
|
+
startEditing: startEditing
|
|
1034
|
+
};
|
|
1035
|
+
}, [editingState, selectCell, startEditing]);
|
|
274
1036
|
return React.createElement("div", {
|
|
1037
|
+
ref: taskListRef
|
|
1038
|
+
}, React.createElement(OverlayEditor, {
|
|
1039
|
+
editingState: editingState,
|
|
1040
|
+
taskListRef: taskListRef,
|
|
1041
|
+
headerContainerRef: headerRef,
|
|
1042
|
+
bodyContainerRef: horizontalContainerRef,
|
|
1043
|
+
onCommit: commitEditing,
|
|
1044
|
+
onCancel: cancelEditing
|
|
1045
|
+
}), React.createElement("div", {
|
|
1046
|
+
ref: headerRef,
|
|
1047
|
+
onScroll: onHorizontalScroll,
|
|
1048
|
+
style: {
|
|
1049
|
+
width: "100%",
|
|
1050
|
+
overflowX: "hidden"
|
|
1051
|
+
}
|
|
1052
|
+
}, React.createElement(TaskListHeader, Object.assign({}, headerProps))), React.createElement("div", {
|
|
1053
|
+
ref: horizontalContainerRef,
|
|
1054
|
+
className: horizontalContainerClass,
|
|
1055
|
+
style: ganttHeight ? {
|
|
1056
|
+
height: ganttHeight
|
|
1057
|
+
} : {},
|
|
1058
|
+
onScroll: onHorizontalScroll
|
|
1059
|
+
}, React.createElement(TaskListEditingStateContext.Provider, {
|
|
1060
|
+
value: editingContextValue
|
|
1061
|
+
}, React.createElement(TaskListTable, Object.assign({}, tableProps)))));
|
|
1062
|
+
};
|
|
1063
|
+
|
|
1064
|
+
var TaskListHeaderDefault = function TaskListHeaderDefault(_ref) {
|
|
1065
|
+
var headerHeight = _ref.headerHeight,
|
|
1066
|
+
fontFamily = _ref.fontFamily,
|
|
1067
|
+
fontSize = _ref.fontSize,
|
|
1068
|
+
rowWidth = _ref.rowWidth,
|
|
1069
|
+
visibleFields = _ref.visibleFields,
|
|
1070
|
+
columnsState = _ref.columnsState,
|
|
1071
|
+
setColumnsState = _ref.setColumnsState,
|
|
1072
|
+
_ref$enableColumnDrag = _ref.enableColumnDrag,
|
|
1073
|
+
enableColumnDrag = _ref$enableColumnDrag === void 0 ? true : _ref$enableColumnDrag;
|
|
1074
|
+
var labels = {
|
|
1075
|
+
name: "タスク名",
|
|
1076
|
+
start: "開始日",
|
|
1077
|
+
end: "終了日",
|
|
1078
|
+
process: "工程",
|
|
1079
|
+
assignee: "担当者",
|
|
1080
|
+
plannedStart: "予定開始",
|
|
1081
|
+
plannedEnd: "予定終了",
|
|
1082
|
+
plannedEffort: "予定工数",
|
|
1083
|
+
actualEffort: "実績工数",
|
|
1084
|
+
status: "ステータス"
|
|
1085
|
+
};
|
|
1086
|
+
var fallbackColumns = resolveVisibleFields(visibleFields).map(function (field) {
|
|
1087
|
+
return {
|
|
1088
|
+
id: field,
|
|
1089
|
+
label: labels[field],
|
|
1090
|
+
width: getDefaultWidth(field, rowWidth),
|
|
1091
|
+
minWidth: DEFAULT_MIN_WIDTH,
|
|
1092
|
+
visible: true
|
|
1093
|
+
};
|
|
1094
|
+
});
|
|
1095
|
+
var resolvedColumns = useMemo(function () {
|
|
1096
|
+
return (columnsState || fallbackColumns).filter(function (column) {
|
|
1097
|
+
return column.visible !== false;
|
|
1098
|
+
});
|
|
1099
|
+
}, [columnsState, fallbackColumns]);
|
|
1100
|
+
var sensors = useSensors(useSensor(PointerSensor));
|
|
1101
|
+
var _useState = useState(null),
|
|
1102
|
+
resizingId = _useState[0],
|
|
1103
|
+
setResizingId = _useState[1];
|
|
1104
|
+
var onDragEnd = function onDragEnd(event) {
|
|
1105
|
+
if (!setColumnsState || !enableColumnDrag) return;
|
|
1106
|
+
var active = event.active,
|
|
1107
|
+
over = event.over;
|
|
1108
|
+
if (!over || active.id === over.id) return;
|
|
1109
|
+
setColumnsState(function (prev) {
|
|
1110
|
+
var visible = prev.filter(function (column) {
|
|
1111
|
+
return column.visible !== false;
|
|
1112
|
+
});
|
|
1113
|
+
var oldIndex = visible.findIndex(function (column) {
|
|
1114
|
+
return column.id === active.id;
|
|
1115
|
+
});
|
|
1116
|
+
var newIndex = visible.findIndex(function (column) {
|
|
1117
|
+
return column.id === over.id;
|
|
1118
|
+
});
|
|
1119
|
+
if (oldIndex < 0 || newIndex < 0) return prev;
|
|
1120
|
+
var moved = arrayMove(visible, oldIndex, newIndex);
|
|
1121
|
+
var idx = 0;
|
|
1122
|
+
return prev.map(function (column) {
|
|
1123
|
+
return column.visible !== false ? moved[idx++] : column;
|
|
1124
|
+
});
|
|
1125
|
+
});
|
|
1126
|
+
};
|
|
1127
|
+
var headerContent = React.createElement("div", {
|
|
275
1128
|
className: styles.ganttTable,
|
|
276
1129
|
style: {
|
|
277
1130
|
fontFamily: fontFamily,
|
|
@@ -282,191 +1135,532 @@ var TaskListHeaderDefault = function TaskListHeaderDefault(_ref) {
|
|
|
282
1135
|
style: {
|
|
283
1136
|
height: headerHeight - 2
|
|
284
1137
|
}
|
|
285
|
-
},
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
1138
|
+
}, resolvedColumns.map(function (column, index) {
|
|
1139
|
+
return React.createElement(React.Fragment, {
|
|
1140
|
+
key: column.id
|
|
1141
|
+
}, React.createElement(SortableHeaderItem, {
|
|
1142
|
+
column: column,
|
|
1143
|
+
labels: labels,
|
|
1144
|
+
setColumnsState: setColumnsState,
|
|
1145
|
+
enableDrag: enableColumnDrag && !!setColumnsState,
|
|
1146
|
+
setResizingId: setResizingId,
|
|
1147
|
+
isResizing: resizingId === column.id
|
|
1148
|
+
}), index !== resolvedColumns.length - 1 && React.createElement("div", {
|
|
1149
|
+
className: styles.ganttTable_HeaderSeparator,
|
|
1150
|
+
style: {
|
|
1151
|
+
height: headerHeight * 0.5,
|
|
1152
|
+
marginTop: headerHeight * 0.2
|
|
1153
|
+
}
|
|
1154
|
+
}));
|
|
1155
|
+
})));
|
|
1156
|
+
return React.createElement(DndContext, {
|
|
1157
|
+
sensors: sensors,
|
|
1158
|
+
onDragEnd: enableColumnDrag ? onDragEnd : undefined
|
|
1159
|
+
}, React.createElement(SortableContext, {
|
|
1160
|
+
items: resolvedColumns.map(function (column) {
|
|
1161
|
+
return column.id;
|
|
1162
|
+
}),
|
|
1163
|
+
strategy: horizontalListSortingStrategy
|
|
1164
|
+
}, headerContent));
|
|
1165
|
+
};
|
|
1166
|
+
var SortableHeaderItem = function SortableHeaderItem(_ref2) {
|
|
1167
|
+
var _classNames, _classNames2, _classNames3;
|
|
1168
|
+
var column = _ref2.column,
|
|
1169
|
+
labels = _ref2.labels,
|
|
1170
|
+
setColumnsState = _ref2.setColumnsState,
|
|
1171
|
+
enableDrag = _ref2.enableDrag,
|
|
1172
|
+
setResizingId = _ref2.setResizingId,
|
|
1173
|
+
isResizing = _ref2.isResizing;
|
|
1174
|
+
var _useSortable = useSortable({
|
|
1175
|
+
id: column.id,
|
|
1176
|
+
disabled: !enableDrag
|
|
1177
|
+
}),
|
|
1178
|
+
attributes = _useSortable.attributes,
|
|
1179
|
+
listeners = _useSortable.listeners,
|
|
1180
|
+
setNodeRef = _useSortable.setNodeRef,
|
|
1181
|
+
transform = _useSortable.transform,
|
|
1182
|
+
transition = _useSortable.transition,
|
|
1183
|
+
isDragging = _useSortable.isDragging;
|
|
1184
|
+
var startXRef = useRef(null);
|
|
1185
|
+
var startWidthRef = useRef(null);
|
|
1186
|
+
var moveHandlerRef = useRef(null);
|
|
1187
|
+
var upHandlerRef = useRef(null);
|
|
1188
|
+
useEffect(function () {
|
|
1189
|
+
return function () {
|
|
1190
|
+
if (moveHandlerRef.current) {
|
|
1191
|
+
document.removeEventListener("mousemove", moveHandlerRef.current);
|
|
1192
|
+
moveHandlerRef.current = null;
|
|
1193
|
+
}
|
|
1194
|
+
if (upHandlerRef.current) {
|
|
1195
|
+
document.removeEventListener("mouseup", upHandlerRef.current);
|
|
1196
|
+
upHandlerRef.current = null;
|
|
1197
|
+
}
|
|
1198
|
+
};
|
|
1199
|
+
}, []);
|
|
1200
|
+
var style = {
|
|
1201
|
+
minWidth: column.width,
|
|
1202
|
+
maxWidth: column.width,
|
|
1203
|
+
transform: CSS$1.Transform.toString(transform),
|
|
1204
|
+
transition: transition
|
|
1205
|
+
};
|
|
1206
|
+
var onMouseDownResize = function onMouseDownResize(event) {
|
|
1207
|
+
event.stopPropagation();
|
|
1208
|
+
event.preventDefault();
|
|
1209
|
+
startXRef.current = event.clientX;
|
|
1210
|
+
startWidthRef.current = column.width;
|
|
1211
|
+
setResizingId(column.id);
|
|
1212
|
+
var handleMouseMove = function handleMouseMove(moveEvent) {
|
|
1213
|
+
if (startXRef.current == null || startWidthRef.current == null) return;
|
|
1214
|
+
var delta = moveEvent.clientX - startXRef.current;
|
|
1215
|
+
var nextWidth = Math.max(column.minWidth, startWidthRef.current + delta);
|
|
1216
|
+
setColumnsState === null || setColumnsState === void 0 ? void 0 : setColumnsState(function (prev) {
|
|
1217
|
+
return prev.map(function (item) {
|
|
1218
|
+
return item.id === column.id ? _extends({}, item, {
|
|
1219
|
+
width: nextWidth
|
|
1220
|
+
}) : item;
|
|
1221
|
+
});
|
|
1222
|
+
});
|
|
1223
|
+
};
|
|
1224
|
+
var handleMouseUp = function handleMouseUp() {
|
|
1225
|
+
startXRef.current = null;
|
|
1226
|
+
startWidthRef.current = null;
|
|
1227
|
+
setResizingId(null);
|
|
1228
|
+
if (moveHandlerRef.current) {
|
|
1229
|
+
document.removeEventListener("mousemove", moveHandlerRef.current);
|
|
1230
|
+
moveHandlerRef.current = null;
|
|
1231
|
+
}
|
|
1232
|
+
if (upHandlerRef.current) {
|
|
1233
|
+
document.removeEventListener("mouseup", upHandlerRef.current);
|
|
1234
|
+
upHandlerRef.current = null;
|
|
1235
|
+
}
|
|
1236
|
+
};
|
|
1237
|
+
moveHandlerRef.current = handleMouseMove;
|
|
1238
|
+
upHandlerRef.current = handleMouseUp;
|
|
1239
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
1240
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
1241
|
+
};
|
|
1242
|
+
return React.createElement("div", {
|
|
1243
|
+
ref: setNodeRef,
|
|
1244
|
+
className: classnames(styles.ganttTable_HeaderItem, (_classNames = {}, _classNames[styles.ganttTable_HeaderItemDragging] = isDragging, _classNames)),
|
|
1245
|
+
style: style
|
|
1246
|
+
}, React.createElement("div", Object.assign({
|
|
1247
|
+
className: classnames(styles.ganttTable_DragHandle, (_classNames2 = {}, _classNames2[styles.ganttTable_DragHandleDisabled] = !enableDrag, _classNames2))
|
|
1248
|
+
}, attributes, listeners, {
|
|
1249
|
+
"aria-label": "Drag column",
|
|
1250
|
+
onMouseDown: function onMouseDown(event) {
|
|
1251
|
+
return event.stopPropagation();
|
|
1252
|
+
}
|
|
1253
|
+
}), React.createElement("span", {
|
|
1254
|
+
className: styles.ganttTable_DragIcon,
|
|
1255
|
+
"aria-hidden": "true"
|
|
1256
|
+
}, "\u22EE\u22EE")), React.createElement("div", {
|
|
1257
|
+
className: styles.ganttTable_HeaderLabel
|
|
1258
|
+
}, labels[column.id]), React.createElement("div", {
|
|
1259
|
+
className: classnames(styles.ganttTable_ResizeHandle, (_classNames3 = {}, _classNames3[styles.ganttTable_ResizeHandleActive] = isResizing, _classNames3)),
|
|
1260
|
+
onMouseDown: onMouseDownResize,
|
|
1261
|
+
"aria-label": "Resize column",
|
|
1262
|
+
role: "separator",
|
|
1263
|
+
"aria-orientation": "vertical"
|
|
1264
|
+
}));
|
|
1265
|
+
};
|
|
1266
|
+
|
|
1267
|
+
var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
1268
|
+
var _columnsState$filter;
|
|
1269
|
+
var rowHeight = _ref.rowHeight,
|
|
1270
|
+
rowWidth = _ref.rowWidth,
|
|
1271
|
+
tasks = _ref.tasks,
|
|
1272
|
+
fontFamily = _ref.fontFamily,
|
|
1273
|
+
fontSize = _ref.fontSize,
|
|
1274
|
+
onExpanderClick = _ref.onExpanderClick,
|
|
1275
|
+
visibleFields = _ref.visibleFields,
|
|
1276
|
+
onCellCommit = _ref.onCellCommit,
|
|
1277
|
+
effortDisplayUnit = _ref.effortDisplayUnit,
|
|
1278
|
+
columnsState = _ref.columnsState;
|
|
1279
|
+
var columns = (_columnsState$filter = columnsState === null || columnsState === void 0 ? void 0 : columnsState.filter(function (column) {
|
|
1280
|
+
return column.visible !== false;
|
|
1281
|
+
})) != null ? _columnsState$filter : resolveVisibleFields(visibleFields).map(function (field) {
|
|
1282
|
+
return {
|
|
1283
|
+
id: field,
|
|
1284
|
+
width: getDefaultWidth(field, rowWidth)
|
|
1285
|
+
};
|
|
1286
|
+
});
|
|
1287
|
+
var isCommitEnabled = !!onCellCommit;
|
|
1288
|
+
var allowEditing = isCommitEnabled;
|
|
1289
|
+
var editingContext = React.useContext(TaskListEditingStateContext);
|
|
1290
|
+
var editingState = editingContext === null || editingContext === void 0 ? void 0 : editingContext.editingState;
|
|
1291
|
+
var editableFields = new Set(["name", "start", "end", "process", "assignee", "plannedStart", "plannedEnd", "plannedEffort", "actualEffort", "status"]);
|
|
1292
|
+
var columnIds = columns.map(function (column) {
|
|
1293
|
+
return typeof column === "string" ? column : column.id;
|
|
1294
|
+
});
|
|
1295
|
+
var resolveColumnId = function resolveColumnId(column) {
|
|
1296
|
+
return typeof column === "string" ? column : column.id;
|
|
1297
|
+
};
|
|
1298
|
+
var isCellEditable = function isCellEditable(task, columnId) {
|
|
1299
|
+
var tableEditable = allowEditing;
|
|
1300
|
+
var columnEditable = editableFields.has(columnId);
|
|
1301
|
+
var rowEditable = task.isDisabled !== true;
|
|
1302
|
+
var cellEditableByRule = true;
|
|
1303
|
+
return tableEditable && columnEditable && rowEditable && cellEditableByRule;
|
|
1304
|
+
};
|
|
1305
|
+
var selectCell = editingContext === null || editingContext === void 0 ? void 0 : editingContext.selectCell;
|
|
1306
|
+
var startEditing = editingContext === null || editingContext === void 0 ? void 0 : editingContext.startEditing;
|
|
1307
|
+
var findCellPosition = function findCellPosition() {
|
|
1308
|
+
if (!editingState || editingState.mode === "viewing") {
|
|
1309
|
+
return null;
|
|
1310
|
+
}
|
|
1311
|
+
var rowIndex = tasks.findIndex(function (task) {
|
|
1312
|
+
return task.id === editingState.rowId;
|
|
1313
|
+
});
|
|
1314
|
+
var columnIndex = columnIds.indexOf(editingState.columnId);
|
|
1315
|
+
if (rowIndex < 0 || columnIndex < 0) {
|
|
1316
|
+
return null;
|
|
1317
|
+
}
|
|
1318
|
+
return {
|
|
1319
|
+
rowIndex: rowIndex,
|
|
1320
|
+
columnIndex: columnIndex
|
|
1321
|
+
};
|
|
1322
|
+
};
|
|
1323
|
+
var resolveSelectedCell = function resolveSelectedCell() {
|
|
1324
|
+
if (!editingState || editingState.mode !== "selected") {
|
|
1325
|
+
return null;
|
|
1326
|
+
}
|
|
1327
|
+
var columnId = editingState.columnId;
|
|
1328
|
+
if (!columnId || !columnIds.includes(columnId)) {
|
|
1329
|
+
return null;
|
|
1330
|
+
}
|
|
1331
|
+
var task = tasks.find(function (row) {
|
|
1332
|
+
return row.id === editingState.rowId;
|
|
1333
|
+
});
|
|
1334
|
+
if (!task) {
|
|
1335
|
+
return null;
|
|
1336
|
+
}
|
|
1337
|
+
return {
|
|
1338
|
+
task: task,
|
|
1339
|
+
columnId: columnId
|
|
1340
|
+
};
|
|
1341
|
+
};
|
|
1342
|
+
var moveSelection = function moveSelection(direction) {
|
|
1343
|
+
if (!selectCell || tasks.length === 0 || columnIds.length === 0) {
|
|
1344
|
+
return;
|
|
1345
|
+
}
|
|
1346
|
+
var position = findCellPosition();
|
|
1347
|
+
if (!position) {
|
|
1348
|
+
var firstColumn = columnIds[0];
|
|
1349
|
+
selectCell(tasks[0].id, firstColumn);
|
|
1350
|
+
return;
|
|
1351
|
+
}
|
|
1352
|
+
var rowIndex = position.rowIndex,
|
|
1353
|
+
columnIndex = position.columnIndex;
|
|
1354
|
+
switch (direction) {
|
|
1355
|
+
case "up":
|
|
1356
|
+
rowIndex = Math.max(0, rowIndex - 1);
|
|
1357
|
+
break;
|
|
1358
|
+
case "down":
|
|
1359
|
+
rowIndex = Math.min(tasks.length - 1, rowIndex + 1);
|
|
1360
|
+
break;
|
|
1361
|
+
case "left":
|
|
1362
|
+
columnIndex = Math.max(0, columnIndex - 1);
|
|
1363
|
+
break;
|
|
1364
|
+
case "right":
|
|
1365
|
+
columnIndex = Math.min(columnIds.length - 1, columnIndex + 1);
|
|
1366
|
+
break;
|
|
1367
|
+
}
|
|
1368
|
+
selectCell(tasks[rowIndex].id, columnIds[columnIndex]);
|
|
1369
|
+
};
|
|
1370
|
+
var shouldIgnoreKeyEvent = function shouldIgnoreKeyEvent(target) {
|
|
1371
|
+
if (!(target instanceof HTMLElement)) {
|
|
1372
|
+
return false;
|
|
1373
|
+
}
|
|
1374
|
+
if (target.isContentEditable) {
|
|
1375
|
+
return true;
|
|
1376
|
+
}
|
|
1377
|
+
var tagName = target.tagName;
|
|
1378
|
+
return tagName === "INPUT" || tagName === "TEXTAREA" || tagName === "SELECT";
|
|
1379
|
+
};
|
|
1380
|
+
var handleWrapperKeyDown = function handleWrapperKeyDown(event) {
|
|
1381
|
+
if (event.defaultPrevented) {
|
|
1382
|
+
return;
|
|
1383
|
+
}
|
|
1384
|
+
if (shouldIgnoreKeyEvent(event.target)) {
|
|
1385
|
+
return;
|
|
1386
|
+
}
|
|
1387
|
+
if ((editingState === null || editingState === void 0 ? void 0 : editingState.mode) === "editing") {
|
|
1388
|
+
return;
|
|
289
1389
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
1390
|
+
switch (event.key) {
|
|
1391
|
+
case "ArrowUp":
|
|
1392
|
+
event.preventDefault();
|
|
1393
|
+
moveSelection("up");
|
|
1394
|
+
return;
|
|
1395
|
+
case "ArrowDown":
|
|
1396
|
+
event.preventDefault();
|
|
1397
|
+
moveSelection("down");
|
|
1398
|
+
return;
|
|
1399
|
+
case "ArrowLeft":
|
|
1400
|
+
event.preventDefault();
|
|
1401
|
+
moveSelection("left");
|
|
1402
|
+
return;
|
|
1403
|
+
case "ArrowRight":
|
|
1404
|
+
event.preventDefault();
|
|
1405
|
+
moveSelection("right");
|
|
1406
|
+
return;
|
|
295
1407
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
style: {
|
|
299
|
-
minWidth: rowWidth
|
|
1408
|
+
if ((editingState === null || editingState === void 0 ? void 0 : editingState.mode) !== "selected") {
|
|
1409
|
+
return;
|
|
300
1410
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
height: headerHeight * 0.5,
|
|
305
|
-
marginTop: headerHeight * 0.25
|
|
1411
|
+
var selectedCell = resolveSelectedCell();
|
|
1412
|
+
if (!selectedCell || !startEditing) {
|
|
1413
|
+
return;
|
|
306
1414
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
1415
|
+
if (event.key === "Enter") {
|
|
1416
|
+
if (!isCellEditable(selectedCell.task, selectedCell.columnId)) {
|
|
1417
|
+
console.debug("[TaskList] ignore enter editing", {
|
|
1418
|
+
reason: "not-editable",
|
|
1419
|
+
rowId: selectedCell.task.id,
|
|
1420
|
+
columnId: selectedCell.columnId
|
|
1421
|
+
});
|
|
1422
|
+
return;
|
|
1423
|
+
}
|
|
1424
|
+
event.preventDefault();
|
|
1425
|
+
startEditing(selectedCell.task.id, selectedCell.columnId, "enter");
|
|
1426
|
+
return;
|
|
311
1427
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
var
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
1428
|
+
if (event.key === "Escape") {
|
|
1429
|
+
return;
|
|
1430
|
+
}
|
|
1431
|
+
var isPrintableKey = event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey;
|
|
1432
|
+
if (isPrintableKey) {
|
|
1433
|
+
if (!isCellEditable(selectedCell.task, selectedCell.columnId)) {
|
|
1434
|
+
console.debug("[TaskList] ignore enter editing", {
|
|
1435
|
+
reason: "not-editable",
|
|
1436
|
+
rowId: selectedCell.task.id,
|
|
1437
|
+
columnId: selectedCell.columnId
|
|
1438
|
+
});
|
|
1439
|
+
return;
|
|
1440
|
+
}
|
|
1441
|
+
event.preventDefault();
|
|
1442
|
+
startEditing(selectedCell.task.id, selectedCell.columnId, "key");
|
|
327
1443
|
}
|
|
328
|
-
|
|
329
|
-
return lds;
|
|
330
1444
|
};
|
|
331
|
-
};
|
|
332
|
-
|
|
333
|
-
var dateTimeOptions = {
|
|
334
|
-
weekday: "short",
|
|
335
|
-
year: "numeric",
|
|
336
|
-
month: "long",
|
|
337
|
-
day: "numeric"
|
|
338
|
-
};
|
|
339
|
-
var TaskListTableDefault = function TaskListTableDefault(_ref) {
|
|
340
|
-
var rowHeight = _ref.rowHeight,
|
|
341
|
-
rowWidth = _ref.rowWidth,
|
|
342
|
-
tasks = _ref.tasks,
|
|
343
|
-
fontFamily = _ref.fontFamily,
|
|
344
|
-
fontSize = _ref.fontSize,
|
|
345
|
-
locale = _ref.locale,
|
|
346
|
-
onExpanderClick = _ref.onExpanderClick;
|
|
347
|
-
var toLocaleDateString = useMemo(function () {
|
|
348
|
-
return toLocaleDateStringFactory(locale);
|
|
349
|
-
}, [locale]);
|
|
350
1445
|
return React.createElement("div", {
|
|
351
1446
|
className: styles$1.taskListWrapper,
|
|
1447
|
+
tabIndex: 0,
|
|
1448
|
+
onKeyDown: handleWrapperKeyDown,
|
|
352
1449
|
style: {
|
|
353
1450
|
fontFamily: fontFamily,
|
|
354
1451
|
fontSize: fontSize
|
|
355
1452
|
}
|
|
356
1453
|
}, tasks.map(function (t) {
|
|
357
1454
|
var expanderSymbol = "";
|
|
358
|
-
|
|
359
1455
|
if (t.hideChildren === false) {
|
|
360
1456
|
expanderSymbol = "▼";
|
|
361
1457
|
} else if (t.hideChildren === true) {
|
|
362
1458
|
expanderSymbol = "▶";
|
|
363
1459
|
}
|
|
364
|
-
|
|
1460
|
+
var renderCell = function renderCell(field) {
|
|
1461
|
+
switch (field) {
|
|
1462
|
+
case "name":
|
|
1463
|
+
return React.createElement("div", {
|
|
1464
|
+
className: styles$1.taskListNameWrapper
|
|
1465
|
+
}, React.createElement("div", {
|
|
1466
|
+
className: expanderSymbol ? styles$1.taskListExpander : styles$1.taskListEmptyExpander,
|
|
1467
|
+
onClick: function onClick() {
|
|
1468
|
+
return onExpanderClick(t);
|
|
1469
|
+
}
|
|
1470
|
+
}, expanderSymbol), React.createElement("div", null, t.name));
|
|
1471
|
+
case "start":
|
|
1472
|
+
return React.createElement("span", null, formatDate(t.start));
|
|
1473
|
+
case "end":
|
|
1474
|
+
return React.createElement("span", null, formatDate(t.end));
|
|
1475
|
+
case "process":
|
|
1476
|
+
return React.createElement("span", null, normalizeProcess(t.process));
|
|
1477
|
+
case "assignee":
|
|
1478
|
+
return React.createElement("span", null, t.assignee || "");
|
|
1479
|
+
case "plannedStart":
|
|
1480
|
+
return React.createElement("span", null, formatDate(t.plannedStart));
|
|
1481
|
+
case "plannedEnd":
|
|
1482
|
+
return React.createElement("span", null, formatDate(t.plannedEnd));
|
|
1483
|
+
case "plannedEffort":
|
|
1484
|
+
return React.createElement("span", null, formatEffort(t.plannedEffort, effortDisplayUnit));
|
|
1485
|
+
case "actualEffort":
|
|
1486
|
+
return React.createElement("span", null, formatEffort(t.actualEffort, effortDisplayUnit));
|
|
1487
|
+
case "status":
|
|
1488
|
+
{
|
|
1489
|
+
var statusValue = normalizeStatus(t.status);
|
|
1490
|
+
return React.createElement("div", {
|
|
1491
|
+
className: styles$1.statusWrapper
|
|
1492
|
+
}, React.createElement("span", {
|
|
1493
|
+
className: styles$1.statusBadge,
|
|
1494
|
+
style: {
|
|
1495
|
+
backgroundColor: getStatusColor(statusValue)
|
|
1496
|
+
}
|
|
1497
|
+
}, getStatusBadgeText(statusValue)), React.createElement("span", {
|
|
1498
|
+
className: styles$1.statusText
|
|
1499
|
+
}, statusValue));
|
|
1500
|
+
}
|
|
1501
|
+
default:
|
|
1502
|
+
return null;
|
|
1503
|
+
}
|
|
1504
|
+
};
|
|
365
1505
|
return React.createElement("div", {
|
|
366
1506
|
className: styles$1.taskListTableRow,
|
|
367
1507
|
style: {
|
|
368
1508
|
height: rowHeight
|
|
369
1509
|
},
|
|
370
1510
|
key: t.id + "row"
|
|
371
|
-
},
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
1511
|
+
}, columns.map(function (column) {
|
|
1512
|
+
var columnId = resolveColumnId(column);
|
|
1513
|
+
var isSelected = (editingState === null || editingState === void 0 ? void 0 : editingState.mode) !== "viewing" && (editingState === null || editingState === void 0 ? void 0 : editingState.rowId) === t.id && (editingState === null || editingState === void 0 ? void 0 : editingState.columnId) === columnId;
|
|
1514
|
+
var handleCellClick = function handleCellClick(event) {
|
|
1515
|
+
if ((editingState === null || editingState === void 0 ? void 0 : editingState.mode) === "editing") {
|
|
1516
|
+
var pending = editingState.pending;
|
|
1517
|
+
console.log("[edit:select]", {
|
|
1518
|
+
rowId: t.id,
|
|
1519
|
+
columnId: columnId,
|
|
1520
|
+
pending: pending
|
|
1521
|
+
});
|
|
1522
|
+
if (pending) {
|
|
1523
|
+
return;
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
if (selectCell) {
|
|
1527
|
+
selectCell(t.id, columnId);
|
|
1528
|
+
}
|
|
1529
|
+
event.currentTarget.focus();
|
|
1530
|
+
};
|
|
1531
|
+
var handleCellDoubleClick = function handleCellDoubleClick() {
|
|
1532
|
+
if (!startEditing) {
|
|
1533
|
+
return;
|
|
1534
|
+
}
|
|
1535
|
+
if (!isCellEditable(t, columnId)) {
|
|
1536
|
+
console.debug("[TaskList] ignore enter editing", {
|
|
1537
|
+
reason: "not-editable",
|
|
1538
|
+
rowId: t.id,
|
|
1539
|
+
columnId: columnId
|
|
1540
|
+
});
|
|
1541
|
+
return;
|
|
1542
|
+
}
|
|
1543
|
+
startEditing(t.id, columnId, "dblclick");
|
|
1544
|
+
};
|
|
1545
|
+
var handleCellKeyDown = function handleCellKeyDown(event) {
|
|
1546
|
+
if (shouldIgnoreKeyEvent(event.target)) {
|
|
1547
|
+
return;
|
|
1548
|
+
}
|
|
1549
|
+
if (!isSelected || (editingState === null || editingState === void 0 ? void 0 : editingState.mode) !== "selected") {
|
|
1550
|
+
return;
|
|
1551
|
+
}
|
|
1552
|
+
if (event.key === "Enter") {
|
|
1553
|
+
if (!startEditing) {
|
|
1554
|
+
return;
|
|
1555
|
+
}
|
|
1556
|
+
if (!isCellEditable(t, columnId)) {
|
|
1557
|
+
console.debug("[TaskList] ignore enter editing", {
|
|
1558
|
+
reason: "not-editable",
|
|
1559
|
+
rowId: t.id,
|
|
1560
|
+
columnId: columnId
|
|
1561
|
+
});
|
|
1562
|
+
return;
|
|
1563
|
+
}
|
|
1564
|
+
event.preventDefault();
|
|
1565
|
+
startEditing(t.id, columnId, "enter");
|
|
1566
|
+
return;
|
|
1567
|
+
}
|
|
1568
|
+
if (event.key === "Escape") {
|
|
1569
|
+
return;
|
|
1570
|
+
}
|
|
1571
|
+
var isPrintableKey = event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey;
|
|
1572
|
+
if (isPrintableKey) {
|
|
1573
|
+
if (!startEditing) {
|
|
1574
|
+
return;
|
|
1575
|
+
}
|
|
1576
|
+
if (!isCellEditable(t, columnId)) {
|
|
1577
|
+
console.debug("[TaskList] ignore enter editing", {
|
|
1578
|
+
reason: "not-editable",
|
|
1579
|
+
rowId: t.id,
|
|
1580
|
+
columnId: columnId
|
|
1581
|
+
});
|
|
1582
|
+
return;
|
|
1583
|
+
}
|
|
1584
|
+
event.preventDefault();
|
|
1585
|
+
startEditing(t.id, columnId, "key");
|
|
1586
|
+
}
|
|
1587
|
+
};
|
|
1588
|
+
return React.createElement("div", {
|
|
1589
|
+
key: t.id + "-" + columnId,
|
|
1590
|
+
className: styles$1.taskListCell,
|
|
1591
|
+
"data-row-id": t.id,
|
|
1592
|
+
"data-column-id": columnId,
|
|
1593
|
+
"aria-selected": isSelected || undefined,
|
|
1594
|
+
tabIndex: isSelected ? 0 : -1,
|
|
1595
|
+
onClick: handleCellClick,
|
|
1596
|
+
onDoubleClick: handleCellDoubleClick,
|
|
1597
|
+
onKeyDown: handleCellKeyDown,
|
|
1598
|
+
style: {
|
|
1599
|
+
minWidth: typeof column === "string" ? rowWidth : column.width + "px",
|
|
1600
|
+
maxWidth: typeof column === "string" ? rowWidth : column.width + "px"
|
|
1601
|
+
},
|
|
1602
|
+
title: columnId === "name" ? t.name : undefined
|
|
1603
|
+
}, renderCell(columnId));
|
|
1604
|
+
}));
|
|
398
1605
|
}));
|
|
399
1606
|
};
|
|
400
1607
|
|
|
401
|
-
var styles$2 = {"tooltipDefaultContainer":"_3T42e","tooltipDefaultContainerParagraph":"_29NTg","tooltipDetailsContainer":"_25P-K","tooltipDetailsContainerHidden":"_3gVAq"};
|
|
1608
|
+
var styles$2 = {"tooltipDefaultContainer":"_3T42e","tooltipDefaultContainerParagraph":"_29NTg","tooltipTitle":"_OlR7X","tooltipName":"_1LUF2","tooltipDate":"_18-nf","tooltipRow":"_2rDF0","tooltipLabel":"_2vh4d","tooltipValue":"_2HKiU","tooltipStatus":"_2Vw2t","tooltipStatusText":"_33_nk","tooltipDetailsContainer":"_25P-K","tooltipDetailsContainerHidden":"_3gVAq"};
|
|
402
1609
|
|
|
403
1610
|
var Tooltip = function Tooltip(_ref) {
|
|
404
1611
|
var task = _ref.task,
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
1612
|
+
rowHeight = _ref.rowHeight,
|
|
1613
|
+
rtl = _ref.rtl,
|
|
1614
|
+
svgContainerHeight = _ref.svgContainerHeight,
|
|
1615
|
+
svgContainerWidth = _ref.svgContainerWidth,
|
|
1616
|
+
scrollX = _ref.scrollX,
|
|
1617
|
+
scrollY = _ref.scrollY,
|
|
1618
|
+
arrowIndent = _ref.arrowIndent,
|
|
1619
|
+
fontSize = _ref.fontSize,
|
|
1620
|
+
fontFamily = _ref.fontFamily,
|
|
1621
|
+
headerHeight = _ref.headerHeight,
|
|
1622
|
+
taskListWidth = _ref.taskListWidth,
|
|
1623
|
+
TooltipContent = _ref.TooltipContent,
|
|
1624
|
+
effortDisplayUnit = _ref.effortDisplayUnit;
|
|
417
1625
|
var tooltipRef = useRef(null);
|
|
418
|
-
|
|
419
1626
|
var _useState = useState(0),
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
1627
|
+
relatedY = _useState[0],
|
|
1628
|
+
setRelatedY = _useState[1];
|
|
423
1629
|
var _useState2 = useState(0),
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
1630
|
+
relatedX = _useState2[0],
|
|
1631
|
+
setRelatedX = _useState2[1];
|
|
427
1632
|
useEffect(function () {
|
|
428
1633
|
if (tooltipRef.current) {
|
|
429
1634
|
var tooltipHeight = tooltipRef.current.offsetHeight * 1.1;
|
|
430
1635
|
var tooltipWidth = tooltipRef.current.offsetWidth * 1.1;
|
|
431
1636
|
var newRelatedY = task.index * rowHeight - scrollY + headerHeight;
|
|
432
1637
|
var newRelatedX;
|
|
433
|
-
|
|
434
1638
|
if (rtl) {
|
|
435
1639
|
newRelatedX = task.x1 - arrowIndent * 1.5 - tooltipWidth - scrollX;
|
|
436
|
-
|
|
437
1640
|
if (newRelatedX < 0) {
|
|
438
1641
|
newRelatedX = task.x2 + arrowIndent * 1.5 - scrollX;
|
|
439
1642
|
}
|
|
440
|
-
|
|
441
1643
|
var tooltipLeftmostPoint = tooltipWidth + newRelatedX;
|
|
442
|
-
|
|
443
1644
|
if (tooltipLeftmostPoint > svgContainerWidth) {
|
|
444
1645
|
newRelatedX = svgContainerWidth - tooltipWidth;
|
|
445
1646
|
newRelatedY += rowHeight;
|
|
446
1647
|
}
|
|
447
1648
|
} else {
|
|
448
1649
|
newRelatedX = task.x2 + arrowIndent * 1.5 + taskListWidth - scrollX;
|
|
449
|
-
|
|
450
1650
|
var _tooltipLeftmostPoint = tooltipWidth + newRelatedX;
|
|
451
|
-
|
|
452
1651
|
var fullChartWidth = taskListWidth + svgContainerWidth;
|
|
453
|
-
|
|
454
1652
|
if (_tooltipLeftmostPoint > fullChartWidth) {
|
|
455
1653
|
newRelatedX = task.x1 + taskListWidth - arrowIndent * 1.5 - scrollX - tooltipWidth;
|
|
456
1654
|
}
|
|
457
|
-
|
|
458
1655
|
if (newRelatedX < taskListWidth) {
|
|
459
1656
|
newRelatedX = svgContainerWidth + taskListWidth - tooltipWidth;
|
|
460
1657
|
newRelatedY += rowHeight;
|
|
461
1658
|
}
|
|
462
1659
|
}
|
|
463
|
-
|
|
464
1660
|
var tooltipLowerPoint = tooltipHeight + newRelatedY - scrollY;
|
|
465
|
-
|
|
466
1661
|
if (tooltipLowerPoint > svgContainerHeight - scrollY) {
|
|
467
1662
|
newRelatedY = svgContainerHeight - tooltipHeight;
|
|
468
1663
|
}
|
|
469
|
-
|
|
470
1664
|
setRelatedY(newRelatedY);
|
|
471
1665
|
setRelatedX(newRelatedX);
|
|
472
1666
|
}
|
|
@@ -481,40 +1675,92 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
481
1675
|
}, React.createElement(TooltipContent, {
|
|
482
1676
|
task: task,
|
|
483
1677
|
fontSize: fontSize,
|
|
484
|
-
fontFamily: fontFamily
|
|
1678
|
+
fontFamily: fontFamily,
|
|
1679
|
+
effortDisplayUnit: effortDisplayUnit
|
|
485
1680
|
}));
|
|
486
1681
|
};
|
|
487
1682
|
var StandardTooltipContent = function StandardTooltipContent(_ref2) {
|
|
488
1683
|
var task = _ref2.task,
|
|
489
|
-
|
|
490
|
-
|
|
1684
|
+
fontSize = _ref2.fontSize,
|
|
1685
|
+
fontFamily = _ref2.fontFamily,
|
|
1686
|
+
_ref2$effortDisplayUn = _ref2.effortDisplayUnit,
|
|
1687
|
+
effortDisplayUnit = _ref2$effortDisplayUn === void 0 ? "MH" : _ref2$effortDisplayUn;
|
|
491
1688
|
var style = {
|
|
492
1689
|
fontSize: fontSize,
|
|
493
1690
|
fontFamily: fontFamily
|
|
494
1691
|
};
|
|
1692
|
+
var normalizedStatus = normalizeStatus(task.status);
|
|
1693
|
+
var normalizedProcess = normalizeProcess(task.process);
|
|
1694
|
+
var dateRange = formatDate(task.start) + " \u301C " + formatDate(task.end);
|
|
1695
|
+
var plannedRange = task.plannedStart || task.plannedEnd ? formatDate(task.plannedStart) + " \u301C " + formatDate(task.plannedEnd) : "";
|
|
1696
|
+
var plannedEffort = formatEffort(task.plannedEffort, effortDisplayUnit);
|
|
1697
|
+
var actualEffort = formatEffort(task.actualEffort, effortDisplayUnit);
|
|
495
1698
|
return React.createElement("div", {
|
|
496
1699
|
className: styles$2.tooltipDefaultContainer,
|
|
497
1700
|
style: style
|
|
1701
|
+
}, React.createElement("div", {
|
|
1702
|
+
className: styles$2.tooltipTitle
|
|
498
1703
|
}, React.createElement("b", {
|
|
1704
|
+
className: styles$2.tooltipName
|
|
1705
|
+
}, task.name), React.createElement("span", {
|
|
1706
|
+
className: styles$2.tooltipDate
|
|
1707
|
+
}, dateRange)), React.createElement("div", {
|
|
1708
|
+
className: styles$2.tooltipRow
|
|
1709
|
+
}, React.createElement("span", {
|
|
1710
|
+
className: styles$2.tooltipLabel
|
|
1711
|
+
}, "\u5DE5\u7A0B"), React.createElement("span", {
|
|
1712
|
+
className: styles$2.tooltipValue
|
|
1713
|
+
}, normalizedProcess)), React.createElement("div", {
|
|
1714
|
+
className: styles$2.tooltipRow
|
|
1715
|
+
}, React.createElement("span", {
|
|
1716
|
+
className: styles$2.tooltipLabel
|
|
1717
|
+
}, "\u62C5\u5F53"), React.createElement("span", {
|
|
1718
|
+
className: styles$2.tooltipValue
|
|
1719
|
+
}, task.assignee || "-")), plannedRange && React.createElement("div", {
|
|
1720
|
+
className: styles$2.tooltipRow
|
|
1721
|
+
}, React.createElement("span", {
|
|
1722
|
+
className: styles$2.tooltipLabel
|
|
1723
|
+
}, "\u4E88\u5B9A"), React.createElement("span", {
|
|
1724
|
+
className: styles$2.tooltipValue
|
|
1725
|
+
}, plannedRange)), plannedEffort && React.createElement("div", {
|
|
1726
|
+
className: styles$2.tooltipRow
|
|
1727
|
+
}, React.createElement("span", {
|
|
1728
|
+
className: styles$2.tooltipLabel
|
|
1729
|
+
}, "\u4E88\u5B9A\u5DE5\u6570"), React.createElement("span", {
|
|
1730
|
+
className: styles$2.tooltipValue
|
|
1731
|
+
}, plannedEffort)), actualEffort && React.createElement("div", {
|
|
1732
|
+
className: styles$2.tooltipRow
|
|
1733
|
+
}, React.createElement("span", {
|
|
1734
|
+
className: styles$2.tooltipLabel
|
|
1735
|
+
}, "\u5B9F\u7E3E\u5DE5\u6570"), React.createElement("span", {
|
|
1736
|
+
className: styles$2.tooltipValue
|
|
1737
|
+
}, actualEffort)), React.createElement("div", {
|
|
1738
|
+
className: styles$2.tooltipRow
|
|
1739
|
+
}, React.createElement("span", {
|
|
1740
|
+
className: styles$2.tooltipLabel
|
|
1741
|
+
}, "\u30B9\u30C6\u30FC\u30BF\u30B9"), React.createElement("span", {
|
|
1742
|
+
className: styles$2.tooltipValue
|
|
1743
|
+
}, React.createElement("span", {
|
|
1744
|
+
className: styles$2.tooltipStatus,
|
|
499
1745
|
style: {
|
|
500
|
-
|
|
1746
|
+
backgroundColor: getStatusColor(normalizedStatus)
|
|
501
1747
|
}
|
|
502
|
-
},
|
|
1748
|
+
}, getStatusBadgeText(normalizedStatus)), React.createElement("span", {
|
|
1749
|
+
className: styles$2.tooltipStatusText
|
|
1750
|
+
}, normalizedStatus))), !!task.progress && React.createElement("p", {
|
|
503
1751
|
className: styles$2.tooltipDefaultContainerParagraph
|
|
504
|
-
}, "
|
|
505
|
-
className: styles$2.tooltipDefaultContainerParagraph
|
|
506
|
-
}, !!task.progress && "Progress: " + task.progress + " %"));
|
|
1752
|
+
}, "\u9032\u6357\u7387: ", task.progress, " %"));
|
|
507
1753
|
};
|
|
508
1754
|
|
|
509
1755
|
var styles$3 = {"scroll":"_1eT-t"};
|
|
510
1756
|
|
|
511
1757
|
var VerticalScroll = function VerticalScroll(_ref) {
|
|
512
1758
|
var scroll = _ref.scroll,
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
1759
|
+
ganttHeight = _ref.ganttHeight,
|
|
1760
|
+
ganttFullHeight = _ref.ganttFullHeight,
|
|
1761
|
+
headerHeight = _ref.headerHeight,
|
|
1762
|
+
rtl = _ref.rtl,
|
|
1763
|
+
onScroll = _ref.onScroll;
|
|
518
1764
|
var scrollRef = useRef(null);
|
|
519
1765
|
useEffect(function () {
|
|
520
1766
|
if (scrollRef.current) {
|
|
@@ -523,9 +1769,11 @@ var VerticalScroll = function VerticalScroll(_ref) {
|
|
|
523
1769
|
}, [scroll]);
|
|
524
1770
|
return React.createElement("div", {
|
|
525
1771
|
style: {
|
|
1772
|
+
position: "absolute",
|
|
1773
|
+
top: headerHeight,
|
|
526
1774
|
height: ganttHeight,
|
|
527
|
-
|
|
528
|
-
|
|
1775
|
+
right: rtl ? undefined : 0,
|
|
1776
|
+
left: rtl ? 0 : undefined
|
|
529
1777
|
},
|
|
530
1778
|
className: styles$3.scroll,
|
|
531
1779
|
onScroll: onScroll,
|
|
@@ -538,68 +1786,168 @@ var VerticalScroll = function VerticalScroll(_ref) {
|
|
|
538
1786
|
}));
|
|
539
1787
|
};
|
|
540
1788
|
|
|
541
|
-
var
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
var
|
|
571
|
-
var
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
1789
|
+
var JP_HOLIDAYS = {
|
|
1790
|
+
2024: ["2024-01-01", "2024-01-08", "2024-02-11", "2024-02-12", "2024-02-23", "2024-03-20", "2024-04-29", "2024-05-03", "2024-05-04", "2024-05-05", "2024-05-06", "2024-07-15", "2024-08-11", "2024-08-12", "2024-09-16", "2024-09-22", "2024-09-23", "2024-10-14", "2024-11-03", "2024-11-04", "2024-11-23"],
|
|
1791
|
+
2025: ["2025-01-01", "2025-01-13", "2025-02-11", "2025-02-23", "2025-02-24", "2025-03-20", "2025-04-29", "2025-05-03", "2025-05-04", "2025-05-05", "2025-05-06", "2025-07-21", "2025-08-11", "2025-09-15", "2025-09-23", "2025-10-13", "2025-11-03", "2025-11-23", "2025-11-24"],
|
|
1792
|
+
2026: ["2026-01-01", "2026-01-12", "2026-02-11", "2026-02-23", "2026-03-20", "2026-04-29", "2026-05-03", "2026-05-04", "2026-05-05", "2026-05-06", "2026-07-20", "2026-08-11", "2026-09-21", "2026-09-22", "2026-10-12", "2026-11-03", "2026-11-23"]
|
|
1793
|
+
};
|
|
1794
|
+
var getJPHolidaySet = function getJPHolidaySet() {
|
|
1795
|
+
var holidays = new Set();
|
|
1796
|
+
Object.values(JP_HOLIDAYS).forEach(function (yearHolidays) {
|
|
1797
|
+
yearHolidays.forEach(function (holiday) {
|
|
1798
|
+
return holidays.add(holiday);
|
|
1799
|
+
});
|
|
1800
|
+
});
|
|
1801
|
+
return holidays;
|
|
1802
|
+
};
|
|
1803
|
+
var JP_HOLIDAYS_SET = getJPHolidaySet();
|
|
1804
|
+
|
|
1805
|
+
var emittedWarnings = new Set();
|
|
1806
|
+
var warnOnce = function warnOnce(key, message) {
|
|
1807
|
+
if (!emittedWarnings.has(key) && typeof console !== "undefined") {
|
|
1808
|
+
console.warn(message);
|
|
1809
|
+
emittedWarnings.add(key);
|
|
1810
|
+
}
|
|
1811
|
+
};
|
|
1812
|
+
var normalizeCalendarConfig = function normalizeCalendarConfig(config) {
|
|
1813
|
+
var _config$locale, _config$enableJPHolid, _config$highlightNonW;
|
|
1814
|
+
var rawLocale = ((_config$locale = config.locale) === null || _config$locale === void 0 ? void 0 : _config$locale.trim()) || "";
|
|
1815
|
+
var locale = rawLocale || "ja";
|
|
1816
|
+
var dateFormat = config.dateFormat || "MM/dd(EEE)";
|
|
1817
|
+
var enableJPHoliday = (_config$enableJPHolid = config.enableJPHoliday) != null ? _config$enableJPHolid : true;
|
|
1818
|
+
var highlightNonWorkingDays = (_config$highlightNonW = config.highlightNonWorkingDays) != null ? _config$highlightNonW : true;
|
|
1819
|
+
var workOnSaturday = config.workOnSaturday === true;
|
|
1820
|
+
var extraHolidays = new Set();
|
|
1821
|
+
if (config.extraHolidays) {
|
|
1822
|
+
config.extraHolidays.forEach(function (dateStr) {
|
|
1823
|
+
var normalized = normalizeISODate(dateStr);
|
|
1824
|
+
if (normalized) {
|
|
1825
|
+
extraHolidays.add(normalized);
|
|
1826
|
+
}
|
|
1827
|
+
});
|
|
1828
|
+
}
|
|
1829
|
+
var extraWorkingDays = new Set();
|
|
1830
|
+
if (config.extraWorkingDays) {
|
|
1831
|
+
config.extraWorkingDays.forEach(function (dateStr) {
|
|
1832
|
+
var normalized = normalizeISODate(dateStr);
|
|
1833
|
+
if (normalized) {
|
|
1834
|
+
extraWorkingDays.add(normalized);
|
|
1835
|
+
}
|
|
1836
|
+
});
|
|
1837
|
+
}
|
|
1838
|
+
if (!locale.toLowerCase().startsWith("ja")) {
|
|
1839
|
+
var localeKey = locale.trim().toLowerCase();
|
|
1840
|
+
warnOnce("gantt-calendar-locale-" + localeKey, "[Gantt Calendar] Non-Japanese locale \"" + locale + "\" specified. " + "Holiday definitions (including Japanese public holidays) are still based on the Japanese calendar.");
|
|
1841
|
+
}
|
|
1842
|
+
if (dateFormat !== "MM/dd(EEE)") {
|
|
1843
|
+
var dateFormatKey = dateFormat.trim().toLowerCase();
|
|
1844
|
+
warnOnce("gantt-calendar-dateFormat-" + dateFormatKey, "[Gantt Calendar] Custom dateFormat \"" + dateFormat + "\" specified. " + "Note: dateFormat is currently a legacy field and does not affect date rendering. " + "The format \"MM/dd(EEE)\" is used internally regardless of this setting.");
|
|
1845
|
+
}
|
|
1846
|
+
return {
|
|
577
1847
|
locale: locale,
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
1848
|
+
dateFormat: dateFormat,
|
|
1849
|
+
enableJPHoliday: enableJPHoliday,
|
|
1850
|
+
highlightNonWorkingDays: highlightNonWorkingDays,
|
|
1851
|
+
workOnSaturday: workOnSaturday,
|
|
1852
|
+
extraHolidays: extraHolidays,
|
|
1853
|
+
extraWorkingDays: extraWorkingDays
|
|
581
1854
|
};
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
1855
|
+
};
|
|
1856
|
+
var normalizeISODate = function normalizeISODate(dateStr) {
|
|
1857
|
+
try {
|
|
1858
|
+
var trimmed = dateStr.trim();
|
|
1859
|
+
if (!/^\d{4}-\d{1,2}-\d{1,2}$/.test(trimmed)) {
|
|
1860
|
+
return null;
|
|
1861
|
+
}
|
|
1862
|
+
var parts = trimmed.split("-");
|
|
1863
|
+
if (parts.length !== 3) return null;
|
|
1864
|
+
var year = Number(parts[0]);
|
|
1865
|
+
var month = Number(parts[1]);
|
|
1866
|
+
var day = Number(parts[2]);
|
|
1867
|
+
if (isNaN(year) || isNaN(month) || isNaN(day) || month < 1 || month > 12 || day < 1 || day > 31) {
|
|
1868
|
+
return null;
|
|
1869
|
+
}
|
|
1870
|
+
var date = new Date(year, month - 1, day);
|
|
1871
|
+
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
1872
|
+
return null;
|
|
1873
|
+
}
|
|
1874
|
+
var paddedMonth = String(month).padStart(2, "0");
|
|
1875
|
+
var paddedDay = String(day).padStart(2, "0");
|
|
1876
|
+
return year + "-" + paddedMonth + "-" + paddedDay;
|
|
1877
|
+
} catch (e) {
|
|
1878
|
+
if (typeof console !== "undefined") {
|
|
1879
|
+
console.warn("[Gantt Calendar] Invalid date string: " + dateStr);
|
|
1880
|
+
}
|
|
1881
|
+
return null;
|
|
1882
|
+
}
|
|
1883
|
+
};
|
|
1884
|
+
var toISODateString = function toISODateString(date) {
|
|
1885
|
+
var year = date.getFullYear();
|
|
1886
|
+
var month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1887
|
+
var day = String(date.getDate()).padStart(2, "0");
|
|
1888
|
+
return year + "-" + month + "-" + day;
|
|
1889
|
+
};
|
|
1890
|
+
var isWorkingDay = function isWorkingDay(date, config) {
|
|
1891
|
+
var dateStr = toISODateString(date);
|
|
1892
|
+
if (config.extraWorkingDays.has(dateStr)) {
|
|
1893
|
+
return true;
|
|
1894
|
+
}
|
|
1895
|
+
if (config.extraHolidays.has(dateStr)) {
|
|
1896
|
+
return false;
|
|
1897
|
+
}
|
|
1898
|
+
var dayOfWeek = date.getDay();
|
|
1899
|
+
if (dayOfWeek === 0) {
|
|
1900
|
+
return false;
|
|
1901
|
+
}
|
|
1902
|
+
if (dayOfWeek === 6 && !config.workOnSaturday) {
|
|
1903
|
+
return false;
|
|
1904
|
+
}
|
|
1905
|
+
if (config.enableJPHoliday) {
|
|
1906
|
+
if (JP_HOLIDAYS_SET.has(dateStr)) {
|
|
1907
|
+
return false;
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1910
|
+
return true;
|
|
1911
|
+
};
|
|
1912
|
+
var formatJapaneseDate = function formatJapaneseDate(date) {
|
|
1913
|
+
try {
|
|
1914
|
+
var formatter = new Intl.DateTimeFormat("ja", {
|
|
1915
|
+
month: "2-digit",
|
|
1916
|
+
day: "2-digit",
|
|
1917
|
+
weekday: "short"
|
|
1918
|
+
});
|
|
1919
|
+
var parts = formatter.formatToParts(date);
|
|
1920
|
+
var month = "";
|
|
1921
|
+
var day = "";
|
|
1922
|
+
var weekday = "";
|
|
1923
|
+
parts.forEach(function (part) {
|
|
1924
|
+
if (part.type === "month") {
|
|
1925
|
+
month = part.value;
|
|
1926
|
+
} else if (part.type === "day") {
|
|
1927
|
+
day = part.value;
|
|
1928
|
+
} else if (part.type === "weekday") {
|
|
1929
|
+
weekday = part.value;
|
|
1930
|
+
}
|
|
1931
|
+
});
|
|
1932
|
+
return month + "/" + day + "(" + weekday + ")";
|
|
1933
|
+
} catch (e) {
|
|
1934
|
+
var _month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1935
|
+
var _day = String(date.getDate()).padStart(2, "0");
|
|
1936
|
+
return _month + "/" + _day;
|
|
1937
|
+
}
|
|
591
1938
|
};
|
|
592
1939
|
|
|
593
1940
|
var styles$4 = {"gridRow":"_2dZTy","gridRowLine":"_3rUKi","gridTick":"_RuwuK"};
|
|
594
1941
|
|
|
595
1942
|
var GridBody = function GridBody(_ref) {
|
|
596
1943
|
var tasks = _ref.tasks,
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
1944
|
+
dates = _ref.dates,
|
|
1945
|
+
rowHeight = _ref.rowHeight,
|
|
1946
|
+
svgWidth = _ref.svgWidth,
|
|
1947
|
+
columnWidth = _ref.columnWidth,
|
|
1948
|
+
todayColor = _ref.todayColor,
|
|
1949
|
+
rtl = _ref.rtl,
|
|
1950
|
+
calendarConfig = _ref.calendarConfig;
|
|
603
1951
|
var y = 0;
|
|
604
1952
|
var gridRows = [];
|
|
605
1953
|
var rowLines = [React.createElement("line", {
|
|
@@ -610,7 +1958,6 @@ var GridBody = function GridBody(_ref) {
|
|
|
610
1958
|
y2: 0,
|
|
611
1959
|
className: styles$4.gridRowLine
|
|
612
1960
|
})];
|
|
613
|
-
|
|
614
1961
|
for (var _iterator = _createForOfIteratorHelperLoose(tasks), _step; !(_step = _iterator()).done;) {
|
|
615
1962
|
var task = _step.value;
|
|
616
1963
|
gridRows.push(React.createElement("rect", {
|
|
@@ -631,12 +1978,11 @@ var GridBody = function GridBody(_ref) {
|
|
|
631
1978
|
}));
|
|
632
1979
|
y += rowHeight;
|
|
633
1980
|
}
|
|
634
|
-
|
|
635
1981
|
var now = new Date();
|
|
636
1982
|
var tickX = 0;
|
|
637
1983
|
var ticks = [];
|
|
1984
|
+
var nonWorkingDays = [];
|
|
638
1985
|
var today = React.createElement("rect", null);
|
|
639
|
-
|
|
640
1986
|
for (var i = 0; i < dates.length; i++) {
|
|
641
1987
|
var date = dates[i];
|
|
642
1988
|
ticks.push(React.createElement("line", {
|
|
@@ -647,7 +1993,16 @@ var GridBody = function GridBody(_ref) {
|
|
|
647
1993
|
y2: y,
|
|
648
1994
|
className: styles$4.gridTick
|
|
649
1995
|
}));
|
|
650
|
-
|
|
1996
|
+
if (calendarConfig && calendarConfig.highlightNonWorkingDays && !isWorkingDay(date, calendarConfig)) {
|
|
1997
|
+
nonWorkingDays.push(React.createElement("rect", {
|
|
1998
|
+
key: "non-working-" + date.getTime(),
|
|
1999
|
+
x: tickX,
|
|
2000
|
+
y: 0,
|
|
2001
|
+
width: columnWidth,
|
|
2002
|
+
height: y,
|
|
2003
|
+
fill: "rgba(0, 0, 0, 0.05)"
|
|
2004
|
+
}));
|
|
2005
|
+
}
|
|
651
2006
|
if (i + 1 !== dates.length && date.getTime() < now.getTime() && dates[i + 1].getTime() >= now.getTime() || i !== 0 && i + 1 === dates.length && date.getTime() < now.getTime() && addToDate(date, date.getTime() - dates[i - 1].getTime(), "millisecond").getTime() >= now.getTime()) {
|
|
652
2007
|
today = React.createElement("rect", {
|
|
653
2008
|
x: tickX,
|
|
@@ -657,7 +2012,6 @@ var GridBody = function GridBody(_ref) {
|
|
|
657
2012
|
fill: todayColor
|
|
658
2013
|
});
|
|
659
2014
|
}
|
|
660
|
-
|
|
661
2015
|
if (rtl && i + 1 !== dates.length && date.getTime() >= now.getTime() && dates[i + 1].getTime() < now.getTime()) {
|
|
662
2016
|
today = React.createElement("rect", {
|
|
663
2017
|
x: tickX + columnWidth,
|
|
@@ -667,15 +2021,15 @@ var GridBody = function GridBody(_ref) {
|
|
|
667
2021
|
fill: todayColor
|
|
668
2022
|
});
|
|
669
2023
|
}
|
|
670
|
-
|
|
671
2024
|
tickX += columnWidth;
|
|
672
2025
|
}
|
|
673
|
-
|
|
674
2026
|
return React.createElement("g", {
|
|
675
2027
|
className: "gridBody"
|
|
676
2028
|
}, React.createElement("g", {
|
|
677
2029
|
className: "rows"
|
|
678
2030
|
}, gridRows), React.createElement("g", {
|
|
2031
|
+
className: "nonWorkingDays"
|
|
2032
|
+
}, nonWorkingDays), React.createElement("g", {
|
|
679
2033
|
className: "rowLines"
|
|
680
2034
|
}, rowLines), React.createElement("g", {
|
|
681
2035
|
className: "ticks"
|
|
@@ -694,11 +2048,11 @@ var styles$5 = {"calendarBottomText":"_9w8d5","calendarTopTick":"_1rLuZ","calend
|
|
|
694
2048
|
|
|
695
2049
|
var TopPartOfCalendar = function TopPartOfCalendar(_ref) {
|
|
696
2050
|
var value = _ref.value,
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
2051
|
+
x1Line = _ref.x1Line,
|
|
2052
|
+
y1Line = _ref.y1Line,
|
|
2053
|
+
y2Line = _ref.y2Line,
|
|
2054
|
+
xText = _ref.xText,
|
|
2055
|
+
yText = _ref.yText;
|
|
702
2056
|
return React.createElement("g", {
|
|
703
2057
|
className: "calendarTop"
|
|
704
2058
|
}, React.createElement("line", {
|
|
@@ -718,19 +2072,19 @@ var TopPartOfCalendar = function TopPartOfCalendar(_ref) {
|
|
|
718
2072
|
|
|
719
2073
|
var Calendar = function Calendar(_ref) {
|
|
720
2074
|
var dateSetup = _ref.dateSetup,
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
2075
|
+
locale = _ref.locale,
|
|
2076
|
+
viewMode = _ref.viewMode,
|
|
2077
|
+
rtl = _ref.rtl,
|
|
2078
|
+
headerHeight = _ref.headerHeight,
|
|
2079
|
+
columnWidth = _ref.columnWidth,
|
|
2080
|
+
fontFamily = _ref.fontFamily,
|
|
2081
|
+
fontSize = _ref.fontSize,
|
|
2082
|
+
calendarConfig = _ref.calendarConfig;
|
|
2083
|
+
var effectiveLocale = (calendarConfig === null || calendarConfig === void 0 ? void 0 : calendarConfig.locale) || locale;
|
|
729
2084
|
var getCalendarValuesForYear = function getCalendarValuesForYear() {
|
|
730
2085
|
var topValues = [];
|
|
731
2086
|
var bottomValues = [];
|
|
732
2087
|
var topDefaultHeight = headerHeight * 0.5;
|
|
733
|
-
|
|
734
2088
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
735
2089
|
var date = dateSetup.dates[i];
|
|
736
2090
|
var bottomValue = date.getFullYear();
|
|
@@ -740,17 +2094,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
740
2094
|
x: columnWidth * i + columnWidth * 0.5,
|
|
741
2095
|
className: styles$5.calendarBottomText
|
|
742
2096
|
}, bottomValue));
|
|
743
|
-
|
|
744
2097
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
745
2098
|
var topValue = date.getFullYear().toString();
|
|
746
2099
|
var xText = void 0;
|
|
747
|
-
|
|
748
2100
|
if (rtl) {
|
|
749
2101
|
xText = (6 + i + date.getFullYear() + 1) * columnWidth;
|
|
750
2102
|
} else {
|
|
751
2103
|
xText = (6 + i - date.getFullYear()) * columnWidth;
|
|
752
2104
|
}
|
|
753
|
-
|
|
754
2105
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
755
2106
|
key: topValue,
|
|
756
2107
|
value: topValue,
|
|
@@ -762,15 +2113,12 @@ var Calendar = function Calendar(_ref) {
|
|
|
762
2113
|
}));
|
|
763
2114
|
}
|
|
764
2115
|
}
|
|
765
|
-
|
|
766
2116
|
return [topValues, bottomValues];
|
|
767
2117
|
};
|
|
768
|
-
|
|
769
2118
|
var getCalendarValuesForQuarterYear = function getCalendarValuesForQuarterYear() {
|
|
770
2119
|
var topValues = [];
|
|
771
2120
|
var bottomValues = [];
|
|
772
2121
|
var topDefaultHeight = headerHeight * 0.5;
|
|
773
|
-
|
|
774
2122
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
775
2123
|
var date = dateSetup.dates[i];
|
|
776
2124
|
var quarter = "Q" + Math.floor((date.getMonth() + 3) / 3);
|
|
@@ -780,17 +2128,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
780
2128
|
x: columnWidth * i + columnWidth * 0.5,
|
|
781
2129
|
className: styles$5.calendarBottomText
|
|
782
2130
|
}, quarter));
|
|
783
|
-
|
|
784
2131
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
785
2132
|
var topValue = date.getFullYear().toString();
|
|
786
2133
|
var xText = void 0;
|
|
787
|
-
|
|
788
2134
|
if (rtl) {
|
|
789
2135
|
xText = (6 + i + date.getMonth() + 1) * columnWidth;
|
|
790
2136
|
} else {
|
|
791
2137
|
xText = (6 + i - date.getMonth()) * columnWidth;
|
|
792
2138
|
}
|
|
793
|
-
|
|
794
2139
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
795
2140
|
key: topValue,
|
|
796
2141
|
value: topValue,
|
|
@@ -802,35 +2147,29 @@ var Calendar = function Calendar(_ref) {
|
|
|
802
2147
|
}));
|
|
803
2148
|
}
|
|
804
2149
|
}
|
|
805
|
-
|
|
806
2150
|
return [topValues, bottomValues];
|
|
807
2151
|
};
|
|
808
|
-
|
|
809
2152
|
var getCalendarValuesForMonth = function getCalendarValuesForMonth() {
|
|
810
2153
|
var topValues = [];
|
|
811
2154
|
var bottomValues = [];
|
|
812
2155
|
var topDefaultHeight = headerHeight * 0.5;
|
|
813
|
-
|
|
814
2156
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
815
2157
|
var date = dateSetup.dates[i];
|
|
816
|
-
var bottomValue = getLocaleMonth(date,
|
|
2158
|
+
var bottomValue = getLocaleMonth(date, effectiveLocale);
|
|
817
2159
|
bottomValues.push(React.createElement("text", {
|
|
818
2160
|
key: bottomValue + date.getFullYear(),
|
|
819
2161
|
y: headerHeight * 0.8,
|
|
820
2162
|
x: columnWidth * i + columnWidth * 0.5,
|
|
821
2163
|
className: styles$5.calendarBottomText
|
|
822
2164
|
}, bottomValue));
|
|
823
|
-
|
|
824
2165
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
825
2166
|
var topValue = date.getFullYear().toString();
|
|
826
2167
|
var xText = void 0;
|
|
827
|
-
|
|
828
2168
|
if (rtl) {
|
|
829
2169
|
xText = (6 + i + date.getMonth() + 1) * columnWidth;
|
|
830
2170
|
} else {
|
|
831
2171
|
xText = (6 + i - date.getMonth()) * columnWidth;
|
|
832
2172
|
}
|
|
833
|
-
|
|
834
2173
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
835
2174
|
key: topValue,
|
|
836
2175
|
value: topValue,
|
|
@@ -842,25 +2181,20 @@ var Calendar = function Calendar(_ref) {
|
|
|
842
2181
|
}));
|
|
843
2182
|
}
|
|
844
2183
|
}
|
|
845
|
-
|
|
846
2184
|
return [topValues, bottomValues];
|
|
847
2185
|
};
|
|
848
|
-
|
|
849
2186
|
var getCalendarValuesForWeek = function getCalendarValuesForWeek() {
|
|
850
2187
|
var topValues = [];
|
|
851
2188
|
var bottomValues = [];
|
|
852
2189
|
var weeksCount = 1;
|
|
853
2190
|
var topDefaultHeight = headerHeight * 0.5;
|
|
854
2191
|
var dates = dateSetup.dates;
|
|
855
|
-
|
|
856
2192
|
for (var i = dates.length - 1; i >= 0; i--) {
|
|
857
2193
|
var date = dates[i];
|
|
858
2194
|
var topValue = "";
|
|
859
|
-
|
|
860
2195
|
if (i === 0 || date.getMonth() !== dates[i - 1].getMonth()) {
|
|
861
|
-
topValue = getLocaleMonth(date,
|
|
2196
|
+
topValue = getLocaleMonth(date, effectiveLocale) + ", " + date.getFullYear();
|
|
862
2197
|
}
|
|
863
|
-
|
|
864
2198
|
var bottomValue = "W" + getWeekNumberISO8601(date);
|
|
865
2199
|
bottomValues.push(React.createElement("text", {
|
|
866
2200
|
key: date.getTime(),
|
|
@@ -868,7 +2202,6 @@ var Calendar = function Calendar(_ref) {
|
|
|
868
2202
|
x: columnWidth * (i + +rtl),
|
|
869
2203
|
className: styles$5.calendarBottomText
|
|
870
2204
|
}, bottomValue));
|
|
871
|
-
|
|
872
2205
|
if (topValue) {
|
|
873
2206
|
if (i !== dates.length - 1) {
|
|
874
2207
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
@@ -881,34 +2214,29 @@ var Calendar = function Calendar(_ref) {
|
|
|
881
2214
|
yText: topDefaultHeight * 0.9
|
|
882
2215
|
}));
|
|
883
2216
|
}
|
|
884
|
-
|
|
885
2217
|
weeksCount = 0;
|
|
886
2218
|
}
|
|
887
|
-
|
|
888
2219
|
weeksCount++;
|
|
889
2220
|
}
|
|
890
|
-
|
|
891
2221
|
return [topValues, bottomValues];
|
|
892
2222
|
};
|
|
893
|
-
|
|
894
2223
|
var getCalendarValuesForDay = function getCalendarValuesForDay() {
|
|
895
2224
|
var topValues = [];
|
|
896
2225
|
var bottomValues = [];
|
|
897
2226
|
var topDefaultHeight = headerHeight * 0.5;
|
|
898
2227
|
var dates = dateSetup.dates;
|
|
899
|
-
|
|
900
2228
|
for (var i = 0; i < dates.length; i++) {
|
|
901
2229
|
var date = dates[i];
|
|
902
|
-
var
|
|
2230
|
+
var useJapaneseFormat = !!calendarConfig && typeof calendarConfig.locale === "string" && calendarConfig.locale.toLowerCase().startsWith("ja");
|
|
2231
|
+
var bottomValue = useJapaneseFormat ? formatJapaneseDate(date) : getLocalDayOfWeek(date, effectiveLocale, "short") + ", " + date.getDate().toString();
|
|
903
2232
|
bottomValues.push(React.createElement("text", {
|
|
904
2233
|
key: date.getTime(),
|
|
905
2234
|
y: headerHeight * 0.8,
|
|
906
2235
|
x: columnWidth * i + columnWidth * 0.5,
|
|
907
2236
|
className: styles$5.calendarBottomText
|
|
908
2237
|
}, bottomValue));
|
|
909
|
-
|
|
910
2238
|
if (i + 1 !== dates.length && date.getMonth() !== dates[i + 1].getMonth()) {
|
|
911
|
-
var topValue = getLocaleMonth(date,
|
|
2239
|
+
var topValue = getLocaleMonth(date, effectiveLocale);
|
|
912
2240
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
913
2241
|
key: topValue + date.getFullYear(),
|
|
914
2242
|
value: topValue,
|
|
@@ -920,20 +2248,17 @@ var Calendar = function Calendar(_ref) {
|
|
|
920
2248
|
}));
|
|
921
2249
|
}
|
|
922
2250
|
}
|
|
923
|
-
|
|
924
2251
|
return [topValues, bottomValues];
|
|
925
2252
|
};
|
|
926
|
-
|
|
927
2253
|
var getCalendarValuesForPartOfDay = function getCalendarValuesForPartOfDay() {
|
|
928
2254
|
var topValues = [];
|
|
929
2255
|
var bottomValues = [];
|
|
930
2256
|
var ticks = viewMode === ViewMode.HalfDay ? 2 : 4;
|
|
931
2257
|
var topDefaultHeight = headerHeight * 0.5;
|
|
932
2258
|
var dates = dateSetup.dates;
|
|
933
|
-
|
|
934
2259
|
for (var i = 0; i < dates.length; i++) {
|
|
935
2260
|
var date = dates[i];
|
|
936
|
-
var bottomValue = getCachedDateTimeFormat(
|
|
2261
|
+
var bottomValue = getCachedDateTimeFormat(effectiveLocale, {
|
|
937
2262
|
hour: "numeric"
|
|
938
2263
|
}).format(date);
|
|
939
2264
|
bottomValues.push(React.createElement("text", {
|
|
@@ -943,9 +2268,8 @@ var Calendar = function Calendar(_ref) {
|
|
|
943
2268
|
className: styles$5.calendarBottomText,
|
|
944
2269
|
fontFamily: fontFamily
|
|
945
2270
|
}, bottomValue));
|
|
946
|
-
|
|
947
2271
|
if (i === 0 || date.getDate() !== dates[i - 1].getDate()) {
|
|
948
|
-
var topValue = getLocalDayOfWeek(date,
|
|
2272
|
+
var topValue = getLocalDayOfWeek(date, effectiveLocale, "short") + ", " + date.getDate() + " " + getLocaleMonth(date, effectiveLocale);
|
|
949
2273
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
950
2274
|
key: topValue + date.getFullYear(),
|
|
951
2275
|
value: topValue,
|
|
@@ -957,19 +2281,16 @@ var Calendar = function Calendar(_ref) {
|
|
|
957
2281
|
}));
|
|
958
2282
|
}
|
|
959
2283
|
}
|
|
960
|
-
|
|
961
2284
|
return [topValues, bottomValues];
|
|
962
2285
|
};
|
|
963
|
-
|
|
964
2286
|
var getCalendarValuesForHour = function getCalendarValuesForHour() {
|
|
965
2287
|
var topValues = [];
|
|
966
2288
|
var bottomValues = [];
|
|
967
2289
|
var topDefaultHeight = headerHeight * 0.5;
|
|
968
2290
|
var dates = dateSetup.dates;
|
|
969
|
-
|
|
970
2291
|
for (var i = 0; i < dates.length; i++) {
|
|
971
2292
|
var date = dates[i];
|
|
972
|
-
var bottomValue = getCachedDateTimeFormat(
|
|
2293
|
+
var bottomValue = getCachedDateTimeFormat(effectiveLocale, {
|
|
973
2294
|
hour: "numeric"
|
|
974
2295
|
}).format(date);
|
|
975
2296
|
bottomValues.push(React.createElement("text", {
|
|
@@ -979,10 +2300,9 @@ var Calendar = function Calendar(_ref) {
|
|
|
979
2300
|
className: styles$5.calendarBottomText,
|
|
980
2301
|
fontFamily: fontFamily
|
|
981
2302
|
}, bottomValue));
|
|
982
|
-
|
|
983
2303
|
if (i !== 0 && date.getDate() !== dates[i - 1].getDate()) {
|
|
984
2304
|
var displayDate = dates[i - 1];
|
|
985
|
-
var topValue = getLocalDayOfWeek(displayDate,
|
|
2305
|
+
var topValue = getLocalDayOfWeek(displayDate, effectiveLocale, "long") + ", " + displayDate.getDate() + " " + getLocaleMonth(displayDate, effectiveLocale);
|
|
986
2306
|
var topPosition = (date.getHours() - 24) / 2;
|
|
987
2307
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
988
2308
|
key: topValue + displayDate.getFullYear(),
|
|
@@ -995,64 +2315,47 @@ var Calendar = function Calendar(_ref) {
|
|
|
995
2315
|
}));
|
|
996
2316
|
}
|
|
997
2317
|
}
|
|
998
|
-
|
|
999
2318
|
return [topValues, bottomValues];
|
|
1000
2319
|
};
|
|
1001
|
-
|
|
1002
2320
|
var topValues = [];
|
|
1003
2321
|
var bottomValues = [];
|
|
1004
|
-
|
|
1005
2322
|
switch (dateSetup.viewMode) {
|
|
1006
2323
|
case ViewMode.Year:
|
|
1007
2324
|
var _getCalendarValuesFor = getCalendarValuesForYear();
|
|
1008
|
-
|
|
1009
2325
|
topValues = _getCalendarValuesFor[0];
|
|
1010
2326
|
bottomValues = _getCalendarValuesFor[1];
|
|
1011
2327
|
break;
|
|
1012
|
-
|
|
1013
2328
|
case ViewMode.QuarterYear:
|
|
1014
2329
|
var _getCalendarValuesFor2 = getCalendarValuesForQuarterYear();
|
|
1015
|
-
|
|
1016
2330
|
topValues = _getCalendarValuesFor2[0];
|
|
1017
2331
|
bottomValues = _getCalendarValuesFor2[1];
|
|
1018
2332
|
break;
|
|
1019
|
-
|
|
1020
2333
|
case ViewMode.Month:
|
|
1021
2334
|
var _getCalendarValuesFor3 = getCalendarValuesForMonth();
|
|
1022
|
-
|
|
1023
2335
|
topValues = _getCalendarValuesFor3[0];
|
|
1024
2336
|
bottomValues = _getCalendarValuesFor3[1];
|
|
1025
2337
|
break;
|
|
1026
|
-
|
|
1027
2338
|
case ViewMode.Week:
|
|
1028
2339
|
var _getCalendarValuesFor4 = getCalendarValuesForWeek();
|
|
1029
|
-
|
|
1030
2340
|
topValues = _getCalendarValuesFor4[0];
|
|
1031
2341
|
bottomValues = _getCalendarValuesFor4[1];
|
|
1032
2342
|
break;
|
|
1033
|
-
|
|
1034
2343
|
case ViewMode.Day:
|
|
1035
2344
|
var _getCalendarValuesFor5 = getCalendarValuesForDay();
|
|
1036
|
-
|
|
1037
2345
|
topValues = _getCalendarValuesFor5[0];
|
|
1038
2346
|
bottomValues = _getCalendarValuesFor5[1];
|
|
1039
2347
|
break;
|
|
1040
|
-
|
|
1041
2348
|
case ViewMode.QuarterDay:
|
|
1042
2349
|
case ViewMode.HalfDay:
|
|
1043
2350
|
var _getCalendarValuesFor6 = getCalendarValuesForPartOfDay();
|
|
1044
|
-
|
|
1045
2351
|
topValues = _getCalendarValuesFor6[0];
|
|
1046
2352
|
bottomValues = _getCalendarValuesFor6[1];
|
|
1047
2353
|
break;
|
|
1048
|
-
|
|
1049
2354
|
case ViewMode.Hour:
|
|
1050
2355
|
var _getCalendarValuesFor7 = getCalendarValuesForHour();
|
|
1051
|
-
|
|
1052
2356
|
topValues = _getCalendarValuesFor7[0];
|
|
1053
2357
|
bottomValues = _getCalendarValuesFor7[1];
|
|
1054
2358
|
}
|
|
1055
|
-
|
|
1056
2359
|
return React.createElement("g", {
|
|
1057
2360
|
className: "calendar",
|
|
1058
2361
|
fontSize: fontSize,
|
|
@@ -1066,47 +2369,24 @@ var Calendar = function Calendar(_ref) {
|
|
|
1066
2369
|
}), bottomValues, " ", topValues);
|
|
1067
2370
|
};
|
|
1068
2371
|
|
|
1069
|
-
// A type of promise-like that resolves synchronously and supports only one observer
|
|
1070
|
-
|
|
1071
|
-
const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator";
|
|
1072
|
-
|
|
1073
|
-
const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))) : "@@asyncIterator";
|
|
1074
|
-
|
|
1075
|
-
// Asynchronously call a function and send errors to recovery continuation
|
|
1076
|
-
function _catch(body, recover) {
|
|
1077
|
-
try {
|
|
1078
|
-
var result = body();
|
|
1079
|
-
} catch(e) {
|
|
1080
|
-
return recover(e);
|
|
1081
|
-
}
|
|
1082
|
-
if (result && result.then) {
|
|
1083
|
-
return result.then(void 0, recover);
|
|
1084
|
-
}
|
|
1085
|
-
return result;
|
|
1086
|
-
}
|
|
1087
|
-
|
|
1088
2372
|
var Arrow = function Arrow(_ref) {
|
|
1089
2373
|
var taskFrom = _ref.taskFrom,
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
2374
|
+
taskTo = _ref.taskTo,
|
|
2375
|
+
rowHeight = _ref.rowHeight,
|
|
2376
|
+
taskHeight = _ref.taskHeight,
|
|
2377
|
+
arrowIndent = _ref.arrowIndent,
|
|
2378
|
+
rtl = _ref.rtl;
|
|
1095
2379
|
var path;
|
|
1096
2380
|
var trianglePoints;
|
|
1097
|
-
|
|
1098
2381
|
if (rtl) {
|
|
1099
2382
|
var _drownPathAndTriangle = drownPathAndTriangleRTL(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent);
|
|
1100
|
-
|
|
1101
2383
|
path = _drownPathAndTriangle[0];
|
|
1102
2384
|
trianglePoints = _drownPathAndTriangle[1];
|
|
1103
2385
|
} else {
|
|
1104
2386
|
var _drownPathAndTriangle2 = drownPathAndTriangle(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent);
|
|
1105
|
-
|
|
1106
2387
|
path = _drownPathAndTriangle2[0];
|
|
1107
2388
|
trianglePoints = _drownPathAndTriangle2[1];
|
|
1108
2389
|
}
|
|
1109
|
-
|
|
1110
2390
|
return React.createElement("g", {
|
|
1111
2391
|
className: "arrow"
|
|
1112
2392
|
}, React.createElement("path", {
|
|
@@ -1117,7 +2397,6 @@ var Arrow = function Arrow(_ref) {
|
|
|
1117
2397
|
points: trianglePoints
|
|
1118
2398
|
}));
|
|
1119
2399
|
};
|
|
1120
|
-
|
|
1121
2400
|
var drownPathAndTriangle = function drownPathAndTriangle(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent) {
|
|
1122
2401
|
var indexCompare = taskFrom.index > taskTo.index ? -1 : 1;
|
|
1123
2402
|
var taskToEndPosition = taskTo.y + taskHeight / 2;
|
|
@@ -1128,7 +2407,6 @@ var drownPathAndTriangle = function drownPathAndTriangle(taskFrom, taskTo, rowHe
|
|
|
1128
2407
|
var trianglePoints = taskTo.x1 + "," + taskToEndPosition + " \n " + (taskTo.x1 - 5) + "," + (taskToEndPosition - 5) + " \n " + (taskTo.x1 - 5) + "," + (taskToEndPosition + 5);
|
|
1129
2408
|
return [path, trianglePoints];
|
|
1130
2409
|
};
|
|
1131
|
-
|
|
1132
2410
|
var drownPathAndTriangleRTL = function drownPathAndTriangleRTL(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent) {
|
|
1133
2411
|
var indexCompare = taskFrom.index > taskTo.index ? -1 : 1;
|
|
1134
2412
|
var taskToEndPosition = taskTo.y + taskHeight / 2;
|
|
@@ -1146,47 +2424,37 @@ var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, ro
|
|
|
1146
2424
|
});
|
|
1147
2425
|
barTasks = barTasks.map(function (task) {
|
|
1148
2426
|
var dependencies = task.dependencies || [];
|
|
1149
|
-
|
|
1150
2427
|
var _loop = function _loop(j) {
|
|
1151
2428
|
var dependence = barTasks.findIndex(function (value) {
|
|
1152
2429
|
return value.id === dependencies[j];
|
|
1153
2430
|
});
|
|
1154
2431
|
if (dependence !== -1) barTasks[dependence].barChildren.push(task);
|
|
1155
2432
|
};
|
|
1156
|
-
|
|
1157
2433
|
for (var j = 0; j < dependencies.length; j++) {
|
|
1158
2434
|
_loop(j);
|
|
1159
2435
|
}
|
|
1160
|
-
|
|
1161
2436
|
return task;
|
|
1162
2437
|
});
|
|
1163
2438
|
return barTasks;
|
|
1164
2439
|
};
|
|
1165
|
-
|
|
1166
2440
|
var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
1167
2441
|
var barTask;
|
|
1168
|
-
|
|
1169
2442
|
switch (task.type) {
|
|
1170
2443
|
case "milestone":
|
|
1171
2444
|
barTask = convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor);
|
|
1172
2445
|
break;
|
|
1173
|
-
|
|
1174
2446
|
case "project":
|
|
1175
2447
|
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor);
|
|
1176
2448
|
break;
|
|
1177
|
-
|
|
1178
2449
|
default:
|
|
1179
2450
|
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor);
|
|
1180
2451
|
break;
|
|
1181
2452
|
}
|
|
1182
|
-
|
|
1183
2453
|
return barTask;
|
|
1184
2454
|
};
|
|
1185
|
-
|
|
1186
2455
|
var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor) {
|
|
1187
2456
|
var x1;
|
|
1188
2457
|
var x2;
|
|
1189
|
-
|
|
1190
2458
|
if (rtl) {
|
|
1191
2459
|
x2 = taskXCoordinateRTL(task.start, dates, columnWidth);
|
|
1192
2460
|
x1 = taskXCoordinateRTL(task.end, dates, columnWidth);
|
|
@@ -1194,28 +2462,22 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
1194
2462
|
x1 = taskXCoordinate(task.start, dates, columnWidth);
|
|
1195
2463
|
x2 = taskXCoordinate(task.end, dates, columnWidth);
|
|
1196
2464
|
}
|
|
1197
|
-
|
|
1198
2465
|
var typeInternal = task.type;
|
|
1199
|
-
|
|
1200
2466
|
if (typeInternal === "task" && x2 - x1 < handleWidth * 2) {
|
|
1201
2467
|
typeInternal = "smalltask";
|
|
1202
2468
|
x2 = x1 + handleWidth * 2;
|
|
1203
2469
|
}
|
|
1204
|
-
|
|
1205
2470
|
var _progressWithByParams = progressWithByParams(x1, x2, task.progress, rtl),
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
2471
|
+
progressWidth = _progressWithByParams[0],
|
|
2472
|
+
progressX = _progressWithByParams[1];
|
|
1209
2473
|
var y = taskYCoordinate(index, rowHeight, taskHeight);
|
|
1210
2474
|
var hideChildren = task.type === "project" ? task.hideChildren : undefined;
|
|
1211
|
-
|
|
1212
2475
|
var styles = _extends({
|
|
1213
2476
|
backgroundColor: barBackgroundColor,
|
|
1214
2477
|
backgroundSelectedColor: barBackgroundSelectedColor,
|
|
1215
2478
|
progressColor: barProgressColor,
|
|
1216
2479
|
progressSelectedColor: barProgressSelectedColor
|
|
1217
2480
|
}, task.styles);
|
|
1218
|
-
|
|
1219
2481
|
return _extends({}, task, {
|
|
1220
2482
|
typeInternal: typeInternal,
|
|
1221
2483
|
x1: x1,
|
|
@@ -1232,21 +2494,18 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
1232
2494
|
styles: styles
|
|
1233
2495
|
});
|
|
1234
2496
|
};
|
|
1235
|
-
|
|
1236
2497
|
var convertToMilestone = function convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
1237
2498
|
var x = taskXCoordinate(task.start, dates, columnWidth);
|
|
1238
2499
|
var y = taskYCoordinate(index, rowHeight, taskHeight);
|
|
1239
2500
|
var x1 = x - taskHeight * 0.5;
|
|
1240
2501
|
var x2 = x + taskHeight * 0.5;
|
|
1241
2502
|
var rotatedHeight = taskHeight / 1.414;
|
|
1242
|
-
|
|
1243
2503
|
var styles = _extends({
|
|
1244
2504
|
backgroundColor: milestoneBackgroundColor,
|
|
1245
2505
|
backgroundSelectedColor: milestoneBackgroundSelectedColor,
|
|
1246
2506
|
progressColor: "",
|
|
1247
2507
|
progressSelectedColor: ""
|
|
1248
2508
|
}, task.styles);
|
|
1249
|
-
|
|
1250
2509
|
return _extends({}, task, {
|
|
1251
2510
|
end: task.start,
|
|
1252
2511
|
x1: x1,
|
|
@@ -1265,7 +2524,6 @@ var convertToMilestone = function convertToMilestone(task, index, dates, columnW
|
|
|
1265
2524
|
styles: styles
|
|
1266
2525
|
});
|
|
1267
2526
|
};
|
|
1268
|
-
|
|
1269
2527
|
var taskXCoordinate = function taskXCoordinate(xDate, dates, columnWidth) {
|
|
1270
2528
|
var index = dates.findIndex(function (d) {
|
|
1271
2529
|
return d.getTime() >= xDate.getTime();
|
|
@@ -1275,31 +2533,25 @@ var taskXCoordinate = function taskXCoordinate(xDate, dates, columnWidth) {
|
|
|
1275
2533
|
var x = index * columnWidth + percentOfInterval * columnWidth;
|
|
1276
2534
|
return x;
|
|
1277
2535
|
};
|
|
1278
|
-
|
|
1279
2536
|
var taskXCoordinateRTL = function taskXCoordinateRTL(xDate, dates, columnWidth) {
|
|
1280
2537
|
var x = taskXCoordinate(xDate, dates, columnWidth);
|
|
1281
2538
|
x += columnWidth;
|
|
1282
2539
|
return x;
|
|
1283
2540
|
};
|
|
1284
|
-
|
|
1285
2541
|
var taskYCoordinate = function taskYCoordinate(index, rowHeight, taskHeight) {
|
|
1286
2542
|
var y = index * rowHeight + (rowHeight - taskHeight) / 2;
|
|
1287
2543
|
return y;
|
|
1288
2544
|
};
|
|
1289
|
-
|
|
1290
2545
|
var progressWithByParams = function progressWithByParams(taskX1, taskX2, progress, rtl) {
|
|
1291
2546
|
var progressWidth = (taskX2 - taskX1) * progress * 0.01;
|
|
1292
2547
|
var progressX;
|
|
1293
|
-
|
|
1294
2548
|
if (rtl) {
|
|
1295
2549
|
progressX = taskX2 - progressWidth;
|
|
1296
2550
|
} else {
|
|
1297
2551
|
progressX = taskX1;
|
|
1298
2552
|
}
|
|
1299
|
-
|
|
1300
2553
|
return [progressWidth, progressX];
|
|
1301
2554
|
};
|
|
1302
|
-
|
|
1303
2555
|
var progressByX = function progressByX(x, task) {
|
|
1304
2556
|
if (x >= task.x2) return 100;else if (x <= task.x1) return 0;else {
|
|
1305
2557
|
var barWidth = task.x2 - task.x1;
|
|
@@ -1307,7 +2559,6 @@ var progressByX = function progressByX(x, task) {
|
|
|
1307
2559
|
return progressPercent;
|
|
1308
2560
|
}
|
|
1309
2561
|
};
|
|
1310
|
-
|
|
1311
2562
|
var progressByXRTL = function progressByXRTL(x, task) {
|
|
1312
2563
|
if (x >= task.x2) return 0;else if (x <= task.x1) return 100;else {
|
|
1313
2564
|
var barWidth = task.x2 - task.x1;
|
|
@@ -1315,34 +2566,28 @@ var progressByXRTL = function progressByXRTL(x, task) {
|
|
|
1315
2566
|
return progressPercent;
|
|
1316
2567
|
}
|
|
1317
2568
|
};
|
|
1318
|
-
|
|
1319
2569
|
var getProgressPoint = function getProgressPoint(progressX, taskY, taskHeight) {
|
|
1320
2570
|
var point = [progressX - 5, taskY + taskHeight, progressX + 5, taskY + taskHeight, progressX, taskY + taskHeight - 8.66];
|
|
1321
2571
|
return point.join(",");
|
|
1322
2572
|
};
|
|
1323
|
-
|
|
1324
2573
|
var startByX = function startByX(x, xStep, task) {
|
|
1325
2574
|
if (x >= task.x2 - task.handleWidth * 2) {
|
|
1326
2575
|
x = task.x2 - task.handleWidth * 2;
|
|
1327
2576
|
}
|
|
1328
|
-
|
|
1329
2577
|
var steps = Math.round((x - task.x1) / xStep);
|
|
1330
2578
|
var additionalXValue = steps * xStep;
|
|
1331
2579
|
var newX = task.x1 + additionalXValue;
|
|
1332
2580
|
return newX;
|
|
1333
2581
|
};
|
|
1334
|
-
|
|
1335
2582
|
var endByX = function endByX(x, xStep, task) {
|
|
1336
2583
|
if (x <= task.x1 + task.handleWidth * 2) {
|
|
1337
2584
|
x = task.x1 + task.handleWidth * 2;
|
|
1338
2585
|
}
|
|
1339
|
-
|
|
1340
2586
|
var steps = Math.round((x - task.x2) / xStep);
|
|
1341
2587
|
var additionalXValue = steps * xStep;
|
|
1342
2588
|
var newX = task.x2 + additionalXValue;
|
|
1343
2589
|
return newX;
|
|
1344
2590
|
};
|
|
1345
|
-
|
|
1346
2591
|
var moveByX = function moveByX(x, xStep, task) {
|
|
1347
2592
|
var steps = Math.round((x - task.x1) / xStep);
|
|
1348
2593
|
var additionalXValue = steps * xStep;
|
|
@@ -1350,34 +2595,26 @@ var moveByX = function moveByX(x, xStep, task) {
|
|
|
1350
2595
|
var newX2 = newX1 + task.x2 - task.x1;
|
|
1351
2596
|
return [newX1, newX2];
|
|
1352
2597
|
};
|
|
1353
|
-
|
|
1354
2598
|
var dateByX = function dateByX(x, taskX, taskDate, xStep, timeStep) {
|
|
1355
2599
|
var newDate = new Date((x - taskX) / xStep * timeStep + taskDate.getTime());
|
|
1356
2600
|
newDate = new Date(newDate.getTime() + (newDate.getTimezoneOffset() - taskDate.getTimezoneOffset()) * 60000);
|
|
1357
2601
|
return newDate;
|
|
1358
2602
|
};
|
|
1359
|
-
|
|
1360
2603
|
var handleTaskBySVGMouseEvent = function handleTaskBySVGMouseEvent(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl) {
|
|
1361
2604
|
var result;
|
|
1362
|
-
|
|
1363
2605
|
switch (selectedTask.type) {
|
|
1364
2606
|
case "milestone":
|
|
1365
2607
|
result = handleTaskBySVGMouseEventForMilestone(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta);
|
|
1366
2608
|
break;
|
|
1367
|
-
|
|
1368
2609
|
default:
|
|
1369
2610
|
result = handleTaskBySVGMouseEventForBar(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl);
|
|
1370
2611
|
break;
|
|
1371
2612
|
}
|
|
1372
|
-
|
|
1373
2613
|
return result;
|
|
1374
2614
|
};
|
|
1375
|
-
|
|
1376
2615
|
var handleTaskBySVGMouseEventForBar = function handleTaskBySVGMouseEventForBar(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl) {
|
|
1377
2616
|
var changedTask = _extends({}, selectedTask);
|
|
1378
|
-
|
|
1379
2617
|
var isChanged = false;
|
|
1380
|
-
|
|
1381
2618
|
switch (action) {
|
|
1382
2619
|
case "progress":
|
|
1383
2620
|
if (rtl) {
|
|
@@ -1385,125 +2622,97 @@ var handleTaskBySVGMouseEventForBar = function handleTaskBySVGMouseEventForBar(s
|
|
|
1385
2622
|
} else {
|
|
1386
2623
|
changedTask.progress = progressByX(svgX, selectedTask);
|
|
1387
2624
|
}
|
|
1388
|
-
|
|
1389
2625
|
isChanged = changedTask.progress !== selectedTask.progress;
|
|
1390
|
-
|
|
1391
2626
|
if (isChanged) {
|
|
1392
2627
|
var _progressWithByParams2 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
2628
|
+
progressWidth = _progressWithByParams2[0],
|
|
2629
|
+
progressX = _progressWithByParams2[1];
|
|
1396
2630
|
changedTask.progressWidth = progressWidth;
|
|
1397
2631
|
changedTask.progressX = progressX;
|
|
1398
2632
|
}
|
|
1399
|
-
|
|
1400
2633
|
break;
|
|
1401
|
-
|
|
1402
2634
|
case "start":
|
|
1403
2635
|
{
|
|
1404
2636
|
var newX1 = startByX(svgX, xStep, selectedTask);
|
|
1405
2637
|
changedTask.x1 = newX1;
|
|
1406
2638
|
isChanged = changedTask.x1 !== selectedTask.x1;
|
|
1407
|
-
|
|
1408
2639
|
if (isChanged) {
|
|
1409
2640
|
if (rtl) {
|
|
1410
2641
|
changedTask.end = dateByX(newX1, selectedTask.x1, selectedTask.end, xStep, timeStep);
|
|
1411
2642
|
} else {
|
|
1412
2643
|
changedTask.start = dateByX(newX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1413
2644
|
}
|
|
1414
|
-
|
|
1415
2645
|
var _progressWithByParams3 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
2646
|
+
_progressWidth = _progressWithByParams3[0],
|
|
2647
|
+
_progressX = _progressWithByParams3[1];
|
|
1419
2648
|
changedTask.progressWidth = _progressWidth;
|
|
1420
2649
|
changedTask.progressX = _progressX;
|
|
1421
2650
|
}
|
|
1422
|
-
|
|
1423
2651
|
break;
|
|
1424
2652
|
}
|
|
1425
|
-
|
|
1426
2653
|
case "end":
|
|
1427
2654
|
{
|
|
1428
2655
|
var newX2 = endByX(svgX, xStep, selectedTask);
|
|
1429
2656
|
changedTask.x2 = newX2;
|
|
1430
2657
|
isChanged = changedTask.x2 !== selectedTask.x2;
|
|
1431
|
-
|
|
1432
2658
|
if (isChanged) {
|
|
1433
2659
|
if (rtl) {
|
|
1434
2660
|
changedTask.start = dateByX(newX2, selectedTask.x2, selectedTask.start, xStep, timeStep);
|
|
1435
2661
|
} else {
|
|
1436
2662
|
changedTask.end = dateByX(newX2, selectedTask.x2, selectedTask.end, xStep, timeStep);
|
|
1437
2663
|
}
|
|
1438
|
-
|
|
1439
2664
|
var _progressWithByParams4 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
2665
|
+
_progressWidth2 = _progressWithByParams4[0],
|
|
2666
|
+
_progressX2 = _progressWithByParams4[1];
|
|
1443
2667
|
changedTask.progressWidth = _progressWidth2;
|
|
1444
2668
|
changedTask.progressX = _progressX2;
|
|
1445
2669
|
}
|
|
1446
|
-
|
|
1447
2670
|
break;
|
|
1448
2671
|
}
|
|
1449
|
-
|
|
1450
2672
|
case "move":
|
|
1451
2673
|
{
|
|
1452
2674
|
var _moveByX = moveByX(svgX - initEventX1Delta, xStep, selectedTask),
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
2675
|
+
newMoveX1 = _moveByX[0],
|
|
2676
|
+
newMoveX2 = _moveByX[1];
|
|
1456
2677
|
isChanged = newMoveX1 !== selectedTask.x1;
|
|
1457
|
-
|
|
1458
2678
|
if (isChanged) {
|
|
1459
2679
|
changedTask.start = dateByX(newMoveX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1460
2680
|
changedTask.end = dateByX(newMoveX2, selectedTask.x2, selectedTask.end, xStep, timeStep);
|
|
1461
2681
|
changedTask.x1 = newMoveX1;
|
|
1462
2682
|
changedTask.x2 = newMoveX2;
|
|
1463
|
-
|
|
1464
2683
|
var _progressWithByParams5 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
2684
|
+
_progressWidth3 = _progressWithByParams5[0],
|
|
2685
|
+
_progressX3 = _progressWithByParams5[1];
|
|
1468
2686
|
changedTask.progressWidth = _progressWidth3;
|
|
1469
2687
|
changedTask.progressX = _progressX3;
|
|
1470
2688
|
}
|
|
1471
|
-
|
|
1472
2689
|
break;
|
|
1473
2690
|
}
|
|
1474
2691
|
}
|
|
1475
|
-
|
|
1476
2692
|
return {
|
|
1477
2693
|
isChanged: isChanged,
|
|
1478
2694
|
changedTask: changedTask
|
|
1479
2695
|
};
|
|
1480
2696
|
};
|
|
1481
|
-
|
|
1482
2697
|
var handleTaskBySVGMouseEventForMilestone = function handleTaskBySVGMouseEventForMilestone(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta) {
|
|
1483
2698
|
var changedTask = _extends({}, selectedTask);
|
|
1484
|
-
|
|
1485
2699
|
var isChanged = false;
|
|
1486
|
-
|
|
1487
2700
|
switch (action) {
|
|
1488
2701
|
case "move":
|
|
1489
2702
|
{
|
|
1490
2703
|
var _moveByX2 = moveByX(svgX - initEventX1Delta, xStep, selectedTask),
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
2704
|
+
newMoveX1 = _moveByX2[0],
|
|
2705
|
+
newMoveX2 = _moveByX2[1];
|
|
1494
2706
|
isChanged = newMoveX1 !== selectedTask.x1;
|
|
1495
|
-
|
|
1496
2707
|
if (isChanged) {
|
|
1497
2708
|
changedTask.start = dateByX(newMoveX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1498
2709
|
changedTask.end = changedTask.start;
|
|
1499
2710
|
changedTask.x1 = newMoveX1;
|
|
1500
2711
|
changedTask.x2 = newMoveX2;
|
|
1501
2712
|
}
|
|
1502
|
-
|
|
1503
2713
|
break;
|
|
1504
2714
|
}
|
|
1505
2715
|
}
|
|
1506
|
-
|
|
1507
2716
|
return {
|
|
1508
2717
|
isChanged: isChanged,
|
|
1509
2718
|
changedTask: changedTask
|
|
@@ -1517,27 +2726,22 @@ function removeHiddenTasks(tasks) {
|
|
|
1517
2726
|
var groupedTasks = tasks.filter(function (t) {
|
|
1518
2727
|
return t.hideChildren && t.type === "project";
|
|
1519
2728
|
});
|
|
1520
|
-
|
|
1521
2729
|
if (groupedTasks.length > 0) {
|
|
1522
|
-
var _loop = function _loop(
|
|
2730
|
+
var _loop = function _loop() {
|
|
1523
2731
|
var groupedTask = groupedTasks[i];
|
|
1524
2732
|
var children = getChildren(tasks, groupedTask);
|
|
1525
2733
|
tasks = tasks.filter(function (t) {
|
|
1526
2734
|
return children.indexOf(t) === -1;
|
|
1527
2735
|
});
|
|
1528
2736
|
};
|
|
1529
|
-
|
|
1530
2737
|
for (var i = 0; groupedTasks.length > i; i++) {
|
|
1531
|
-
_loop(
|
|
2738
|
+
_loop();
|
|
1532
2739
|
}
|
|
1533
2740
|
}
|
|
1534
|
-
|
|
1535
2741
|
return tasks;
|
|
1536
2742
|
}
|
|
1537
|
-
|
|
1538
2743
|
function getChildren(taskList, task) {
|
|
1539
2744
|
var tasks = [];
|
|
1540
|
-
|
|
1541
2745
|
if (task.type !== "project") {
|
|
1542
2746
|
tasks = taskList.filter(function (t) {
|
|
1543
2747
|
return t.dependencies && t.dependencies.indexOf(task.id) !== -1;
|
|
@@ -1547,7 +2751,6 @@ function getChildren(taskList, task) {
|
|
|
1547
2751
|
return t.project && t.project === task.id;
|
|
1548
2752
|
});
|
|
1549
2753
|
}
|
|
1550
|
-
|
|
1551
2754
|
var taskChildren = [];
|
|
1552
2755
|
tasks.forEach(function (t) {
|
|
1553
2756
|
taskChildren.push.apply(taskChildren, getChildren(taskList, t));
|
|
@@ -1555,11 +2758,9 @@ function getChildren(taskList, task) {
|
|
|
1555
2758
|
tasks = tasks.concat(tasks, taskChildren);
|
|
1556
2759
|
return tasks;
|
|
1557
2760
|
}
|
|
1558
|
-
|
|
1559
2761
|
var sortTasks = function sortTasks(taskA, taskB) {
|
|
1560
2762
|
var orderA = taskA.displayOrder || Number.MAX_VALUE;
|
|
1561
2763
|
var orderB = taskB.displayOrder || Number.MAX_VALUE;
|
|
1562
|
-
|
|
1563
2764
|
if (orderA > orderB) {
|
|
1564
2765
|
return 1;
|
|
1565
2766
|
} else if (orderA < orderB) {
|
|
@@ -1573,24 +2774,21 @@ var styles$6 = {"barWrapper":"_KxSXS","barHandle":"_3w_5u","barBackground":"_31E
|
|
|
1573
2774
|
|
|
1574
2775
|
var BarDisplay = function BarDisplay(_ref) {
|
|
1575
2776
|
var x = _ref.x,
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
2777
|
+
y = _ref.y,
|
|
2778
|
+
width = _ref.width,
|
|
2779
|
+
height = _ref.height,
|
|
2780
|
+
isSelected = _ref.isSelected,
|
|
2781
|
+
progressX = _ref.progressX,
|
|
2782
|
+
progressWidth = _ref.progressWidth,
|
|
2783
|
+
barCornerRadius = _ref.barCornerRadius,
|
|
2784
|
+
styles = _ref.styles,
|
|
2785
|
+
onMouseDown = _ref.onMouseDown;
|
|
1586
2786
|
var getProcessColor = function getProcessColor() {
|
|
1587
2787
|
return isSelected ? styles.progressSelectedColor : styles.progressColor;
|
|
1588
2788
|
};
|
|
1589
|
-
|
|
1590
2789
|
var getBarColor = function getBarColor() {
|
|
1591
2790
|
return isSelected ? styles.backgroundSelectedColor : styles.backgroundColor;
|
|
1592
2791
|
};
|
|
1593
|
-
|
|
1594
2792
|
return React.createElement("g", {
|
|
1595
2793
|
onMouseDown: onMouseDown
|
|
1596
2794
|
}, React.createElement("rect", {
|
|
@@ -1615,11 +2813,11 @@ var BarDisplay = function BarDisplay(_ref) {
|
|
|
1615
2813
|
|
|
1616
2814
|
var BarDateHandle = function BarDateHandle(_ref) {
|
|
1617
2815
|
var x = _ref.x,
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
2816
|
+
y = _ref.y,
|
|
2817
|
+
width = _ref.width,
|
|
2818
|
+
height = _ref.height,
|
|
2819
|
+
barCornerRadius = _ref.barCornerRadius,
|
|
2820
|
+
onMouseDown = _ref.onMouseDown;
|
|
1623
2821
|
return React.createElement("rect", {
|
|
1624
2822
|
x: x,
|
|
1625
2823
|
y: y,
|
|
@@ -1634,7 +2832,7 @@ var BarDateHandle = function BarDateHandle(_ref) {
|
|
|
1634
2832
|
|
|
1635
2833
|
var BarProgressHandle = function BarProgressHandle(_ref) {
|
|
1636
2834
|
var progressPoint = _ref.progressPoint,
|
|
1637
|
-
|
|
2835
|
+
onMouseDown = _ref.onMouseDown;
|
|
1638
2836
|
return React.createElement("polygon", {
|
|
1639
2837
|
className: styles$6.barHandle,
|
|
1640
2838
|
points: progressPoint,
|
|
@@ -1644,11 +2842,11 @@ var BarProgressHandle = function BarProgressHandle(_ref) {
|
|
|
1644
2842
|
|
|
1645
2843
|
var Bar = function Bar(_ref) {
|
|
1646
2844
|
var task = _ref.task,
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
2845
|
+
isProgressChangeable = _ref.isProgressChangeable,
|
|
2846
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2847
|
+
rtl = _ref.rtl,
|
|
2848
|
+
onEventStart = _ref.onEventStart,
|
|
2849
|
+
isSelected = _ref.isSelected;
|
|
1652
2850
|
var progressPoint = getProgressPoint(+!rtl * task.progressWidth + task.progressX, task.y, task.height);
|
|
1653
2851
|
var handleHeight = task.height - 2;
|
|
1654
2852
|
return React.createElement("g", {
|
|
@@ -1697,10 +2895,10 @@ var Bar = function Bar(_ref) {
|
|
|
1697
2895
|
|
|
1698
2896
|
var BarSmall = function BarSmall(_ref) {
|
|
1699
2897
|
var task = _ref.task,
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
2898
|
+
isProgressChangeable = _ref.isProgressChangeable,
|
|
2899
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2900
|
+
onEventStart = _ref.onEventStart,
|
|
2901
|
+
isSelected = _ref.isSelected;
|
|
1704
2902
|
var progressPoint = getProgressPoint(task.progressWidth + task.x1, task.y, task.height);
|
|
1705
2903
|
return React.createElement("g", {
|
|
1706
2904
|
className: styles$6.barWrapper,
|
|
@@ -1732,15 +2930,13 @@ var styles$7 = {"milestoneWrapper":"_RRr13","milestoneBackground":"_2P2B1"};
|
|
|
1732
2930
|
|
|
1733
2931
|
var Milestone = function Milestone(_ref) {
|
|
1734
2932
|
var task = _ref.task,
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
2933
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2934
|
+
onEventStart = _ref.onEventStart,
|
|
2935
|
+
isSelected = _ref.isSelected;
|
|
1738
2936
|
var transform = "rotate(45 " + (task.x1 + task.height * 0.356) + " \n " + (task.y + task.height * 0.85) + ")";
|
|
1739
|
-
|
|
1740
2937
|
var getBarColor = function getBarColor() {
|
|
1741
2938
|
return isSelected ? task.styles.backgroundSelectedColor : task.styles.backgroundColor;
|
|
1742
2939
|
};
|
|
1743
|
-
|
|
1744
2940
|
return React.createElement("g", {
|
|
1745
2941
|
tabIndex: 0,
|
|
1746
2942
|
className: styles$7.milestoneWrapper
|
|
@@ -1764,7 +2960,7 @@ var styles$8 = {"projectWrapper":"_1KJ6x","projectBackground":"_2RbVy","projectT
|
|
|
1764
2960
|
|
|
1765
2961
|
var Project = function Project(_ref) {
|
|
1766
2962
|
var task = _ref.task,
|
|
1767
|
-
|
|
2963
|
+
isSelected = _ref.isSelected;
|
|
1768
2964
|
var barColor = isSelected ? task.styles.backgroundSelectedColor : task.styles.backgroundColor;
|
|
1769
2965
|
var processColor = isSelected ? task.styles.progressSelectedColor : task.styles.progressColor;
|
|
1770
2966
|
var projectWith = task.x2 - task.x1;
|
|
@@ -1810,68 +3006,79 @@ var Project = function Project(_ref) {
|
|
|
1810
3006
|
}));
|
|
1811
3007
|
};
|
|
1812
3008
|
|
|
1813
|
-
var style = {"barLabel":"_3zRJQ","barLabelOutside":"_3KcaM"};
|
|
3009
|
+
var style = {"barLabel":"_3zRJQ","barLabelOutside":"_3KcaM","statusDot":"_3ITgM"};
|
|
1814
3010
|
|
|
1815
3011
|
var TaskItem = function TaskItem(props) {
|
|
1816
3012
|
var _props = _extends({}, props),
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
3013
|
+
task = _props.task,
|
|
3014
|
+
arrowIndent = _props.arrowIndent,
|
|
3015
|
+
isDelete = _props.isDelete,
|
|
3016
|
+
taskHeight = _props.taskHeight,
|
|
3017
|
+
isSelected = _props.isSelected,
|
|
3018
|
+
rtl = _props.rtl,
|
|
3019
|
+
onEventStart = _props.onEventStart,
|
|
3020
|
+
isProgressChangeable = _props.isProgressChangeable,
|
|
3021
|
+
isDateChangeable = _props.isDateChangeable;
|
|
1825
3022
|
var textRef = useRef(null);
|
|
1826
|
-
|
|
1827
3023
|
var _useState = useState(React.createElement("div", null)),
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
3024
|
+
taskItem = _useState[0],
|
|
3025
|
+
setTaskItem = _useState[1];
|
|
1831
3026
|
var _useState2 = useState(true),
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
3027
|
+
isTextInside = _useState2[0],
|
|
3028
|
+
setIsTextInside = _useState2[1];
|
|
3029
|
+
var normalizedStatus = normalizeStatus(task.status);
|
|
3030
|
+
var statusColor = getStatusColor(normalizedStatus);
|
|
3031
|
+
var statusBadgeText = getStatusBadgeText(normalizedStatus);
|
|
3032
|
+
var taskItemProps = useMemo(function () {
|
|
3033
|
+
return {
|
|
3034
|
+
task: task,
|
|
3035
|
+
arrowIndent: arrowIndent,
|
|
3036
|
+
taskHeight: taskHeight,
|
|
3037
|
+
isProgressChangeable: isProgressChangeable,
|
|
3038
|
+
isDateChangeable: isDateChangeable,
|
|
3039
|
+
isDelete: isDelete,
|
|
3040
|
+
isSelected: isSelected,
|
|
3041
|
+
rtl: rtl,
|
|
3042
|
+
onEventStart: onEventStart
|
|
3043
|
+
};
|
|
3044
|
+
}, [task, arrowIndent, taskHeight, isProgressChangeable, isDateChangeable, isDelete, isSelected, rtl, onEventStart]);
|
|
1835
3045
|
useEffect(function () {
|
|
1836
3046
|
switch (task.typeInternal) {
|
|
1837
3047
|
case "milestone":
|
|
1838
|
-
setTaskItem(React.createElement(Milestone, Object.assign({},
|
|
3048
|
+
setTaskItem(React.createElement(Milestone, Object.assign({}, taskItemProps)));
|
|
1839
3049
|
break;
|
|
1840
|
-
|
|
1841
3050
|
case "project":
|
|
1842
|
-
setTaskItem(React.createElement(Project, Object.assign({},
|
|
3051
|
+
setTaskItem(React.createElement(Project, Object.assign({}, taskItemProps)));
|
|
1843
3052
|
break;
|
|
1844
|
-
|
|
1845
3053
|
case "smalltask":
|
|
1846
|
-
setTaskItem(React.createElement(BarSmall, Object.assign({},
|
|
3054
|
+
setTaskItem(React.createElement(BarSmall, Object.assign({}, taskItemProps)));
|
|
1847
3055
|
break;
|
|
1848
|
-
|
|
1849
3056
|
default:
|
|
1850
|
-
setTaskItem(React.createElement(Bar, Object.assign({},
|
|
3057
|
+
setTaskItem(React.createElement(Bar, Object.assign({}, taskItemProps)));
|
|
1851
3058
|
break;
|
|
1852
3059
|
}
|
|
1853
|
-
}, [task,
|
|
1854
|
-
|
|
1855
|
-
if (textRef.current) {
|
|
1856
|
-
|
|
3060
|
+
}, [task, taskItemProps]);
|
|
3061
|
+
var getBBoxWidth = function getBBoxWidth() {
|
|
3062
|
+
if (!textRef.current || typeof textRef.current.getBBox !== "function") {
|
|
3063
|
+
return 0;
|
|
1857
3064
|
}
|
|
3065
|
+
return textRef.current.getBBox().width;
|
|
3066
|
+
};
|
|
3067
|
+
useEffect(function () {
|
|
3068
|
+
setIsTextInside(getBBoxWidth() < task.x2 - task.x1);
|
|
1858
3069
|
}, [textRef, task]);
|
|
1859
|
-
|
|
1860
3070
|
var getX = function getX() {
|
|
1861
3071
|
var width = task.x2 - task.x1;
|
|
1862
3072
|
var hasChild = task.barChildren.length > 0;
|
|
1863
|
-
|
|
1864
3073
|
if (isTextInside) {
|
|
1865
3074
|
return task.x1 + width * 0.5;
|
|
1866
3075
|
}
|
|
1867
|
-
|
|
1868
3076
|
if (rtl && textRef.current) {
|
|
1869
|
-
return task.x1 -
|
|
3077
|
+
return task.x1 - getBBoxWidth() - arrowIndent * +hasChild - arrowIndent * 0.2;
|
|
1870
3078
|
} else {
|
|
1871
3079
|
return task.x1 + width + arrowIndent * +hasChild + arrowIndent * 0.2;
|
|
1872
3080
|
}
|
|
1873
3081
|
};
|
|
1874
|
-
|
|
1875
3082
|
return React.createElement("g", {
|
|
1876
3083
|
onKeyDown: function onKeyDown(e) {
|
|
1877
3084
|
switch (e.key) {
|
|
@@ -1881,7 +3088,6 @@ var TaskItem = function TaskItem(props) {
|
|
|
1881
3088
|
break;
|
|
1882
3089
|
}
|
|
1883
3090
|
}
|
|
1884
|
-
|
|
1885
3091
|
e.stopPropagation();
|
|
1886
3092
|
},
|
|
1887
3093
|
onMouseEnter: function onMouseEnter(e) {
|
|
@@ -1904,48 +3110,47 @@ var TaskItem = function TaskItem(props) {
|
|
|
1904
3110
|
y: task.y + taskHeight * 0.5,
|
|
1905
3111
|
className: isTextInside ? style.barLabel : style.barLabelOutside,
|
|
1906
3112
|
ref: textRef
|
|
1907
|
-
},
|
|
3113
|
+
}, !!statusBadgeText && React.createElement("tspan", {
|
|
3114
|
+
className: style.statusDot,
|
|
3115
|
+
fill: statusColor
|
|
3116
|
+
}, "\u25CF"), React.createElement("tspan", {
|
|
3117
|
+
dx: statusBadgeText ? 4 : 0
|
|
3118
|
+
}, task.name)));
|
|
1908
3119
|
};
|
|
1909
3120
|
|
|
1910
3121
|
var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
1911
|
-
var _svg$current;
|
|
1912
|
-
|
|
1913
3122
|
var tasks = _ref.tasks,
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
var point = svg
|
|
1936
|
-
|
|
3123
|
+
dates = _ref.dates,
|
|
3124
|
+
ganttEvent = _ref.ganttEvent,
|
|
3125
|
+
selectedTask = _ref.selectedTask,
|
|
3126
|
+
rowHeight = _ref.rowHeight,
|
|
3127
|
+
columnWidth = _ref.columnWidth,
|
|
3128
|
+
timeStep = _ref.timeStep,
|
|
3129
|
+
svg = _ref.svg,
|
|
3130
|
+
taskHeight = _ref.taskHeight,
|
|
3131
|
+
arrowColor = _ref.arrowColor,
|
|
3132
|
+
arrowIndent = _ref.arrowIndent,
|
|
3133
|
+
fontFamily = _ref.fontFamily,
|
|
3134
|
+
fontSize = _ref.fontSize,
|
|
3135
|
+
rtl = _ref.rtl,
|
|
3136
|
+
setGanttEvent = _ref.setGanttEvent,
|
|
3137
|
+
setFailedTask = _ref.setFailedTask,
|
|
3138
|
+
setSelectedTask = _ref.setSelectedTask,
|
|
3139
|
+
onDateChange = _ref.onDateChange,
|
|
3140
|
+
onProgressChange = _ref.onProgressChange,
|
|
3141
|
+
onDoubleClick = _ref.onDoubleClick,
|
|
3142
|
+
onClick = _ref.onClick,
|
|
3143
|
+
onDelete = _ref.onDelete;
|
|
3144
|
+
var point = svg !== null && svg !== void 0 && svg.current && "createSVGPoint" in svg.current ? svg.current.createSVGPoint() : undefined;
|
|
1937
3145
|
var _useState = useState(0),
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
3146
|
+
xStep = _useState[0],
|
|
3147
|
+
setXStep = _useState[1];
|
|
1941
3148
|
var _useState2 = useState(0),
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
3149
|
+
initEventX1Delta = _useState2[0],
|
|
3150
|
+
setInitEventX1Delta = _useState2[1];
|
|
1945
3151
|
var _useState3 = useState(false),
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
3152
|
+
isMoving = _useState3[0],
|
|
3153
|
+
setIsMoving = _useState3[1];
|
|
1949
3154
|
useEffect(function () {
|
|
1950
3155
|
var dateDelta = dates[1].getTime() - dates[0].getTime() - dates[1].getTimezoneOffset() * 60 * 1000 + dates[0].getTimezoneOffset() * 60 * 1000;
|
|
1951
3156
|
var newXStep = timeStep * columnWidth / dateDelta;
|
|
@@ -1955,62 +3160,52 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
1955
3160
|
var handleMouseMove = function handleMouseMove(event) {
|
|
1956
3161
|
try {
|
|
1957
3162
|
var _svg$current$getScree;
|
|
1958
|
-
|
|
1959
3163
|
if (!ganttEvent.changedTask || !point || !(svg !== null && svg !== void 0 && svg.current)) return Promise.resolve();
|
|
1960
3164
|
event.preventDefault();
|
|
1961
3165
|
point.x = event.clientX;
|
|
1962
3166
|
var cursor = point.matrixTransform(svg === null || svg === void 0 ? void 0 : (_svg$current$getScree = svg.current.getScreenCTM()) === null || _svg$current$getScree === void 0 ? void 0 : _svg$current$getScree.inverse());
|
|
1963
|
-
|
|
1964
3167
|
var _handleTaskBySVGMouse = handleTaskBySVGMouseEvent(cursor.x, ganttEvent.action, ganttEvent.changedTask, xStep, timeStep, initEventX1Delta, rtl),
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
3168
|
+
isChanged = _handleTaskBySVGMouse.isChanged,
|
|
3169
|
+
changedTask = _handleTaskBySVGMouse.changedTask;
|
|
1968
3170
|
if (isChanged) {
|
|
1969
3171
|
setGanttEvent({
|
|
1970
3172
|
action: ganttEvent.action,
|
|
1971
3173
|
changedTask: changedTask
|
|
1972
3174
|
});
|
|
1973
3175
|
}
|
|
1974
|
-
|
|
1975
3176
|
return Promise.resolve();
|
|
1976
3177
|
} catch (e) {
|
|
1977
3178
|
return Promise.reject(e);
|
|
1978
3179
|
}
|
|
1979
3180
|
};
|
|
1980
|
-
|
|
1981
|
-
var handleMouseUp = function handleMouseUp(event) {
|
|
3181
|
+
var _handleMouseUp = function handleMouseUp(event) {
|
|
1982
3182
|
try {
|
|
1983
3183
|
var _svg$current$getScree2;
|
|
1984
|
-
|
|
1985
|
-
var _temp6 = function _temp6() {
|
|
3184
|
+
var _temp5 = function _temp5() {
|
|
1986
3185
|
if (!operationSuccess) {
|
|
1987
3186
|
setFailedTask(originalSelectedTask);
|
|
1988
3187
|
}
|
|
1989
3188
|
};
|
|
1990
|
-
|
|
1991
3189
|
var action = ganttEvent.action,
|
|
1992
|
-
|
|
1993
|
-
|
|
3190
|
+
originalSelectedTask = ganttEvent.originalSelectedTask,
|
|
3191
|
+
changedTask = ganttEvent.changedTask;
|
|
1994
3192
|
if (!changedTask || !point || !(svg !== null && svg !== void 0 && svg.current) || !originalSelectedTask) return Promise.resolve();
|
|
1995
3193
|
event.preventDefault();
|
|
1996
3194
|
point.x = event.clientX;
|
|
1997
3195
|
var cursor = point.matrixTransform(svg === null || svg === void 0 ? void 0 : (_svg$current$getScree2 = svg.current.getScreenCTM()) === null || _svg$current$getScree2 === void 0 ? void 0 : _svg$current$getScree2.inverse());
|
|
1998
|
-
|
|
1999
3196
|
var _handleTaskBySVGMouse2 = handleTaskBySVGMouseEvent(cursor.x, action, changedTask, xStep, timeStep, initEventX1Delta, rtl),
|
|
2000
|
-
|
|
2001
|
-
|
|
3197
|
+
newChangedTask = _handleTaskBySVGMouse2.changedTask;
|
|
2002
3198
|
var isNotLikeOriginal = originalSelectedTask.start !== newChangedTask.start || originalSelectedTask.end !== newChangedTask.end || originalSelectedTask.progress !== newChangedTask.progress;
|
|
2003
3199
|
svg.current.removeEventListener("mousemove", handleMouseMove);
|
|
2004
|
-
svg.current.removeEventListener("mouseup",
|
|
3200
|
+
svg.current.removeEventListener("mouseup", _handleMouseUp);
|
|
2005
3201
|
setGanttEvent({
|
|
2006
3202
|
action: ""
|
|
2007
3203
|
});
|
|
2008
3204
|
setIsMoving(false);
|
|
2009
3205
|
var operationSuccess = true;
|
|
2010
|
-
|
|
2011
|
-
var _temp7 = function () {
|
|
3206
|
+
var _temp4 = function () {
|
|
2012
3207
|
if ((action === "move" || action === "end" || action === "start") && onDateChange && isNotLikeOriginal) {
|
|
2013
|
-
var
|
|
3208
|
+
var _temp = _catch(function () {
|
|
2014
3209
|
return Promise.resolve(onDateChange(newChangedTask, newChangedTask.barChildren)).then(function (result) {
|
|
2015
3210
|
if (result !== undefined) {
|
|
2016
3211
|
operationSuccess = result;
|
|
@@ -2019,12 +3214,11 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2019
3214
|
}, function () {
|
|
2020
3215
|
operationSuccess = false;
|
|
2021
3216
|
});
|
|
2022
|
-
|
|
2023
|
-
if (_temp8 && _temp8.then) return _temp8.then(function () {});
|
|
3217
|
+
if (_temp && _temp.then) return _temp.then(function () {});
|
|
2024
3218
|
} else {
|
|
2025
|
-
var
|
|
3219
|
+
var _temp6 = function () {
|
|
2026
3220
|
if (onProgressChange && isNotLikeOriginal) {
|
|
2027
|
-
var
|
|
3221
|
+
var _temp2 = _catch(function () {
|
|
2028
3222
|
return Promise.resolve(onProgressChange(newChangedTask, newChangedTask.barChildren)).then(function (result) {
|
|
2029
3223
|
if (result !== undefined) {
|
|
2030
3224
|
operationSuccess = result;
|
|
@@ -2033,28 +3227,23 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2033
3227
|
}, function () {
|
|
2034
3228
|
operationSuccess = false;
|
|
2035
3229
|
});
|
|
2036
|
-
|
|
2037
|
-
if (_temp10 && _temp10.then) return _temp10.then(function () {});
|
|
3230
|
+
if (_temp2 && _temp2.then) return _temp2.then(function () {});
|
|
2038
3231
|
}
|
|
2039
3232
|
}();
|
|
2040
|
-
|
|
2041
|
-
if (_temp9 && _temp9.then) return _temp9.then(function () {});
|
|
3233
|
+
if (_temp6 && _temp6.then) return _temp6.then(function () {});
|
|
2042
3234
|
}
|
|
2043
3235
|
}();
|
|
2044
|
-
|
|
2045
|
-
return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp6) : _temp6(_temp7));
|
|
3236
|
+
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
|
|
2046
3237
|
} catch (e) {
|
|
2047
3238
|
return Promise.reject(e);
|
|
2048
3239
|
}
|
|
2049
3240
|
};
|
|
2050
|
-
|
|
2051
3241
|
if (!isMoving && (ganttEvent.action === "move" || ganttEvent.action === "end" || ganttEvent.action === "start" || ganttEvent.action === "progress") && svg !== null && svg !== void 0 && svg.current) {
|
|
2052
3242
|
svg.current.addEventListener("mousemove", handleMouseMove);
|
|
2053
|
-
svg.current.addEventListener("mouseup",
|
|
3243
|
+
svg.current.addEventListener("mouseup", _handleMouseUp);
|
|
2054
3244
|
setIsMoving(true);
|
|
2055
3245
|
}
|
|
2056
3246
|
}, [ganttEvent, xStep, initEventX1Delta, onProgressChange, timeStep, onDateChange, svg, isMoving, point, rtl, setFailedTask, setGanttEvent]);
|
|
2057
|
-
|
|
2058
3247
|
var handleBarEventStart = function handleBarEventStart(action, task, event) {
|
|
2059
3248
|
try {
|
|
2060
3249
|
return Promise.resolve(function () {
|
|
@@ -2064,11 +3253,11 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2064
3253
|
}
|
|
2065
3254
|
} else return function () {
|
|
2066
3255
|
if (isKeyboardEvent(event)) {
|
|
2067
|
-
var
|
|
3256
|
+
var _temp9 = function () {
|
|
2068
3257
|
if (action === "delete") {
|
|
2069
|
-
var
|
|
3258
|
+
var _temp8 = function () {
|
|
2070
3259
|
if (onDelete) {
|
|
2071
|
-
var
|
|
3260
|
+
var _temp7 = _catch(function () {
|
|
2072
3261
|
return Promise.resolve(onDelete(task)).then(function (result) {
|
|
2073
3262
|
if (result !== undefined && result) {
|
|
2074
3263
|
setGanttEvent({
|
|
@@ -2080,16 +3269,13 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2080
3269
|
}, function (error) {
|
|
2081
3270
|
console.error("Error on Delete. " + error);
|
|
2082
3271
|
});
|
|
2083
|
-
|
|
2084
|
-
if (_temp16 && _temp16.then) return _temp16.then(function () {});
|
|
3272
|
+
if (_temp7 && _temp7.then) return _temp7.then(function () {});
|
|
2085
3273
|
}
|
|
2086
3274
|
}();
|
|
2087
|
-
|
|
2088
|
-
if (_temp15 && _temp15.then) return _temp15.then(function () {});
|
|
3275
|
+
if (_temp8 && _temp8.then) return _temp8.then(function () {});
|
|
2089
3276
|
}
|
|
2090
3277
|
}();
|
|
2091
|
-
|
|
2092
|
-
if (_temp14 && _temp14.then) return _temp14.then(function () {});
|
|
3278
|
+
if (_temp9 && _temp9.then) return _temp9.then(function () {});
|
|
2093
3279
|
} else if (action === "mouseenter") {
|
|
2094
3280
|
if (!ganttEvent.action) {
|
|
2095
3281
|
setGanttEvent({
|
|
@@ -2110,7 +3296,6 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2110
3296
|
!!onClick && onClick(task);
|
|
2111
3297
|
} else if (action === "move") {
|
|
2112
3298
|
var _svg$current$getScree3;
|
|
2113
|
-
|
|
2114
3299
|
if (!(svg !== null && svg !== void 0 && svg.current) || !point) return;
|
|
2115
3300
|
point.x = event.clientX;
|
|
2116
3301
|
var cursor = point.matrixTransform((_svg$current$getScree3 = svg.current.getScreenCTM()) === null || _svg$current$getScree3 === void 0 ? void 0 : _svg$current$getScree3.inverse());
|
|
@@ -2133,7 +3318,6 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2133
3318
|
return Promise.reject(e);
|
|
2134
3319
|
}
|
|
2135
3320
|
};
|
|
2136
|
-
|
|
2137
3321
|
return React.createElement("g", {
|
|
2138
3322
|
className: "content"
|
|
2139
3323
|
}, React.createElement("g", {
|
|
@@ -2172,36 +3356,36 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2172
3356
|
})));
|
|
2173
3357
|
};
|
|
2174
3358
|
|
|
2175
|
-
var styles$9 = {"ganttVerticalContainer":"_CZjuD","horizontalContainer":"_2B2zv","wrapper":"_3eULf"};
|
|
3359
|
+
var styles$9 = {"ganttVerticalContainer":"_CZjuD","horizontalContainer":"_2B2zv","wrapper":"_3eULf","taskListPanel":"_3eX5j","splitHandle":"_1YST3","splitHandleActive":"_3cO1L","ganttPanel":"_1G4xA","scrollRow":"_2VUKJ","scrollCellLeft":"_1vvPx","scrollCellRight":"_3sIUT","scrollSplitter":"_3gMam"};
|
|
2176
3360
|
|
|
2177
3361
|
var TaskGantt = function TaskGantt(_ref) {
|
|
2178
3362
|
var gridProps = _ref.gridProps,
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
3363
|
+
calendarProps = _ref.calendarProps,
|
|
3364
|
+
barProps = _ref.barProps,
|
|
3365
|
+
ganttHeight = _ref.ganttHeight,
|
|
3366
|
+
scrollY = _ref.scrollY,
|
|
3367
|
+
scrollX = _ref.scrollX,
|
|
3368
|
+
verticalGanttContainerRef = _ref.verticalGanttContainerRef;
|
|
2184
3369
|
var ganttSVGRef = useRef(null);
|
|
2185
3370
|
var horizontalContainerRef = useRef(null);
|
|
2186
|
-
var
|
|
2187
|
-
|
|
3371
|
+
var internalVerticalRef = useRef(null);
|
|
3372
|
+
var ganttContainerRef = verticalGanttContainerRef || internalVerticalRef;
|
|
2188
3373
|
var newBarProps = _extends({}, barProps, {
|
|
2189
3374
|
svg: ganttSVGRef
|
|
2190
3375
|
});
|
|
2191
|
-
|
|
2192
3376
|
useEffect(function () {
|
|
2193
3377
|
if (horizontalContainerRef.current) {
|
|
2194
3378
|
horizontalContainerRef.current.scrollTop = scrollY;
|
|
2195
3379
|
}
|
|
2196
3380
|
}, [scrollY]);
|
|
2197
3381
|
useEffect(function () {
|
|
2198
|
-
if (
|
|
2199
|
-
|
|
3382
|
+
if (ganttContainerRef.current) {
|
|
3383
|
+
ganttContainerRef.current.scrollLeft = scrollX;
|
|
2200
3384
|
}
|
|
2201
|
-
}, [scrollX]);
|
|
3385
|
+
}, [scrollX, ganttContainerRef]);
|
|
2202
3386
|
return React.createElement("div", {
|
|
2203
3387
|
className: styles$9.ganttVerticalContainer,
|
|
2204
|
-
ref:
|
|
3388
|
+
ref: ganttContainerRef,
|
|
2205
3389
|
dir: "ltr"
|
|
2206
3390
|
}, React.createElement("svg", {
|
|
2207
3391
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2230,223 +3414,241 @@ var styles$a = {"scrollWrapper":"_2k9Ys","scroll":"_19jgW"};
|
|
|
2230
3414
|
|
|
2231
3415
|
var HorizontalScroll = function HorizontalScroll(_ref) {
|
|
2232
3416
|
var scroll = _ref.scroll,
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
3417
|
+
svgWidth = _ref.svgWidth,
|
|
3418
|
+
scrollerWidth = _ref.scrollerWidth,
|
|
3419
|
+
rtl = _ref.rtl,
|
|
3420
|
+
onScroll = _ref.onScroll,
|
|
3421
|
+
dataTestId = _ref["data-testid"],
|
|
3422
|
+
containerRef = _ref.containerRef,
|
|
3423
|
+
hidden = _ref.hidden;
|
|
2237
3424
|
var scrollRef = useRef(null);
|
|
3425
|
+
var wrapperRef = containerRef != null ? containerRef : scrollRef;
|
|
2238
3426
|
useEffect(function () {
|
|
2239
|
-
if (
|
|
2240
|
-
|
|
3427
|
+
if (wrapperRef.current) {
|
|
3428
|
+
wrapperRef.current.scrollLeft = scroll;
|
|
2241
3429
|
}
|
|
2242
|
-
}, [scroll]);
|
|
3430
|
+
}, [scroll, wrapperRef]);
|
|
2243
3431
|
return React.createElement("div", {
|
|
2244
|
-
dir: "ltr",
|
|
2245
|
-
style: {
|
|
2246
|
-
margin: rtl ? "0px " + taskListWidth + "px 0px 0px" : "0px 0px 0px " + taskListWidth + "px"
|
|
2247
|
-
},
|
|
3432
|
+
dir: rtl ? "rtl" : "ltr",
|
|
2248
3433
|
className: styles$a.scrollWrapper,
|
|
2249
3434
|
onScroll: onScroll,
|
|
2250
|
-
ref:
|
|
3435
|
+
ref: wrapperRef,
|
|
3436
|
+
"data-testid": dataTestId,
|
|
3437
|
+
style: hidden ? {
|
|
3438
|
+
display: "none"
|
|
3439
|
+
} : {
|
|
3440
|
+
width: svgWidth
|
|
3441
|
+
}
|
|
2251
3442
|
}, React.createElement("div", {
|
|
2252
3443
|
style: {
|
|
2253
|
-
width: svgWidth
|
|
3444
|
+
width: scrollerWidth != null ? scrollerWidth : svgWidth
|
|
2254
3445
|
},
|
|
2255
3446
|
className: styles$a.scroll
|
|
2256
3447
|
}));
|
|
2257
3448
|
};
|
|
2258
3449
|
|
|
3450
|
+
var DEFAULT_TASK_LIST_WIDTH = 450;
|
|
3451
|
+
var MIN_PANE_WIDTH = 150;
|
|
3452
|
+
var SPLIT_HANDLE_WIDTH = 8;
|
|
3453
|
+
var clampTaskListWidth = function clampTaskListWidth(width, containerWidth) {
|
|
3454
|
+
var maxWidth = Math.max(MIN_PANE_WIDTH, containerWidth - MIN_PANE_WIDTH - SPLIT_HANDLE_WIDTH);
|
|
3455
|
+
return Math.min(Math.max(width, MIN_PANE_WIDTH), maxWidth);
|
|
3456
|
+
};
|
|
2259
3457
|
var Gantt = function Gantt(_ref) {
|
|
2260
3458
|
var tasks = _ref.tasks,
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
3459
|
+
_ref$headerHeight = _ref.headerHeight,
|
|
3460
|
+
headerHeight = _ref$headerHeight === void 0 ? 50 : _ref$headerHeight,
|
|
3461
|
+
_ref$columnWidth = _ref.columnWidth,
|
|
3462
|
+
columnWidth = _ref$columnWidth === void 0 ? 60 : _ref$columnWidth,
|
|
3463
|
+
_ref$listCellWidth = _ref.listCellWidth,
|
|
3464
|
+
listCellWidth = _ref$listCellWidth === void 0 ? "155px" : _ref$listCellWidth,
|
|
3465
|
+
_ref$rowHeight = _ref.rowHeight,
|
|
3466
|
+
rowHeight = _ref$rowHeight === void 0 ? 50 : _ref$rowHeight,
|
|
3467
|
+
_ref$ganttHeight = _ref.ganttHeight,
|
|
3468
|
+
ganttHeight = _ref$ganttHeight === void 0 ? 0 : _ref$ganttHeight,
|
|
3469
|
+
_ref$viewMode = _ref.viewMode,
|
|
3470
|
+
viewMode = _ref$viewMode === void 0 ? ViewMode.Day : _ref$viewMode,
|
|
3471
|
+
_ref$preStepsCount = _ref.preStepsCount,
|
|
3472
|
+
preStepsCount = _ref$preStepsCount === void 0 ? 1 : _ref$preStepsCount,
|
|
3473
|
+
_ref$locale = _ref.locale,
|
|
3474
|
+
locale = _ref$locale === void 0 ? "en-GB" : _ref$locale,
|
|
3475
|
+
calendar = _ref.calendar,
|
|
3476
|
+
_ref$barFill = _ref.barFill,
|
|
3477
|
+
barFill = _ref$barFill === void 0 ? 60 : _ref$barFill,
|
|
3478
|
+
_ref$barCornerRadius = _ref.barCornerRadius,
|
|
3479
|
+
barCornerRadius = _ref$barCornerRadius === void 0 ? 3 : _ref$barCornerRadius,
|
|
3480
|
+
_ref$barProgressColor = _ref.barProgressColor,
|
|
3481
|
+
barProgressColor = _ref$barProgressColor === void 0 ? "#a3a3ff" : _ref$barProgressColor,
|
|
3482
|
+
_ref$barProgressSelec = _ref.barProgressSelectedColor,
|
|
3483
|
+
barProgressSelectedColor = _ref$barProgressSelec === void 0 ? "#8282f5" : _ref$barProgressSelec,
|
|
3484
|
+
_ref$barBackgroundCol = _ref.barBackgroundColor,
|
|
3485
|
+
barBackgroundColor = _ref$barBackgroundCol === void 0 ? "#b8c2cc" : _ref$barBackgroundCol,
|
|
3486
|
+
_ref$barBackgroundSel = _ref.barBackgroundSelectedColor,
|
|
3487
|
+
barBackgroundSelectedColor = _ref$barBackgroundSel === void 0 ? "#aeb8c2" : _ref$barBackgroundSel,
|
|
3488
|
+
_ref$projectProgressC = _ref.projectProgressColor,
|
|
3489
|
+
projectProgressColor = _ref$projectProgressC === void 0 ? "#7db59a" : _ref$projectProgressC,
|
|
3490
|
+
_ref$projectProgressS = _ref.projectProgressSelectedColor,
|
|
3491
|
+
projectProgressSelectedColor = _ref$projectProgressS === void 0 ? "#59a985" : _ref$projectProgressS,
|
|
3492
|
+
_ref$projectBackgroun = _ref.projectBackgroundColor,
|
|
3493
|
+
projectBackgroundColor = _ref$projectBackgroun === void 0 ? "#fac465" : _ref$projectBackgroun,
|
|
3494
|
+
_ref$projectBackgroun2 = _ref.projectBackgroundSelectedColor,
|
|
3495
|
+
projectBackgroundSelectedColor = _ref$projectBackgroun2 === void 0 ? "#f7bb53" : _ref$projectBackgroun2,
|
|
3496
|
+
_ref$milestoneBackgro = _ref.milestoneBackgroundColor,
|
|
3497
|
+
milestoneBackgroundColor = _ref$milestoneBackgro === void 0 ? "#f1c453" : _ref$milestoneBackgro,
|
|
3498
|
+
_ref$milestoneBackgro2 = _ref.milestoneBackgroundSelectedColor,
|
|
3499
|
+
milestoneBackgroundSelectedColor = _ref$milestoneBackgro2 === void 0 ? "#f29e4c" : _ref$milestoneBackgro2,
|
|
3500
|
+
_ref$rtl = _ref.rtl,
|
|
3501
|
+
rtl = _ref$rtl === void 0 ? false : _ref$rtl,
|
|
3502
|
+
_ref$handleWidth = _ref.handleWidth,
|
|
3503
|
+
handleWidth = _ref$handleWidth === void 0 ? 8 : _ref$handleWidth,
|
|
3504
|
+
_ref$timeStep = _ref.timeStep,
|
|
3505
|
+
timeStep = _ref$timeStep === void 0 ? 300000 : _ref$timeStep,
|
|
3506
|
+
_ref$arrowColor = _ref.arrowColor,
|
|
3507
|
+
arrowColor = _ref$arrowColor === void 0 ? "grey" : _ref$arrowColor,
|
|
3508
|
+
_ref$fontFamily = _ref.fontFamily,
|
|
3509
|
+
fontFamily = _ref$fontFamily === void 0 ? "Arial, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue" : _ref$fontFamily,
|
|
3510
|
+
_ref$fontSize = _ref.fontSize,
|
|
3511
|
+
fontSize = _ref$fontSize === void 0 ? "14px" : _ref$fontSize,
|
|
3512
|
+
_ref$arrowIndent = _ref.arrowIndent,
|
|
3513
|
+
arrowIndent = _ref$arrowIndent === void 0 ? 20 : _ref$arrowIndent,
|
|
3514
|
+
_ref$todayColor = _ref.todayColor,
|
|
3515
|
+
todayColor = _ref$todayColor === void 0 ? "rgba(252, 248, 227, 0.5)" : _ref$todayColor,
|
|
3516
|
+
viewDate = _ref.viewDate,
|
|
3517
|
+
_ref$TooltipContent = _ref.TooltipContent,
|
|
3518
|
+
TooltipContent = _ref$TooltipContent === void 0 ? StandardTooltipContent : _ref$TooltipContent,
|
|
3519
|
+
_ref$TaskListHeader = _ref.TaskListHeader,
|
|
3520
|
+
TaskListHeader = _ref$TaskListHeader === void 0 ? TaskListHeaderDefault : _ref$TaskListHeader,
|
|
3521
|
+
_ref$TaskListTable = _ref.TaskListTable,
|
|
3522
|
+
TaskListTable = _ref$TaskListTable === void 0 ? TaskListTableDefault : _ref$TaskListTable,
|
|
3523
|
+
_ref$visibleFields = _ref.visibleFields,
|
|
3524
|
+
visibleFields = _ref$visibleFields === void 0 ? DEFAULT_VISIBLE_FIELDS : _ref$visibleFields,
|
|
3525
|
+
_ref$effortDisplayUni = _ref.effortDisplayUnit,
|
|
3526
|
+
effortDisplayUnit = _ref$effortDisplayUni === void 0 ? "MH" : _ref$effortDisplayUni,
|
|
3527
|
+
enableColumnDrag = _ref.enableColumnDrag,
|
|
3528
|
+
onDateChange = _ref.onDateChange,
|
|
3529
|
+
onProgressChange = _ref.onProgressChange,
|
|
3530
|
+
onDoubleClick = _ref.onDoubleClick,
|
|
3531
|
+
onClick = _ref.onClick,
|
|
3532
|
+
onDelete = _ref.onDelete,
|
|
3533
|
+
onSelect = _ref.onSelect,
|
|
3534
|
+
onExpanderClick = _ref.onExpanderClick,
|
|
3535
|
+
onTaskUpdate = _ref.onTaskUpdate,
|
|
3536
|
+
onCellCommit = _ref.onCellCommit;
|
|
3537
|
+
var calendarConfig = useMemo(function () {
|
|
3538
|
+
return calendar ? normalizeCalendarConfig(calendar) : undefined;
|
|
3539
|
+
}, [calendar]);
|
|
2331
3540
|
var wrapperRef = useRef(null);
|
|
2332
3541
|
var taskListRef = useRef(null);
|
|
2333
|
-
|
|
3542
|
+
var taskListHeaderRef = useRef(null);
|
|
3543
|
+
var taskListBodyRef = useRef(null);
|
|
3544
|
+
var ganttContainerRef = useRef(null);
|
|
3545
|
+
var splitStartXRef = useRef(null);
|
|
3546
|
+
var splitStartWidthRef = useRef(null);
|
|
3547
|
+
var splitMoveHandlerRef = useRef(null);
|
|
3548
|
+
var splitUpHandlerRef = useRef(null);
|
|
3549
|
+
var supportsPointerEvents = typeof window !== "undefined" && "PointerEvent" in window;
|
|
2334
3550
|
var _useState = useState(function () {
|
|
2335
|
-
|
|
3551
|
+
var _ganttDateRange = ganttDateRange(tasks, viewMode, preStepsCount),
|
|
2336
3552
|
startDate = _ganttDateRange[0],
|
|
2337
3553
|
endDate = _ganttDateRange[1];
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
}
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
setDateSetup = _useState[1];
|
|
2346
|
-
|
|
3554
|
+
return {
|
|
3555
|
+
viewMode: viewMode,
|
|
3556
|
+
dates: seedDates(startDate, endDate, viewMode)
|
|
3557
|
+
};
|
|
3558
|
+
}),
|
|
3559
|
+
dateSetup = _useState[0],
|
|
3560
|
+
setDateSetup = _useState[1];
|
|
2347
3561
|
var _useState2 = useState(undefined),
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
setTaskListWidth = _useState3[1];
|
|
2354
|
-
|
|
3562
|
+
currentViewDate = _useState2[0],
|
|
3563
|
+
setCurrentViewDate = _useState2[1];
|
|
3564
|
+
var _useState3 = useState(DEFAULT_TASK_LIST_WIDTH),
|
|
3565
|
+
taskListWidth = _useState3[0],
|
|
3566
|
+
setTaskListWidth = _useState3[1];
|
|
2355
3567
|
var _useState4 = useState(0),
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
var
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
3568
|
+
wrapperWidth = _useState4[0],
|
|
3569
|
+
setWrapperWidth = _useState4[1];
|
|
3570
|
+
var _useState5 = useState(false),
|
|
3571
|
+
isResizing = _useState5[0],
|
|
3572
|
+
setIsResizing = _useState5[1];
|
|
3573
|
+
var _useState6 = useState(0),
|
|
3574
|
+
svgContainerWidth = _useState6[0],
|
|
3575
|
+
setSvgContainerWidth = _useState6[1];
|
|
3576
|
+
var _useState7 = useState(ganttHeight),
|
|
3577
|
+
svgContainerHeight = _useState7[0],
|
|
3578
|
+
setSvgContainerHeight = _useState7[1];
|
|
3579
|
+
var _useState8 = useState([]),
|
|
3580
|
+
barTasks = _useState8[0],
|
|
3581
|
+
setBarTasks = _useState8[1];
|
|
3582
|
+
var _useState9 = useState({
|
|
3583
|
+
action: ""
|
|
3584
|
+
}),
|
|
3585
|
+
ganttEvent = _useState9[0],
|
|
3586
|
+
setGanttEvent = _useState9[1];
|
|
2373
3587
|
var taskHeight = useMemo(function () {
|
|
2374
3588
|
return rowHeight * barFill / 100;
|
|
2375
3589
|
}, [rowHeight, barFill]);
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
failedTask = _useState9[0],
|
|
2383
|
-
setFailedTask = _useState9[1];
|
|
2384
|
-
|
|
3590
|
+
var _useState0 = useState(),
|
|
3591
|
+
selectedTask = _useState0[0],
|
|
3592
|
+
setSelectedTask = _useState0[1];
|
|
3593
|
+
var _useState1 = useState(null),
|
|
3594
|
+
failedTask = _useState1[0],
|
|
3595
|
+
setFailedTask = _useState1[1];
|
|
2385
3596
|
var svgWidth = dateSetup.dates.length * columnWidth;
|
|
2386
3597
|
var ganttFullHeight = barTasks.length * rowHeight;
|
|
2387
|
-
|
|
2388
3598
|
var _useState10 = useState(0),
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
3599
|
+
scrollY = _useState10[0],
|
|
3600
|
+
setScrollY = _useState10[1];
|
|
3601
|
+
var _useState11 = useState(0),
|
|
3602
|
+
scrollXLeft = _useState11[0],
|
|
3603
|
+
setScrollXLeft = _useState11[1];
|
|
3604
|
+
var _useState12 = useState(-1),
|
|
3605
|
+
scrollXRight = _useState12[0],
|
|
3606
|
+
setScrollXRight = _useState12[1];
|
|
3607
|
+
var _useState13 = useState(1430),
|
|
3608
|
+
leftScrollerWidth = _useState13[0],
|
|
3609
|
+
setLeftScrollerWidth = _useState13[1];
|
|
3610
|
+
var ignoreScrollLeftRef = useRef(false);
|
|
3611
|
+
var ignoreScrollRightRef = useRef(false);
|
|
2400
3612
|
useEffect(function () {
|
|
2401
3613
|
var filteredTasks;
|
|
2402
|
-
|
|
2403
3614
|
if (onExpanderClick) {
|
|
2404
3615
|
filteredTasks = removeHiddenTasks(tasks);
|
|
2405
3616
|
} else {
|
|
2406
3617
|
filteredTasks = tasks;
|
|
2407
3618
|
}
|
|
2408
|
-
|
|
2409
3619
|
filteredTasks = filteredTasks.sort(sortTasks);
|
|
2410
|
-
|
|
2411
3620
|
var _ganttDateRange2 = ganttDateRange(filteredTasks, viewMode, preStepsCount),
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
3621
|
+
startDate = _ganttDateRange2[0],
|
|
3622
|
+
endDate = _ganttDateRange2[1];
|
|
2415
3623
|
var newDates = seedDates(startDate, endDate, viewMode);
|
|
2416
|
-
|
|
2417
3624
|
if (rtl) {
|
|
2418
3625
|
newDates = newDates.reverse();
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
setScrollX(newDates.length * columnWidth);
|
|
3626
|
+
if (scrollXRight === -1) {
|
|
3627
|
+
setScrollXRight(newDates.length * columnWidth);
|
|
2422
3628
|
}
|
|
2423
3629
|
}
|
|
2424
|
-
|
|
2425
3630
|
setDateSetup({
|
|
2426
3631
|
dates: newDates,
|
|
2427
3632
|
viewMode: viewMode
|
|
2428
3633
|
});
|
|
2429
3634
|
setBarTasks(convertToBarTasks(filteredTasks, newDates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor));
|
|
2430
|
-
}, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, columnWidth, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl,
|
|
3635
|
+
}, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, columnWidth, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, scrollXRight, onExpanderClick]);
|
|
2431
3636
|
useEffect(function () {
|
|
2432
3637
|
if (viewMode === dateSetup.viewMode && (viewDate && !currentViewDate || viewDate && (currentViewDate === null || currentViewDate === void 0 ? void 0 : currentViewDate.valueOf()) !== viewDate.valueOf())) {
|
|
2433
3638
|
var dates = dateSetup.dates;
|
|
2434
3639
|
var index = dates.findIndex(function (d, i) {
|
|
2435
3640
|
return viewDate.valueOf() >= d.valueOf() && i + 1 !== dates.length && viewDate.valueOf() < dates[i + 1].valueOf();
|
|
2436
3641
|
});
|
|
2437
|
-
|
|
2438
3642
|
if (index === -1) {
|
|
2439
3643
|
return;
|
|
2440
3644
|
}
|
|
2441
|
-
|
|
2442
3645
|
setCurrentViewDate(viewDate);
|
|
2443
|
-
|
|
3646
|
+
setScrollXRight(columnWidth * index);
|
|
2444
3647
|
}
|
|
2445
3648
|
}, [viewDate, columnWidth, dateSetup.dates, dateSetup.viewMode, viewMode, currentViewDate, setCurrentViewDate]);
|
|
2446
3649
|
useEffect(function () {
|
|
2447
3650
|
var changedTask = ganttEvent.changedTask,
|
|
2448
|
-
|
|
2449
|
-
|
|
3651
|
+
action = ganttEvent.action;
|
|
2450
3652
|
if (changedTask) {
|
|
2451
3653
|
if (action === "delete") {
|
|
2452
3654
|
setGanttEvent({
|
|
@@ -2459,7 +3661,6 @@ var Gantt = function Gantt(_ref) {
|
|
|
2459
3661
|
var prevStateTask = barTasks.find(function (t) {
|
|
2460
3662
|
return t.id === changedTask.id;
|
|
2461
3663
|
});
|
|
2462
|
-
|
|
2463
3664
|
if (prevStateTask && (prevStateTask.start.getTime() !== changedTask.start.getTime() || prevStateTask.end.getTime() !== changedTask.end.getTime() || prevStateTask.progress !== changedTask.progress)) {
|
|
2464
3665
|
var newTaskList = barTasks.map(function (t) {
|
|
2465
3666
|
return t.id === changedTask.id ? changedTask : t;
|
|
@@ -2477,20 +3678,35 @@ var Gantt = function Gantt(_ref) {
|
|
|
2477
3678
|
setFailedTask(null);
|
|
2478
3679
|
}
|
|
2479
3680
|
}, [failedTask, barTasks]);
|
|
3681
|
+
useEffect(function () {
|
|
3682
|
+
var updateWrapperWidth = function updateWrapperWidth() {
|
|
3683
|
+
if (wrapperRef.current) {
|
|
3684
|
+
setWrapperWidth(wrapperRef.current.offsetWidth);
|
|
3685
|
+
}
|
|
3686
|
+
};
|
|
3687
|
+
updateWrapperWidth();
|
|
3688
|
+
window.addEventListener("resize", updateWrapperWidth);
|
|
3689
|
+
return function () {
|
|
3690
|
+
return window.removeEventListener("resize", updateWrapperWidth);
|
|
3691
|
+
};
|
|
3692
|
+
}, []);
|
|
2480
3693
|
useEffect(function () {
|
|
2481
3694
|
if (!listCellWidth) {
|
|
2482
3695
|
setTaskListWidth(0);
|
|
3696
|
+
return;
|
|
2483
3697
|
}
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
3698
|
+
if (wrapperWidth) {
|
|
3699
|
+
setTaskListWidth(function (prev) {
|
|
3700
|
+
return clampTaskListWidth(prev, wrapperWidth);
|
|
3701
|
+
});
|
|
2487
3702
|
}
|
|
2488
|
-
}, [
|
|
3703
|
+
}, [listCellWidth, wrapperWidth]);
|
|
3704
|
+
var taskListOffset = listCellWidth ? taskListWidth + SPLIT_HANDLE_WIDTH : 0;
|
|
2489
3705
|
useEffect(function () {
|
|
2490
|
-
if (
|
|
2491
|
-
setSvgContainerWidth(
|
|
3706
|
+
if (wrapperWidth) {
|
|
3707
|
+
setSvgContainerWidth(Math.max(wrapperWidth - taskListOffset, 0));
|
|
2492
3708
|
}
|
|
2493
|
-
}, [
|
|
3709
|
+
}, [wrapperWidth, taskListOffset]);
|
|
2494
3710
|
useEffect(function () {
|
|
2495
3711
|
if (ganttHeight) {
|
|
2496
3712
|
setSvgContainerHeight(ganttHeight + headerHeight);
|
|
@@ -2499,118 +3715,147 @@ var Gantt = function Gantt(_ref) {
|
|
|
2499
3715
|
}
|
|
2500
3716
|
}, [ganttHeight, tasks, headerHeight, rowHeight]);
|
|
2501
3717
|
useEffect(function () {
|
|
2502
|
-
|
|
2503
|
-
|
|
3718
|
+
return function () {
|
|
3719
|
+
if (splitMoveHandlerRef.current) {
|
|
3720
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3721
|
+
splitMoveHandlerRef.current = null;
|
|
3722
|
+
}
|
|
3723
|
+
if (splitUpHandlerRef.current) {
|
|
3724
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3725
|
+
splitUpHandlerRef.current = null;
|
|
3726
|
+
}
|
|
3727
|
+
};
|
|
3728
|
+
}, []);
|
|
3729
|
+
useEffect(function () {
|
|
2504
3730
|
var handleWheel = function handleWheel(event) {
|
|
2505
3731
|
if (event.shiftKey || event.deltaX) {
|
|
2506
3732
|
var scrollMove = event.deltaX ? event.deltaX : event.deltaY;
|
|
2507
|
-
var newScrollX =
|
|
2508
|
-
|
|
3733
|
+
var newScrollX = scrollXRight + scrollMove;
|
|
2509
3734
|
if (newScrollX < 0) {
|
|
2510
3735
|
newScrollX = 0;
|
|
2511
3736
|
} else if (newScrollX > svgWidth) {
|
|
2512
3737
|
newScrollX = svgWidth;
|
|
2513
3738
|
}
|
|
2514
|
-
|
|
2515
|
-
|
|
3739
|
+
ignoreScrollRightRef.current = true;
|
|
3740
|
+
setScrollXRight(newScrollX);
|
|
2516
3741
|
event.preventDefault();
|
|
2517
3742
|
} else if (ganttHeight) {
|
|
2518
3743
|
var newScrollY = scrollY + event.deltaY;
|
|
2519
|
-
|
|
2520
3744
|
if (newScrollY < 0) {
|
|
2521
3745
|
newScrollY = 0;
|
|
2522
3746
|
} else if (newScrollY > ganttFullHeight - ganttHeight) {
|
|
2523
3747
|
newScrollY = ganttFullHeight - ganttHeight;
|
|
2524
3748
|
}
|
|
2525
|
-
|
|
2526
3749
|
if (newScrollY !== scrollY) {
|
|
2527
3750
|
setScrollY(newScrollY);
|
|
2528
3751
|
event.preventDefault();
|
|
2529
3752
|
}
|
|
2530
3753
|
}
|
|
2531
|
-
|
|
2532
|
-
setIgnoreScrollEvent(true);
|
|
2533
3754
|
};
|
|
2534
|
-
|
|
2535
|
-
|
|
3755
|
+
var wrapperEl = wrapperRef.current;
|
|
3756
|
+
wrapperEl === null || wrapperEl === void 0 ? void 0 : wrapperEl.addEventListener("wheel", handleWheel, {
|
|
2536
3757
|
passive: false
|
|
2537
3758
|
});
|
|
2538
3759
|
return function () {
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
(_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.removeEventListener("wheel", handleWheel);
|
|
3760
|
+
wrapperEl === null || wrapperEl === void 0 ? void 0 : wrapperEl.removeEventListener("wheel", handleWheel);
|
|
2542
3761
|
};
|
|
2543
|
-
}, [
|
|
2544
|
-
|
|
3762
|
+
}, [scrollY, scrollXRight, ganttHeight, svgWidth, rtl, ganttFullHeight]);
|
|
3763
|
+
useEffect(function () {
|
|
3764
|
+
var updateLeftScroller = function updateLeftScroller() {
|
|
3765
|
+
var el = taskListBodyRef.current;
|
|
3766
|
+
if (el) {
|
|
3767
|
+
setLeftScrollerWidth(el.scrollWidth || 0);
|
|
3768
|
+
}
|
|
3769
|
+
};
|
|
3770
|
+
updateLeftScroller();
|
|
3771
|
+
var RO = window.ResizeObserver;
|
|
3772
|
+
var ro = RO ? new RO(updateLeftScroller) : null;
|
|
3773
|
+
if (ro && taskListBodyRef.current) {
|
|
3774
|
+
ro.observe(taskListBodyRef.current);
|
|
3775
|
+
}
|
|
3776
|
+
window.addEventListener("resize", updateLeftScroller);
|
|
3777
|
+
return function () {
|
|
3778
|
+
if (ro) {
|
|
3779
|
+
ro.disconnect();
|
|
3780
|
+
}
|
|
3781
|
+
window.removeEventListener("resize", updateLeftScroller);
|
|
3782
|
+
};
|
|
3783
|
+
}, [tasks, fontFamily, fontSize, listCellWidth, taskListBodyRef, visibleFields]);
|
|
2545
3784
|
var handleScrollY = function handleScrollY(event) {
|
|
2546
|
-
if (scrollY !== event.currentTarget.scrollTop && !
|
|
3785
|
+
if (scrollY !== event.currentTarget.scrollTop && !ignoreScrollLeftRef.current) {
|
|
2547
3786
|
setScrollY(event.currentTarget.scrollTop);
|
|
2548
|
-
|
|
3787
|
+
ignoreScrollLeftRef.current = true;
|
|
2549
3788
|
} else {
|
|
2550
|
-
|
|
3789
|
+
ignoreScrollLeftRef.current = false;
|
|
2551
3790
|
}
|
|
2552
3791
|
};
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
setIgnoreScrollEvent(true);
|
|
3792
|
+
var handleScrollLeft = function handleScrollLeft(event) {
|
|
3793
|
+
if (scrollXLeft !== event.currentTarget.scrollLeft && !ignoreScrollLeftRef.current) {
|
|
3794
|
+
setScrollXLeft(event.currentTarget.scrollLeft);
|
|
3795
|
+
ignoreScrollLeftRef.current = true;
|
|
2558
3796
|
} else {
|
|
2559
|
-
|
|
3797
|
+
ignoreScrollLeftRef.current = false;
|
|
3798
|
+
}
|
|
3799
|
+
};
|
|
3800
|
+
var handleScrollRight = function handleScrollRight(event) {
|
|
3801
|
+
if (scrollXRight !== event.currentTarget.scrollLeft && !ignoreScrollRightRef.current) {
|
|
3802
|
+
setScrollXRight(event.currentTarget.scrollLeft);
|
|
3803
|
+
ignoreScrollRightRef.current = true;
|
|
3804
|
+
} else {
|
|
3805
|
+
ignoreScrollRightRef.current = false;
|
|
3806
|
+
}
|
|
3807
|
+
if (ganttContainerRef.current && ganttContainerRef.current.scrollLeft !== event.currentTarget.scrollLeft) {
|
|
3808
|
+
ganttContainerRef.current.scrollLeft = event.currentTarget.scrollLeft;
|
|
2560
3809
|
}
|
|
2561
3810
|
};
|
|
2562
|
-
|
|
2563
3811
|
var handleKeyDown = function handleKeyDown(event) {
|
|
3812
|
+
var target = event.target;
|
|
3813
|
+
if (target instanceof HTMLElement) {
|
|
3814
|
+
if (target.isContentEditable || target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.tagName === "SELECT") {
|
|
3815
|
+
return;
|
|
3816
|
+
}
|
|
3817
|
+
}
|
|
2564
3818
|
event.preventDefault();
|
|
2565
3819
|
var newScrollY = scrollY;
|
|
2566
|
-
var newScrollX =
|
|
3820
|
+
var newScrollX = scrollXRight;
|
|
2567
3821
|
var isX = true;
|
|
2568
|
-
|
|
2569
3822
|
switch (event.key) {
|
|
2570
3823
|
case "Down":
|
|
2571
3824
|
case "ArrowDown":
|
|
2572
3825
|
newScrollY += rowHeight;
|
|
2573
3826
|
isX = false;
|
|
2574
3827
|
break;
|
|
2575
|
-
|
|
2576
3828
|
case "Up":
|
|
2577
3829
|
case "ArrowUp":
|
|
2578
3830
|
newScrollY -= rowHeight;
|
|
2579
3831
|
isX = false;
|
|
2580
3832
|
break;
|
|
2581
|
-
|
|
2582
3833
|
case "Left":
|
|
2583
3834
|
case "ArrowLeft":
|
|
2584
3835
|
newScrollX -= columnWidth;
|
|
2585
3836
|
break;
|
|
2586
|
-
|
|
2587
3837
|
case "Right":
|
|
2588
3838
|
case "ArrowRight":
|
|
2589
3839
|
newScrollX += columnWidth;
|
|
2590
3840
|
break;
|
|
2591
3841
|
}
|
|
2592
|
-
|
|
2593
3842
|
if (isX) {
|
|
2594
3843
|
if (newScrollX < 0) {
|
|
2595
3844
|
newScrollX = 0;
|
|
2596
3845
|
} else if (newScrollX > svgWidth) {
|
|
2597
3846
|
newScrollX = svgWidth;
|
|
2598
3847
|
}
|
|
2599
|
-
|
|
2600
|
-
|
|
3848
|
+
ignoreScrollRightRef.current = true;
|
|
3849
|
+
setScrollXRight(newScrollX);
|
|
2601
3850
|
} else {
|
|
2602
3851
|
if (newScrollY < 0) {
|
|
2603
3852
|
newScrollY = 0;
|
|
2604
3853
|
} else if (newScrollY > ganttFullHeight - ganttHeight) {
|
|
2605
3854
|
newScrollY = ganttFullHeight - ganttHeight;
|
|
2606
3855
|
}
|
|
2607
|
-
|
|
2608
3856
|
setScrollY(newScrollY);
|
|
2609
3857
|
}
|
|
2610
|
-
|
|
2611
|
-
setIgnoreScrollEvent(true);
|
|
2612
3858
|
};
|
|
2613
|
-
|
|
2614
3859
|
var handleSelectedTask = function handleSelectedTask(taskId) {
|
|
2615
3860
|
var newSelectedTask = barTasks.find(function (t) {
|
|
2616
3861
|
return t.id === taskId;
|
|
@@ -2618,20 +3863,16 @@ var Gantt = function Gantt(_ref) {
|
|
|
2618
3863
|
var oldSelectedTask = barTasks.find(function (t) {
|
|
2619
3864
|
return !!selectedTask && t.id === selectedTask.id;
|
|
2620
3865
|
});
|
|
2621
|
-
|
|
2622
3866
|
if (onSelect) {
|
|
2623
3867
|
if (oldSelectedTask) {
|
|
2624
3868
|
onSelect(oldSelectedTask, false);
|
|
2625
3869
|
}
|
|
2626
|
-
|
|
2627
3870
|
if (newSelectedTask) {
|
|
2628
3871
|
onSelect(newSelectedTask, true);
|
|
2629
3872
|
}
|
|
2630
3873
|
}
|
|
2631
|
-
|
|
2632
3874
|
setSelectedTask(newSelectedTask);
|
|
2633
3875
|
};
|
|
2634
|
-
|
|
2635
3876
|
var handleExpanderClick = function handleExpanderClick(task) {
|
|
2636
3877
|
if (onExpanderClick && task.hideChildren !== undefined) {
|
|
2637
3878
|
onExpanderClick(_extends({}, task, {
|
|
@@ -2639,7 +3880,69 @@ var Gantt = function Gantt(_ref) {
|
|
|
2639
3880
|
}));
|
|
2640
3881
|
}
|
|
2641
3882
|
};
|
|
2642
|
-
|
|
3883
|
+
var updateTaskListWidth = function updateTaskListWidth(clientX) {
|
|
3884
|
+
if (splitStartXRef.current == null || splitStartWidthRef.current == null) {
|
|
3885
|
+
return;
|
|
3886
|
+
}
|
|
3887
|
+
if (!wrapperRef.current) {
|
|
3888
|
+
return;
|
|
3889
|
+
}
|
|
3890
|
+
var delta = clientX - splitStartXRef.current;
|
|
3891
|
+
var nextWidth = clampTaskListWidth(splitStartWidthRef.current + delta, wrapperRef.current.offsetWidth);
|
|
3892
|
+
setTaskListWidth(nextWidth);
|
|
3893
|
+
};
|
|
3894
|
+
var handleSplitPointerDown = function handleSplitPointerDown(event) {
|
|
3895
|
+
event.preventDefault();
|
|
3896
|
+
splitStartXRef.current = event.clientX;
|
|
3897
|
+
splitStartWidthRef.current = taskListWidth;
|
|
3898
|
+
setIsResizing(true);
|
|
3899
|
+
if (event.currentTarget.setPointerCapture) {
|
|
3900
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
3901
|
+
}
|
|
3902
|
+
};
|
|
3903
|
+
var handleSplitPointerMove = function handleSplitPointerMove(event) {
|
|
3904
|
+
updateTaskListWidth(event.clientX);
|
|
3905
|
+
};
|
|
3906
|
+
var handleSplitPointerUp = function handleSplitPointerUp(event) {
|
|
3907
|
+
splitStartXRef.current = null;
|
|
3908
|
+
splitStartWidthRef.current = null;
|
|
3909
|
+
setIsResizing(false);
|
|
3910
|
+
if (event.currentTarget.releasePointerCapture) {
|
|
3911
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
3912
|
+
}
|
|
3913
|
+
};
|
|
3914
|
+
var handleSplitMouseDown = function handleSplitMouseDown(event) {
|
|
3915
|
+
event.preventDefault();
|
|
3916
|
+
splitStartXRef.current = event.clientX;
|
|
3917
|
+
splitStartWidthRef.current = taskListWidth;
|
|
3918
|
+
setIsResizing(true);
|
|
3919
|
+
if (splitMoveHandlerRef.current) {
|
|
3920
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3921
|
+
}
|
|
3922
|
+
if (splitUpHandlerRef.current) {
|
|
3923
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3924
|
+
}
|
|
3925
|
+
var handleMouseMove = function handleMouseMove(moveEvent) {
|
|
3926
|
+
updateTaskListWidth(moveEvent.clientX);
|
|
3927
|
+
};
|
|
3928
|
+
var handleMouseUp = function handleMouseUp() {
|
|
3929
|
+
splitStartXRef.current = null;
|
|
3930
|
+
splitStartWidthRef.current = null;
|
|
3931
|
+
setIsResizing(false);
|
|
3932
|
+
if (splitMoveHandlerRef.current) {
|
|
3933
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3934
|
+
splitMoveHandlerRef.current = null;
|
|
3935
|
+
}
|
|
3936
|
+
if (splitUpHandlerRef.current) {
|
|
3937
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3938
|
+
splitUpHandlerRef.current = null;
|
|
3939
|
+
}
|
|
3940
|
+
};
|
|
3941
|
+
splitMoveHandlerRef.current = handleMouseMove;
|
|
3942
|
+
splitUpHandlerRef.current = handleMouseUp;
|
|
3943
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
3944
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
3945
|
+
};
|
|
2643
3946
|
var gridProps = {
|
|
2644
3947
|
columnWidth: columnWidth,
|
|
2645
3948
|
svgWidth: svgWidth,
|
|
@@ -2647,7 +3950,8 @@ var Gantt = function Gantt(_ref) {
|
|
|
2647
3950
|
rowHeight: rowHeight,
|
|
2648
3951
|
dates: dateSetup.dates,
|
|
2649
3952
|
todayColor: todayColor,
|
|
2650
|
-
rtl: rtl
|
|
3953
|
+
rtl: rtl,
|
|
3954
|
+
calendarConfig: calendarConfig
|
|
2651
3955
|
};
|
|
2652
3956
|
var calendarProps = {
|
|
2653
3957
|
dateSetup: dateSetup,
|
|
@@ -2657,7 +3961,8 @@ var Gantt = function Gantt(_ref) {
|
|
|
2657
3961
|
columnWidth: columnWidth,
|
|
2658
3962
|
fontFamily: fontFamily,
|
|
2659
3963
|
fontSize: fontSize,
|
|
2660
|
-
rtl: rtl
|
|
3964
|
+
rtl: rtl,
|
|
3965
|
+
calendarConfig: calendarConfig
|
|
2661
3966
|
};
|
|
2662
3967
|
var barProps = {
|
|
2663
3968
|
tasks: barTasks,
|
|
@@ -2689,45 +3994,78 @@ var Gantt = function Gantt(_ref) {
|
|
|
2689
3994
|
fontFamily: fontFamily,
|
|
2690
3995
|
fontSize: fontSize,
|
|
2691
3996
|
tasks: barTasks,
|
|
2692
|
-
locale: locale,
|
|
2693
3997
|
headerHeight: headerHeight,
|
|
2694
3998
|
scrollY: scrollY,
|
|
3999
|
+
horizontalScroll: scrollXLeft,
|
|
2695
4000
|
ganttHeight: ganttHeight,
|
|
2696
4001
|
horizontalContainerClass: styles$9.horizontalContainer,
|
|
4002
|
+
headerContainerRef: taskListHeaderRef,
|
|
4003
|
+
bodyContainerRef: taskListBodyRef,
|
|
4004
|
+
onHorizontalScroll: handleScrollLeft,
|
|
2697
4005
|
selectedTask: selectedTask,
|
|
2698
4006
|
taskListRef: taskListRef,
|
|
2699
4007
|
setSelectedTask: handleSelectedTask,
|
|
2700
4008
|
onExpanderClick: handleExpanderClick,
|
|
2701
4009
|
TaskListHeader: TaskListHeader,
|
|
2702
|
-
TaskListTable: TaskListTable
|
|
4010
|
+
TaskListTable: TaskListTable,
|
|
4011
|
+
visibleFields: visibleFields,
|
|
4012
|
+
onUpdateTask: onTaskUpdate,
|
|
4013
|
+
onCellCommit: onCellCommit,
|
|
4014
|
+
effortDisplayUnit: effortDisplayUnit,
|
|
4015
|
+
enableColumnDrag: enableColumnDrag
|
|
2703
4016
|
};
|
|
2704
4017
|
return React.createElement("div", null, React.createElement("div", {
|
|
2705
4018
|
className: styles$9.wrapper,
|
|
2706
4019
|
onKeyDown: handleKeyDown,
|
|
2707
4020
|
tabIndex: 0,
|
|
2708
4021
|
ref: wrapperRef
|
|
2709
|
-
}, listCellWidth && React.createElement(
|
|
4022
|
+
}, listCellWidth && React.createElement("div", {
|
|
4023
|
+
className: styles$9.taskListPanel,
|
|
4024
|
+
style: {
|
|
4025
|
+
width: taskListWidth
|
|
4026
|
+
},
|
|
4027
|
+
"data-testid": "task-list-panel"
|
|
4028
|
+
}, React.createElement(TaskList, Object.assign({}, tableProps))), listCellWidth && React.createElement("div", {
|
|
4029
|
+
className: styles$9.splitHandle + " " + (isResizing ? styles$9.splitHandleActive : ""),
|
|
4030
|
+
onPointerDown: supportsPointerEvents ? handleSplitPointerDown : undefined,
|
|
4031
|
+
onPointerMove: supportsPointerEvents ? handleSplitPointerMove : undefined,
|
|
4032
|
+
onPointerUp: supportsPointerEvents ? handleSplitPointerUp : undefined,
|
|
4033
|
+
onPointerCancel: supportsPointerEvents ? handleSplitPointerUp : undefined,
|
|
4034
|
+
onMouseDown: supportsPointerEvents ? undefined : handleSplitMouseDown,
|
|
4035
|
+
role: "separator",
|
|
4036
|
+
"aria-label": "Task/Schedule divider",
|
|
4037
|
+
"aria-orientation": "vertical",
|
|
4038
|
+
"data-testid": "pane-splitter"
|
|
4039
|
+
}), React.createElement("div", {
|
|
4040
|
+
className: styles$9.ganttPanel,
|
|
4041
|
+
style: {
|
|
4042
|
+
minWidth: MIN_PANE_WIDTH
|
|
4043
|
+
},
|
|
4044
|
+
"data-testid": "gantt-panel"
|
|
4045
|
+
}, React.createElement(TaskGantt, {
|
|
2710
4046
|
gridProps: gridProps,
|
|
2711
4047
|
calendarProps: calendarProps,
|
|
2712
4048
|
barProps: barProps,
|
|
2713
4049
|
ganttHeight: ganttHeight,
|
|
2714
4050
|
scrollY: scrollY,
|
|
2715
|
-
scrollX:
|
|
2716
|
-
|
|
4051
|
+
scrollX: scrollXRight,
|
|
4052
|
+
verticalGanttContainerRef: ganttContainerRef
|
|
4053
|
+
})), ganttEvent.changedTask && React.createElement(Tooltip, {
|
|
2717
4054
|
arrowIndent: arrowIndent,
|
|
2718
4055
|
rowHeight: rowHeight,
|
|
2719
4056
|
svgContainerHeight: svgContainerHeight,
|
|
2720
4057
|
svgContainerWidth: svgContainerWidth,
|
|
2721
4058
|
fontFamily: fontFamily,
|
|
2722
4059
|
fontSize: fontSize,
|
|
2723
|
-
scrollX:
|
|
4060
|
+
scrollX: scrollXRight,
|
|
2724
4061
|
scrollY: scrollY,
|
|
2725
4062
|
task: ganttEvent.changedTask,
|
|
2726
4063
|
headerHeight: headerHeight,
|
|
2727
|
-
taskListWidth:
|
|
4064
|
+
taskListWidth: taskListOffset,
|
|
2728
4065
|
TooltipContent: TooltipContent,
|
|
2729
4066
|
rtl: rtl,
|
|
2730
|
-
svgWidth: svgWidth
|
|
4067
|
+
svgWidth: svgWidth,
|
|
4068
|
+
effortDisplayUnit: effortDisplayUnit
|
|
2731
4069
|
}), React.createElement(VerticalScroll, {
|
|
2732
4070
|
ganttFullHeight: ganttFullHeight,
|
|
2733
4071
|
ganttHeight: ganttHeight,
|
|
@@ -2735,14 +4073,30 @@ var Gantt = function Gantt(_ref) {
|
|
|
2735
4073
|
scroll: scrollY,
|
|
2736
4074
|
onScroll: handleScrollY,
|
|
2737
4075
|
rtl: rtl
|
|
2738
|
-
})), React.createElement(
|
|
4076
|
+
})), React.createElement("div", {
|
|
4077
|
+
className: styles$9.scrollRow,
|
|
4078
|
+
style: {
|
|
4079
|
+
"--splitter-width": SPLIT_HANDLE_WIDTH + "px"
|
|
4080
|
+
}
|
|
4081
|
+
}, React.createElement("div", {
|
|
4082
|
+
className: styles$9.scrollCellLeft
|
|
4083
|
+
}, listCellWidth && React.createElement(HorizontalScroll, {
|
|
4084
|
+
svgWidth: taskListWidth,
|
|
4085
|
+
scrollerWidth: leftScrollerWidth,
|
|
4086
|
+
scroll: scrollXLeft,
|
|
4087
|
+
rtl: rtl,
|
|
4088
|
+
onScroll: handleScrollLeft
|
|
4089
|
+
})), listCellWidth && React.createElement("div", {
|
|
4090
|
+
className: styles$9.scrollSplitter
|
|
4091
|
+
}), React.createElement("div", {
|
|
4092
|
+
className: styles$9.scrollCellRight
|
|
4093
|
+
}, React.createElement(HorizontalScroll, {
|
|
2739
4094
|
svgWidth: svgWidth,
|
|
2740
|
-
|
|
2741
|
-
scroll: scrollX,
|
|
4095
|
+
scroll: scrollXRight,
|
|
2742
4096
|
rtl: rtl,
|
|
2743
|
-
onScroll:
|
|
2744
|
-
}));
|
|
4097
|
+
onScroll: handleScrollRight
|
|
4098
|
+
}))));
|
|
2745
4099
|
};
|
|
2746
4100
|
|
|
2747
|
-
export { Gantt, ViewMode };
|
|
4101
|
+
export { DEFAULT_VISIBLE_FIELDS, Gantt, TASK_PROCESS_OPTIONS, TASK_STATUS_BADGE_TEXT, TASK_STATUS_COLORS, TASK_STATUS_OPTIONS, ViewMode, formatDate, formatEffort, getStatusBadgeText, getStatusColor, normalizeProcess, normalizeStatus, parseDateFromInput, resolveVisibleFields, sanitizeEffortInput };
|
|
2748
4102
|
//# sourceMappingURL=index.modern.js.map
|