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