@levelcaptech/gantt-task-react-custom 0.1.0 → 0.4.1
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 +90 -77
- package/dist/components/gantt/task-gantt.d.ts +1 -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/task-helper.d.ts +11 -0
- package/dist/index.css +223 -12
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2057 -862
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +2045 -865
- package/dist/index.modern.js.map +1 -1
- 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 +50 -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);
|
|
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;
|
|
28
11
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return arr2;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
39
|
-
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
40
|
-
if (it) return (it = it.call(o)).next.bind(it);
|
|
41
|
-
|
|
42
|
-
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
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,209 +218,1449 @@ 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
|
+
};
|
|
235
|
+
|
|
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) {
|
|
737
|
+
var headerHeight = _ref.headerHeight,
|
|
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]);
|
|
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", {
|
|
1128
|
+
className: styles.ganttTable,
|
|
1129
|
+
style: {
|
|
1130
|
+
fontFamily: fontFamily,
|
|
1131
|
+
fontSize: fontSize
|
|
1132
|
+
}
|
|
1133
|
+
}, React.createElement("div", {
|
|
1134
|
+
className: styles.ganttTable_Header,
|
|
1135
|
+
style: {
|
|
1136
|
+
height: headerHeight - 2
|
|
1137
|
+
}
|
|
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
|
+
};
|
|
268
1266
|
|
|
269
|
-
var
|
|
270
|
-
var
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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;
|
|
279
1317
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
1318
|
+
return {
|
|
1319
|
+
rowIndex: rowIndex,
|
|
1320
|
+
columnIndex: columnIndex
|
|
1321
|
+
};
|
|
1322
|
+
};
|
|
1323
|
+
var resolveSelectedCell = function resolveSelectedCell() {
|
|
1324
|
+
if (!editingState || editingState.mode !== "selected") {
|
|
1325
|
+
return null;
|
|
284
1326
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
minWidth: rowWidth
|
|
1327
|
+
var columnId = editingState.columnId;
|
|
1328
|
+
if (!columnId || !columnIds.includes(columnId)) {
|
|
1329
|
+
return null;
|
|
289
1330
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
1331
|
+
var task = tasks.find(function (row) {
|
|
1332
|
+
return row.id === editingState.rowId;
|
|
1333
|
+
});
|
|
1334
|
+
if (!task) {
|
|
1335
|
+
return null;
|
|
295
1336
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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;
|
|
300
1367
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
1368
|
+
selectCell(tasks[rowIndex].id, columnIds[columnIndex]);
|
|
1369
|
+
};
|
|
1370
|
+
var shouldIgnoreKeyEvent = function shouldIgnoreKeyEvent(target) {
|
|
1371
|
+
if (!(target instanceof HTMLElement)) {
|
|
1372
|
+
return false;
|
|
306
1373
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
style: {
|
|
310
|
-
minWidth: rowWidth
|
|
1374
|
+
if (target.isContentEditable) {
|
|
1375
|
+
return true;
|
|
311
1376
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
var
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
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;
|
|
1389
|
+
}
|
|
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;
|
|
1407
|
+
}
|
|
1408
|
+
if ((editingState === null || editingState === void 0 ? void 0 : editingState.mode) !== "selected") {
|
|
1409
|
+
return;
|
|
1410
|
+
}
|
|
1411
|
+
var selectedCell = resolveSelectedCell();
|
|
1412
|
+
if (!selectedCell || !startEditing) {
|
|
1413
|
+
return;
|
|
1414
|
+
}
|
|
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;
|
|
1427
|
+
}
|
|
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
|
-
},
|
|
503
|
-
className: styles$2.
|
|
504
|
-
},
|
|
1748
|
+
}, getStatusBadgeText(normalizedStatus)), React.createElement("span", {
|
|
1749
|
+
className: styles$2.tooltipStatusText
|
|
1750
|
+
}, normalizedStatus))), !!task.progress && React.createElement("p", {
|
|
505
1751
|
className: styles$2.tooltipDefaultContainerParagraph
|
|
506
|
-
},
|
|
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,16 @@ var VerticalScroll = function VerticalScroll(_ref) {
|
|
|
538
1786
|
}));
|
|
539
1787
|
};
|
|
540
1788
|
|
|
541
|
-
var TaskList = function TaskList(_ref) {
|
|
542
|
-
var headerHeight = _ref.headerHeight,
|
|
543
|
-
fontFamily = _ref.fontFamily,
|
|
544
|
-
fontSize = _ref.fontSize,
|
|
545
|
-
rowWidth = _ref.rowWidth,
|
|
546
|
-
rowHeight = _ref.rowHeight,
|
|
547
|
-
scrollY = _ref.scrollY,
|
|
548
|
-
tasks = _ref.tasks,
|
|
549
|
-
selectedTask = _ref.selectedTask,
|
|
550
|
-
setSelectedTask = _ref.setSelectedTask,
|
|
551
|
-
onExpanderClick = _ref.onExpanderClick,
|
|
552
|
-
locale = _ref.locale,
|
|
553
|
-
ganttHeight = _ref.ganttHeight,
|
|
554
|
-
taskListRef = _ref.taskListRef,
|
|
555
|
-
horizontalContainerClass = _ref.horizontalContainerClass,
|
|
556
|
-
TaskListHeader = _ref.TaskListHeader,
|
|
557
|
-
TaskListTable = _ref.TaskListTable;
|
|
558
|
-
var horizontalContainerRef = useRef(null);
|
|
559
|
-
useEffect(function () {
|
|
560
|
-
if (horizontalContainerRef.current) {
|
|
561
|
-
horizontalContainerRef.current.scrollTop = scrollY;
|
|
562
|
-
}
|
|
563
|
-
}, [scrollY]);
|
|
564
|
-
var headerProps = {
|
|
565
|
-
headerHeight: headerHeight,
|
|
566
|
-
fontFamily: fontFamily,
|
|
567
|
-
fontSize: fontSize,
|
|
568
|
-
rowWidth: rowWidth
|
|
569
|
-
};
|
|
570
|
-
var selectedTaskId = selectedTask ? selectedTask.id : "";
|
|
571
|
-
var tableProps = {
|
|
572
|
-
rowHeight: rowHeight,
|
|
573
|
-
rowWidth: rowWidth,
|
|
574
|
-
fontFamily: fontFamily,
|
|
575
|
-
fontSize: fontSize,
|
|
576
|
-
tasks: tasks,
|
|
577
|
-
locale: locale,
|
|
578
|
-
selectedTaskId: selectedTaskId,
|
|
579
|
-
setSelectedTask: setSelectedTask,
|
|
580
|
-
onExpanderClick: onExpanderClick
|
|
581
|
-
};
|
|
582
|
-
return React.createElement("div", {
|
|
583
|
-
ref: taskListRef
|
|
584
|
-
}, React.createElement(TaskListHeader, Object.assign({}, headerProps)), React.createElement("div", {
|
|
585
|
-
ref: horizontalContainerRef,
|
|
586
|
-
className: horizontalContainerClass,
|
|
587
|
-
style: ganttHeight ? {
|
|
588
|
-
height: ganttHeight
|
|
589
|
-
} : {}
|
|
590
|
-
}, React.createElement(TaskListTable, Object.assign({}, tableProps))));
|
|
591
|
-
};
|
|
592
|
-
|
|
593
1789
|
var styles$4 = {"gridRow":"_2dZTy","gridRowLine":"_3rUKi","gridTick":"_RuwuK"};
|
|
594
1790
|
|
|
595
1791
|
var GridBody = function GridBody(_ref) {
|
|
596
1792
|
var tasks = _ref.tasks,
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
1793
|
+
dates = _ref.dates,
|
|
1794
|
+
rowHeight = _ref.rowHeight,
|
|
1795
|
+
svgWidth = _ref.svgWidth,
|
|
1796
|
+
columnWidth = _ref.columnWidth,
|
|
1797
|
+
todayColor = _ref.todayColor,
|
|
1798
|
+
rtl = _ref.rtl;
|
|
603
1799
|
var y = 0;
|
|
604
1800
|
var gridRows = [];
|
|
605
1801
|
var rowLines = [React.createElement("line", {
|
|
@@ -610,7 +1806,6 @@ var GridBody = function GridBody(_ref) {
|
|
|
610
1806
|
y2: 0,
|
|
611
1807
|
className: styles$4.gridRowLine
|
|
612
1808
|
})];
|
|
613
|
-
|
|
614
1809
|
for (var _iterator = _createForOfIteratorHelperLoose(tasks), _step; !(_step = _iterator()).done;) {
|
|
615
1810
|
var task = _step.value;
|
|
616
1811
|
gridRows.push(React.createElement("rect", {
|
|
@@ -631,12 +1826,10 @@ var GridBody = function GridBody(_ref) {
|
|
|
631
1826
|
}));
|
|
632
1827
|
y += rowHeight;
|
|
633
1828
|
}
|
|
634
|
-
|
|
635
1829
|
var now = new Date();
|
|
636
1830
|
var tickX = 0;
|
|
637
1831
|
var ticks = [];
|
|
638
1832
|
var today = React.createElement("rect", null);
|
|
639
|
-
|
|
640
1833
|
for (var i = 0; i < dates.length; i++) {
|
|
641
1834
|
var date = dates[i];
|
|
642
1835
|
ticks.push(React.createElement("line", {
|
|
@@ -647,7 +1840,6 @@ var GridBody = function GridBody(_ref) {
|
|
|
647
1840
|
y2: y,
|
|
648
1841
|
className: styles$4.gridTick
|
|
649
1842
|
}));
|
|
650
|
-
|
|
651
1843
|
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
1844
|
today = React.createElement("rect", {
|
|
653
1845
|
x: tickX,
|
|
@@ -657,7 +1849,6 @@ var GridBody = function GridBody(_ref) {
|
|
|
657
1849
|
fill: todayColor
|
|
658
1850
|
});
|
|
659
1851
|
}
|
|
660
|
-
|
|
661
1852
|
if (rtl && i + 1 !== dates.length && date.getTime() >= now.getTime() && dates[i + 1].getTime() < now.getTime()) {
|
|
662
1853
|
today = React.createElement("rect", {
|
|
663
1854
|
x: tickX + columnWidth,
|
|
@@ -667,10 +1858,8 @@ var GridBody = function GridBody(_ref) {
|
|
|
667
1858
|
fill: todayColor
|
|
668
1859
|
});
|
|
669
1860
|
}
|
|
670
|
-
|
|
671
1861
|
tickX += columnWidth;
|
|
672
1862
|
}
|
|
673
|
-
|
|
674
1863
|
return React.createElement("g", {
|
|
675
1864
|
className: "gridBody"
|
|
676
1865
|
}, React.createElement("g", {
|
|
@@ -694,11 +1883,11 @@ var styles$5 = {"calendarBottomText":"_9w8d5","calendarTopTick":"_1rLuZ","calend
|
|
|
694
1883
|
|
|
695
1884
|
var TopPartOfCalendar = function TopPartOfCalendar(_ref) {
|
|
696
1885
|
var value = _ref.value,
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
1886
|
+
x1Line = _ref.x1Line,
|
|
1887
|
+
y1Line = _ref.y1Line,
|
|
1888
|
+
y2Line = _ref.y2Line,
|
|
1889
|
+
xText = _ref.xText,
|
|
1890
|
+
yText = _ref.yText;
|
|
702
1891
|
return React.createElement("g", {
|
|
703
1892
|
className: "calendarTop"
|
|
704
1893
|
}, React.createElement("line", {
|
|
@@ -718,19 +1907,17 @@ var TopPartOfCalendar = function TopPartOfCalendar(_ref) {
|
|
|
718
1907
|
|
|
719
1908
|
var Calendar = function Calendar(_ref) {
|
|
720
1909
|
var dateSetup = _ref.dateSetup,
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
1910
|
+
locale = _ref.locale,
|
|
1911
|
+
viewMode = _ref.viewMode,
|
|
1912
|
+
rtl = _ref.rtl,
|
|
1913
|
+
headerHeight = _ref.headerHeight,
|
|
1914
|
+
columnWidth = _ref.columnWidth,
|
|
1915
|
+
fontFamily = _ref.fontFamily,
|
|
1916
|
+
fontSize = _ref.fontSize;
|
|
729
1917
|
var getCalendarValuesForYear = function getCalendarValuesForYear() {
|
|
730
1918
|
var topValues = [];
|
|
731
1919
|
var bottomValues = [];
|
|
732
1920
|
var topDefaultHeight = headerHeight * 0.5;
|
|
733
|
-
|
|
734
1921
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
735
1922
|
var date = dateSetup.dates[i];
|
|
736
1923
|
var bottomValue = date.getFullYear();
|
|
@@ -740,17 +1927,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
740
1927
|
x: columnWidth * i + columnWidth * 0.5,
|
|
741
1928
|
className: styles$5.calendarBottomText
|
|
742
1929
|
}, bottomValue));
|
|
743
|
-
|
|
744
1930
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
745
1931
|
var topValue = date.getFullYear().toString();
|
|
746
1932
|
var xText = void 0;
|
|
747
|
-
|
|
748
1933
|
if (rtl) {
|
|
749
1934
|
xText = (6 + i + date.getFullYear() + 1) * columnWidth;
|
|
750
1935
|
} else {
|
|
751
1936
|
xText = (6 + i - date.getFullYear()) * columnWidth;
|
|
752
1937
|
}
|
|
753
|
-
|
|
754
1938
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
755
1939
|
key: topValue,
|
|
756
1940
|
value: topValue,
|
|
@@ -762,15 +1946,12 @@ var Calendar = function Calendar(_ref) {
|
|
|
762
1946
|
}));
|
|
763
1947
|
}
|
|
764
1948
|
}
|
|
765
|
-
|
|
766
1949
|
return [topValues, bottomValues];
|
|
767
1950
|
};
|
|
768
|
-
|
|
769
1951
|
var getCalendarValuesForQuarterYear = function getCalendarValuesForQuarterYear() {
|
|
770
1952
|
var topValues = [];
|
|
771
1953
|
var bottomValues = [];
|
|
772
1954
|
var topDefaultHeight = headerHeight * 0.5;
|
|
773
|
-
|
|
774
1955
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
775
1956
|
var date = dateSetup.dates[i];
|
|
776
1957
|
var quarter = "Q" + Math.floor((date.getMonth() + 3) / 3);
|
|
@@ -780,17 +1961,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
780
1961
|
x: columnWidth * i + columnWidth * 0.5,
|
|
781
1962
|
className: styles$5.calendarBottomText
|
|
782
1963
|
}, quarter));
|
|
783
|
-
|
|
784
1964
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
785
1965
|
var topValue = date.getFullYear().toString();
|
|
786
1966
|
var xText = void 0;
|
|
787
|
-
|
|
788
1967
|
if (rtl) {
|
|
789
1968
|
xText = (6 + i + date.getMonth() + 1) * columnWidth;
|
|
790
1969
|
} else {
|
|
791
1970
|
xText = (6 + i - date.getMonth()) * columnWidth;
|
|
792
1971
|
}
|
|
793
|
-
|
|
794
1972
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
795
1973
|
key: topValue,
|
|
796
1974
|
value: topValue,
|
|
@@ -802,15 +1980,12 @@ var Calendar = function Calendar(_ref) {
|
|
|
802
1980
|
}));
|
|
803
1981
|
}
|
|
804
1982
|
}
|
|
805
|
-
|
|
806
1983
|
return [topValues, bottomValues];
|
|
807
1984
|
};
|
|
808
|
-
|
|
809
1985
|
var getCalendarValuesForMonth = function getCalendarValuesForMonth() {
|
|
810
1986
|
var topValues = [];
|
|
811
1987
|
var bottomValues = [];
|
|
812
1988
|
var topDefaultHeight = headerHeight * 0.5;
|
|
813
|
-
|
|
814
1989
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
815
1990
|
var date = dateSetup.dates[i];
|
|
816
1991
|
var bottomValue = getLocaleMonth(date, locale);
|
|
@@ -820,17 +1995,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
820
1995
|
x: columnWidth * i + columnWidth * 0.5,
|
|
821
1996
|
className: styles$5.calendarBottomText
|
|
822
1997
|
}, bottomValue));
|
|
823
|
-
|
|
824
1998
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
825
1999
|
var topValue = date.getFullYear().toString();
|
|
826
2000
|
var xText = void 0;
|
|
827
|
-
|
|
828
2001
|
if (rtl) {
|
|
829
2002
|
xText = (6 + i + date.getMonth() + 1) * columnWidth;
|
|
830
2003
|
} else {
|
|
831
2004
|
xText = (6 + i - date.getMonth()) * columnWidth;
|
|
832
2005
|
}
|
|
833
|
-
|
|
834
2006
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
835
2007
|
key: topValue,
|
|
836
2008
|
value: topValue,
|
|
@@ -842,25 +2014,20 @@ var Calendar = function Calendar(_ref) {
|
|
|
842
2014
|
}));
|
|
843
2015
|
}
|
|
844
2016
|
}
|
|
845
|
-
|
|
846
2017
|
return [topValues, bottomValues];
|
|
847
2018
|
};
|
|
848
|
-
|
|
849
2019
|
var getCalendarValuesForWeek = function getCalendarValuesForWeek() {
|
|
850
2020
|
var topValues = [];
|
|
851
2021
|
var bottomValues = [];
|
|
852
2022
|
var weeksCount = 1;
|
|
853
2023
|
var topDefaultHeight = headerHeight * 0.5;
|
|
854
2024
|
var dates = dateSetup.dates;
|
|
855
|
-
|
|
856
2025
|
for (var i = dates.length - 1; i >= 0; i--) {
|
|
857
2026
|
var date = dates[i];
|
|
858
2027
|
var topValue = "";
|
|
859
|
-
|
|
860
2028
|
if (i === 0 || date.getMonth() !== dates[i - 1].getMonth()) {
|
|
861
2029
|
topValue = getLocaleMonth(date, locale) + ", " + date.getFullYear();
|
|
862
2030
|
}
|
|
863
|
-
|
|
864
2031
|
var bottomValue = "W" + getWeekNumberISO8601(date);
|
|
865
2032
|
bottomValues.push(React.createElement("text", {
|
|
866
2033
|
key: date.getTime(),
|
|
@@ -868,7 +2035,6 @@ var Calendar = function Calendar(_ref) {
|
|
|
868
2035
|
x: columnWidth * (i + +rtl),
|
|
869
2036
|
className: styles$5.calendarBottomText
|
|
870
2037
|
}, bottomValue));
|
|
871
|
-
|
|
872
2038
|
if (topValue) {
|
|
873
2039
|
if (i !== dates.length - 1) {
|
|
874
2040
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
@@ -881,22 +2047,17 @@ var Calendar = function Calendar(_ref) {
|
|
|
881
2047
|
yText: topDefaultHeight * 0.9
|
|
882
2048
|
}));
|
|
883
2049
|
}
|
|
884
|
-
|
|
885
2050
|
weeksCount = 0;
|
|
886
2051
|
}
|
|
887
|
-
|
|
888
2052
|
weeksCount++;
|
|
889
2053
|
}
|
|
890
|
-
|
|
891
2054
|
return [topValues, bottomValues];
|
|
892
2055
|
};
|
|
893
|
-
|
|
894
2056
|
var getCalendarValuesForDay = function getCalendarValuesForDay() {
|
|
895
2057
|
var topValues = [];
|
|
896
2058
|
var bottomValues = [];
|
|
897
2059
|
var topDefaultHeight = headerHeight * 0.5;
|
|
898
2060
|
var dates = dateSetup.dates;
|
|
899
|
-
|
|
900
2061
|
for (var i = 0; i < dates.length; i++) {
|
|
901
2062
|
var date = dates[i];
|
|
902
2063
|
var bottomValue = getLocalDayOfWeek(date, locale, "short") + ", " + date.getDate().toString();
|
|
@@ -906,7 +2067,6 @@ var Calendar = function Calendar(_ref) {
|
|
|
906
2067
|
x: columnWidth * i + columnWidth * 0.5,
|
|
907
2068
|
className: styles$5.calendarBottomText
|
|
908
2069
|
}, bottomValue));
|
|
909
|
-
|
|
910
2070
|
if (i + 1 !== dates.length && date.getMonth() !== dates[i + 1].getMonth()) {
|
|
911
2071
|
var topValue = getLocaleMonth(date, locale);
|
|
912
2072
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
@@ -920,17 +2080,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
920
2080
|
}));
|
|
921
2081
|
}
|
|
922
2082
|
}
|
|
923
|
-
|
|
924
2083
|
return [topValues, bottomValues];
|
|
925
2084
|
};
|
|
926
|
-
|
|
927
2085
|
var getCalendarValuesForPartOfDay = function getCalendarValuesForPartOfDay() {
|
|
928
2086
|
var topValues = [];
|
|
929
2087
|
var bottomValues = [];
|
|
930
2088
|
var ticks = viewMode === ViewMode.HalfDay ? 2 : 4;
|
|
931
2089
|
var topDefaultHeight = headerHeight * 0.5;
|
|
932
2090
|
var dates = dateSetup.dates;
|
|
933
|
-
|
|
934
2091
|
for (var i = 0; i < dates.length; i++) {
|
|
935
2092
|
var date = dates[i];
|
|
936
2093
|
var bottomValue = getCachedDateTimeFormat(locale, {
|
|
@@ -943,7 +2100,6 @@ var Calendar = function Calendar(_ref) {
|
|
|
943
2100
|
className: styles$5.calendarBottomText,
|
|
944
2101
|
fontFamily: fontFamily
|
|
945
2102
|
}, bottomValue));
|
|
946
|
-
|
|
947
2103
|
if (i === 0 || date.getDate() !== dates[i - 1].getDate()) {
|
|
948
2104
|
var topValue = getLocalDayOfWeek(date, locale, "short") + ", " + date.getDate() + " " + getLocaleMonth(date, locale);
|
|
949
2105
|
topValues.push(React.createElement(TopPartOfCalendar, {
|
|
@@ -957,16 +2113,13 @@ var Calendar = function Calendar(_ref) {
|
|
|
957
2113
|
}));
|
|
958
2114
|
}
|
|
959
2115
|
}
|
|
960
|
-
|
|
961
2116
|
return [topValues, bottomValues];
|
|
962
2117
|
};
|
|
963
|
-
|
|
964
2118
|
var getCalendarValuesForHour = function getCalendarValuesForHour() {
|
|
965
2119
|
var topValues = [];
|
|
966
2120
|
var bottomValues = [];
|
|
967
2121
|
var topDefaultHeight = headerHeight * 0.5;
|
|
968
2122
|
var dates = dateSetup.dates;
|
|
969
|
-
|
|
970
2123
|
for (var i = 0; i < dates.length; i++) {
|
|
971
2124
|
var date = dates[i];
|
|
972
2125
|
var bottomValue = getCachedDateTimeFormat(locale, {
|
|
@@ -979,7 +2132,6 @@ var Calendar = function Calendar(_ref) {
|
|
|
979
2132
|
className: styles$5.calendarBottomText,
|
|
980
2133
|
fontFamily: fontFamily
|
|
981
2134
|
}, bottomValue));
|
|
982
|
-
|
|
983
2135
|
if (i !== 0 && date.getDate() !== dates[i - 1].getDate()) {
|
|
984
2136
|
var displayDate = dates[i - 1];
|
|
985
2137
|
var topValue = getLocalDayOfWeek(displayDate, locale, "long") + ", " + displayDate.getDate() + " " + getLocaleMonth(displayDate, locale);
|
|
@@ -995,64 +2147,47 @@ var Calendar = function Calendar(_ref) {
|
|
|
995
2147
|
}));
|
|
996
2148
|
}
|
|
997
2149
|
}
|
|
998
|
-
|
|
999
2150
|
return [topValues, bottomValues];
|
|
1000
2151
|
};
|
|
1001
|
-
|
|
1002
2152
|
var topValues = [];
|
|
1003
2153
|
var bottomValues = [];
|
|
1004
|
-
|
|
1005
2154
|
switch (dateSetup.viewMode) {
|
|
1006
2155
|
case ViewMode.Year:
|
|
1007
2156
|
var _getCalendarValuesFor = getCalendarValuesForYear();
|
|
1008
|
-
|
|
1009
2157
|
topValues = _getCalendarValuesFor[0];
|
|
1010
2158
|
bottomValues = _getCalendarValuesFor[1];
|
|
1011
2159
|
break;
|
|
1012
|
-
|
|
1013
2160
|
case ViewMode.QuarterYear:
|
|
1014
2161
|
var _getCalendarValuesFor2 = getCalendarValuesForQuarterYear();
|
|
1015
|
-
|
|
1016
2162
|
topValues = _getCalendarValuesFor2[0];
|
|
1017
2163
|
bottomValues = _getCalendarValuesFor2[1];
|
|
1018
2164
|
break;
|
|
1019
|
-
|
|
1020
2165
|
case ViewMode.Month:
|
|
1021
2166
|
var _getCalendarValuesFor3 = getCalendarValuesForMonth();
|
|
1022
|
-
|
|
1023
2167
|
topValues = _getCalendarValuesFor3[0];
|
|
1024
2168
|
bottomValues = _getCalendarValuesFor3[1];
|
|
1025
2169
|
break;
|
|
1026
|
-
|
|
1027
2170
|
case ViewMode.Week:
|
|
1028
2171
|
var _getCalendarValuesFor4 = getCalendarValuesForWeek();
|
|
1029
|
-
|
|
1030
2172
|
topValues = _getCalendarValuesFor4[0];
|
|
1031
2173
|
bottomValues = _getCalendarValuesFor4[1];
|
|
1032
2174
|
break;
|
|
1033
|
-
|
|
1034
2175
|
case ViewMode.Day:
|
|
1035
2176
|
var _getCalendarValuesFor5 = getCalendarValuesForDay();
|
|
1036
|
-
|
|
1037
2177
|
topValues = _getCalendarValuesFor5[0];
|
|
1038
2178
|
bottomValues = _getCalendarValuesFor5[1];
|
|
1039
2179
|
break;
|
|
1040
|
-
|
|
1041
2180
|
case ViewMode.QuarterDay:
|
|
1042
2181
|
case ViewMode.HalfDay:
|
|
1043
2182
|
var _getCalendarValuesFor6 = getCalendarValuesForPartOfDay();
|
|
1044
|
-
|
|
1045
2183
|
topValues = _getCalendarValuesFor6[0];
|
|
1046
2184
|
bottomValues = _getCalendarValuesFor6[1];
|
|
1047
2185
|
break;
|
|
1048
|
-
|
|
1049
2186
|
case ViewMode.Hour:
|
|
1050
2187
|
var _getCalendarValuesFor7 = getCalendarValuesForHour();
|
|
1051
|
-
|
|
1052
2188
|
topValues = _getCalendarValuesFor7[0];
|
|
1053
2189
|
bottomValues = _getCalendarValuesFor7[1];
|
|
1054
2190
|
}
|
|
1055
|
-
|
|
1056
2191
|
return React.createElement("g", {
|
|
1057
2192
|
className: "calendar",
|
|
1058
2193
|
fontSize: fontSize,
|
|
@@ -1066,47 +2201,24 @@ var Calendar = function Calendar(_ref) {
|
|
|
1066
2201
|
}), bottomValues, " ", topValues);
|
|
1067
2202
|
};
|
|
1068
2203
|
|
|
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
2204
|
var Arrow = function Arrow(_ref) {
|
|
1089
2205
|
var taskFrom = _ref.taskFrom,
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
2206
|
+
taskTo = _ref.taskTo,
|
|
2207
|
+
rowHeight = _ref.rowHeight,
|
|
2208
|
+
taskHeight = _ref.taskHeight,
|
|
2209
|
+
arrowIndent = _ref.arrowIndent,
|
|
2210
|
+
rtl = _ref.rtl;
|
|
1095
2211
|
var path;
|
|
1096
2212
|
var trianglePoints;
|
|
1097
|
-
|
|
1098
2213
|
if (rtl) {
|
|
1099
2214
|
var _drownPathAndTriangle = drownPathAndTriangleRTL(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent);
|
|
1100
|
-
|
|
1101
2215
|
path = _drownPathAndTriangle[0];
|
|
1102
2216
|
trianglePoints = _drownPathAndTriangle[1];
|
|
1103
2217
|
} else {
|
|
1104
2218
|
var _drownPathAndTriangle2 = drownPathAndTriangle(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent);
|
|
1105
|
-
|
|
1106
2219
|
path = _drownPathAndTriangle2[0];
|
|
1107
2220
|
trianglePoints = _drownPathAndTriangle2[1];
|
|
1108
2221
|
}
|
|
1109
|
-
|
|
1110
2222
|
return React.createElement("g", {
|
|
1111
2223
|
className: "arrow"
|
|
1112
2224
|
}, React.createElement("path", {
|
|
@@ -1117,7 +2229,6 @@ var Arrow = function Arrow(_ref) {
|
|
|
1117
2229
|
points: trianglePoints
|
|
1118
2230
|
}));
|
|
1119
2231
|
};
|
|
1120
|
-
|
|
1121
2232
|
var drownPathAndTriangle = function drownPathAndTriangle(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent) {
|
|
1122
2233
|
var indexCompare = taskFrom.index > taskTo.index ? -1 : 1;
|
|
1123
2234
|
var taskToEndPosition = taskTo.y + taskHeight / 2;
|
|
@@ -1128,7 +2239,6 @@ var drownPathAndTriangle = function drownPathAndTriangle(taskFrom, taskTo, rowHe
|
|
|
1128
2239
|
var trianglePoints = taskTo.x1 + "," + taskToEndPosition + " \n " + (taskTo.x1 - 5) + "," + (taskToEndPosition - 5) + " \n " + (taskTo.x1 - 5) + "," + (taskToEndPosition + 5);
|
|
1129
2240
|
return [path, trianglePoints];
|
|
1130
2241
|
};
|
|
1131
|
-
|
|
1132
2242
|
var drownPathAndTriangleRTL = function drownPathAndTriangleRTL(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent) {
|
|
1133
2243
|
var indexCompare = taskFrom.index > taskTo.index ? -1 : 1;
|
|
1134
2244
|
var taskToEndPosition = taskTo.y + taskHeight / 2;
|
|
@@ -1146,47 +2256,37 @@ var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, ro
|
|
|
1146
2256
|
});
|
|
1147
2257
|
barTasks = barTasks.map(function (task) {
|
|
1148
2258
|
var dependencies = task.dependencies || [];
|
|
1149
|
-
|
|
1150
2259
|
var _loop = function _loop(j) {
|
|
1151
2260
|
var dependence = barTasks.findIndex(function (value) {
|
|
1152
2261
|
return value.id === dependencies[j];
|
|
1153
2262
|
});
|
|
1154
2263
|
if (dependence !== -1) barTasks[dependence].barChildren.push(task);
|
|
1155
2264
|
};
|
|
1156
|
-
|
|
1157
2265
|
for (var j = 0; j < dependencies.length; j++) {
|
|
1158
2266
|
_loop(j);
|
|
1159
2267
|
}
|
|
1160
|
-
|
|
1161
2268
|
return task;
|
|
1162
2269
|
});
|
|
1163
2270
|
return barTasks;
|
|
1164
2271
|
};
|
|
1165
|
-
|
|
1166
2272
|
var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
1167
2273
|
var barTask;
|
|
1168
|
-
|
|
1169
2274
|
switch (task.type) {
|
|
1170
2275
|
case "milestone":
|
|
1171
2276
|
barTask = convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor);
|
|
1172
2277
|
break;
|
|
1173
|
-
|
|
1174
2278
|
case "project":
|
|
1175
2279
|
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor);
|
|
1176
2280
|
break;
|
|
1177
|
-
|
|
1178
2281
|
default:
|
|
1179
2282
|
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor);
|
|
1180
2283
|
break;
|
|
1181
2284
|
}
|
|
1182
|
-
|
|
1183
2285
|
return barTask;
|
|
1184
2286
|
};
|
|
1185
|
-
|
|
1186
2287
|
var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor) {
|
|
1187
2288
|
var x1;
|
|
1188
2289
|
var x2;
|
|
1189
|
-
|
|
1190
2290
|
if (rtl) {
|
|
1191
2291
|
x2 = taskXCoordinateRTL(task.start, dates, columnWidth);
|
|
1192
2292
|
x1 = taskXCoordinateRTL(task.end, dates, columnWidth);
|
|
@@ -1194,28 +2294,22 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
1194
2294
|
x1 = taskXCoordinate(task.start, dates, columnWidth);
|
|
1195
2295
|
x2 = taskXCoordinate(task.end, dates, columnWidth);
|
|
1196
2296
|
}
|
|
1197
|
-
|
|
1198
2297
|
var typeInternal = task.type;
|
|
1199
|
-
|
|
1200
2298
|
if (typeInternal === "task" && x2 - x1 < handleWidth * 2) {
|
|
1201
2299
|
typeInternal = "smalltask";
|
|
1202
2300
|
x2 = x1 + handleWidth * 2;
|
|
1203
2301
|
}
|
|
1204
|
-
|
|
1205
2302
|
var _progressWithByParams = progressWithByParams(x1, x2, task.progress, rtl),
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
2303
|
+
progressWidth = _progressWithByParams[0],
|
|
2304
|
+
progressX = _progressWithByParams[1];
|
|
1209
2305
|
var y = taskYCoordinate(index, rowHeight, taskHeight);
|
|
1210
2306
|
var hideChildren = task.type === "project" ? task.hideChildren : undefined;
|
|
1211
|
-
|
|
1212
2307
|
var styles = _extends({
|
|
1213
2308
|
backgroundColor: barBackgroundColor,
|
|
1214
2309
|
backgroundSelectedColor: barBackgroundSelectedColor,
|
|
1215
2310
|
progressColor: barProgressColor,
|
|
1216
2311
|
progressSelectedColor: barProgressSelectedColor
|
|
1217
2312
|
}, task.styles);
|
|
1218
|
-
|
|
1219
2313
|
return _extends({}, task, {
|
|
1220
2314
|
typeInternal: typeInternal,
|
|
1221
2315
|
x1: x1,
|
|
@@ -1232,21 +2326,18 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
1232
2326
|
styles: styles
|
|
1233
2327
|
});
|
|
1234
2328
|
};
|
|
1235
|
-
|
|
1236
2329
|
var convertToMilestone = function convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
1237
2330
|
var x = taskXCoordinate(task.start, dates, columnWidth);
|
|
1238
2331
|
var y = taskYCoordinate(index, rowHeight, taskHeight);
|
|
1239
2332
|
var x1 = x - taskHeight * 0.5;
|
|
1240
2333
|
var x2 = x + taskHeight * 0.5;
|
|
1241
2334
|
var rotatedHeight = taskHeight / 1.414;
|
|
1242
|
-
|
|
1243
2335
|
var styles = _extends({
|
|
1244
2336
|
backgroundColor: milestoneBackgroundColor,
|
|
1245
2337
|
backgroundSelectedColor: milestoneBackgroundSelectedColor,
|
|
1246
2338
|
progressColor: "",
|
|
1247
2339
|
progressSelectedColor: ""
|
|
1248
2340
|
}, task.styles);
|
|
1249
|
-
|
|
1250
2341
|
return _extends({}, task, {
|
|
1251
2342
|
end: task.start,
|
|
1252
2343
|
x1: x1,
|
|
@@ -1265,7 +2356,6 @@ var convertToMilestone = function convertToMilestone(task, index, dates, columnW
|
|
|
1265
2356
|
styles: styles
|
|
1266
2357
|
});
|
|
1267
2358
|
};
|
|
1268
|
-
|
|
1269
2359
|
var taskXCoordinate = function taskXCoordinate(xDate, dates, columnWidth) {
|
|
1270
2360
|
var index = dates.findIndex(function (d) {
|
|
1271
2361
|
return d.getTime() >= xDate.getTime();
|
|
@@ -1275,31 +2365,25 @@ var taskXCoordinate = function taskXCoordinate(xDate, dates, columnWidth) {
|
|
|
1275
2365
|
var x = index * columnWidth + percentOfInterval * columnWidth;
|
|
1276
2366
|
return x;
|
|
1277
2367
|
};
|
|
1278
|
-
|
|
1279
2368
|
var taskXCoordinateRTL = function taskXCoordinateRTL(xDate, dates, columnWidth) {
|
|
1280
2369
|
var x = taskXCoordinate(xDate, dates, columnWidth);
|
|
1281
2370
|
x += columnWidth;
|
|
1282
2371
|
return x;
|
|
1283
2372
|
};
|
|
1284
|
-
|
|
1285
2373
|
var taskYCoordinate = function taskYCoordinate(index, rowHeight, taskHeight) {
|
|
1286
2374
|
var y = index * rowHeight + (rowHeight - taskHeight) / 2;
|
|
1287
2375
|
return y;
|
|
1288
2376
|
};
|
|
1289
|
-
|
|
1290
2377
|
var progressWithByParams = function progressWithByParams(taskX1, taskX2, progress, rtl) {
|
|
1291
2378
|
var progressWidth = (taskX2 - taskX1) * progress * 0.01;
|
|
1292
2379
|
var progressX;
|
|
1293
|
-
|
|
1294
2380
|
if (rtl) {
|
|
1295
2381
|
progressX = taskX2 - progressWidth;
|
|
1296
2382
|
} else {
|
|
1297
2383
|
progressX = taskX1;
|
|
1298
2384
|
}
|
|
1299
|
-
|
|
1300
2385
|
return [progressWidth, progressX];
|
|
1301
2386
|
};
|
|
1302
|
-
|
|
1303
2387
|
var progressByX = function progressByX(x, task) {
|
|
1304
2388
|
if (x >= task.x2) return 100;else if (x <= task.x1) return 0;else {
|
|
1305
2389
|
var barWidth = task.x2 - task.x1;
|
|
@@ -1307,7 +2391,6 @@ var progressByX = function progressByX(x, task) {
|
|
|
1307
2391
|
return progressPercent;
|
|
1308
2392
|
}
|
|
1309
2393
|
};
|
|
1310
|
-
|
|
1311
2394
|
var progressByXRTL = function progressByXRTL(x, task) {
|
|
1312
2395
|
if (x >= task.x2) return 0;else if (x <= task.x1) return 100;else {
|
|
1313
2396
|
var barWidth = task.x2 - task.x1;
|
|
@@ -1315,34 +2398,28 @@ var progressByXRTL = function progressByXRTL(x, task) {
|
|
|
1315
2398
|
return progressPercent;
|
|
1316
2399
|
}
|
|
1317
2400
|
};
|
|
1318
|
-
|
|
1319
2401
|
var getProgressPoint = function getProgressPoint(progressX, taskY, taskHeight) {
|
|
1320
2402
|
var point = [progressX - 5, taskY + taskHeight, progressX + 5, taskY + taskHeight, progressX, taskY + taskHeight - 8.66];
|
|
1321
2403
|
return point.join(",");
|
|
1322
2404
|
};
|
|
1323
|
-
|
|
1324
2405
|
var startByX = function startByX(x, xStep, task) {
|
|
1325
2406
|
if (x >= task.x2 - task.handleWidth * 2) {
|
|
1326
2407
|
x = task.x2 - task.handleWidth * 2;
|
|
1327
2408
|
}
|
|
1328
|
-
|
|
1329
2409
|
var steps = Math.round((x - task.x1) / xStep);
|
|
1330
2410
|
var additionalXValue = steps * xStep;
|
|
1331
2411
|
var newX = task.x1 + additionalXValue;
|
|
1332
2412
|
return newX;
|
|
1333
2413
|
};
|
|
1334
|
-
|
|
1335
2414
|
var endByX = function endByX(x, xStep, task) {
|
|
1336
2415
|
if (x <= task.x1 + task.handleWidth * 2) {
|
|
1337
2416
|
x = task.x1 + task.handleWidth * 2;
|
|
1338
2417
|
}
|
|
1339
|
-
|
|
1340
2418
|
var steps = Math.round((x - task.x2) / xStep);
|
|
1341
2419
|
var additionalXValue = steps * xStep;
|
|
1342
2420
|
var newX = task.x2 + additionalXValue;
|
|
1343
2421
|
return newX;
|
|
1344
2422
|
};
|
|
1345
|
-
|
|
1346
2423
|
var moveByX = function moveByX(x, xStep, task) {
|
|
1347
2424
|
var steps = Math.round((x - task.x1) / xStep);
|
|
1348
2425
|
var additionalXValue = steps * xStep;
|
|
@@ -1350,34 +2427,26 @@ var moveByX = function moveByX(x, xStep, task) {
|
|
|
1350
2427
|
var newX2 = newX1 + task.x2 - task.x1;
|
|
1351
2428
|
return [newX1, newX2];
|
|
1352
2429
|
};
|
|
1353
|
-
|
|
1354
2430
|
var dateByX = function dateByX(x, taskX, taskDate, xStep, timeStep) {
|
|
1355
2431
|
var newDate = new Date((x - taskX) / xStep * timeStep + taskDate.getTime());
|
|
1356
2432
|
newDate = new Date(newDate.getTime() + (newDate.getTimezoneOffset() - taskDate.getTimezoneOffset()) * 60000);
|
|
1357
2433
|
return newDate;
|
|
1358
2434
|
};
|
|
1359
|
-
|
|
1360
2435
|
var handleTaskBySVGMouseEvent = function handleTaskBySVGMouseEvent(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl) {
|
|
1361
2436
|
var result;
|
|
1362
|
-
|
|
1363
2437
|
switch (selectedTask.type) {
|
|
1364
2438
|
case "milestone":
|
|
1365
2439
|
result = handleTaskBySVGMouseEventForMilestone(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta);
|
|
1366
2440
|
break;
|
|
1367
|
-
|
|
1368
2441
|
default:
|
|
1369
2442
|
result = handleTaskBySVGMouseEventForBar(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl);
|
|
1370
2443
|
break;
|
|
1371
2444
|
}
|
|
1372
|
-
|
|
1373
2445
|
return result;
|
|
1374
2446
|
};
|
|
1375
|
-
|
|
1376
2447
|
var handleTaskBySVGMouseEventForBar = function handleTaskBySVGMouseEventForBar(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl) {
|
|
1377
2448
|
var changedTask = _extends({}, selectedTask);
|
|
1378
|
-
|
|
1379
2449
|
var isChanged = false;
|
|
1380
|
-
|
|
1381
2450
|
switch (action) {
|
|
1382
2451
|
case "progress":
|
|
1383
2452
|
if (rtl) {
|
|
@@ -1385,125 +2454,97 @@ var handleTaskBySVGMouseEventForBar = function handleTaskBySVGMouseEventForBar(s
|
|
|
1385
2454
|
} else {
|
|
1386
2455
|
changedTask.progress = progressByX(svgX, selectedTask);
|
|
1387
2456
|
}
|
|
1388
|
-
|
|
1389
2457
|
isChanged = changedTask.progress !== selectedTask.progress;
|
|
1390
|
-
|
|
1391
2458
|
if (isChanged) {
|
|
1392
2459
|
var _progressWithByParams2 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
2460
|
+
progressWidth = _progressWithByParams2[0],
|
|
2461
|
+
progressX = _progressWithByParams2[1];
|
|
1396
2462
|
changedTask.progressWidth = progressWidth;
|
|
1397
2463
|
changedTask.progressX = progressX;
|
|
1398
2464
|
}
|
|
1399
|
-
|
|
1400
2465
|
break;
|
|
1401
|
-
|
|
1402
2466
|
case "start":
|
|
1403
2467
|
{
|
|
1404
2468
|
var newX1 = startByX(svgX, xStep, selectedTask);
|
|
1405
2469
|
changedTask.x1 = newX1;
|
|
1406
2470
|
isChanged = changedTask.x1 !== selectedTask.x1;
|
|
1407
|
-
|
|
1408
2471
|
if (isChanged) {
|
|
1409
2472
|
if (rtl) {
|
|
1410
2473
|
changedTask.end = dateByX(newX1, selectedTask.x1, selectedTask.end, xStep, timeStep);
|
|
1411
2474
|
} else {
|
|
1412
2475
|
changedTask.start = dateByX(newX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1413
2476
|
}
|
|
1414
|
-
|
|
1415
2477
|
var _progressWithByParams3 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
2478
|
+
_progressWidth = _progressWithByParams3[0],
|
|
2479
|
+
_progressX = _progressWithByParams3[1];
|
|
1419
2480
|
changedTask.progressWidth = _progressWidth;
|
|
1420
2481
|
changedTask.progressX = _progressX;
|
|
1421
2482
|
}
|
|
1422
|
-
|
|
1423
2483
|
break;
|
|
1424
2484
|
}
|
|
1425
|
-
|
|
1426
2485
|
case "end":
|
|
1427
2486
|
{
|
|
1428
2487
|
var newX2 = endByX(svgX, xStep, selectedTask);
|
|
1429
2488
|
changedTask.x2 = newX2;
|
|
1430
2489
|
isChanged = changedTask.x2 !== selectedTask.x2;
|
|
1431
|
-
|
|
1432
2490
|
if (isChanged) {
|
|
1433
2491
|
if (rtl) {
|
|
1434
2492
|
changedTask.start = dateByX(newX2, selectedTask.x2, selectedTask.start, xStep, timeStep);
|
|
1435
2493
|
} else {
|
|
1436
2494
|
changedTask.end = dateByX(newX2, selectedTask.x2, selectedTask.end, xStep, timeStep);
|
|
1437
2495
|
}
|
|
1438
|
-
|
|
1439
2496
|
var _progressWithByParams4 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
2497
|
+
_progressWidth2 = _progressWithByParams4[0],
|
|
2498
|
+
_progressX2 = _progressWithByParams4[1];
|
|
1443
2499
|
changedTask.progressWidth = _progressWidth2;
|
|
1444
2500
|
changedTask.progressX = _progressX2;
|
|
1445
2501
|
}
|
|
1446
|
-
|
|
1447
2502
|
break;
|
|
1448
2503
|
}
|
|
1449
|
-
|
|
1450
2504
|
case "move":
|
|
1451
2505
|
{
|
|
1452
2506
|
var _moveByX = moveByX(svgX - initEventX1Delta, xStep, selectedTask),
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
2507
|
+
newMoveX1 = _moveByX[0],
|
|
2508
|
+
newMoveX2 = _moveByX[1];
|
|
1456
2509
|
isChanged = newMoveX1 !== selectedTask.x1;
|
|
1457
|
-
|
|
1458
2510
|
if (isChanged) {
|
|
1459
2511
|
changedTask.start = dateByX(newMoveX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1460
2512
|
changedTask.end = dateByX(newMoveX2, selectedTask.x2, selectedTask.end, xStep, timeStep);
|
|
1461
2513
|
changedTask.x1 = newMoveX1;
|
|
1462
2514
|
changedTask.x2 = newMoveX2;
|
|
1463
|
-
|
|
1464
2515
|
var _progressWithByParams5 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
2516
|
+
_progressWidth3 = _progressWithByParams5[0],
|
|
2517
|
+
_progressX3 = _progressWithByParams5[1];
|
|
1468
2518
|
changedTask.progressWidth = _progressWidth3;
|
|
1469
2519
|
changedTask.progressX = _progressX3;
|
|
1470
2520
|
}
|
|
1471
|
-
|
|
1472
2521
|
break;
|
|
1473
2522
|
}
|
|
1474
2523
|
}
|
|
1475
|
-
|
|
1476
2524
|
return {
|
|
1477
2525
|
isChanged: isChanged,
|
|
1478
2526
|
changedTask: changedTask
|
|
1479
2527
|
};
|
|
1480
2528
|
};
|
|
1481
|
-
|
|
1482
2529
|
var handleTaskBySVGMouseEventForMilestone = function handleTaskBySVGMouseEventForMilestone(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta) {
|
|
1483
2530
|
var changedTask = _extends({}, selectedTask);
|
|
1484
|
-
|
|
1485
2531
|
var isChanged = false;
|
|
1486
|
-
|
|
1487
2532
|
switch (action) {
|
|
1488
2533
|
case "move":
|
|
1489
2534
|
{
|
|
1490
2535
|
var _moveByX2 = moveByX(svgX - initEventX1Delta, xStep, selectedTask),
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
2536
|
+
newMoveX1 = _moveByX2[0],
|
|
2537
|
+
newMoveX2 = _moveByX2[1];
|
|
1494
2538
|
isChanged = newMoveX1 !== selectedTask.x1;
|
|
1495
|
-
|
|
1496
2539
|
if (isChanged) {
|
|
1497
2540
|
changedTask.start = dateByX(newMoveX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1498
2541
|
changedTask.end = changedTask.start;
|
|
1499
2542
|
changedTask.x1 = newMoveX1;
|
|
1500
2543
|
changedTask.x2 = newMoveX2;
|
|
1501
2544
|
}
|
|
1502
|
-
|
|
1503
2545
|
break;
|
|
1504
2546
|
}
|
|
1505
2547
|
}
|
|
1506
|
-
|
|
1507
2548
|
return {
|
|
1508
2549
|
isChanged: isChanged,
|
|
1509
2550
|
changedTask: changedTask
|
|
@@ -1517,27 +2558,22 @@ function removeHiddenTasks(tasks) {
|
|
|
1517
2558
|
var groupedTasks = tasks.filter(function (t) {
|
|
1518
2559
|
return t.hideChildren && t.type === "project";
|
|
1519
2560
|
});
|
|
1520
|
-
|
|
1521
2561
|
if (groupedTasks.length > 0) {
|
|
1522
|
-
var _loop = function _loop(
|
|
2562
|
+
var _loop = function _loop() {
|
|
1523
2563
|
var groupedTask = groupedTasks[i];
|
|
1524
2564
|
var children = getChildren(tasks, groupedTask);
|
|
1525
2565
|
tasks = tasks.filter(function (t) {
|
|
1526
2566
|
return children.indexOf(t) === -1;
|
|
1527
2567
|
});
|
|
1528
2568
|
};
|
|
1529
|
-
|
|
1530
2569
|
for (var i = 0; groupedTasks.length > i; i++) {
|
|
1531
|
-
_loop(
|
|
2570
|
+
_loop();
|
|
1532
2571
|
}
|
|
1533
2572
|
}
|
|
1534
|
-
|
|
1535
2573
|
return tasks;
|
|
1536
2574
|
}
|
|
1537
|
-
|
|
1538
2575
|
function getChildren(taskList, task) {
|
|
1539
2576
|
var tasks = [];
|
|
1540
|
-
|
|
1541
2577
|
if (task.type !== "project") {
|
|
1542
2578
|
tasks = taskList.filter(function (t) {
|
|
1543
2579
|
return t.dependencies && t.dependencies.indexOf(task.id) !== -1;
|
|
@@ -1547,7 +2583,6 @@ function getChildren(taskList, task) {
|
|
|
1547
2583
|
return t.project && t.project === task.id;
|
|
1548
2584
|
});
|
|
1549
2585
|
}
|
|
1550
|
-
|
|
1551
2586
|
var taskChildren = [];
|
|
1552
2587
|
tasks.forEach(function (t) {
|
|
1553
2588
|
taskChildren.push.apply(taskChildren, getChildren(taskList, t));
|
|
@@ -1555,11 +2590,9 @@ function getChildren(taskList, task) {
|
|
|
1555
2590
|
tasks = tasks.concat(tasks, taskChildren);
|
|
1556
2591
|
return tasks;
|
|
1557
2592
|
}
|
|
1558
|
-
|
|
1559
2593
|
var sortTasks = function sortTasks(taskA, taskB) {
|
|
1560
2594
|
var orderA = taskA.displayOrder || Number.MAX_VALUE;
|
|
1561
2595
|
var orderB = taskB.displayOrder || Number.MAX_VALUE;
|
|
1562
|
-
|
|
1563
2596
|
if (orderA > orderB) {
|
|
1564
2597
|
return 1;
|
|
1565
2598
|
} else if (orderA < orderB) {
|
|
@@ -1573,24 +2606,21 @@ var styles$6 = {"barWrapper":"_KxSXS","barHandle":"_3w_5u","barBackground":"_31E
|
|
|
1573
2606
|
|
|
1574
2607
|
var BarDisplay = function BarDisplay(_ref) {
|
|
1575
2608
|
var x = _ref.x,
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
2609
|
+
y = _ref.y,
|
|
2610
|
+
width = _ref.width,
|
|
2611
|
+
height = _ref.height,
|
|
2612
|
+
isSelected = _ref.isSelected,
|
|
2613
|
+
progressX = _ref.progressX,
|
|
2614
|
+
progressWidth = _ref.progressWidth,
|
|
2615
|
+
barCornerRadius = _ref.barCornerRadius,
|
|
2616
|
+
styles = _ref.styles,
|
|
2617
|
+
onMouseDown = _ref.onMouseDown;
|
|
1586
2618
|
var getProcessColor = function getProcessColor() {
|
|
1587
2619
|
return isSelected ? styles.progressSelectedColor : styles.progressColor;
|
|
1588
2620
|
};
|
|
1589
|
-
|
|
1590
2621
|
var getBarColor = function getBarColor() {
|
|
1591
2622
|
return isSelected ? styles.backgroundSelectedColor : styles.backgroundColor;
|
|
1592
2623
|
};
|
|
1593
|
-
|
|
1594
2624
|
return React.createElement("g", {
|
|
1595
2625
|
onMouseDown: onMouseDown
|
|
1596
2626
|
}, React.createElement("rect", {
|
|
@@ -1615,11 +2645,11 @@ var BarDisplay = function BarDisplay(_ref) {
|
|
|
1615
2645
|
|
|
1616
2646
|
var BarDateHandle = function BarDateHandle(_ref) {
|
|
1617
2647
|
var x = _ref.x,
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
2648
|
+
y = _ref.y,
|
|
2649
|
+
width = _ref.width,
|
|
2650
|
+
height = _ref.height,
|
|
2651
|
+
barCornerRadius = _ref.barCornerRadius,
|
|
2652
|
+
onMouseDown = _ref.onMouseDown;
|
|
1623
2653
|
return React.createElement("rect", {
|
|
1624
2654
|
x: x,
|
|
1625
2655
|
y: y,
|
|
@@ -1634,7 +2664,7 @@ var BarDateHandle = function BarDateHandle(_ref) {
|
|
|
1634
2664
|
|
|
1635
2665
|
var BarProgressHandle = function BarProgressHandle(_ref) {
|
|
1636
2666
|
var progressPoint = _ref.progressPoint,
|
|
1637
|
-
|
|
2667
|
+
onMouseDown = _ref.onMouseDown;
|
|
1638
2668
|
return React.createElement("polygon", {
|
|
1639
2669
|
className: styles$6.barHandle,
|
|
1640
2670
|
points: progressPoint,
|
|
@@ -1644,11 +2674,11 @@ var BarProgressHandle = function BarProgressHandle(_ref) {
|
|
|
1644
2674
|
|
|
1645
2675
|
var Bar = function Bar(_ref) {
|
|
1646
2676
|
var task = _ref.task,
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
2677
|
+
isProgressChangeable = _ref.isProgressChangeable,
|
|
2678
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2679
|
+
rtl = _ref.rtl,
|
|
2680
|
+
onEventStart = _ref.onEventStart,
|
|
2681
|
+
isSelected = _ref.isSelected;
|
|
1652
2682
|
var progressPoint = getProgressPoint(+!rtl * task.progressWidth + task.progressX, task.y, task.height);
|
|
1653
2683
|
var handleHeight = task.height - 2;
|
|
1654
2684
|
return React.createElement("g", {
|
|
@@ -1697,10 +2727,10 @@ var Bar = function Bar(_ref) {
|
|
|
1697
2727
|
|
|
1698
2728
|
var BarSmall = function BarSmall(_ref) {
|
|
1699
2729
|
var task = _ref.task,
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
2730
|
+
isProgressChangeable = _ref.isProgressChangeable,
|
|
2731
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2732
|
+
onEventStart = _ref.onEventStart,
|
|
2733
|
+
isSelected = _ref.isSelected;
|
|
1704
2734
|
var progressPoint = getProgressPoint(task.progressWidth + task.x1, task.y, task.height);
|
|
1705
2735
|
return React.createElement("g", {
|
|
1706
2736
|
className: styles$6.barWrapper,
|
|
@@ -1732,15 +2762,13 @@ var styles$7 = {"milestoneWrapper":"_RRr13","milestoneBackground":"_2P2B1"};
|
|
|
1732
2762
|
|
|
1733
2763
|
var Milestone = function Milestone(_ref) {
|
|
1734
2764
|
var task = _ref.task,
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
2765
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2766
|
+
onEventStart = _ref.onEventStart,
|
|
2767
|
+
isSelected = _ref.isSelected;
|
|
1738
2768
|
var transform = "rotate(45 " + (task.x1 + task.height * 0.356) + " \n " + (task.y + task.height * 0.85) + ")";
|
|
1739
|
-
|
|
1740
2769
|
var getBarColor = function getBarColor() {
|
|
1741
2770
|
return isSelected ? task.styles.backgroundSelectedColor : task.styles.backgroundColor;
|
|
1742
2771
|
};
|
|
1743
|
-
|
|
1744
2772
|
return React.createElement("g", {
|
|
1745
2773
|
tabIndex: 0,
|
|
1746
2774
|
className: styles$7.milestoneWrapper
|
|
@@ -1764,7 +2792,7 @@ var styles$8 = {"projectWrapper":"_1KJ6x","projectBackground":"_2RbVy","projectT
|
|
|
1764
2792
|
|
|
1765
2793
|
var Project = function Project(_ref) {
|
|
1766
2794
|
var task = _ref.task,
|
|
1767
|
-
|
|
2795
|
+
isSelected = _ref.isSelected;
|
|
1768
2796
|
var barColor = isSelected ? task.styles.backgroundSelectedColor : task.styles.backgroundColor;
|
|
1769
2797
|
var processColor = isSelected ? task.styles.progressSelectedColor : task.styles.progressColor;
|
|
1770
2798
|
var projectWith = task.x2 - task.x1;
|
|
@@ -1810,68 +2838,79 @@ var Project = function Project(_ref) {
|
|
|
1810
2838
|
}));
|
|
1811
2839
|
};
|
|
1812
2840
|
|
|
1813
|
-
var style = {"barLabel":"_3zRJQ","barLabelOutside":"_3KcaM"};
|
|
2841
|
+
var style = {"barLabel":"_3zRJQ","barLabelOutside":"_3KcaM","statusDot":"_3ITgM"};
|
|
1814
2842
|
|
|
1815
2843
|
var TaskItem = function TaskItem(props) {
|
|
1816
2844
|
var _props = _extends({}, props),
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
2845
|
+
task = _props.task,
|
|
2846
|
+
arrowIndent = _props.arrowIndent,
|
|
2847
|
+
isDelete = _props.isDelete,
|
|
2848
|
+
taskHeight = _props.taskHeight,
|
|
2849
|
+
isSelected = _props.isSelected,
|
|
2850
|
+
rtl = _props.rtl,
|
|
2851
|
+
onEventStart = _props.onEventStart,
|
|
2852
|
+
isProgressChangeable = _props.isProgressChangeable,
|
|
2853
|
+
isDateChangeable = _props.isDateChangeable;
|
|
1825
2854
|
var textRef = useRef(null);
|
|
1826
|
-
|
|
1827
2855
|
var _useState = useState(React.createElement("div", null)),
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
2856
|
+
taskItem = _useState[0],
|
|
2857
|
+
setTaskItem = _useState[1];
|
|
1831
2858
|
var _useState2 = useState(true),
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
2859
|
+
isTextInside = _useState2[0],
|
|
2860
|
+
setIsTextInside = _useState2[1];
|
|
2861
|
+
var normalizedStatus = normalizeStatus(task.status);
|
|
2862
|
+
var statusColor = getStatusColor(normalizedStatus);
|
|
2863
|
+
var statusBadgeText = getStatusBadgeText(normalizedStatus);
|
|
2864
|
+
var taskItemProps = useMemo(function () {
|
|
2865
|
+
return {
|
|
2866
|
+
task: task,
|
|
2867
|
+
arrowIndent: arrowIndent,
|
|
2868
|
+
taskHeight: taskHeight,
|
|
2869
|
+
isProgressChangeable: isProgressChangeable,
|
|
2870
|
+
isDateChangeable: isDateChangeable,
|
|
2871
|
+
isDelete: isDelete,
|
|
2872
|
+
isSelected: isSelected,
|
|
2873
|
+
rtl: rtl,
|
|
2874
|
+
onEventStart: onEventStart
|
|
2875
|
+
};
|
|
2876
|
+
}, [task, arrowIndent, taskHeight, isProgressChangeable, isDateChangeable, isDelete, isSelected, rtl, onEventStart]);
|
|
1835
2877
|
useEffect(function () {
|
|
1836
2878
|
switch (task.typeInternal) {
|
|
1837
2879
|
case "milestone":
|
|
1838
|
-
setTaskItem(React.createElement(Milestone, Object.assign({},
|
|
2880
|
+
setTaskItem(React.createElement(Milestone, Object.assign({}, taskItemProps)));
|
|
1839
2881
|
break;
|
|
1840
|
-
|
|
1841
2882
|
case "project":
|
|
1842
|
-
setTaskItem(React.createElement(Project, Object.assign({},
|
|
2883
|
+
setTaskItem(React.createElement(Project, Object.assign({}, taskItemProps)));
|
|
1843
2884
|
break;
|
|
1844
|
-
|
|
1845
2885
|
case "smalltask":
|
|
1846
|
-
setTaskItem(React.createElement(BarSmall, Object.assign({},
|
|
2886
|
+
setTaskItem(React.createElement(BarSmall, Object.assign({}, taskItemProps)));
|
|
1847
2887
|
break;
|
|
1848
|
-
|
|
1849
2888
|
default:
|
|
1850
|
-
setTaskItem(React.createElement(Bar, Object.assign({},
|
|
2889
|
+
setTaskItem(React.createElement(Bar, Object.assign({}, taskItemProps)));
|
|
1851
2890
|
break;
|
|
1852
2891
|
}
|
|
1853
|
-
}, [task,
|
|
1854
|
-
|
|
1855
|
-
if (textRef.current) {
|
|
1856
|
-
|
|
2892
|
+
}, [task, taskItemProps]);
|
|
2893
|
+
var getBBoxWidth = function getBBoxWidth() {
|
|
2894
|
+
if (!textRef.current || typeof textRef.current.getBBox !== "function") {
|
|
2895
|
+
return 0;
|
|
1857
2896
|
}
|
|
2897
|
+
return textRef.current.getBBox().width;
|
|
2898
|
+
};
|
|
2899
|
+
useEffect(function () {
|
|
2900
|
+
setIsTextInside(getBBoxWidth() < task.x2 - task.x1);
|
|
1858
2901
|
}, [textRef, task]);
|
|
1859
|
-
|
|
1860
2902
|
var getX = function getX() {
|
|
1861
2903
|
var width = task.x2 - task.x1;
|
|
1862
2904
|
var hasChild = task.barChildren.length > 0;
|
|
1863
|
-
|
|
1864
2905
|
if (isTextInside) {
|
|
1865
2906
|
return task.x1 + width * 0.5;
|
|
1866
2907
|
}
|
|
1867
|
-
|
|
1868
2908
|
if (rtl && textRef.current) {
|
|
1869
|
-
return task.x1 -
|
|
2909
|
+
return task.x1 - getBBoxWidth() - arrowIndent * +hasChild - arrowIndent * 0.2;
|
|
1870
2910
|
} else {
|
|
1871
2911
|
return task.x1 + width + arrowIndent * +hasChild + arrowIndent * 0.2;
|
|
1872
2912
|
}
|
|
1873
2913
|
};
|
|
1874
|
-
|
|
1875
2914
|
return React.createElement("g", {
|
|
1876
2915
|
onKeyDown: function onKeyDown(e) {
|
|
1877
2916
|
switch (e.key) {
|
|
@@ -1881,7 +2920,6 @@ var TaskItem = function TaskItem(props) {
|
|
|
1881
2920
|
break;
|
|
1882
2921
|
}
|
|
1883
2922
|
}
|
|
1884
|
-
|
|
1885
2923
|
e.stopPropagation();
|
|
1886
2924
|
},
|
|
1887
2925
|
onMouseEnter: function onMouseEnter(e) {
|
|
@@ -1904,48 +2942,47 @@ var TaskItem = function TaskItem(props) {
|
|
|
1904
2942
|
y: task.y + taskHeight * 0.5,
|
|
1905
2943
|
className: isTextInside ? style.barLabel : style.barLabelOutside,
|
|
1906
2944
|
ref: textRef
|
|
1907
|
-
},
|
|
2945
|
+
}, !!statusBadgeText && React.createElement("tspan", {
|
|
2946
|
+
className: style.statusDot,
|
|
2947
|
+
fill: statusColor
|
|
2948
|
+
}, "\u25CF"), React.createElement("tspan", {
|
|
2949
|
+
dx: statusBadgeText ? 4 : 0
|
|
2950
|
+
}, task.name)));
|
|
1908
2951
|
};
|
|
1909
2952
|
|
|
1910
2953
|
var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
1911
|
-
var _svg$current;
|
|
1912
|
-
|
|
1913
2954
|
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
|
-
|
|
2955
|
+
dates = _ref.dates,
|
|
2956
|
+
ganttEvent = _ref.ganttEvent,
|
|
2957
|
+
selectedTask = _ref.selectedTask,
|
|
2958
|
+
rowHeight = _ref.rowHeight,
|
|
2959
|
+
columnWidth = _ref.columnWidth,
|
|
2960
|
+
timeStep = _ref.timeStep,
|
|
2961
|
+
svg = _ref.svg,
|
|
2962
|
+
taskHeight = _ref.taskHeight,
|
|
2963
|
+
arrowColor = _ref.arrowColor,
|
|
2964
|
+
arrowIndent = _ref.arrowIndent,
|
|
2965
|
+
fontFamily = _ref.fontFamily,
|
|
2966
|
+
fontSize = _ref.fontSize,
|
|
2967
|
+
rtl = _ref.rtl,
|
|
2968
|
+
setGanttEvent = _ref.setGanttEvent,
|
|
2969
|
+
setFailedTask = _ref.setFailedTask,
|
|
2970
|
+
setSelectedTask = _ref.setSelectedTask,
|
|
2971
|
+
onDateChange = _ref.onDateChange,
|
|
2972
|
+
onProgressChange = _ref.onProgressChange,
|
|
2973
|
+
onDoubleClick = _ref.onDoubleClick,
|
|
2974
|
+
onClick = _ref.onClick,
|
|
2975
|
+
onDelete = _ref.onDelete;
|
|
2976
|
+
var point = svg !== null && svg !== void 0 && svg.current && "createSVGPoint" in svg.current ? svg.current.createSVGPoint() : undefined;
|
|
1937
2977
|
var _useState = useState(0),
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
2978
|
+
xStep = _useState[0],
|
|
2979
|
+
setXStep = _useState[1];
|
|
1941
2980
|
var _useState2 = useState(0),
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
2981
|
+
initEventX1Delta = _useState2[0],
|
|
2982
|
+
setInitEventX1Delta = _useState2[1];
|
|
1945
2983
|
var _useState3 = useState(false),
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
2984
|
+
isMoving = _useState3[0],
|
|
2985
|
+
setIsMoving = _useState3[1];
|
|
1949
2986
|
useEffect(function () {
|
|
1950
2987
|
var dateDelta = dates[1].getTime() - dates[0].getTime() - dates[1].getTimezoneOffset() * 60 * 1000 + dates[0].getTimezoneOffset() * 60 * 1000;
|
|
1951
2988
|
var newXStep = timeStep * columnWidth / dateDelta;
|
|
@@ -1955,62 +2992,52 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
1955
2992
|
var handleMouseMove = function handleMouseMove(event) {
|
|
1956
2993
|
try {
|
|
1957
2994
|
var _svg$current$getScree;
|
|
1958
|
-
|
|
1959
2995
|
if (!ganttEvent.changedTask || !point || !(svg !== null && svg !== void 0 && svg.current)) return Promise.resolve();
|
|
1960
2996
|
event.preventDefault();
|
|
1961
2997
|
point.x = event.clientX;
|
|
1962
2998
|
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
2999
|
var _handleTaskBySVGMouse = handleTaskBySVGMouseEvent(cursor.x, ganttEvent.action, ganttEvent.changedTask, xStep, timeStep, initEventX1Delta, rtl),
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
3000
|
+
isChanged = _handleTaskBySVGMouse.isChanged,
|
|
3001
|
+
changedTask = _handleTaskBySVGMouse.changedTask;
|
|
1968
3002
|
if (isChanged) {
|
|
1969
3003
|
setGanttEvent({
|
|
1970
3004
|
action: ganttEvent.action,
|
|
1971
3005
|
changedTask: changedTask
|
|
1972
3006
|
});
|
|
1973
3007
|
}
|
|
1974
|
-
|
|
1975
3008
|
return Promise.resolve();
|
|
1976
3009
|
} catch (e) {
|
|
1977
3010
|
return Promise.reject(e);
|
|
1978
3011
|
}
|
|
1979
3012
|
};
|
|
1980
|
-
|
|
1981
|
-
var handleMouseUp = function handleMouseUp(event) {
|
|
3013
|
+
var _handleMouseUp = function handleMouseUp(event) {
|
|
1982
3014
|
try {
|
|
1983
3015
|
var _svg$current$getScree2;
|
|
1984
|
-
|
|
1985
|
-
var _temp6 = function _temp6() {
|
|
3016
|
+
var _temp5 = function _temp5() {
|
|
1986
3017
|
if (!operationSuccess) {
|
|
1987
3018
|
setFailedTask(originalSelectedTask);
|
|
1988
3019
|
}
|
|
1989
3020
|
};
|
|
1990
|
-
|
|
1991
3021
|
var action = ganttEvent.action,
|
|
1992
|
-
|
|
1993
|
-
|
|
3022
|
+
originalSelectedTask = ganttEvent.originalSelectedTask,
|
|
3023
|
+
changedTask = ganttEvent.changedTask;
|
|
1994
3024
|
if (!changedTask || !point || !(svg !== null && svg !== void 0 && svg.current) || !originalSelectedTask) return Promise.resolve();
|
|
1995
3025
|
event.preventDefault();
|
|
1996
3026
|
point.x = event.clientX;
|
|
1997
3027
|
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
3028
|
var _handleTaskBySVGMouse2 = handleTaskBySVGMouseEvent(cursor.x, action, changedTask, xStep, timeStep, initEventX1Delta, rtl),
|
|
2000
|
-
|
|
2001
|
-
|
|
3029
|
+
newChangedTask = _handleTaskBySVGMouse2.changedTask;
|
|
2002
3030
|
var isNotLikeOriginal = originalSelectedTask.start !== newChangedTask.start || originalSelectedTask.end !== newChangedTask.end || originalSelectedTask.progress !== newChangedTask.progress;
|
|
2003
3031
|
svg.current.removeEventListener("mousemove", handleMouseMove);
|
|
2004
|
-
svg.current.removeEventListener("mouseup",
|
|
3032
|
+
svg.current.removeEventListener("mouseup", _handleMouseUp);
|
|
2005
3033
|
setGanttEvent({
|
|
2006
3034
|
action: ""
|
|
2007
3035
|
});
|
|
2008
3036
|
setIsMoving(false);
|
|
2009
3037
|
var operationSuccess = true;
|
|
2010
|
-
|
|
2011
|
-
var _temp7 = function () {
|
|
3038
|
+
var _temp4 = function () {
|
|
2012
3039
|
if ((action === "move" || action === "end" || action === "start") && onDateChange && isNotLikeOriginal) {
|
|
2013
|
-
var
|
|
3040
|
+
var _temp = _catch(function () {
|
|
2014
3041
|
return Promise.resolve(onDateChange(newChangedTask, newChangedTask.barChildren)).then(function (result) {
|
|
2015
3042
|
if (result !== undefined) {
|
|
2016
3043
|
operationSuccess = result;
|
|
@@ -2019,12 +3046,11 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2019
3046
|
}, function () {
|
|
2020
3047
|
operationSuccess = false;
|
|
2021
3048
|
});
|
|
2022
|
-
|
|
2023
|
-
if (_temp8 && _temp8.then) return _temp8.then(function () {});
|
|
3049
|
+
if (_temp && _temp.then) return _temp.then(function () {});
|
|
2024
3050
|
} else {
|
|
2025
|
-
var
|
|
3051
|
+
var _temp6 = function () {
|
|
2026
3052
|
if (onProgressChange && isNotLikeOriginal) {
|
|
2027
|
-
var
|
|
3053
|
+
var _temp2 = _catch(function () {
|
|
2028
3054
|
return Promise.resolve(onProgressChange(newChangedTask, newChangedTask.barChildren)).then(function (result) {
|
|
2029
3055
|
if (result !== undefined) {
|
|
2030
3056
|
operationSuccess = result;
|
|
@@ -2033,28 +3059,23 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2033
3059
|
}, function () {
|
|
2034
3060
|
operationSuccess = false;
|
|
2035
3061
|
});
|
|
2036
|
-
|
|
2037
|
-
if (_temp10 && _temp10.then) return _temp10.then(function () {});
|
|
3062
|
+
if (_temp2 && _temp2.then) return _temp2.then(function () {});
|
|
2038
3063
|
}
|
|
2039
3064
|
}();
|
|
2040
|
-
|
|
2041
|
-
if (_temp9 && _temp9.then) return _temp9.then(function () {});
|
|
3065
|
+
if (_temp6 && _temp6.then) return _temp6.then(function () {});
|
|
2042
3066
|
}
|
|
2043
3067
|
}();
|
|
2044
|
-
|
|
2045
|
-
return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp6) : _temp6(_temp7));
|
|
3068
|
+
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
|
|
2046
3069
|
} catch (e) {
|
|
2047
3070
|
return Promise.reject(e);
|
|
2048
3071
|
}
|
|
2049
3072
|
};
|
|
2050
|
-
|
|
2051
3073
|
if (!isMoving && (ganttEvent.action === "move" || ganttEvent.action === "end" || ganttEvent.action === "start" || ganttEvent.action === "progress") && svg !== null && svg !== void 0 && svg.current) {
|
|
2052
3074
|
svg.current.addEventListener("mousemove", handleMouseMove);
|
|
2053
|
-
svg.current.addEventListener("mouseup",
|
|
3075
|
+
svg.current.addEventListener("mouseup", _handleMouseUp);
|
|
2054
3076
|
setIsMoving(true);
|
|
2055
3077
|
}
|
|
2056
3078
|
}, [ganttEvent, xStep, initEventX1Delta, onProgressChange, timeStep, onDateChange, svg, isMoving, point, rtl, setFailedTask, setGanttEvent]);
|
|
2057
|
-
|
|
2058
3079
|
var handleBarEventStart = function handleBarEventStart(action, task, event) {
|
|
2059
3080
|
try {
|
|
2060
3081
|
return Promise.resolve(function () {
|
|
@@ -2064,11 +3085,11 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2064
3085
|
}
|
|
2065
3086
|
} else return function () {
|
|
2066
3087
|
if (isKeyboardEvent(event)) {
|
|
2067
|
-
var
|
|
3088
|
+
var _temp9 = function () {
|
|
2068
3089
|
if (action === "delete") {
|
|
2069
|
-
var
|
|
3090
|
+
var _temp8 = function () {
|
|
2070
3091
|
if (onDelete) {
|
|
2071
|
-
var
|
|
3092
|
+
var _temp7 = _catch(function () {
|
|
2072
3093
|
return Promise.resolve(onDelete(task)).then(function (result) {
|
|
2073
3094
|
if (result !== undefined && result) {
|
|
2074
3095
|
setGanttEvent({
|
|
@@ -2080,16 +3101,13 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2080
3101
|
}, function (error) {
|
|
2081
3102
|
console.error("Error on Delete. " + error);
|
|
2082
3103
|
});
|
|
2083
|
-
|
|
2084
|
-
if (_temp16 && _temp16.then) return _temp16.then(function () {});
|
|
3104
|
+
if (_temp7 && _temp7.then) return _temp7.then(function () {});
|
|
2085
3105
|
}
|
|
2086
3106
|
}();
|
|
2087
|
-
|
|
2088
|
-
if (_temp15 && _temp15.then) return _temp15.then(function () {});
|
|
3107
|
+
if (_temp8 && _temp8.then) return _temp8.then(function () {});
|
|
2089
3108
|
}
|
|
2090
3109
|
}();
|
|
2091
|
-
|
|
2092
|
-
if (_temp14 && _temp14.then) return _temp14.then(function () {});
|
|
3110
|
+
if (_temp9 && _temp9.then) return _temp9.then(function () {});
|
|
2093
3111
|
} else if (action === "mouseenter") {
|
|
2094
3112
|
if (!ganttEvent.action) {
|
|
2095
3113
|
setGanttEvent({
|
|
@@ -2110,7 +3128,6 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2110
3128
|
!!onClick && onClick(task);
|
|
2111
3129
|
} else if (action === "move") {
|
|
2112
3130
|
var _svg$current$getScree3;
|
|
2113
|
-
|
|
2114
3131
|
if (!(svg !== null && svg !== void 0 && svg.current) || !point) return;
|
|
2115
3132
|
point.x = event.clientX;
|
|
2116
3133
|
var cursor = point.matrixTransform((_svg$current$getScree3 = svg.current.getScreenCTM()) === null || _svg$current$getScree3 === void 0 ? void 0 : _svg$current$getScree3.inverse());
|
|
@@ -2133,7 +3150,6 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2133
3150
|
return Promise.reject(e);
|
|
2134
3151
|
}
|
|
2135
3152
|
};
|
|
2136
|
-
|
|
2137
3153
|
return React.createElement("g", {
|
|
2138
3154
|
className: "content"
|
|
2139
3155
|
}, React.createElement("g", {
|
|
@@ -2172,36 +3188,36 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2172
3188
|
})));
|
|
2173
3189
|
};
|
|
2174
3190
|
|
|
2175
|
-
var styles$9 = {"ganttVerticalContainer":"_CZjuD","horizontalContainer":"_2B2zv","wrapper":"_3eULf"};
|
|
3191
|
+
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
3192
|
|
|
2177
3193
|
var TaskGantt = function TaskGantt(_ref) {
|
|
2178
3194
|
var gridProps = _ref.gridProps,
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
3195
|
+
calendarProps = _ref.calendarProps,
|
|
3196
|
+
barProps = _ref.barProps,
|
|
3197
|
+
ganttHeight = _ref.ganttHeight,
|
|
3198
|
+
scrollY = _ref.scrollY,
|
|
3199
|
+
scrollX = _ref.scrollX,
|
|
3200
|
+
verticalGanttContainerRef = _ref.verticalGanttContainerRef;
|
|
2184
3201
|
var ganttSVGRef = useRef(null);
|
|
2185
3202
|
var horizontalContainerRef = useRef(null);
|
|
2186
|
-
var
|
|
2187
|
-
|
|
3203
|
+
var internalVerticalRef = useRef(null);
|
|
3204
|
+
var ganttContainerRef = verticalGanttContainerRef || internalVerticalRef;
|
|
2188
3205
|
var newBarProps = _extends({}, barProps, {
|
|
2189
3206
|
svg: ganttSVGRef
|
|
2190
3207
|
});
|
|
2191
|
-
|
|
2192
3208
|
useEffect(function () {
|
|
2193
3209
|
if (horizontalContainerRef.current) {
|
|
2194
3210
|
horizontalContainerRef.current.scrollTop = scrollY;
|
|
2195
3211
|
}
|
|
2196
3212
|
}, [scrollY]);
|
|
2197
3213
|
useEffect(function () {
|
|
2198
|
-
if (
|
|
2199
|
-
|
|
3214
|
+
if (ganttContainerRef.current) {
|
|
3215
|
+
ganttContainerRef.current.scrollLeft = scrollX;
|
|
2200
3216
|
}
|
|
2201
|
-
}, [scrollX]);
|
|
3217
|
+
}, [scrollX, ganttContainerRef]);
|
|
2202
3218
|
return React.createElement("div", {
|
|
2203
3219
|
className: styles$9.ganttVerticalContainer,
|
|
2204
|
-
ref:
|
|
3220
|
+
ref: ganttContainerRef,
|
|
2205
3221
|
dir: "ltr"
|
|
2206
3222
|
}, React.createElement("svg", {
|
|
2207
3223
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2230,223 +3246,237 @@ var styles$a = {"scrollWrapper":"_2k9Ys","scroll":"_19jgW"};
|
|
|
2230
3246
|
|
|
2231
3247
|
var HorizontalScroll = function HorizontalScroll(_ref) {
|
|
2232
3248
|
var scroll = _ref.scroll,
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
3249
|
+
svgWidth = _ref.svgWidth,
|
|
3250
|
+
scrollerWidth = _ref.scrollerWidth,
|
|
3251
|
+
rtl = _ref.rtl,
|
|
3252
|
+
onScroll = _ref.onScroll,
|
|
3253
|
+
dataTestId = _ref["data-testid"],
|
|
3254
|
+
containerRef = _ref.containerRef,
|
|
3255
|
+
hidden = _ref.hidden;
|
|
2237
3256
|
var scrollRef = useRef(null);
|
|
3257
|
+
var wrapperRef = containerRef != null ? containerRef : scrollRef;
|
|
2238
3258
|
useEffect(function () {
|
|
2239
|
-
if (
|
|
2240
|
-
|
|
3259
|
+
if (wrapperRef.current) {
|
|
3260
|
+
wrapperRef.current.scrollLeft = scroll;
|
|
2241
3261
|
}
|
|
2242
|
-
}, [scroll]);
|
|
3262
|
+
}, [scroll, wrapperRef]);
|
|
2243
3263
|
return React.createElement("div", {
|
|
2244
|
-
dir: "ltr",
|
|
2245
|
-
style: {
|
|
2246
|
-
margin: rtl ? "0px " + taskListWidth + "px 0px 0px" : "0px 0px 0px " + taskListWidth + "px"
|
|
2247
|
-
},
|
|
3264
|
+
dir: rtl ? "rtl" : "ltr",
|
|
2248
3265
|
className: styles$a.scrollWrapper,
|
|
2249
3266
|
onScroll: onScroll,
|
|
2250
|
-
ref:
|
|
3267
|
+
ref: wrapperRef,
|
|
3268
|
+
"data-testid": dataTestId,
|
|
3269
|
+
style: hidden ? {
|
|
3270
|
+
display: "none"
|
|
3271
|
+
} : {
|
|
3272
|
+
width: svgWidth
|
|
3273
|
+
}
|
|
2251
3274
|
}, React.createElement("div", {
|
|
2252
3275
|
style: {
|
|
2253
|
-
width: svgWidth
|
|
3276
|
+
width: scrollerWidth != null ? scrollerWidth : svgWidth
|
|
2254
3277
|
},
|
|
2255
3278
|
className: styles$a.scroll
|
|
2256
3279
|
}));
|
|
2257
3280
|
};
|
|
2258
3281
|
|
|
3282
|
+
var DEFAULT_TASK_LIST_WIDTH = 450;
|
|
3283
|
+
var MIN_PANE_WIDTH = 150;
|
|
3284
|
+
var SPLIT_HANDLE_WIDTH = 8;
|
|
3285
|
+
var clampTaskListWidth = function clampTaskListWidth(width, containerWidth) {
|
|
3286
|
+
var maxWidth = Math.max(MIN_PANE_WIDTH, containerWidth - MIN_PANE_WIDTH - SPLIT_HANDLE_WIDTH);
|
|
3287
|
+
return Math.min(Math.max(width, MIN_PANE_WIDTH), maxWidth);
|
|
3288
|
+
};
|
|
2259
3289
|
var Gantt = function Gantt(_ref) {
|
|
2260
3290
|
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
|
-
|
|
3291
|
+
_ref$headerHeight = _ref.headerHeight,
|
|
3292
|
+
headerHeight = _ref$headerHeight === void 0 ? 50 : _ref$headerHeight,
|
|
3293
|
+
_ref$columnWidth = _ref.columnWidth,
|
|
3294
|
+
columnWidth = _ref$columnWidth === void 0 ? 60 : _ref$columnWidth,
|
|
3295
|
+
_ref$listCellWidth = _ref.listCellWidth,
|
|
3296
|
+
listCellWidth = _ref$listCellWidth === void 0 ? "155px" : _ref$listCellWidth,
|
|
3297
|
+
_ref$rowHeight = _ref.rowHeight,
|
|
3298
|
+
rowHeight = _ref$rowHeight === void 0 ? 50 : _ref$rowHeight,
|
|
3299
|
+
_ref$ganttHeight = _ref.ganttHeight,
|
|
3300
|
+
ganttHeight = _ref$ganttHeight === void 0 ? 0 : _ref$ganttHeight,
|
|
3301
|
+
_ref$viewMode = _ref.viewMode,
|
|
3302
|
+
viewMode = _ref$viewMode === void 0 ? ViewMode.Day : _ref$viewMode,
|
|
3303
|
+
_ref$preStepsCount = _ref.preStepsCount,
|
|
3304
|
+
preStepsCount = _ref$preStepsCount === void 0 ? 1 : _ref$preStepsCount,
|
|
3305
|
+
_ref$locale = _ref.locale,
|
|
3306
|
+
locale = _ref$locale === void 0 ? "en-GB" : _ref$locale,
|
|
3307
|
+
_ref$barFill = _ref.barFill,
|
|
3308
|
+
barFill = _ref$barFill === void 0 ? 60 : _ref$barFill,
|
|
3309
|
+
_ref$barCornerRadius = _ref.barCornerRadius,
|
|
3310
|
+
barCornerRadius = _ref$barCornerRadius === void 0 ? 3 : _ref$barCornerRadius,
|
|
3311
|
+
_ref$barProgressColor = _ref.barProgressColor,
|
|
3312
|
+
barProgressColor = _ref$barProgressColor === void 0 ? "#a3a3ff" : _ref$barProgressColor,
|
|
3313
|
+
_ref$barProgressSelec = _ref.barProgressSelectedColor,
|
|
3314
|
+
barProgressSelectedColor = _ref$barProgressSelec === void 0 ? "#8282f5" : _ref$barProgressSelec,
|
|
3315
|
+
_ref$barBackgroundCol = _ref.barBackgroundColor,
|
|
3316
|
+
barBackgroundColor = _ref$barBackgroundCol === void 0 ? "#b8c2cc" : _ref$barBackgroundCol,
|
|
3317
|
+
_ref$barBackgroundSel = _ref.barBackgroundSelectedColor,
|
|
3318
|
+
barBackgroundSelectedColor = _ref$barBackgroundSel === void 0 ? "#aeb8c2" : _ref$barBackgroundSel,
|
|
3319
|
+
_ref$projectProgressC = _ref.projectProgressColor,
|
|
3320
|
+
projectProgressColor = _ref$projectProgressC === void 0 ? "#7db59a" : _ref$projectProgressC,
|
|
3321
|
+
_ref$projectProgressS = _ref.projectProgressSelectedColor,
|
|
3322
|
+
projectProgressSelectedColor = _ref$projectProgressS === void 0 ? "#59a985" : _ref$projectProgressS,
|
|
3323
|
+
_ref$projectBackgroun = _ref.projectBackgroundColor,
|
|
3324
|
+
projectBackgroundColor = _ref$projectBackgroun === void 0 ? "#fac465" : _ref$projectBackgroun,
|
|
3325
|
+
_ref$projectBackgroun2 = _ref.projectBackgroundSelectedColor,
|
|
3326
|
+
projectBackgroundSelectedColor = _ref$projectBackgroun2 === void 0 ? "#f7bb53" : _ref$projectBackgroun2,
|
|
3327
|
+
_ref$milestoneBackgro = _ref.milestoneBackgroundColor,
|
|
3328
|
+
milestoneBackgroundColor = _ref$milestoneBackgro === void 0 ? "#f1c453" : _ref$milestoneBackgro,
|
|
3329
|
+
_ref$milestoneBackgro2 = _ref.milestoneBackgroundSelectedColor,
|
|
3330
|
+
milestoneBackgroundSelectedColor = _ref$milestoneBackgro2 === void 0 ? "#f29e4c" : _ref$milestoneBackgro2,
|
|
3331
|
+
_ref$rtl = _ref.rtl,
|
|
3332
|
+
rtl = _ref$rtl === void 0 ? false : _ref$rtl,
|
|
3333
|
+
_ref$handleWidth = _ref.handleWidth,
|
|
3334
|
+
handleWidth = _ref$handleWidth === void 0 ? 8 : _ref$handleWidth,
|
|
3335
|
+
_ref$timeStep = _ref.timeStep,
|
|
3336
|
+
timeStep = _ref$timeStep === void 0 ? 300000 : _ref$timeStep,
|
|
3337
|
+
_ref$arrowColor = _ref.arrowColor,
|
|
3338
|
+
arrowColor = _ref$arrowColor === void 0 ? "grey" : _ref$arrowColor,
|
|
3339
|
+
_ref$fontFamily = _ref.fontFamily,
|
|
3340
|
+
fontFamily = _ref$fontFamily === void 0 ? "Arial, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue" : _ref$fontFamily,
|
|
3341
|
+
_ref$fontSize = _ref.fontSize,
|
|
3342
|
+
fontSize = _ref$fontSize === void 0 ? "14px" : _ref$fontSize,
|
|
3343
|
+
_ref$arrowIndent = _ref.arrowIndent,
|
|
3344
|
+
arrowIndent = _ref$arrowIndent === void 0 ? 20 : _ref$arrowIndent,
|
|
3345
|
+
_ref$todayColor = _ref.todayColor,
|
|
3346
|
+
todayColor = _ref$todayColor === void 0 ? "rgba(252, 248, 227, 0.5)" : _ref$todayColor,
|
|
3347
|
+
viewDate = _ref.viewDate,
|
|
3348
|
+
_ref$TooltipContent = _ref.TooltipContent,
|
|
3349
|
+
TooltipContent = _ref$TooltipContent === void 0 ? StandardTooltipContent : _ref$TooltipContent,
|
|
3350
|
+
_ref$TaskListHeader = _ref.TaskListHeader,
|
|
3351
|
+
TaskListHeader = _ref$TaskListHeader === void 0 ? TaskListHeaderDefault : _ref$TaskListHeader,
|
|
3352
|
+
_ref$TaskListTable = _ref.TaskListTable,
|
|
3353
|
+
TaskListTable = _ref$TaskListTable === void 0 ? TaskListTableDefault : _ref$TaskListTable,
|
|
3354
|
+
_ref$visibleFields = _ref.visibleFields,
|
|
3355
|
+
visibleFields = _ref$visibleFields === void 0 ? DEFAULT_VISIBLE_FIELDS : _ref$visibleFields,
|
|
3356
|
+
_ref$effortDisplayUni = _ref.effortDisplayUnit,
|
|
3357
|
+
effortDisplayUnit = _ref$effortDisplayUni === void 0 ? "MH" : _ref$effortDisplayUni,
|
|
3358
|
+
enableColumnDrag = _ref.enableColumnDrag,
|
|
3359
|
+
onDateChange = _ref.onDateChange,
|
|
3360
|
+
onProgressChange = _ref.onProgressChange,
|
|
3361
|
+
onDoubleClick = _ref.onDoubleClick,
|
|
3362
|
+
onClick = _ref.onClick,
|
|
3363
|
+
onDelete = _ref.onDelete,
|
|
3364
|
+
onSelect = _ref.onSelect,
|
|
3365
|
+
onExpanderClick = _ref.onExpanderClick,
|
|
3366
|
+
onTaskUpdate = _ref.onTaskUpdate,
|
|
3367
|
+
onCellCommit = _ref.onCellCommit;
|
|
2331
3368
|
var wrapperRef = useRef(null);
|
|
2332
3369
|
var taskListRef = useRef(null);
|
|
2333
|
-
|
|
3370
|
+
var taskListHeaderRef = useRef(null);
|
|
3371
|
+
var taskListBodyRef = useRef(null);
|
|
3372
|
+
var ganttContainerRef = useRef(null);
|
|
3373
|
+
var splitStartXRef = useRef(null);
|
|
3374
|
+
var splitStartWidthRef = useRef(null);
|
|
3375
|
+
var splitMoveHandlerRef = useRef(null);
|
|
3376
|
+
var splitUpHandlerRef = useRef(null);
|
|
3377
|
+
var supportsPointerEvents = typeof window !== "undefined" && "PointerEvent" in window;
|
|
2334
3378
|
var _useState = useState(function () {
|
|
2335
|
-
|
|
3379
|
+
var _ganttDateRange = ganttDateRange(tasks, viewMode, preStepsCount),
|
|
2336
3380
|
startDate = _ganttDateRange[0],
|
|
2337
3381
|
endDate = _ganttDateRange[1];
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
}
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
setDateSetup = _useState[1];
|
|
2346
|
-
|
|
3382
|
+
return {
|
|
3383
|
+
viewMode: viewMode,
|
|
3384
|
+
dates: seedDates(startDate, endDate, viewMode)
|
|
3385
|
+
};
|
|
3386
|
+
}),
|
|
3387
|
+
dateSetup = _useState[0],
|
|
3388
|
+
setDateSetup = _useState[1];
|
|
2347
3389
|
var _useState2 = useState(undefined),
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
setTaskListWidth = _useState3[1];
|
|
2354
|
-
|
|
3390
|
+
currentViewDate = _useState2[0],
|
|
3391
|
+
setCurrentViewDate = _useState2[1];
|
|
3392
|
+
var _useState3 = useState(DEFAULT_TASK_LIST_WIDTH),
|
|
3393
|
+
taskListWidth = _useState3[0],
|
|
3394
|
+
setTaskListWidth = _useState3[1];
|
|
2355
3395
|
var _useState4 = useState(0),
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
var
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
3396
|
+
wrapperWidth = _useState4[0],
|
|
3397
|
+
setWrapperWidth = _useState4[1];
|
|
3398
|
+
var _useState5 = useState(false),
|
|
3399
|
+
isResizing = _useState5[0],
|
|
3400
|
+
setIsResizing = _useState5[1];
|
|
3401
|
+
var _useState6 = useState(0),
|
|
3402
|
+
svgContainerWidth = _useState6[0],
|
|
3403
|
+
setSvgContainerWidth = _useState6[1];
|
|
3404
|
+
var _useState7 = useState(ganttHeight),
|
|
3405
|
+
svgContainerHeight = _useState7[0],
|
|
3406
|
+
setSvgContainerHeight = _useState7[1];
|
|
3407
|
+
var _useState8 = useState([]),
|
|
3408
|
+
barTasks = _useState8[0],
|
|
3409
|
+
setBarTasks = _useState8[1];
|
|
3410
|
+
var _useState9 = useState({
|
|
3411
|
+
action: ""
|
|
3412
|
+
}),
|
|
3413
|
+
ganttEvent = _useState9[0],
|
|
3414
|
+
setGanttEvent = _useState9[1];
|
|
2373
3415
|
var taskHeight = useMemo(function () {
|
|
2374
3416
|
return rowHeight * barFill / 100;
|
|
2375
3417
|
}, [rowHeight, barFill]);
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
failedTask = _useState9[0],
|
|
2383
|
-
setFailedTask = _useState9[1];
|
|
2384
|
-
|
|
3418
|
+
var _useState0 = useState(),
|
|
3419
|
+
selectedTask = _useState0[0],
|
|
3420
|
+
setSelectedTask = _useState0[1];
|
|
3421
|
+
var _useState1 = useState(null),
|
|
3422
|
+
failedTask = _useState1[0],
|
|
3423
|
+
setFailedTask = _useState1[1];
|
|
2385
3424
|
var svgWidth = dateSetup.dates.length * columnWidth;
|
|
2386
3425
|
var ganttFullHeight = barTasks.length * rowHeight;
|
|
2387
|
-
|
|
2388
3426
|
var _useState10 = useState(0),
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
3427
|
+
scrollY = _useState10[0],
|
|
3428
|
+
setScrollY = _useState10[1];
|
|
3429
|
+
var _useState11 = useState(0),
|
|
3430
|
+
scrollXLeft = _useState11[0],
|
|
3431
|
+
setScrollXLeft = _useState11[1];
|
|
3432
|
+
var _useState12 = useState(-1),
|
|
3433
|
+
scrollXRight = _useState12[0],
|
|
3434
|
+
setScrollXRight = _useState12[1];
|
|
3435
|
+
var _useState13 = useState(1430),
|
|
3436
|
+
leftScrollerWidth = _useState13[0],
|
|
3437
|
+
setLeftScrollerWidth = _useState13[1];
|
|
3438
|
+
var ignoreScrollLeftRef = useRef(false);
|
|
3439
|
+
var ignoreScrollRightRef = useRef(false);
|
|
2400
3440
|
useEffect(function () {
|
|
2401
3441
|
var filteredTasks;
|
|
2402
|
-
|
|
2403
3442
|
if (onExpanderClick) {
|
|
2404
3443
|
filteredTasks = removeHiddenTasks(tasks);
|
|
2405
3444
|
} else {
|
|
2406
3445
|
filteredTasks = tasks;
|
|
2407
3446
|
}
|
|
2408
|
-
|
|
2409
3447
|
filteredTasks = filteredTasks.sort(sortTasks);
|
|
2410
|
-
|
|
2411
3448
|
var _ganttDateRange2 = ganttDateRange(filteredTasks, viewMode, preStepsCount),
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
3449
|
+
startDate = _ganttDateRange2[0],
|
|
3450
|
+
endDate = _ganttDateRange2[1];
|
|
2415
3451
|
var newDates = seedDates(startDate, endDate, viewMode);
|
|
2416
|
-
|
|
2417
3452
|
if (rtl) {
|
|
2418
3453
|
newDates = newDates.reverse();
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
setScrollX(newDates.length * columnWidth);
|
|
3454
|
+
if (scrollXRight === -1) {
|
|
3455
|
+
setScrollXRight(newDates.length * columnWidth);
|
|
2422
3456
|
}
|
|
2423
3457
|
}
|
|
2424
|
-
|
|
2425
3458
|
setDateSetup({
|
|
2426
3459
|
dates: newDates,
|
|
2427
3460
|
viewMode: viewMode
|
|
2428
3461
|
});
|
|
2429
3462
|
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,
|
|
3463
|
+
}, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, columnWidth, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, scrollXRight, onExpanderClick]);
|
|
2431
3464
|
useEffect(function () {
|
|
2432
3465
|
if (viewMode === dateSetup.viewMode && (viewDate && !currentViewDate || viewDate && (currentViewDate === null || currentViewDate === void 0 ? void 0 : currentViewDate.valueOf()) !== viewDate.valueOf())) {
|
|
2433
3466
|
var dates = dateSetup.dates;
|
|
2434
3467
|
var index = dates.findIndex(function (d, i) {
|
|
2435
3468
|
return viewDate.valueOf() >= d.valueOf() && i + 1 !== dates.length && viewDate.valueOf() < dates[i + 1].valueOf();
|
|
2436
3469
|
});
|
|
2437
|
-
|
|
2438
3470
|
if (index === -1) {
|
|
2439
3471
|
return;
|
|
2440
3472
|
}
|
|
2441
|
-
|
|
2442
3473
|
setCurrentViewDate(viewDate);
|
|
2443
|
-
|
|
3474
|
+
setScrollXRight(columnWidth * index);
|
|
2444
3475
|
}
|
|
2445
3476
|
}, [viewDate, columnWidth, dateSetup.dates, dateSetup.viewMode, viewMode, currentViewDate, setCurrentViewDate]);
|
|
2446
3477
|
useEffect(function () {
|
|
2447
3478
|
var changedTask = ganttEvent.changedTask,
|
|
2448
|
-
|
|
2449
|
-
|
|
3479
|
+
action = ganttEvent.action;
|
|
2450
3480
|
if (changedTask) {
|
|
2451
3481
|
if (action === "delete") {
|
|
2452
3482
|
setGanttEvent({
|
|
@@ -2459,7 +3489,6 @@ var Gantt = function Gantt(_ref) {
|
|
|
2459
3489
|
var prevStateTask = barTasks.find(function (t) {
|
|
2460
3490
|
return t.id === changedTask.id;
|
|
2461
3491
|
});
|
|
2462
|
-
|
|
2463
3492
|
if (prevStateTask && (prevStateTask.start.getTime() !== changedTask.start.getTime() || prevStateTask.end.getTime() !== changedTask.end.getTime() || prevStateTask.progress !== changedTask.progress)) {
|
|
2464
3493
|
var newTaskList = barTasks.map(function (t) {
|
|
2465
3494
|
return t.id === changedTask.id ? changedTask : t;
|
|
@@ -2477,20 +3506,35 @@ var Gantt = function Gantt(_ref) {
|
|
|
2477
3506
|
setFailedTask(null);
|
|
2478
3507
|
}
|
|
2479
3508
|
}, [failedTask, barTasks]);
|
|
3509
|
+
useEffect(function () {
|
|
3510
|
+
var updateWrapperWidth = function updateWrapperWidth() {
|
|
3511
|
+
if (wrapperRef.current) {
|
|
3512
|
+
setWrapperWidth(wrapperRef.current.offsetWidth);
|
|
3513
|
+
}
|
|
3514
|
+
};
|
|
3515
|
+
updateWrapperWidth();
|
|
3516
|
+
window.addEventListener("resize", updateWrapperWidth);
|
|
3517
|
+
return function () {
|
|
3518
|
+
return window.removeEventListener("resize", updateWrapperWidth);
|
|
3519
|
+
};
|
|
3520
|
+
}, []);
|
|
2480
3521
|
useEffect(function () {
|
|
2481
3522
|
if (!listCellWidth) {
|
|
2482
3523
|
setTaskListWidth(0);
|
|
3524
|
+
return;
|
|
2483
3525
|
}
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
3526
|
+
if (wrapperWidth) {
|
|
3527
|
+
setTaskListWidth(function (prev) {
|
|
3528
|
+
return clampTaskListWidth(prev, wrapperWidth);
|
|
3529
|
+
});
|
|
2487
3530
|
}
|
|
2488
|
-
}, [
|
|
3531
|
+
}, [listCellWidth, wrapperWidth]);
|
|
3532
|
+
var taskListOffset = listCellWidth ? taskListWidth + SPLIT_HANDLE_WIDTH : 0;
|
|
2489
3533
|
useEffect(function () {
|
|
2490
|
-
if (
|
|
2491
|
-
setSvgContainerWidth(
|
|
3534
|
+
if (wrapperWidth) {
|
|
3535
|
+
setSvgContainerWidth(Math.max(wrapperWidth - taskListOffset, 0));
|
|
2492
3536
|
}
|
|
2493
|
-
}, [
|
|
3537
|
+
}, [wrapperWidth, taskListOffset]);
|
|
2494
3538
|
useEffect(function () {
|
|
2495
3539
|
if (ganttHeight) {
|
|
2496
3540
|
setSvgContainerHeight(ganttHeight + headerHeight);
|
|
@@ -2499,118 +3543,147 @@ var Gantt = function Gantt(_ref) {
|
|
|
2499
3543
|
}
|
|
2500
3544
|
}, [ganttHeight, tasks, headerHeight, rowHeight]);
|
|
2501
3545
|
useEffect(function () {
|
|
2502
|
-
|
|
2503
|
-
|
|
3546
|
+
return function () {
|
|
3547
|
+
if (splitMoveHandlerRef.current) {
|
|
3548
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3549
|
+
splitMoveHandlerRef.current = null;
|
|
3550
|
+
}
|
|
3551
|
+
if (splitUpHandlerRef.current) {
|
|
3552
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3553
|
+
splitUpHandlerRef.current = null;
|
|
3554
|
+
}
|
|
3555
|
+
};
|
|
3556
|
+
}, []);
|
|
3557
|
+
useEffect(function () {
|
|
2504
3558
|
var handleWheel = function handleWheel(event) {
|
|
2505
3559
|
if (event.shiftKey || event.deltaX) {
|
|
2506
3560
|
var scrollMove = event.deltaX ? event.deltaX : event.deltaY;
|
|
2507
|
-
var newScrollX =
|
|
2508
|
-
|
|
3561
|
+
var newScrollX = scrollXRight + scrollMove;
|
|
2509
3562
|
if (newScrollX < 0) {
|
|
2510
3563
|
newScrollX = 0;
|
|
2511
3564
|
} else if (newScrollX > svgWidth) {
|
|
2512
3565
|
newScrollX = svgWidth;
|
|
2513
3566
|
}
|
|
2514
|
-
|
|
2515
|
-
|
|
3567
|
+
ignoreScrollRightRef.current = true;
|
|
3568
|
+
setScrollXRight(newScrollX);
|
|
2516
3569
|
event.preventDefault();
|
|
2517
3570
|
} else if (ganttHeight) {
|
|
2518
3571
|
var newScrollY = scrollY + event.deltaY;
|
|
2519
|
-
|
|
2520
3572
|
if (newScrollY < 0) {
|
|
2521
3573
|
newScrollY = 0;
|
|
2522
3574
|
} else if (newScrollY > ganttFullHeight - ganttHeight) {
|
|
2523
3575
|
newScrollY = ganttFullHeight - ganttHeight;
|
|
2524
3576
|
}
|
|
2525
|
-
|
|
2526
3577
|
if (newScrollY !== scrollY) {
|
|
2527
3578
|
setScrollY(newScrollY);
|
|
2528
3579
|
event.preventDefault();
|
|
2529
3580
|
}
|
|
2530
3581
|
}
|
|
2531
|
-
|
|
2532
|
-
setIgnoreScrollEvent(true);
|
|
2533
3582
|
};
|
|
2534
|
-
|
|
2535
|
-
|
|
3583
|
+
var wrapperEl = wrapperRef.current;
|
|
3584
|
+
wrapperEl === null || wrapperEl === void 0 ? void 0 : wrapperEl.addEventListener("wheel", handleWheel, {
|
|
2536
3585
|
passive: false
|
|
2537
3586
|
});
|
|
2538
3587
|
return function () {
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
(_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.removeEventListener("wheel", handleWheel);
|
|
3588
|
+
wrapperEl === null || wrapperEl === void 0 ? void 0 : wrapperEl.removeEventListener("wheel", handleWheel);
|
|
2542
3589
|
};
|
|
2543
|
-
}, [
|
|
2544
|
-
|
|
3590
|
+
}, [scrollY, scrollXRight, ganttHeight, svgWidth, rtl, ganttFullHeight]);
|
|
3591
|
+
useEffect(function () {
|
|
3592
|
+
var updateLeftScroller = function updateLeftScroller() {
|
|
3593
|
+
var el = taskListBodyRef.current;
|
|
3594
|
+
if (el) {
|
|
3595
|
+
setLeftScrollerWidth(el.scrollWidth || 0);
|
|
3596
|
+
}
|
|
3597
|
+
};
|
|
3598
|
+
updateLeftScroller();
|
|
3599
|
+
var RO = window.ResizeObserver;
|
|
3600
|
+
var ro = RO ? new RO(updateLeftScroller) : null;
|
|
3601
|
+
if (ro && taskListBodyRef.current) {
|
|
3602
|
+
ro.observe(taskListBodyRef.current);
|
|
3603
|
+
}
|
|
3604
|
+
window.addEventListener("resize", updateLeftScroller);
|
|
3605
|
+
return function () {
|
|
3606
|
+
if (ro) {
|
|
3607
|
+
ro.disconnect();
|
|
3608
|
+
}
|
|
3609
|
+
window.removeEventListener("resize", updateLeftScroller);
|
|
3610
|
+
};
|
|
3611
|
+
}, [tasks, fontFamily, fontSize, listCellWidth, taskListBodyRef, visibleFields]);
|
|
2545
3612
|
var handleScrollY = function handleScrollY(event) {
|
|
2546
|
-
if (scrollY !== event.currentTarget.scrollTop && !
|
|
3613
|
+
if (scrollY !== event.currentTarget.scrollTop && !ignoreScrollLeftRef.current) {
|
|
2547
3614
|
setScrollY(event.currentTarget.scrollTop);
|
|
2548
|
-
|
|
3615
|
+
ignoreScrollLeftRef.current = true;
|
|
2549
3616
|
} else {
|
|
2550
|
-
|
|
3617
|
+
ignoreScrollLeftRef.current = false;
|
|
2551
3618
|
}
|
|
2552
3619
|
};
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
setIgnoreScrollEvent(true);
|
|
3620
|
+
var handleScrollLeft = function handleScrollLeft(event) {
|
|
3621
|
+
if (scrollXLeft !== event.currentTarget.scrollLeft && !ignoreScrollLeftRef.current) {
|
|
3622
|
+
setScrollXLeft(event.currentTarget.scrollLeft);
|
|
3623
|
+
ignoreScrollLeftRef.current = true;
|
|
2558
3624
|
} else {
|
|
2559
|
-
|
|
3625
|
+
ignoreScrollLeftRef.current = false;
|
|
3626
|
+
}
|
|
3627
|
+
};
|
|
3628
|
+
var handleScrollRight = function handleScrollRight(event) {
|
|
3629
|
+
if (scrollXRight !== event.currentTarget.scrollLeft && !ignoreScrollRightRef.current) {
|
|
3630
|
+
setScrollXRight(event.currentTarget.scrollLeft);
|
|
3631
|
+
ignoreScrollRightRef.current = true;
|
|
3632
|
+
} else {
|
|
3633
|
+
ignoreScrollRightRef.current = false;
|
|
3634
|
+
}
|
|
3635
|
+
if (ganttContainerRef.current && ganttContainerRef.current.scrollLeft !== event.currentTarget.scrollLeft) {
|
|
3636
|
+
ganttContainerRef.current.scrollLeft = event.currentTarget.scrollLeft;
|
|
2560
3637
|
}
|
|
2561
3638
|
};
|
|
2562
|
-
|
|
2563
3639
|
var handleKeyDown = function handleKeyDown(event) {
|
|
3640
|
+
var target = event.target;
|
|
3641
|
+
if (target instanceof HTMLElement) {
|
|
3642
|
+
if (target.isContentEditable || target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.tagName === "SELECT") {
|
|
3643
|
+
return;
|
|
3644
|
+
}
|
|
3645
|
+
}
|
|
2564
3646
|
event.preventDefault();
|
|
2565
3647
|
var newScrollY = scrollY;
|
|
2566
|
-
var newScrollX =
|
|
3648
|
+
var newScrollX = scrollXRight;
|
|
2567
3649
|
var isX = true;
|
|
2568
|
-
|
|
2569
3650
|
switch (event.key) {
|
|
2570
3651
|
case "Down":
|
|
2571
3652
|
case "ArrowDown":
|
|
2572
3653
|
newScrollY += rowHeight;
|
|
2573
3654
|
isX = false;
|
|
2574
3655
|
break;
|
|
2575
|
-
|
|
2576
3656
|
case "Up":
|
|
2577
3657
|
case "ArrowUp":
|
|
2578
3658
|
newScrollY -= rowHeight;
|
|
2579
3659
|
isX = false;
|
|
2580
3660
|
break;
|
|
2581
|
-
|
|
2582
3661
|
case "Left":
|
|
2583
3662
|
case "ArrowLeft":
|
|
2584
3663
|
newScrollX -= columnWidth;
|
|
2585
3664
|
break;
|
|
2586
|
-
|
|
2587
3665
|
case "Right":
|
|
2588
3666
|
case "ArrowRight":
|
|
2589
3667
|
newScrollX += columnWidth;
|
|
2590
3668
|
break;
|
|
2591
3669
|
}
|
|
2592
|
-
|
|
2593
3670
|
if (isX) {
|
|
2594
3671
|
if (newScrollX < 0) {
|
|
2595
3672
|
newScrollX = 0;
|
|
2596
3673
|
} else if (newScrollX > svgWidth) {
|
|
2597
3674
|
newScrollX = svgWidth;
|
|
2598
3675
|
}
|
|
2599
|
-
|
|
2600
|
-
|
|
3676
|
+
ignoreScrollRightRef.current = true;
|
|
3677
|
+
setScrollXRight(newScrollX);
|
|
2601
3678
|
} else {
|
|
2602
3679
|
if (newScrollY < 0) {
|
|
2603
3680
|
newScrollY = 0;
|
|
2604
3681
|
} else if (newScrollY > ganttFullHeight - ganttHeight) {
|
|
2605
3682
|
newScrollY = ganttFullHeight - ganttHeight;
|
|
2606
3683
|
}
|
|
2607
|
-
|
|
2608
3684
|
setScrollY(newScrollY);
|
|
2609
3685
|
}
|
|
2610
|
-
|
|
2611
|
-
setIgnoreScrollEvent(true);
|
|
2612
3686
|
};
|
|
2613
|
-
|
|
2614
3687
|
var handleSelectedTask = function handleSelectedTask(taskId) {
|
|
2615
3688
|
var newSelectedTask = barTasks.find(function (t) {
|
|
2616
3689
|
return t.id === taskId;
|
|
@@ -2618,20 +3691,16 @@ var Gantt = function Gantt(_ref) {
|
|
|
2618
3691
|
var oldSelectedTask = barTasks.find(function (t) {
|
|
2619
3692
|
return !!selectedTask && t.id === selectedTask.id;
|
|
2620
3693
|
});
|
|
2621
|
-
|
|
2622
3694
|
if (onSelect) {
|
|
2623
3695
|
if (oldSelectedTask) {
|
|
2624
3696
|
onSelect(oldSelectedTask, false);
|
|
2625
3697
|
}
|
|
2626
|
-
|
|
2627
3698
|
if (newSelectedTask) {
|
|
2628
3699
|
onSelect(newSelectedTask, true);
|
|
2629
3700
|
}
|
|
2630
3701
|
}
|
|
2631
|
-
|
|
2632
3702
|
setSelectedTask(newSelectedTask);
|
|
2633
3703
|
};
|
|
2634
|
-
|
|
2635
3704
|
var handleExpanderClick = function handleExpanderClick(task) {
|
|
2636
3705
|
if (onExpanderClick && task.hideChildren !== undefined) {
|
|
2637
3706
|
onExpanderClick(_extends({}, task, {
|
|
@@ -2639,7 +3708,69 @@ var Gantt = function Gantt(_ref) {
|
|
|
2639
3708
|
}));
|
|
2640
3709
|
}
|
|
2641
3710
|
};
|
|
2642
|
-
|
|
3711
|
+
var updateTaskListWidth = function updateTaskListWidth(clientX) {
|
|
3712
|
+
if (splitStartXRef.current == null || splitStartWidthRef.current == null) {
|
|
3713
|
+
return;
|
|
3714
|
+
}
|
|
3715
|
+
if (!wrapperRef.current) {
|
|
3716
|
+
return;
|
|
3717
|
+
}
|
|
3718
|
+
var delta = clientX - splitStartXRef.current;
|
|
3719
|
+
var nextWidth = clampTaskListWidth(splitStartWidthRef.current + delta, wrapperRef.current.offsetWidth);
|
|
3720
|
+
setTaskListWidth(nextWidth);
|
|
3721
|
+
};
|
|
3722
|
+
var handleSplitPointerDown = function handleSplitPointerDown(event) {
|
|
3723
|
+
event.preventDefault();
|
|
3724
|
+
splitStartXRef.current = event.clientX;
|
|
3725
|
+
splitStartWidthRef.current = taskListWidth;
|
|
3726
|
+
setIsResizing(true);
|
|
3727
|
+
if (event.currentTarget.setPointerCapture) {
|
|
3728
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
3729
|
+
}
|
|
3730
|
+
};
|
|
3731
|
+
var handleSplitPointerMove = function handleSplitPointerMove(event) {
|
|
3732
|
+
updateTaskListWidth(event.clientX);
|
|
3733
|
+
};
|
|
3734
|
+
var handleSplitPointerUp = function handleSplitPointerUp(event) {
|
|
3735
|
+
splitStartXRef.current = null;
|
|
3736
|
+
splitStartWidthRef.current = null;
|
|
3737
|
+
setIsResizing(false);
|
|
3738
|
+
if (event.currentTarget.releasePointerCapture) {
|
|
3739
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
3740
|
+
}
|
|
3741
|
+
};
|
|
3742
|
+
var handleSplitMouseDown = function handleSplitMouseDown(event) {
|
|
3743
|
+
event.preventDefault();
|
|
3744
|
+
splitStartXRef.current = event.clientX;
|
|
3745
|
+
splitStartWidthRef.current = taskListWidth;
|
|
3746
|
+
setIsResizing(true);
|
|
3747
|
+
if (splitMoveHandlerRef.current) {
|
|
3748
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3749
|
+
}
|
|
3750
|
+
if (splitUpHandlerRef.current) {
|
|
3751
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3752
|
+
}
|
|
3753
|
+
var handleMouseMove = function handleMouseMove(moveEvent) {
|
|
3754
|
+
updateTaskListWidth(moveEvent.clientX);
|
|
3755
|
+
};
|
|
3756
|
+
var handleMouseUp = function handleMouseUp() {
|
|
3757
|
+
splitStartXRef.current = null;
|
|
3758
|
+
splitStartWidthRef.current = null;
|
|
3759
|
+
setIsResizing(false);
|
|
3760
|
+
if (splitMoveHandlerRef.current) {
|
|
3761
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3762
|
+
splitMoveHandlerRef.current = null;
|
|
3763
|
+
}
|
|
3764
|
+
if (splitUpHandlerRef.current) {
|
|
3765
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3766
|
+
splitUpHandlerRef.current = null;
|
|
3767
|
+
}
|
|
3768
|
+
};
|
|
3769
|
+
splitMoveHandlerRef.current = handleMouseMove;
|
|
3770
|
+
splitUpHandlerRef.current = handleMouseUp;
|
|
3771
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
3772
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
3773
|
+
};
|
|
2643
3774
|
var gridProps = {
|
|
2644
3775
|
columnWidth: columnWidth,
|
|
2645
3776
|
svgWidth: svgWidth,
|
|
@@ -2689,45 +3820,78 @@ var Gantt = function Gantt(_ref) {
|
|
|
2689
3820
|
fontFamily: fontFamily,
|
|
2690
3821
|
fontSize: fontSize,
|
|
2691
3822
|
tasks: barTasks,
|
|
2692
|
-
locale: locale,
|
|
2693
3823
|
headerHeight: headerHeight,
|
|
2694
3824
|
scrollY: scrollY,
|
|
3825
|
+
horizontalScroll: scrollXLeft,
|
|
2695
3826
|
ganttHeight: ganttHeight,
|
|
2696
3827
|
horizontalContainerClass: styles$9.horizontalContainer,
|
|
3828
|
+
headerContainerRef: taskListHeaderRef,
|
|
3829
|
+
bodyContainerRef: taskListBodyRef,
|
|
3830
|
+
onHorizontalScroll: handleScrollLeft,
|
|
2697
3831
|
selectedTask: selectedTask,
|
|
2698
3832
|
taskListRef: taskListRef,
|
|
2699
3833
|
setSelectedTask: handleSelectedTask,
|
|
2700
3834
|
onExpanderClick: handleExpanderClick,
|
|
2701
3835
|
TaskListHeader: TaskListHeader,
|
|
2702
|
-
TaskListTable: TaskListTable
|
|
3836
|
+
TaskListTable: TaskListTable,
|
|
3837
|
+
visibleFields: visibleFields,
|
|
3838
|
+
onUpdateTask: onTaskUpdate,
|
|
3839
|
+
onCellCommit: onCellCommit,
|
|
3840
|
+
effortDisplayUnit: effortDisplayUnit,
|
|
3841
|
+
enableColumnDrag: enableColumnDrag
|
|
2703
3842
|
};
|
|
2704
3843
|
return React.createElement("div", null, React.createElement("div", {
|
|
2705
3844
|
className: styles$9.wrapper,
|
|
2706
3845
|
onKeyDown: handleKeyDown,
|
|
2707
3846
|
tabIndex: 0,
|
|
2708
3847
|
ref: wrapperRef
|
|
2709
|
-
}, listCellWidth && React.createElement(
|
|
3848
|
+
}, listCellWidth && React.createElement("div", {
|
|
3849
|
+
className: styles$9.taskListPanel,
|
|
3850
|
+
style: {
|
|
3851
|
+
width: taskListWidth
|
|
3852
|
+
},
|
|
3853
|
+
"data-testid": "task-list-panel"
|
|
3854
|
+
}, React.createElement(TaskList, Object.assign({}, tableProps))), listCellWidth && React.createElement("div", {
|
|
3855
|
+
className: styles$9.splitHandle + " " + (isResizing ? styles$9.splitHandleActive : ""),
|
|
3856
|
+
onPointerDown: supportsPointerEvents ? handleSplitPointerDown : undefined,
|
|
3857
|
+
onPointerMove: supportsPointerEvents ? handleSplitPointerMove : undefined,
|
|
3858
|
+
onPointerUp: supportsPointerEvents ? handleSplitPointerUp : undefined,
|
|
3859
|
+
onPointerCancel: supportsPointerEvents ? handleSplitPointerUp : undefined,
|
|
3860
|
+
onMouseDown: supportsPointerEvents ? undefined : handleSplitMouseDown,
|
|
3861
|
+
role: "separator",
|
|
3862
|
+
"aria-label": "Task/Schedule divider",
|
|
3863
|
+
"aria-orientation": "vertical",
|
|
3864
|
+
"data-testid": "pane-splitter"
|
|
3865
|
+
}), React.createElement("div", {
|
|
3866
|
+
className: styles$9.ganttPanel,
|
|
3867
|
+
style: {
|
|
3868
|
+
minWidth: MIN_PANE_WIDTH
|
|
3869
|
+
},
|
|
3870
|
+
"data-testid": "gantt-panel"
|
|
3871
|
+
}, React.createElement(TaskGantt, {
|
|
2710
3872
|
gridProps: gridProps,
|
|
2711
3873
|
calendarProps: calendarProps,
|
|
2712
3874
|
barProps: barProps,
|
|
2713
3875
|
ganttHeight: ganttHeight,
|
|
2714
3876
|
scrollY: scrollY,
|
|
2715
|
-
scrollX:
|
|
2716
|
-
|
|
3877
|
+
scrollX: scrollXRight,
|
|
3878
|
+
verticalGanttContainerRef: ganttContainerRef
|
|
3879
|
+
})), ganttEvent.changedTask && React.createElement(Tooltip, {
|
|
2717
3880
|
arrowIndent: arrowIndent,
|
|
2718
3881
|
rowHeight: rowHeight,
|
|
2719
3882
|
svgContainerHeight: svgContainerHeight,
|
|
2720
3883
|
svgContainerWidth: svgContainerWidth,
|
|
2721
3884
|
fontFamily: fontFamily,
|
|
2722
3885
|
fontSize: fontSize,
|
|
2723
|
-
scrollX:
|
|
3886
|
+
scrollX: scrollXRight,
|
|
2724
3887
|
scrollY: scrollY,
|
|
2725
3888
|
task: ganttEvent.changedTask,
|
|
2726
3889
|
headerHeight: headerHeight,
|
|
2727
|
-
taskListWidth:
|
|
3890
|
+
taskListWidth: taskListOffset,
|
|
2728
3891
|
TooltipContent: TooltipContent,
|
|
2729
3892
|
rtl: rtl,
|
|
2730
|
-
svgWidth: svgWidth
|
|
3893
|
+
svgWidth: svgWidth,
|
|
3894
|
+
effortDisplayUnit: effortDisplayUnit
|
|
2731
3895
|
}), React.createElement(VerticalScroll, {
|
|
2732
3896
|
ganttFullHeight: ganttFullHeight,
|
|
2733
3897
|
ganttHeight: ganttHeight,
|
|
@@ -2735,14 +3899,30 @@ var Gantt = function Gantt(_ref) {
|
|
|
2735
3899
|
scroll: scrollY,
|
|
2736
3900
|
onScroll: handleScrollY,
|
|
2737
3901
|
rtl: rtl
|
|
2738
|
-
})), React.createElement(
|
|
3902
|
+
})), React.createElement("div", {
|
|
3903
|
+
className: styles$9.scrollRow,
|
|
3904
|
+
style: {
|
|
3905
|
+
"--splitter-width": SPLIT_HANDLE_WIDTH + "px"
|
|
3906
|
+
}
|
|
3907
|
+
}, React.createElement("div", {
|
|
3908
|
+
className: styles$9.scrollCellLeft
|
|
3909
|
+
}, listCellWidth && React.createElement(HorizontalScroll, {
|
|
3910
|
+
svgWidth: taskListWidth,
|
|
3911
|
+
scrollerWidth: leftScrollerWidth,
|
|
3912
|
+
scroll: scrollXLeft,
|
|
3913
|
+
rtl: rtl,
|
|
3914
|
+
onScroll: handleScrollLeft
|
|
3915
|
+
})), listCellWidth && React.createElement("div", {
|
|
3916
|
+
className: styles$9.scrollSplitter
|
|
3917
|
+
}), React.createElement("div", {
|
|
3918
|
+
className: styles$9.scrollCellRight
|
|
3919
|
+
}, React.createElement(HorizontalScroll, {
|
|
2739
3920
|
svgWidth: svgWidth,
|
|
2740
|
-
|
|
2741
|
-
scroll: scrollX,
|
|
3921
|
+
scroll: scrollXRight,
|
|
2742
3922
|
rtl: rtl,
|
|
2743
|
-
onScroll:
|
|
2744
|
-
}));
|
|
3923
|
+
onScroll: handleScrollRight
|
|
3924
|
+
}))));
|
|
2745
3925
|
};
|
|
2746
3926
|
|
|
2747
|
-
export { Gantt, ViewMode };
|
|
3927
|
+
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
3928
|
//# sourceMappingURL=index.modern.js.map
|