@levelcaptech/gantt-task-react-custom 0.1.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -80
- package/dist/components/calendar/calendar.d.ts +2 -0
- package/dist/components/gantt/task-gantt.d.ts +1 -0
- package/dist/components/grid/grid-body.d.ts +2 -0
- package/dist/components/other/horizontal-scroll.d.ts +7 -3
- package/dist/components/other/tooltip.d.ts +4 -1
- package/dist/components/task-list/overlay-editor.d.ts +19 -0
- package/dist/components/task-list/task-list-header.d.ts +5 -0
- package/dist/components/task-list/task-list-table.d.ts +11 -2
- package/dist/components/task-list/task-list.d.ts +40 -4
- package/dist/constants/taskOptions.d.ts +6 -0
- package/dist/helpers/calendar-helper.d.ts +38 -0
- package/dist/helpers/jp-holidays.d.ts +14 -0
- package/dist/helpers/task-helper.d.ts +11 -0
- package/dist/index.css +223 -12
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2227 -858
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +2215 -861
- package/dist/index.modern.js.map +1 -1
- package/dist/test/calendar-helper.test.d.ts +1 -0
- package/dist/test/overlay-editor.test.d.ts +1 -0
- package/dist/test/split-handle.test.d.ts +1 -0
- package/dist/test/task-helper.test.d.ts +1 -0
- package/dist/test/task-list-commit.test.d.ts +1 -0
- package/dist/test/task-list-editing.test.d.ts +1 -0
- package/dist/test/task-list-table-editing.test.d.ts +1 -0
- package/dist/test/task-model.test.d.ts +1 -0
- package/dist/types/public-types.d.ts +93 -1
- package/package.json +23 -6
package/dist/index.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);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function _arrayLikeToArray(arr, len) {
|
|
34
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
35
|
-
|
|
36
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
37
|
-
|
|
38
|
-
return arr2;
|
|
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;
|
|
39
14
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
|
|
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,14 +220,913 @@ 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
|
+
};
|
|
269
237
|
|
|
270
|
-
var
|
|
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) {
|
|
271
739
|
var headerHeight = _ref.headerHeight,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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]);
|
|
275
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", {
|
|
276
1130
|
className: styles.ganttTable,
|
|
277
1131
|
style: {
|
|
278
1132
|
fontFamily: fontFamily,
|
|
@@ -283,191 +1137,532 @@ var TaskListHeaderDefault = function TaskListHeaderDefault(_ref) {
|
|
|
283
1137
|
style: {
|
|
284
1138
|
height: headerHeight - 2
|
|
285
1139
|
}
|
|
286
|
-
},
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
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
|
+
};
|
|
1268
|
+
|
|
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;
|
|
1319
|
+
}
|
|
1320
|
+
return {
|
|
1321
|
+
rowIndex: rowIndex,
|
|
1322
|
+
columnIndex: columnIndex
|
|
1323
|
+
};
|
|
1324
|
+
};
|
|
1325
|
+
var resolveSelectedCell = function resolveSelectedCell() {
|
|
1326
|
+
if (!editingState || editingState.mode !== "selected") {
|
|
1327
|
+
return null;
|
|
1328
|
+
}
|
|
1329
|
+
var columnId = editingState.columnId;
|
|
1330
|
+
if (!columnId || !columnIds.includes(columnId)) {
|
|
1331
|
+
return null;
|
|
1332
|
+
}
|
|
1333
|
+
var task = tasks.find(function (row) {
|
|
1334
|
+
return row.id === editingState.rowId;
|
|
1335
|
+
});
|
|
1336
|
+
if (!task) {
|
|
1337
|
+
return null;
|
|
1338
|
+
}
|
|
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;
|
|
1369
|
+
}
|
|
1370
|
+
selectCell(tasks[rowIndex].id, columnIds[columnIndex]);
|
|
1371
|
+
};
|
|
1372
|
+
var shouldIgnoreKeyEvent = function shouldIgnoreKeyEvent(target) {
|
|
1373
|
+
if (!(target instanceof HTMLElement)) {
|
|
1374
|
+
return false;
|
|
1375
|
+
}
|
|
1376
|
+
if (target.isContentEditable) {
|
|
1377
|
+
return true;
|
|
1378
|
+
}
|
|
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;
|
|
290
1391
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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;
|
|
296
1409
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
style: {
|
|
300
|
-
minWidth: rowWidth
|
|
1410
|
+
if ((editingState === null || editingState === void 0 ? void 0 : editingState.mode) !== "selected") {
|
|
1411
|
+
return;
|
|
301
1412
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
height: headerHeight * 0.5,
|
|
306
|
-
marginTop: headerHeight * 0.25
|
|
1413
|
+
var selectedCell = resolveSelectedCell();
|
|
1414
|
+
if (!selectedCell || !startEditing) {
|
|
1415
|
+
return;
|
|
307
1416
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
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;
|
|
312
1429
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
var
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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
|
-
},
|
|
1750
|
+
}, getStatusBadgeText(normalizedStatus)), React__default.createElement("span", {
|
|
1751
|
+
className: styles$2.tooltipStatusText
|
|
1752
|
+
}, normalizedStatus))), !!task.progress && React__default.createElement("p", {
|
|
504
1753
|
className: styles$2.tooltipDefaultContainerParagraph
|
|
505
|
-
}, "
|
|
506
|
-
className: styles$2.tooltipDefaultContainerParagraph
|
|
507
|
-
}, !!task.progress && "Progress: " + task.progress + " %"));
|
|
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,168 @@ var VerticalScroll = function VerticalScroll(_ref) {
|
|
|
539
1788
|
}));
|
|
540
1789
|
};
|
|
541
1790
|
|
|
542
|
-
var
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
var
|
|
572
|
-
var
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
1791
|
+
var JP_HOLIDAYS = {
|
|
1792
|
+
2024: ["2024-01-01", "2024-01-08", "2024-02-11", "2024-02-12", "2024-02-23", "2024-03-20", "2024-04-29", "2024-05-03", "2024-05-04", "2024-05-05", "2024-05-06", "2024-07-15", "2024-08-11", "2024-08-12", "2024-09-16", "2024-09-22", "2024-09-23", "2024-10-14", "2024-11-03", "2024-11-04", "2024-11-23"],
|
|
1793
|
+
2025: ["2025-01-01", "2025-01-13", "2025-02-11", "2025-02-23", "2025-02-24", "2025-03-20", "2025-04-29", "2025-05-03", "2025-05-04", "2025-05-05", "2025-05-06", "2025-07-21", "2025-08-11", "2025-09-15", "2025-09-23", "2025-10-13", "2025-11-03", "2025-11-23", "2025-11-24"],
|
|
1794
|
+
2026: ["2026-01-01", "2026-01-12", "2026-02-11", "2026-02-23", "2026-03-20", "2026-04-29", "2026-05-03", "2026-05-04", "2026-05-05", "2026-05-06", "2026-07-20", "2026-08-11", "2026-09-21", "2026-09-22", "2026-10-12", "2026-11-03", "2026-11-23"]
|
|
1795
|
+
};
|
|
1796
|
+
var getJPHolidaySet = function getJPHolidaySet() {
|
|
1797
|
+
var holidays = new Set();
|
|
1798
|
+
Object.values(JP_HOLIDAYS).forEach(function (yearHolidays) {
|
|
1799
|
+
yearHolidays.forEach(function (holiday) {
|
|
1800
|
+
return holidays.add(holiday);
|
|
1801
|
+
});
|
|
1802
|
+
});
|
|
1803
|
+
return holidays;
|
|
1804
|
+
};
|
|
1805
|
+
var JP_HOLIDAYS_SET = getJPHolidaySet();
|
|
1806
|
+
|
|
1807
|
+
var emittedWarnings = new Set();
|
|
1808
|
+
var warnOnce = function warnOnce(key, message) {
|
|
1809
|
+
if (!emittedWarnings.has(key) && typeof console !== "undefined") {
|
|
1810
|
+
console.warn(message);
|
|
1811
|
+
emittedWarnings.add(key);
|
|
1812
|
+
}
|
|
1813
|
+
};
|
|
1814
|
+
var normalizeCalendarConfig = function normalizeCalendarConfig(config) {
|
|
1815
|
+
var _config$locale, _config$enableJPHolid, _config$highlightNonW;
|
|
1816
|
+
var rawLocale = ((_config$locale = config.locale) === null || _config$locale === void 0 ? void 0 : _config$locale.trim()) || "";
|
|
1817
|
+
var locale = rawLocale || "ja";
|
|
1818
|
+
var dateFormat = config.dateFormat || "MM/dd(EEE)";
|
|
1819
|
+
var enableJPHoliday = (_config$enableJPHolid = config.enableJPHoliday) != null ? _config$enableJPHolid : true;
|
|
1820
|
+
var highlightNonWorkingDays = (_config$highlightNonW = config.highlightNonWorkingDays) != null ? _config$highlightNonW : true;
|
|
1821
|
+
var workOnSaturday = config.workOnSaturday === true;
|
|
1822
|
+
var extraHolidays = new Set();
|
|
1823
|
+
if (config.extraHolidays) {
|
|
1824
|
+
config.extraHolidays.forEach(function (dateStr) {
|
|
1825
|
+
var normalized = normalizeISODate(dateStr);
|
|
1826
|
+
if (normalized) {
|
|
1827
|
+
extraHolidays.add(normalized);
|
|
1828
|
+
}
|
|
1829
|
+
});
|
|
1830
|
+
}
|
|
1831
|
+
var extraWorkingDays = new Set();
|
|
1832
|
+
if (config.extraWorkingDays) {
|
|
1833
|
+
config.extraWorkingDays.forEach(function (dateStr) {
|
|
1834
|
+
var normalized = normalizeISODate(dateStr);
|
|
1835
|
+
if (normalized) {
|
|
1836
|
+
extraWorkingDays.add(normalized);
|
|
1837
|
+
}
|
|
1838
|
+
});
|
|
1839
|
+
}
|
|
1840
|
+
if (!locale.toLowerCase().startsWith("ja")) {
|
|
1841
|
+
var localeKey = locale.trim().toLowerCase();
|
|
1842
|
+
warnOnce("gantt-calendar-locale-" + localeKey, "[Gantt Calendar] Non-Japanese locale \"" + locale + "\" specified. " + "Holiday definitions (including Japanese public holidays) are still based on the Japanese calendar.");
|
|
1843
|
+
}
|
|
1844
|
+
if (dateFormat !== "MM/dd(EEE)") {
|
|
1845
|
+
var dateFormatKey = dateFormat.trim().toLowerCase();
|
|
1846
|
+
warnOnce("gantt-calendar-dateFormat-" + dateFormatKey, "[Gantt Calendar] Custom dateFormat \"" + dateFormat + "\" specified. " + "Note: dateFormat is currently a legacy field and does not affect date rendering. " + "The format \"MM/dd(EEE)\" is used internally regardless of this setting.");
|
|
1847
|
+
}
|
|
1848
|
+
return {
|
|
578
1849
|
locale: locale,
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
1850
|
+
dateFormat: dateFormat,
|
|
1851
|
+
enableJPHoliday: enableJPHoliday,
|
|
1852
|
+
highlightNonWorkingDays: highlightNonWorkingDays,
|
|
1853
|
+
workOnSaturday: workOnSaturday,
|
|
1854
|
+
extraHolidays: extraHolidays,
|
|
1855
|
+
extraWorkingDays: extraWorkingDays
|
|
582
1856
|
};
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
1857
|
+
};
|
|
1858
|
+
var normalizeISODate = function normalizeISODate(dateStr) {
|
|
1859
|
+
try {
|
|
1860
|
+
var trimmed = dateStr.trim();
|
|
1861
|
+
if (!/^\d{4}-\d{1,2}-\d{1,2}$/.test(trimmed)) {
|
|
1862
|
+
return null;
|
|
1863
|
+
}
|
|
1864
|
+
var parts = trimmed.split("-");
|
|
1865
|
+
if (parts.length !== 3) return null;
|
|
1866
|
+
var year = Number(parts[0]);
|
|
1867
|
+
var month = Number(parts[1]);
|
|
1868
|
+
var day = Number(parts[2]);
|
|
1869
|
+
if (isNaN(year) || isNaN(month) || isNaN(day) || month < 1 || month > 12 || day < 1 || day > 31) {
|
|
1870
|
+
return null;
|
|
1871
|
+
}
|
|
1872
|
+
var date = new Date(year, month - 1, day);
|
|
1873
|
+
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
1874
|
+
return null;
|
|
1875
|
+
}
|
|
1876
|
+
var paddedMonth = String(month).padStart(2, "0");
|
|
1877
|
+
var paddedDay = String(day).padStart(2, "0");
|
|
1878
|
+
return year + "-" + paddedMonth + "-" + paddedDay;
|
|
1879
|
+
} catch (e) {
|
|
1880
|
+
if (typeof console !== "undefined") {
|
|
1881
|
+
console.warn("[Gantt Calendar] Invalid date string: " + dateStr);
|
|
1882
|
+
}
|
|
1883
|
+
return null;
|
|
1884
|
+
}
|
|
1885
|
+
};
|
|
1886
|
+
var toISODateString = function toISODateString(date) {
|
|
1887
|
+
var year = date.getFullYear();
|
|
1888
|
+
var month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1889
|
+
var day = String(date.getDate()).padStart(2, "0");
|
|
1890
|
+
return year + "-" + month + "-" + day;
|
|
1891
|
+
};
|
|
1892
|
+
var isWorkingDay = function isWorkingDay(date, config) {
|
|
1893
|
+
var dateStr = toISODateString(date);
|
|
1894
|
+
if (config.extraWorkingDays.has(dateStr)) {
|
|
1895
|
+
return true;
|
|
1896
|
+
}
|
|
1897
|
+
if (config.extraHolidays.has(dateStr)) {
|
|
1898
|
+
return false;
|
|
1899
|
+
}
|
|
1900
|
+
var dayOfWeek = date.getDay();
|
|
1901
|
+
if (dayOfWeek === 0) {
|
|
1902
|
+
return false;
|
|
1903
|
+
}
|
|
1904
|
+
if (dayOfWeek === 6 && !config.workOnSaturday) {
|
|
1905
|
+
return false;
|
|
1906
|
+
}
|
|
1907
|
+
if (config.enableJPHoliday) {
|
|
1908
|
+
if (JP_HOLIDAYS_SET.has(dateStr)) {
|
|
1909
|
+
return false;
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
return true;
|
|
1913
|
+
};
|
|
1914
|
+
var formatJapaneseDate = function formatJapaneseDate(date) {
|
|
1915
|
+
try {
|
|
1916
|
+
var formatter = new Intl.DateTimeFormat("ja", {
|
|
1917
|
+
month: "2-digit",
|
|
1918
|
+
day: "2-digit",
|
|
1919
|
+
weekday: "short"
|
|
1920
|
+
});
|
|
1921
|
+
var parts = formatter.formatToParts(date);
|
|
1922
|
+
var month = "";
|
|
1923
|
+
var day = "";
|
|
1924
|
+
var weekday = "";
|
|
1925
|
+
parts.forEach(function (part) {
|
|
1926
|
+
if (part.type === "month") {
|
|
1927
|
+
month = part.value;
|
|
1928
|
+
} else if (part.type === "day") {
|
|
1929
|
+
day = part.value;
|
|
1930
|
+
} else if (part.type === "weekday") {
|
|
1931
|
+
weekday = part.value;
|
|
1932
|
+
}
|
|
1933
|
+
});
|
|
1934
|
+
return month + "/" + day + "(" + weekday + ")";
|
|
1935
|
+
} catch (e) {
|
|
1936
|
+
var _month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1937
|
+
var _day = String(date.getDate()).padStart(2, "0");
|
|
1938
|
+
return _month + "/" + _day;
|
|
1939
|
+
}
|
|
592
1940
|
};
|
|
593
1941
|
|
|
594
1942
|
var styles$4 = {"gridRow":"_2dZTy","gridRowLine":"_3rUKi","gridTick":"_RuwuK"};
|
|
595
1943
|
|
|
596
1944
|
var GridBody = function GridBody(_ref) {
|
|
597
1945
|
var tasks = _ref.tasks,
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
1946
|
+
dates = _ref.dates,
|
|
1947
|
+
rowHeight = _ref.rowHeight,
|
|
1948
|
+
svgWidth = _ref.svgWidth,
|
|
1949
|
+
columnWidth = _ref.columnWidth,
|
|
1950
|
+
todayColor = _ref.todayColor,
|
|
1951
|
+
rtl = _ref.rtl,
|
|
1952
|
+
calendarConfig = _ref.calendarConfig;
|
|
604
1953
|
var y = 0;
|
|
605
1954
|
var gridRows = [];
|
|
606
1955
|
var rowLines = [React__default.createElement("line", {
|
|
@@ -611,7 +1960,6 @@ var GridBody = function GridBody(_ref) {
|
|
|
611
1960
|
y2: 0,
|
|
612
1961
|
className: styles$4.gridRowLine
|
|
613
1962
|
})];
|
|
614
|
-
|
|
615
1963
|
for (var _iterator = _createForOfIteratorHelperLoose(tasks), _step; !(_step = _iterator()).done;) {
|
|
616
1964
|
var task = _step.value;
|
|
617
1965
|
gridRows.push(React__default.createElement("rect", {
|
|
@@ -632,12 +1980,11 @@ var GridBody = function GridBody(_ref) {
|
|
|
632
1980
|
}));
|
|
633
1981
|
y += rowHeight;
|
|
634
1982
|
}
|
|
635
|
-
|
|
636
1983
|
var now = new Date();
|
|
637
1984
|
var tickX = 0;
|
|
638
1985
|
var ticks = [];
|
|
1986
|
+
var nonWorkingDays = [];
|
|
639
1987
|
var today = React__default.createElement("rect", null);
|
|
640
|
-
|
|
641
1988
|
for (var i = 0; i < dates.length; i++) {
|
|
642
1989
|
var date = dates[i];
|
|
643
1990
|
ticks.push(React__default.createElement("line", {
|
|
@@ -648,7 +1995,16 @@ var GridBody = function GridBody(_ref) {
|
|
|
648
1995
|
y2: y,
|
|
649
1996
|
className: styles$4.gridTick
|
|
650
1997
|
}));
|
|
651
|
-
|
|
1998
|
+
if (calendarConfig && calendarConfig.highlightNonWorkingDays && !isWorkingDay(date, calendarConfig)) {
|
|
1999
|
+
nonWorkingDays.push(React__default.createElement("rect", {
|
|
2000
|
+
key: "non-working-" + date.getTime(),
|
|
2001
|
+
x: tickX,
|
|
2002
|
+
y: 0,
|
|
2003
|
+
width: columnWidth,
|
|
2004
|
+
height: y,
|
|
2005
|
+
fill: "rgba(0, 0, 0, 0.05)"
|
|
2006
|
+
}));
|
|
2007
|
+
}
|
|
652
2008
|
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
2009
|
today = React__default.createElement("rect", {
|
|
654
2010
|
x: tickX,
|
|
@@ -658,7 +2014,6 @@ var GridBody = function GridBody(_ref) {
|
|
|
658
2014
|
fill: todayColor
|
|
659
2015
|
});
|
|
660
2016
|
}
|
|
661
|
-
|
|
662
2017
|
if (rtl && i + 1 !== dates.length && date.getTime() >= now.getTime() && dates[i + 1].getTime() < now.getTime()) {
|
|
663
2018
|
today = React__default.createElement("rect", {
|
|
664
2019
|
x: tickX + columnWidth,
|
|
@@ -668,15 +2023,15 @@ var GridBody = function GridBody(_ref) {
|
|
|
668
2023
|
fill: todayColor
|
|
669
2024
|
});
|
|
670
2025
|
}
|
|
671
|
-
|
|
672
2026
|
tickX += columnWidth;
|
|
673
2027
|
}
|
|
674
|
-
|
|
675
2028
|
return React__default.createElement("g", {
|
|
676
2029
|
className: "gridBody"
|
|
677
2030
|
}, React__default.createElement("g", {
|
|
678
2031
|
className: "rows"
|
|
679
2032
|
}, gridRows), React__default.createElement("g", {
|
|
2033
|
+
className: "nonWorkingDays"
|
|
2034
|
+
}, nonWorkingDays), React__default.createElement("g", {
|
|
680
2035
|
className: "rowLines"
|
|
681
2036
|
}, rowLines), React__default.createElement("g", {
|
|
682
2037
|
className: "ticks"
|
|
@@ -695,11 +2050,11 @@ var styles$5 = {"calendarBottomText":"_9w8d5","calendarTopTick":"_1rLuZ","calend
|
|
|
695
2050
|
|
|
696
2051
|
var TopPartOfCalendar = function TopPartOfCalendar(_ref) {
|
|
697
2052
|
var value = _ref.value,
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
2053
|
+
x1Line = _ref.x1Line,
|
|
2054
|
+
y1Line = _ref.y1Line,
|
|
2055
|
+
y2Line = _ref.y2Line,
|
|
2056
|
+
xText = _ref.xText,
|
|
2057
|
+
yText = _ref.yText;
|
|
703
2058
|
return React__default.createElement("g", {
|
|
704
2059
|
className: "calendarTop"
|
|
705
2060
|
}, React__default.createElement("line", {
|
|
@@ -719,19 +2074,19 @@ var TopPartOfCalendar = function TopPartOfCalendar(_ref) {
|
|
|
719
2074
|
|
|
720
2075
|
var Calendar = function Calendar(_ref) {
|
|
721
2076
|
var dateSetup = _ref.dateSetup,
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
2077
|
+
locale = _ref.locale,
|
|
2078
|
+
viewMode = _ref.viewMode,
|
|
2079
|
+
rtl = _ref.rtl,
|
|
2080
|
+
headerHeight = _ref.headerHeight,
|
|
2081
|
+
columnWidth = _ref.columnWidth,
|
|
2082
|
+
fontFamily = _ref.fontFamily,
|
|
2083
|
+
fontSize = _ref.fontSize,
|
|
2084
|
+
calendarConfig = _ref.calendarConfig;
|
|
2085
|
+
var effectiveLocale = (calendarConfig === null || calendarConfig === void 0 ? void 0 : calendarConfig.locale) || locale;
|
|
730
2086
|
var getCalendarValuesForYear = function getCalendarValuesForYear() {
|
|
731
2087
|
var topValues = [];
|
|
732
2088
|
var bottomValues = [];
|
|
733
2089
|
var topDefaultHeight = headerHeight * 0.5;
|
|
734
|
-
|
|
735
2090
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
736
2091
|
var date = dateSetup.dates[i];
|
|
737
2092
|
var bottomValue = date.getFullYear();
|
|
@@ -741,17 +2096,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
741
2096
|
x: columnWidth * i + columnWidth * 0.5,
|
|
742
2097
|
className: styles$5.calendarBottomText
|
|
743
2098
|
}, bottomValue));
|
|
744
|
-
|
|
745
2099
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
746
2100
|
var topValue = date.getFullYear().toString();
|
|
747
2101
|
var xText = void 0;
|
|
748
|
-
|
|
749
2102
|
if (rtl) {
|
|
750
2103
|
xText = (6 + i + date.getFullYear() + 1) * columnWidth;
|
|
751
2104
|
} else {
|
|
752
2105
|
xText = (6 + i - date.getFullYear()) * columnWidth;
|
|
753
2106
|
}
|
|
754
|
-
|
|
755
2107
|
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
756
2108
|
key: topValue,
|
|
757
2109
|
value: topValue,
|
|
@@ -763,15 +2115,12 @@ var Calendar = function Calendar(_ref) {
|
|
|
763
2115
|
}));
|
|
764
2116
|
}
|
|
765
2117
|
}
|
|
766
|
-
|
|
767
2118
|
return [topValues, bottomValues];
|
|
768
2119
|
};
|
|
769
|
-
|
|
770
2120
|
var getCalendarValuesForQuarterYear = function getCalendarValuesForQuarterYear() {
|
|
771
2121
|
var topValues = [];
|
|
772
2122
|
var bottomValues = [];
|
|
773
2123
|
var topDefaultHeight = headerHeight * 0.5;
|
|
774
|
-
|
|
775
2124
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
776
2125
|
var date = dateSetup.dates[i];
|
|
777
2126
|
var quarter = "Q" + Math.floor((date.getMonth() + 3) / 3);
|
|
@@ -781,17 +2130,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
781
2130
|
x: columnWidth * i + columnWidth * 0.5,
|
|
782
2131
|
className: styles$5.calendarBottomText
|
|
783
2132
|
}, quarter));
|
|
784
|
-
|
|
785
2133
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
786
2134
|
var topValue = date.getFullYear().toString();
|
|
787
2135
|
var xText = void 0;
|
|
788
|
-
|
|
789
2136
|
if (rtl) {
|
|
790
2137
|
xText = (6 + i + date.getMonth() + 1) * columnWidth;
|
|
791
2138
|
} else {
|
|
792
2139
|
xText = (6 + i - date.getMonth()) * columnWidth;
|
|
793
2140
|
}
|
|
794
|
-
|
|
795
2141
|
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
796
2142
|
key: topValue,
|
|
797
2143
|
value: topValue,
|
|
@@ -803,35 +2149,29 @@ var Calendar = function Calendar(_ref) {
|
|
|
803
2149
|
}));
|
|
804
2150
|
}
|
|
805
2151
|
}
|
|
806
|
-
|
|
807
2152
|
return [topValues, bottomValues];
|
|
808
2153
|
};
|
|
809
|
-
|
|
810
2154
|
var getCalendarValuesForMonth = function getCalendarValuesForMonth() {
|
|
811
2155
|
var topValues = [];
|
|
812
2156
|
var bottomValues = [];
|
|
813
2157
|
var topDefaultHeight = headerHeight * 0.5;
|
|
814
|
-
|
|
815
2158
|
for (var i = 0; i < dateSetup.dates.length; i++) {
|
|
816
2159
|
var date = dateSetup.dates[i];
|
|
817
|
-
var bottomValue = getLocaleMonth(date,
|
|
2160
|
+
var bottomValue = getLocaleMonth(date, effectiveLocale);
|
|
818
2161
|
bottomValues.push(React__default.createElement("text", {
|
|
819
2162
|
key: bottomValue + date.getFullYear(),
|
|
820
2163
|
y: headerHeight * 0.8,
|
|
821
2164
|
x: columnWidth * i + columnWidth * 0.5,
|
|
822
2165
|
className: styles$5.calendarBottomText
|
|
823
2166
|
}, bottomValue));
|
|
824
|
-
|
|
825
2167
|
if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
|
|
826
2168
|
var topValue = date.getFullYear().toString();
|
|
827
2169
|
var xText = void 0;
|
|
828
|
-
|
|
829
2170
|
if (rtl) {
|
|
830
2171
|
xText = (6 + i + date.getMonth() + 1) * columnWidth;
|
|
831
2172
|
} else {
|
|
832
2173
|
xText = (6 + i - date.getMonth()) * columnWidth;
|
|
833
2174
|
}
|
|
834
|
-
|
|
835
2175
|
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
836
2176
|
key: topValue,
|
|
837
2177
|
value: topValue,
|
|
@@ -843,25 +2183,20 @@ var Calendar = function Calendar(_ref) {
|
|
|
843
2183
|
}));
|
|
844
2184
|
}
|
|
845
2185
|
}
|
|
846
|
-
|
|
847
2186
|
return [topValues, bottomValues];
|
|
848
2187
|
};
|
|
849
|
-
|
|
850
2188
|
var getCalendarValuesForWeek = function getCalendarValuesForWeek() {
|
|
851
2189
|
var topValues = [];
|
|
852
2190
|
var bottomValues = [];
|
|
853
2191
|
var weeksCount = 1;
|
|
854
2192
|
var topDefaultHeight = headerHeight * 0.5;
|
|
855
2193
|
var dates = dateSetup.dates;
|
|
856
|
-
|
|
857
2194
|
for (var i = dates.length - 1; i >= 0; i--) {
|
|
858
2195
|
var date = dates[i];
|
|
859
2196
|
var topValue = "";
|
|
860
|
-
|
|
861
2197
|
if (i === 0 || date.getMonth() !== dates[i - 1].getMonth()) {
|
|
862
|
-
topValue = getLocaleMonth(date,
|
|
2198
|
+
topValue = getLocaleMonth(date, effectiveLocale) + ", " + date.getFullYear();
|
|
863
2199
|
}
|
|
864
|
-
|
|
865
2200
|
var bottomValue = "W" + getWeekNumberISO8601(date);
|
|
866
2201
|
bottomValues.push(React__default.createElement("text", {
|
|
867
2202
|
key: date.getTime(),
|
|
@@ -869,7 +2204,6 @@ var Calendar = function Calendar(_ref) {
|
|
|
869
2204
|
x: columnWidth * (i + +rtl),
|
|
870
2205
|
className: styles$5.calendarBottomText
|
|
871
2206
|
}, bottomValue));
|
|
872
|
-
|
|
873
2207
|
if (topValue) {
|
|
874
2208
|
if (i !== dates.length - 1) {
|
|
875
2209
|
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
@@ -882,34 +2216,29 @@ var Calendar = function Calendar(_ref) {
|
|
|
882
2216
|
yText: topDefaultHeight * 0.9
|
|
883
2217
|
}));
|
|
884
2218
|
}
|
|
885
|
-
|
|
886
2219
|
weeksCount = 0;
|
|
887
2220
|
}
|
|
888
|
-
|
|
889
2221
|
weeksCount++;
|
|
890
2222
|
}
|
|
891
|
-
|
|
892
2223
|
return [topValues, bottomValues];
|
|
893
2224
|
};
|
|
894
|
-
|
|
895
2225
|
var getCalendarValuesForDay = function getCalendarValuesForDay() {
|
|
896
2226
|
var topValues = [];
|
|
897
2227
|
var bottomValues = [];
|
|
898
2228
|
var topDefaultHeight = headerHeight * 0.5;
|
|
899
2229
|
var dates = dateSetup.dates;
|
|
900
|
-
|
|
901
2230
|
for (var i = 0; i < dates.length; i++) {
|
|
902
2231
|
var date = dates[i];
|
|
903
|
-
var
|
|
2232
|
+
var useJapaneseFormat = !!calendarConfig && typeof calendarConfig.locale === "string" && calendarConfig.locale.toLowerCase().startsWith("ja");
|
|
2233
|
+
var bottomValue = useJapaneseFormat ? formatJapaneseDate(date) : getLocalDayOfWeek(date, effectiveLocale, "short") + ", " + date.getDate().toString();
|
|
904
2234
|
bottomValues.push(React__default.createElement("text", {
|
|
905
2235
|
key: date.getTime(),
|
|
906
2236
|
y: headerHeight * 0.8,
|
|
907
2237
|
x: columnWidth * i + columnWidth * 0.5,
|
|
908
2238
|
className: styles$5.calendarBottomText
|
|
909
2239
|
}, bottomValue));
|
|
910
|
-
|
|
911
2240
|
if (i + 1 !== dates.length && date.getMonth() !== dates[i + 1].getMonth()) {
|
|
912
|
-
var topValue = getLocaleMonth(date,
|
|
2241
|
+
var topValue = getLocaleMonth(date, effectiveLocale);
|
|
913
2242
|
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
914
2243
|
key: topValue + date.getFullYear(),
|
|
915
2244
|
value: topValue,
|
|
@@ -921,20 +2250,17 @@ var Calendar = function Calendar(_ref) {
|
|
|
921
2250
|
}));
|
|
922
2251
|
}
|
|
923
2252
|
}
|
|
924
|
-
|
|
925
2253
|
return [topValues, bottomValues];
|
|
926
2254
|
};
|
|
927
|
-
|
|
928
2255
|
var getCalendarValuesForPartOfDay = function getCalendarValuesForPartOfDay() {
|
|
929
2256
|
var topValues = [];
|
|
930
2257
|
var bottomValues = [];
|
|
931
2258
|
var ticks = viewMode === exports.ViewMode.HalfDay ? 2 : 4;
|
|
932
2259
|
var topDefaultHeight = headerHeight * 0.5;
|
|
933
2260
|
var dates = dateSetup.dates;
|
|
934
|
-
|
|
935
2261
|
for (var i = 0; i < dates.length; i++) {
|
|
936
2262
|
var date = dates[i];
|
|
937
|
-
var bottomValue = getCachedDateTimeFormat(
|
|
2263
|
+
var bottomValue = getCachedDateTimeFormat(effectiveLocale, {
|
|
938
2264
|
hour: "numeric"
|
|
939
2265
|
}).format(date);
|
|
940
2266
|
bottomValues.push(React__default.createElement("text", {
|
|
@@ -944,9 +2270,8 @@ var Calendar = function Calendar(_ref) {
|
|
|
944
2270
|
className: styles$5.calendarBottomText,
|
|
945
2271
|
fontFamily: fontFamily
|
|
946
2272
|
}, bottomValue));
|
|
947
|
-
|
|
948
2273
|
if (i === 0 || date.getDate() !== dates[i - 1].getDate()) {
|
|
949
|
-
var topValue = getLocalDayOfWeek(date,
|
|
2274
|
+
var topValue = getLocalDayOfWeek(date, effectiveLocale, "short") + ", " + date.getDate() + " " + getLocaleMonth(date, effectiveLocale);
|
|
950
2275
|
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
951
2276
|
key: topValue + date.getFullYear(),
|
|
952
2277
|
value: topValue,
|
|
@@ -958,19 +2283,16 @@ var Calendar = function Calendar(_ref) {
|
|
|
958
2283
|
}));
|
|
959
2284
|
}
|
|
960
2285
|
}
|
|
961
|
-
|
|
962
2286
|
return [topValues, bottomValues];
|
|
963
2287
|
};
|
|
964
|
-
|
|
965
2288
|
var getCalendarValuesForHour = function getCalendarValuesForHour() {
|
|
966
2289
|
var topValues = [];
|
|
967
2290
|
var bottomValues = [];
|
|
968
2291
|
var topDefaultHeight = headerHeight * 0.5;
|
|
969
2292
|
var dates = dateSetup.dates;
|
|
970
|
-
|
|
971
2293
|
for (var i = 0; i < dates.length; i++) {
|
|
972
2294
|
var date = dates[i];
|
|
973
|
-
var bottomValue = getCachedDateTimeFormat(
|
|
2295
|
+
var bottomValue = getCachedDateTimeFormat(effectiveLocale, {
|
|
974
2296
|
hour: "numeric"
|
|
975
2297
|
}).format(date);
|
|
976
2298
|
bottomValues.push(React__default.createElement("text", {
|
|
@@ -980,10 +2302,9 @@ var Calendar = function Calendar(_ref) {
|
|
|
980
2302
|
className: styles$5.calendarBottomText,
|
|
981
2303
|
fontFamily: fontFamily
|
|
982
2304
|
}, bottomValue));
|
|
983
|
-
|
|
984
2305
|
if (i !== 0 && date.getDate() !== dates[i - 1].getDate()) {
|
|
985
2306
|
var displayDate = dates[i - 1];
|
|
986
|
-
var topValue = getLocalDayOfWeek(displayDate,
|
|
2307
|
+
var topValue = getLocalDayOfWeek(displayDate, effectiveLocale, "long") + ", " + displayDate.getDate() + " " + getLocaleMonth(displayDate, effectiveLocale);
|
|
987
2308
|
var topPosition = (date.getHours() - 24) / 2;
|
|
988
2309
|
topValues.push(React__default.createElement(TopPartOfCalendar, {
|
|
989
2310
|
key: topValue + displayDate.getFullYear(),
|
|
@@ -996,64 +2317,47 @@ var Calendar = function Calendar(_ref) {
|
|
|
996
2317
|
}));
|
|
997
2318
|
}
|
|
998
2319
|
}
|
|
999
|
-
|
|
1000
2320
|
return [topValues, bottomValues];
|
|
1001
2321
|
};
|
|
1002
|
-
|
|
1003
2322
|
var topValues = [];
|
|
1004
2323
|
var bottomValues = [];
|
|
1005
|
-
|
|
1006
2324
|
switch (dateSetup.viewMode) {
|
|
1007
2325
|
case exports.ViewMode.Year:
|
|
1008
2326
|
var _getCalendarValuesFor = getCalendarValuesForYear();
|
|
1009
|
-
|
|
1010
2327
|
topValues = _getCalendarValuesFor[0];
|
|
1011
2328
|
bottomValues = _getCalendarValuesFor[1];
|
|
1012
2329
|
break;
|
|
1013
|
-
|
|
1014
2330
|
case exports.ViewMode.QuarterYear:
|
|
1015
2331
|
var _getCalendarValuesFor2 = getCalendarValuesForQuarterYear();
|
|
1016
|
-
|
|
1017
2332
|
topValues = _getCalendarValuesFor2[0];
|
|
1018
2333
|
bottomValues = _getCalendarValuesFor2[1];
|
|
1019
2334
|
break;
|
|
1020
|
-
|
|
1021
2335
|
case exports.ViewMode.Month:
|
|
1022
2336
|
var _getCalendarValuesFor3 = getCalendarValuesForMonth();
|
|
1023
|
-
|
|
1024
2337
|
topValues = _getCalendarValuesFor3[0];
|
|
1025
2338
|
bottomValues = _getCalendarValuesFor3[1];
|
|
1026
2339
|
break;
|
|
1027
|
-
|
|
1028
2340
|
case exports.ViewMode.Week:
|
|
1029
2341
|
var _getCalendarValuesFor4 = getCalendarValuesForWeek();
|
|
1030
|
-
|
|
1031
2342
|
topValues = _getCalendarValuesFor4[0];
|
|
1032
2343
|
bottomValues = _getCalendarValuesFor4[1];
|
|
1033
2344
|
break;
|
|
1034
|
-
|
|
1035
2345
|
case exports.ViewMode.Day:
|
|
1036
2346
|
var _getCalendarValuesFor5 = getCalendarValuesForDay();
|
|
1037
|
-
|
|
1038
2347
|
topValues = _getCalendarValuesFor5[0];
|
|
1039
2348
|
bottomValues = _getCalendarValuesFor5[1];
|
|
1040
2349
|
break;
|
|
1041
|
-
|
|
1042
2350
|
case exports.ViewMode.QuarterDay:
|
|
1043
2351
|
case exports.ViewMode.HalfDay:
|
|
1044
2352
|
var _getCalendarValuesFor6 = getCalendarValuesForPartOfDay();
|
|
1045
|
-
|
|
1046
2353
|
topValues = _getCalendarValuesFor6[0];
|
|
1047
2354
|
bottomValues = _getCalendarValuesFor6[1];
|
|
1048
2355
|
break;
|
|
1049
|
-
|
|
1050
2356
|
case exports.ViewMode.Hour:
|
|
1051
2357
|
var _getCalendarValuesFor7 = getCalendarValuesForHour();
|
|
1052
|
-
|
|
1053
2358
|
topValues = _getCalendarValuesFor7[0];
|
|
1054
2359
|
bottomValues = _getCalendarValuesFor7[1];
|
|
1055
2360
|
}
|
|
1056
|
-
|
|
1057
2361
|
return React__default.createElement("g", {
|
|
1058
2362
|
className: "calendar",
|
|
1059
2363
|
fontSize: fontSize,
|
|
@@ -1067,47 +2371,24 @@ var Calendar = function Calendar(_ref) {
|
|
|
1067
2371
|
}), bottomValues, " ", topValues);
|
|
1068
2372
|
};
|
|
1069
2373
|
|
|
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
2374
|
var Arrow = function Arrow(_ref) {
|
|
1090
2375
|
var taskFrom = _ref.taskFrom,
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
2376
|
+
taskTo = _ref.taskTo,
|
|
2377
|
+
rowHeight = _ref.rowHeight,
|
|
2378
|
+
taskHeight = _ref.taskHeight,
|
|
2379
|
+
arrowIndent = _ref.arrowIndent,
|
|
2380
|
+
rtl = _ref.rtl;
|
|
1096
2381
|
var path;
|
|
1097
2382
|
var trianglePoints;
|
|
1098
|
-
|
|
1099
2383
|
if (rtl) {
|
|
1100
2384
|
var _drownPathAndTriangle = drownPathAndTriangleRTL(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent);
|
|
1101
|
-
|
|
1102
2385
|
path = _drownPathAndTriangle[0];
|
|
1103
2386
|
trianglePoints = _drownPathAndTriangle[1];
|
|
1104
2387
|
} else {
|
|
1105
2388
|
var _drownPathAndTriangle2 = drownPathAndTriangle(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent);
|
|
1106
|
-
|
|
1107
2389
|
path = _drownPathAndTriangle2[0];
|
|
1108
2390
|
trianglePoints = _drownPathAndTriangle2[1];
|
|
1109
2391
|
}
|
|
1110
|
-
|
|
1111
2392
|
return React__default.createElement("g", {
|
|
1112
2393
|
className: "arrow"
|
|
1113
2394
|
}, React__default.createElement("path", {
|
|
@@ -1118,7 +2399,6 @@ var Arrow = function Arrow(_ref) {
|
|
|
1118
2399
|
points: trianglePoints
|
|
1119
2400
|
}));
|
|
1120
2401
|
};
|
|
1121
|
-
|
|
1122
2402
|
var drownPathAndTriangle = function drownPathAndTriangle(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent) {
|
|
1123
2403
|
var indexCompare = taskFrom.index > taskTo.index ? -1 : 1;
|
|
1124
2404
|
var taskToEndPosition = taskTo.y + taskHeight / 2;
|
|
@@ -1129,7 +2409,6 @@ var drownPathAndTriangle = function drownPathAndTriangle(taskFrom, taskTo, rowHe
|
|
|
1129
2409
|
var trianglePoints = taskTo.x1 + "," + taskToEndPosition + " \n " + (taskTo.x1 - 5) + "," + (taskToEndPosition - 5) + " \n " + (taskTo.x1 - 5) + "," + (taskToEndPosition + 5);
|
|
1130
2410
|
return [path, trianglePoints];
|
|
1131
2411
|
};
|
|
1132
|
-
|
|
1133
2412
|
var drownPathAndTriangleRTL = function drownPathAndTriangleRTL(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent) {
|
|
1134
2413
|
var indexCompare = taskFrom.index > taskTo.index ? -1 : 1;
|
|
1135
2414
|
var taskToEndPosition = taskTo.y + taskHeight / 2;
|
|
@@ -1147,47 +2426,37 @@ var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, ro
|
|
|
1147
2426
|
});
|
|
1148
2427
|
barTasks = barTasks.map(function (task) {
|
|
1149
2428
|
var dependencies = task.dependencies || [];
|
|
1150
|
-
|
|
1151
2429
|
var _loop = function _loop(j) {
|
|
1152
2430
|
var dependence = barTasks.findIndex(function (value) {
|
|
1153
2431
|
return value.id === dependencies[j];
|
|
1154
2432
|
});
|
|
1155
2433
|
if (dependence !== -1) barTasks[dependence].barChildren.push(task);
|
|
1156
2434
|
};
|
|
1157
|
-
|
|
1158
2435
|
for (var j = 0; j < dependencies.length; j++) {
|
|
1159
2436
|
_loop(j);
|
|
1160
2437
|
}
|
|
1161
|
-
|
|
1162
2438
|
return task;
|
|
1163
2439
|
});
|
|
1164
2440
|
return barTasks;
|
|
1165
2441
|
};
|
|
1166
|
-
|
|
1167
2442
|
var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
1168
2443
|
var barTask;
|
|
1169
|
-
|
|
1170
2444
|
switch (task.type) {
|
|
1171
2445
|
case "milestone":
|
|
1172
2446
|
barTask = convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor);
|
|
1173
2447
|
break;
|
|
1174
|
-
|
|
1175
2448
|
case "project":
|
|
1176
2449
|
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor);
|
|
1177
2450
|
break;
|
|
1178
|
-
|
|
1179
2451
|
default:
|
|
1180
2452
|
barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor);
|
|
1181
2453
|
break;
|
|
1182
2454
|
}
|
|
1183
|
-
|
|
1184
2455
|
return barTask;
|
|
1185
2456
|
};
|
|
1186
|
-
|
|
1187
2457
|
var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor) {
|
|
1188
2458
|
var x1;
|
|
1189
2459
|
var x2;
|
|
1190
|
-
|
|
1191
2460
|
if (rtl) {
|
|
1192
2461
|
x2 = taskXCoordinateRTL(task.start, dates, columnWidth);
|
|
1193
2462
|
x1 = taskXCoordinateRTL(task.end, dates, columnWidth);
|
|
@@ -1195,28 +2464,22 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
1195
2464
|
x1 = taskXCoordinate(task.start, dates, columnWidth);
|
|
1196
2465
|
x2 = taskXCoordinate(task.end, dates, columnWidth);
|
|
1197
2466
|
}
|
|
1198
|
-
|
|
1199
2467
|
var typeInternal = task.type;
|
|
1200
|
-
|
|
1201
2468
|
if (typeInternal === "task" && x2 - x1 < handleWidth * 2) {
|
|
1202
2469
|
typeInternal = "smalltask";
|
|
1203
2470
|
x2 = x1 + handleWidth * 2;
|
|
1204
2471
|
}
|
|
1205
|
-
|
|
1206
2472
|
var _progressWithByParams = progressWithByParams(x1, x2, task.progress, rtl),
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
2473
|
+
progressWidth = _progressWithByParams[0],
|
|
2474
|
+
progressX = _progressWithByParams[1];
|
|
1210
2475
|
var y = taskYCoordinate(index, rowHeight, taskHeight);
|
|
1211
2476
|
var hideChildren = task.type === "project" ? task.hideChildren : undefined;
|
|
1212
|
-
|
|
1213
2477
|
var styles = _extends({
|
|
1214
2478
|
backgroundColor: barBackgroundColor,
|
|
1215
2479
|
backgroundSelectedColor: barBackgroundSelectedColor,
|
|
1216
2480
|
progressColor: barProgressColor,
|
|
1217
2481
|
progressSelectedColor: barProgressSelectedColor
|
|
1218
2482
|
}, task.styles);
|
|
1219
|
-
|
|
1220
2483
|
return _extends({}, task, {
|
|
1221
2484
|
typeInternal: typeInternal,
|
|
1222
2485
|
x1: x1,
|
|
@@ -1233,21 +2496,18 @@ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHei
|
|
|
1233
2496
|
styles: styles
|
|
1234
2497
|
});
|
|
1235
2498
|
};
|
|
1236
|
-
|
|
1237
2499
|
var convertToMilestone = function convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
|
|
1238
2500
|
var x = taskXCoordinate(task.start, dates, columnWidth);
|
|
1239
2501
|
var y = taskYCoordinate(index, rowHeight, taskHeight);
|
|
1240
2502
|
var x1 = x - taskHeight * 0.5;
|
|
1241
2503
|
var x2 = x + taskHeight * 0.5;
|
|
1242
2504
|
var rotatedHeight = taskHeight / 1.414;
|
|
1243
|
-
|
|
1244
2505
|
var styles = _extends({
|
|
1245
2506
|
backgroundColor: milestoneBackgroundColor,
|
|
1246
2507
|
backgroundSelectedColor: milestoneBackgroundSelectedColor,
|
|
1247
2508
|
progressColor: "",
|
|
1248
2509
|
progressSelectedColor: ""
|
|
1249
2510
|
}, task.styles);
|
|
1250
|
-
|
|
1251
2511
|
return _extends({}, task, {
|
|
1252
2512
|
end: task.start,
|
|
1253
2513
|
x1: x1,
|
|
@@ -1266,7 +2526,6 @@ var convertToMilestone = function convertToMilestone(task, index, dates, columnW
|
|
|
1266
2526
|
styles: styles
|
|
1267
2527
|
});
|
|
1268
2528
|
};
|
|
1269
|
-
|
|
1270
2529
|
var taskXCoordinate = function taskXCoordinate(xDate, dates, columnWidth) {
|
|
1271
2530
|
var index = dates.findIndex(function (d) {
|
|
1272
2531
|
return d.getTime() >= xDate.getTime();
|
|
@@ -1276,31 +2535,25 @@ var taskXCoordinate = function taskXCoordinate(xDate, dates, columnWidth) {
|
|
|
1276
2535
|
var x = index * columnWidth + percentOfInterval * columnWidth;
|
|
1277
2536
|
return x;
|
|
1278
2537
|
};
|
|
1279
|
-
|
|
1280
2538
|
var taskXCoordinateRTL = function taskXCoordinateRTL(xDate, dates, columnWidth) {
|
|
1281
2539
|
var x = taskXCoordinate(xDate, dates, columnWidth);
|
|
1282
2540
|
x += columnWidth;
|
|
1283
2541
|
return x;
|
|
1284
2542
|
};
|
|
1285
|
-
|
|
1286
2543
|
var taskYCoordinate = function taskYCoordinate(index, rowHeight, taskHeight) {
|
|
1287
2544
|
var y = index * rowHeight + (rowHeight - taskHeight) / 2;
|
|
1288
2545
|
return y;
|
|
1289
2546
|
};
|
|
1290
|
-
|
|
1291
2547
|
var progressWithByParams = function progressWithByParams(taskX1, taskX2, progress, rtl) {
|
|
1292
2548
|
var progressWidth = (taskX2 - taskX1) * progress * 0.01;
|
|
1293
2549
|
var progressX;
|
|
1294
|
-
|
|
1295
2550
|
if (rtl) {
|
|
1296
2551
|
progressX = taskX2 - progressWidth;
|
|
1297
2552
|
} else {
|
|
1298
2553
|
progressX = taskX1;
|
|
1299
2554
|
}
|
|
1300
|
-
|
|
1301
2555
|
return [progressWidth, progressX];
|
|
1302
2556
|
};
|
|
1303
|
-
|
|
1304
2557
|
var progressByX = function progressByX(x, task) {
|
|
1305
2558
|
if (x >= task.x2) return 100;else if (x <= task.x1) return 0;else {
|
|
1306
2559
|
var barWidth = task.x2 - task.x1;
|
|
@@ -1308,7 +2561,6 @@ var progressByX = function progressByX(x, task) {
|
|
|
1308
2561
|
return progressPercent;
|
|
1309
2562
|
}
|
|
1310
2563
|
};
|
|
1311
|
-
|
|
1312
2564
|
var progressByXRTL = function progressByXRTL(x, task) {
|
|
1313
2565
|
if (x >= task.x2) return 0;else if (x <= task.x1) return 100;else {
|
|
1314
2566
|
var barWidth = task.x2 - task.x1;
|
|
@@ -1316,34 +2568,28 @@ var progressByXRTL = function progressByXRTL(x, task) {
|
|
|
1316
2568
|
return progressPercent;
|
|
1317
2569
|
}
|
|
1318
2570
|
};
|
|
1319
|
-
|
|
1320
2571
|
var getProgressPoint = function getProgressPoint(progressX, taskY, taskHeight) {
|
|
1321
2572
|
var point = [progressX - 5, taskY + taskHeight, progressX + 5, taskY + taskHeight, progressX, taskY + taskHeight - 8.66];
|
|
1322
2573
|
return point.join(",");
|
|
1323
2574
|
};
|
|
1324
|
-
|
|
1325
2575
|
var startByX = function startByX(x, xStep, task) {
|
|
1326
2576
|
if (x >= task.x2 - task.handleWidth * 2) {
|
|
1327
2577
|
x = task.x2 - task.handleWidth * 2;
|
|
1328
2578
|
}
|
|
1329
|
-
|
|
1330
2579
|
var steps = Math.round((x - task.x1) / xStep);
|
|
1331
2580
|
var additionalXValue = steps * xStep;
|
|
1332
2581
|
var newX = task.x1 + additionalXValue;
|
|
1333
2582
|
return newX;
|
|
1334
2583
|
};
|
|
1335
|
-
|
|
1336
2584
|
var endByX = function endByX(x, xStep, task) {
|
|
1337
2585
|
if (x <= task.x1 + task.handleWidth * 2) {
|
|
1338
2586
|
x = task.x1 + task.handleWidth * 2;
|
|
1339
2587
|
}
|
|
1340
|
-
|
|
1341
2588
|
var steps = Math.round((x - task.x2) / xStep);
|
|
1342
2589
|
var additionalXValue = steps * xStep;
|
|
1343
2590
|
var newX = task.x2 + additionalXValue;
|
|
1344
2591
|
return newX;
|
|
1345
2592
|
};
|
|
1346
|
-
|
|
1347
2593
|
var moveByX = function moveByX(x, xStep, task) {
|
|
1348
2594
|
var steps = Math.round((x - task.x1) / xStep);
|
|
1349
2595
|
var additionalXValue = steps * xStep;
|
|
@@ -1351,34 +2597,26 @@ var moveByX = function moveByX(x, xStep, task) {
|
|
|
1351
2597
|
var newX2 = newX1 + task.x2 - task.x1;
|
|
1352
2598
|
return [newX1, newX2];
|
|
1353
2599
|
};
|
|
1354
|
-
|
|
1355
2600
|
var dateByX = function dateByX(x, taskX, taskDate, xStep, timeStep) {
|
|
1356
2601
|
var newDate = new Date((x - taskX) / xStep * timeStep + taskDate.getTime());
|
|
1357
2602
|
newDate = new Date(newDate.getTime() + (newDate.getTimezoneOffset() - taskDate.getTimezoneOffset()) * 60000);
|
|
1358
2603
|
return newDate;
|
|
1359
2604
|
};
|
|
1360
|
-
|
|
1361
2605
|
var handleTaskBySVGMouseEvent = function handleTaskBySVGMouseEvent(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl) {
|
|
1362
2606
|
var result;
|
|
1363
|
-
|
|
1364
2607
|
switch (selectedTask.type) {
|
|
1365
2608
|
case "milestone":
|
|
1366
2609
|
result = handleTaskBySVGMouseEventForMilestone(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta);
|
|
1367
2610
|
break;
|
|
1368
|
-
|
|
1369
2611
|
default:
|
|
1370
2612
|
result = handleTaskBySVGMouseEventForBar(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl);
|
|
1371
2613
|
break;
|
|
1372
2614
|
}
|
|
1373
|
-
|
|
1374
2615
|
return result;
|
|
1375
2616
|
};
|
|
1376
|
-
|
|
1377
2617
|
var handleTaskBySVGMouseEventForBar = function handleTaskBySVGMouseEventForBar(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl) {
|
|
1378
2618
|
var changedTask = _extends({}, selectedTask);
|
|
1379
|
-
|
|
1380
2619
|
var isChanged = false;
|
|
1381
|
-
|
|
1382
2620
|
switch (action) {
|
|
1383
2621
|
case "progress":
|
|
1384
2622
|
if (rtl) {
|
|
@@ -1386,125 +2624,97 @@ var handleTaskBySVGMouseEventForBar = function handleTaskBySVGMouseEventForBar(s
|
|
|
1386
2624
|
} else {
|
|
1387
2625
|
changedTask.progress = progressByX(svgX, selectedTask);
|
|
1388
2626
|
}
|
|
1389
|
-
|
|
1390
2627
|
isChanged = changedTask.progress !== selectedTask.progress;
|
|
1391
|
-
|
|
1392
2628
|
if (isChanged) {
|
|
1393
2629
|
var _progressWithByParams2 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
2630
|
+
progressWidth = _progressWithByParams2[0],
|
|
2631
|
+
progressX = _progressWithByParams2[1];
|
|
1397
2632
|
changedTask.progressWidth = progressWidth;
|
|
1398
2633
|
changedTask.progressX = progressX;
|
|
1399
2634
|
}
|
|
1400
|
-
|
|
1401
2635
|
break;
|
|
1402
|
-
|
|
1403
2636
|
case "start":
|
|
1404
2637
|
{
|
|
1405
2638
|
var newX1 = startByX(svgX, xStep, selectedTask);
|
|
1406
2639
|
changedTask.x1 = newX1;
|
|
1407
2640
|
isChanged = changedTask.x1 !== selectedTask.x1;
|
|
1408
|
-
|
|
1409
2641
|
if (isChanged) {
|
|
1410
2642
|
if (rtl) {
|
|
1411
2643
|
changedTask.end = dateByX(newX1, selectedTask.x1, selectedTask.end, xStep, timeStep);
|
|
1412
2644
|
} else {
|
|
1413
2645
|
changedTask.start = dateByX(newX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1414
2646
|
}
|
|
1415
|
-
|
|
1416
2647
|
var _progressWithByParams3 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
2648
|
+
_progressWidth = _progressWithByParams3[0],
|
|
2649
|
+
_progressX = _progressWithByParams3[1];
|
|
1420
2650
|
changedTask.progressWidth = _progressWidth;
|
|
1421
2651
|
changedTask.progressX = _progressX;
|
|
1422
2652
|
}
|
|
1423
|
-
|
|
1424
2653
|
break;
|
|
1425
2654
|
}
|
|
1426
|
-
|
|
1427
2655
|
case "end":
|
|
1428
2656
|
{
|
|
1429
2657
|
var newX2 = endByX(svgX, xStep, selectedTask);
|
|
1430
2658
|
changedTask.x2 = newX2;
|
|
1431
2659
|
isChanged = changedTask.x2 !== selectedTask.x2;
|
|
1432
|
-
|
|
1433
2660
|
if (isChanged) {
|
|
1434
2661
|
if (rtl) {
|
|
1435
2662
|
changedTask.start = dateByX(newX2, selectedTask.x2, selectedTask.start, xStep, timeStep);
|
|
1436
2663
|
} else {
|
|
1437
2664
|
changedTask.end = dateByX(newX2, selectedTask.x2, selectedTask.end, xStep, timeStep);
|
|
1438
2665
|
}
|
|
1439
|
-
|
|
1440
2666
|
var _progressWithByParams4 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
2667
|
+
_progressWidth2 = _progressWithByParams4[0],
|
|
2668
|
+
_progressX2 = _progressWithByParams4[1];
|
|
1444
2669
|
changedTask.progressWidth = _progressWidth2;
|
|
1445
2670
|
changedTask.progressX = _progressX2;
|
|
1446
2671
|
}
|
|
1447
|
-
|
|
1448
2672
|
break;
|
|
1449
2673
|
}
|
|
1450
|
-
|
|
1451
2674
|
case "move":
|
|
1452
2675
|
{
|
|
1453
2676
|
var _moveByX = moveByX(svgX - initEventX1Delta, xStep, selectedTask),
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
2677
|
+
newMoveX1 = _moveByX[0],
|
|
2678
|
+
newMoveX2 = _moveByX[1];
|
|
1457
2679
|
isChanged = newMoveX1 !== selectedTask.x1;
|
|
1458
|
-
|
|
1459
2680
|
if (isChanged) {
|
|
1460
2681
|
changedTask.start = dateByX(newMoveX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1461
2682
|
changedTask.end = dateByX(newMoveX2, selectedTask.x2, selectedTask.end, xStep, timeStep);
|
|
1462
2683
|
changedTask.x1 = newMoveX1;
|
|
1463
2684
|
changedTask.x2 = newMoveX2;
|
|
1464
|
-
|
|
1465
2685
|
var _progressWithByParams5 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
2686
|
+
_progressWidth3 = _progressWithByParams5[0],
|
|
2687
|
+
_progressX3 = _progressWithByParams5[1];
|
|
1469
2688
|
changedTask.progressWidth = _progressWidth3;
|
|
1470
2689
|
changedTask.progressX = _progressX3;
|
|
1471
2690
|
}
|
|
1472
|
-
|
|
1473
2691
|
break;
|
|
1474
2692
|
}
|
|
1475
2693
|
}
|
|
1476
|
-
|
|
1477
2694
|
return {
|
|
1478
2695
|
isChanged: isChanged,
|
|
1479
2696
|
changedTask: changedTask
|
|
1480
2697
|
};
|
|
1481
2698
|
};
|
|
1482
|
-
|
|
1483
2699
|
var handleTaskBySVGMouseEventForMilestone = function handleTaskBySVGMouseEventForMilestone(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta) {
|
|
1484
2700
|
var changedTask = _extends({}, selectedTask);
|
|
1485
|
-
|
|
1486
2701
|
var isChanged = false;
|
|
1487
|
-
|
|
1488
2702
|
switch (action) {
|
|
1489
2703
|
case "move":
|
|
1490
2704
|
{
|
|
1491
2705
|
var _moveByX2 = moveByX(svgX - initEventX1Delta, xStep, selectedTask),
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
2706
|
+
newMoveX1 = _moveByX2[0],
|
|
2707
|
+
newMoveX2 = _moveByX2[1];
|
|
1495
2708
|
isChanged = newMoveX1 !== selectedTask.x1;
|
|
1496
|
-
|
|
1497
2709
|
if (isChanged) {
|
|
1498
2710
|
changedTask.start = dateByX(newMoveX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
|
|
1499
2711
|
changedTask.end = changedTask.start;
|
|
1500
2712
|
changedTask.x1 = newMoveX1;
|
|
1501
2713
|
changedTask.x2 = newMoveX2;
|
|
1502
2714
|
}
|
|
1503
|
-
|
|
1504
2715
|
break;
|
|
1505
2716
|
}
|
|
1506
2717
|
}
|
|
1507
|
-
|
|
1508
2718
|
return {
|
|
1509
2719
|
isChanged: isChanged,
|
|
1510
2720
|
changedTask: changedTask
|
|
@@ -1518,27 +2728,22 @@ function removeHiddenTasks(tasks) {
|
|
|
1518
2728
|
var groupedTasks = tasks.filter(function (t) {
|
|
1519
2729
|
return t.hideChildren && t.type === "project";
|
|
1520
2730
|
});
|
|
1521
|
-
|
|
1522
2731
|
if (groupedTasks.length > 0) {
|
|
1523
|
-
var _loop = function _loop(
|
|
2732
|
+
var _loop = function _loop() {
|
|
1524
2733
|
var groupedTask = groupedTasks[i];
|
|
1525
2734
|
var children = getChildren(tasks, groupedTask);
|
|
1526
2735
|
tasks = tasks.filter(function (t) {
|
|
1527
2736
|
return children.indexOf(t) === -1;
|
|
1528
2737
|
});
|
|
1529
2738
|
};
|
|
1530
|
-
|
|
1531
2739
|
for (var i = 0; groupedTasks.length > i; i++) {
|
|
1532
|
-
_loop(
|
|
2740
|
+
_loop();
|
|
1533
2741
|
}
|
|
1534
2742
|
}
|
|
1535
|
-
|
|
1536
2743
|
return tasks;
|
|
1537
2744
|
}
|
|
1538
|
-
|
|
1539
2745
|
function getChildren(taskList, task) {
|
|
1540
2746
|
var tasks = [];
|
|
1541
|
-
|
|
1542
2747
|
if (task.type !== "project") {
|
|
1543
2748
|
tasks = taskList.filter(function (t) {
|
|
1544
2749
|
return t.dependencies && t.dependencies.indexOf(task.id) !== -1;
|
|
@@ -1548,7 +2753,6 @@ function getChildren(taskList, task) {
|
|
|
1548
2753
|
return t.project && t.project === task.id;
|
|
1549
2754
|
});
|
|
1550
2755
|
}
|
|
1551
|
-
|
|
1552
2756
|
var taskChildren = [];
|
|
1553
2757
|
tasks.forEach(function (t) {
|
|
1554
2758
|
taskChildren.push.apply(taskChildren, getChildren(taskList, t));
|
|
@@ -1556,11 +2760,9 @@ function getChildren(taskList, task) {
|
|
|
1556
2760
|
tasks = tasks.concat(tasks, taskChildren);
|
|
1557
2761
|
return tasks;
|
|
1558
2762
|
}
|
|
1559
|
-
|
|
1560
2763
|
var sortTasks = function sortTasks(taskA, taskB) {
|
|
1561
2764
|
var orderA = taskA.displayOrder || Number.MAX_VALUE;
|
|
1562
2765
|
var orderB = taskB.displayOrder || Number.MAX_VALUE;
|
|
1563
|
-
|
|
1564
2766
|
if (orderA > orderB) {
|
|
1565
2767
|
return 1;
|
|
1566
2768
|
} else if (orderA < orderB) {
|
|
@@ -1574,24 +2776,21 @@ var styles$6 = {"barWrapper":"_KxSXS","barHandle":"_3w_5u","barBackground":"_31E
|
|
|
1574
2776
|
|
|
1575
2777
|
var BarDisplay = function BarDisplay(_ref) {
|
|
1576
2778
|
var x = _ref.x,
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
2779
|
+
y = _ref.y,
|
|
2780
|
+
width = _ref.width,
|
|
2781
|
+
height = _ref.height,
|
|
2782
|
+
isSelected = _ref.isSelected,
|
|
2783
|
+
progressX = _ref.progressX,
|
|
2784
|
+
progressWidth = _ref.progressWidth,
|
|
2785
|
+
barCornerRadius = _ref.barCornerRadius,
|
|
2786
|
+
styles = _ref.styles,
|
|
2787
|
+
onMouseDown = _ref.onMouseDown;
|
|
1587
2788
|
var getProcessColor = function getProcessColor() {
|
|
1588
2789
|
return isSelected ? styles.progressSelectedColor : styles.progressColor;
|
|
1589
2790
|
};
|
|
1590
|
-
|
|
1591
2791
|
var getBarColor = function getBarColor() {
|
|
1592
2792
|
return isSelected ? styles.backgroundSelectedColor : styles.backgroundColor;
|
|
1593
2793
|
};
|
|
1594
|
-
|
|
1595
2794
|
return React__default.createElement("g", {
|
|
1596
2795
|
onMouseDown: onMouseDown
|
|
1597
2796
|
}, React__default.createElement("rect", {
|
|
@@ -1616,11 +2815,11 @@ var BarDisplay = function BarDisplay(_ref) {
|
|
|
1616
2815
|
|
|
1617
2816
|
var BarDateHandle = function BarDateHandle(_ref) {
|
|
1618
2817
|
var x = _ref.x,
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
2818
|
+
y = _ref.y,
|
|
2819
|
+
width = _ref.width,
|
|
2820
|
+
height = _ref.height,
|
|
2821
|
+
barCornerRadius = _ref.barCornerRadius,
|
|
2822
|
+
onMouseDown = _ref.onMouseDown;
|
|
1624
2823
|
return React__default.createElement("rect", {
|
|
1625
2824
|
x: x,
|
|
1626
2825
|
y: y,
|
|
@@ -1635,7 +2834,7 @@ var BarDateHandle = function BarDateHandle(_ref) {
|
|
|
1635
2834
|
|
|
1636
2835
|
var BarProgressHandle = function BarProgressHandle(_ref) {
|
|
1637
2836
|
var progressPoint = _ref.progressPoint,
|
|
1638
|
-
|
|
2837
|
+
onMouseDown = _ref.onMouseDown;
|
|
1639
2838
|
return React__default.createElement("polygon", {
|
|
1640
2839
|
className: styles$6.barHandle,
|
|
1641
2840
|
points: progressPoint,
|
|
@@ -1645,11 +2844,11 @@ var BarProgressHandle = function BarProgressHandle(_ref) {
|
|
|
1645
2844
|
|
|
1646
2845
|
var Bar = function Bar(_ref) {
|
|
1647
2846
|
var task = _ref.task,
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
2847
|
+
isProgressChangeable = _ref.isProgressChangeable,
|
|
2848
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2849
|
+
rtl = _ref.rtl,
|
|
2850
|
+
onEventStart = _ref.onEventStart,
|
|
2851
|
+
isSelected = _ref.isSelected;
|
|
1653
2852
|
var progressPoint = getProgressPoint(+!rtl * task.progressWidth + task.progressX, task.y, task.height);
|
|
1654
2853
|
var handleHeight = task.height - 2;
|
|
1655
2854
|
return React__default.createElement("g", {
|
|
@@ -1698,10 +2897,10 @@ var Bar = function Bar(_ref) {
|
|
|
1698
2897
|
|
|
1699
2898
|
var BarSmall = function BarSmall(_ref) {
|
|
1700
2899
|
var task = _ref.task,
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
2900
|
+
isProgressChangeable = _ref.isProgressChangeable,
|
|
2901
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2902
|
+
onEventStart = _ref.onEventStart,
|
|
2903
|
+
isSelected = _ref.isSelected;
|
|
1705
2904
|
var progressPoint = getProgressPoint(task.progressWidth + task.x1, task.y, task.height);
|
|
1706
2905
|
return React__default.createElement("g", {
|
|
1707
2906
|
className: styles$6.barWrapper,
|
|
@@ -1733,15 +2932,13 @@ var styles$7 = {"milestoneWrapper":"_RRr13","milestoneBackground":"_2P2B1"};
|
|
|
1733
2932
|
|
|
1734
2933
|
var Milestone = function Milestone(_ref) {
|
|
1735
2934
|
var task = _ref.task,
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
2935
|
+
isDateChangeable = _ref.isDateChangeable,
|
|
2936
|
+
onEventStart = _ref.onEventStart,
|
|
2937
|
+
isSelected = _ref.isSelected;
|
|
1739
2938
|
var transform = "rotate(45 " + (task.x1 + task.height * 0.356) + " \n " + (task.y + task.height * 0.85) + ")";
|
|
1740
|
-
|
|
1741
2939
|
var getBarColor = function getBarColor() {
|
|
1742
2940
|
return isSelected ? task.styles.backgroundSelectedColor : task.styles.backgroundColor;
|
|
1743
2941
|
};
|
|
1744
|
-
|
|
1745
2942
|
return React__default.createElement("g", {
|
|
1746
2943
|
tabIndex: 0,
|
|
1747
2944
|
className: styles$7.milestoneWrapper
|
|
@@ -1765,7 +2962,7 @@ var styles$8 = {"projectWrapper":"_1KJ6x","projectBackground":"_2RbVy","projectT
|
|
|
1765
2962
|
|
|
1766
2963
|
var Project = function Project(_ref) {
|
|
1767
2964
|
var task = _ref.task,
|
|
1768
|
-
|
|
2965
|
+
isSelected = _ref.isSelected;
|
|
1769
2966
|
var barColor = isSelected ? task.styles.backgroundSelectedColor : task.styles.backgroundColor;
|
|
1770
2967
|
var processColor = isSelected ? task.styles.progressSelectedColor : task.styles.progressColor;
|
|
1771
2968
|
var projectWith = task.x2 - task.x1;
|
|
@@ -1811,68 +3008,79 @@ var Project = function Project(_ref) {
|
|
|
1811
3008
|
}));
|
|
1812
3009
|
};
|
|
1813
3010
|
|
|
1814
|
-
var style = {"barLabel":"_3zRJQ","barLabelOutside":"_3KcaM"};
|
|
3011
|
+
var style = {"barLabel":"_3zRJQ","barLabelOutside":"_3KcaM","statusDot":"_3ITgM"};
|
|
1815
3012
|
|
|
1816
3013
|
var TaskItem = function TaskItem(props) {
|
|
1817
3014
|
var _props = _extends({}, props),
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
3015
|
+
task = _props.task,
|
|
3016
|
+
arrowIndent = _props.arrowIndent,
|
|
3017
|
+
isDelete = _props.isDelete,
|
|
3018
|
+
taskHeight = _props.taskHeight,
|
|
3019
|
+
isSelected = _props.isSelected,
|
|
3020
|
+
rtl = _props.rtl,
|
|
3021
|
+
onEventStart = _props.onEventStart,
|
|
3022
|
+
isProgressChangeable = _props.isProgressChangeable,
|
|
3023
|
+
isDateChangeable = _props.isDateChangeable;
|
|
1826
3024
|
var textRef = React.useRef(null);
|
|
1827
|
-
|
|
1828
3025
|
var _useState = React.useState(React__default.createElement("div", null)),
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
3026
|
+
taskItem = _useState[0],
|
|
3027
|
+
setTaskItem = _useState[1];
|
|
1832
3028
|
var _useState2 = React.useState(true),
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
3029
|
+
isTextInside = _useState2[0],
|
|
3030
|
+
setIsTextInside = _useState2[1];
|
|
3031
|
+
var normalizedStatus = normalizeStatus(task.status);
|
|
3032
|
+
var statusColor = getStatusColor(normalizedStatus);
|
|
3033
|
+
var statusBadgeText = getStatusBadgeText(normalizedStatus);
|
|
3034
|
+
var taskItemProps = React.useMemo(function () {
|
|
3035
|
+
return {
|
|
3036
|
+
task: task,
|
|
3037
|
+
arrowIndent: arrowIndent,
|
|
3038
|
+
taskHeight: taskHeight,
|
|
3039
|
+
isProgressChangeable: isProgressChangeable,
|
|
3040
|
+
isDateChangeable: isDateChangeable,
|
|
3041
|
+
isDelete: isDelete,
|
|
3042
|
+
isSelected: isSelected,
|
|
3043
|
+
rtl: rtl,
|
|
3044
|
+
onEventStart: onEventStart
|
|
3045
|
+
};
|
|
3046
|
+
}, [task, arrowIndent, taskHeight, isProgressChangeable, isDateChangeable, isDelete, isSelected, rtl, onEventStart]);
|
|
1836
3047
|
React.useEffect(function () {
|
|
1837
3048
|
switch (task.typeInternal) {
|
|
1838
3049
|
case "milestone":
|
|
1839
|
-
setTaskItem(React__default.createElement(Milestone, Object.assign({},
|
|
3050
|
+
setTaskItem(React__default.createElement(Milestone, Object.assign({}, taskItemProps)));
|
|
1840
3051
|
break;
|
|
1841
|
-
|
|
1842
3052
|
case "project":
|
|
1843
|
-
setTaskItem(React__default.createElement(Project, Object.assign({},
|
|
3053
|
+
setTaskItem(React__default.createElement(Project, Object.assign({}, taskItemProps)));
|
|
1844
3054
|
break;
|
|
1845
|
-
|
|
1846
3055
|
case "smalltask":
|
|
1847
|
-
setTaskItem(React__default.createElement(BarSmall, Object.assign({},
|
|
3056
|
+
setTaskItem(React__default.createElement(BarSmall, Object.assign({}, taskItemProps)));
|
|
1848
3057
|
break;
|
|
1849
|
-
|
|
1850
3058
|
default:
|
|
1851
|
-
setTaskItem(React__default.createElement(Bar, Object.assign({},
|
|
3059
|
+
setTaskItem(React__default.createElement(Bar, Object.assign({}, taskItemProps)));
|
|
1852
3060
|
break;
|
|
1853
3061
|
}
|
|
1854
|
-
}, [task,
|
|
1855
|
-
|
|
1856
|
-
if (textRef.current) {
|
|
1857
|
-
|
|
3062
|
+
}, [task, taskItemProps]);
|
|
3063
|
+
var getBBoxWidth = function getBBoxWidth() {
|
|
3064
|
+
if (!textRef.current || typeof textRef.current.getBBox !== "function") {
|
|
3065
|
+
return 0;
|
|
1858
3066
|
}
|
|
3067
|
+
return textRef.current.getBBox().width;
|
|
3068
|
+
};
|
|
3069
|
+
React.useEffect(function () {
|
|
3070
|
+
setIsTextInside(getBBoxWidth() < task.x2 - task.x1);
|
|
1859
3071
|
}, [textRef, task]);
|
|
1860
|
-
|
|
1861
3072
|
var getX = function getX() {
|
|
1862
3073
|
var width = task.x2 - task.x1;
|
|
1863
3074
|
var hasChild = task.barChildren.length > 0;
|
|
1864
|
-
|
|
1865
3075
|
if (isTextInside) {
|
|
1866
3076
|
return task.x1 + width * 0.5;
|
|
1867
3077
|
}
|
|
1868
|
-
|
|
1869
3078
|
if (rtl && textRef.current) {
|
|
1870
|
-
return task.x1 -
|
|
3079
|
+
return task.x1 - getBBoxWidth() - arrowIndent * +hasChild - arrowIndent * 0.2;
|
|
1871
3080
|
} else {
|
|
1872
3081
|
return task.x1 + width + arrowIndent * +hasChild + arrowIndent * 0.2;
|
|
1873
3082
|
}
|
|
1874
3083
|
};
|
|
1875
|
-
|
|
1876
3084
|
return React__default.createElement("g", {
|
|
1877
3085
|
onKeyDown: function onKeyDown(e) {
|
|
1878
3086
|
switch (e.key) {
|
|
@@ -1882,7 +3090,6 @@ var TaskItem = function TaskItem(props) {
|
|
|
1882
3090
|
break;
|
|
1883
3091
|
}
|
|
1884
3092
|
}
|
|
1885
|
-
|
|
1886
3093
|
e.stopPropagation();
|
|
1887
3094
|
},
|
|
1888
3095
|
onMouseEnter: function onMouseEnter(e) {
|
|
@@ -1905,48 +3112,47 @@ var TaskItem = function TaskItem(props) {
|
|
|
1905
3112
|
y: task.y + taskHeight * 0.5,
|
|
1906
3113
|
className: isTextInside ? style.barLabel : style.barLabelOutside,
|
|
1907
3114
|
ref: textRef
|
|
1908
|
-
},
|
|
3115
|
+
}, !!statusBadgeText && React__default.createElement("tspan", {
|
|
3116
|
+
className: style.statusDot,
|
|
3117
|
+
fill: statusColor
|
|
3118
|
+
}, "\u25CF"), React__default.createElement("tspan", {
|
|
3119
|
+
dx: statusBadgeText ? 4 : 0
|
|
3120
|
+
}, task.name)));
|
|
1909
3121
|
};
|
|
1910
3122
|
|
|
1911
3123
|
var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
1912
|
-
var _svg$current;
|
|
1913
|
-
|
|
1914
3124
|
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
|
-
|
|
3125
|
+
dates = _ref.dates,
|
|
3126
|
+
ganttEvent = _ref.ganttEvent,
|
|
3127
|
+
selectedTask = _ref.selectedTask,
|
|
3128
|
+
rowHeight = _ref.rowHeight,
|
|
3129
|
+
columnWidth = _ref.columnWidth,
|
|
3130
|
+
timeStep = _ref.timeStep,
|
|
3131
|
+
svg = _ref.svg,
|
|
3132
|
+
taskHeight = _ref.taskHeight,
|
|
3133
|
+
arrowColor = _ref.arrowColor,
|
|
3134
|
+
arrowIndent = _ref.arrowIndent,
|
|
3135
|
+
fontFamily = _ref.fontFamily,
|
|
3136
|
+
fontSize = _ref.fontSize,
|
|
3137
|
+
rtl = _ref.rtl,
|
|
3138
|
+
setGanttEvent = _ref.setGanttEvent,
|
|
3139
|
+
setFailedTask = _ref.setFailedTask,
|
|
3140
|
+
setSelectedTask = _ref.setSelectedTask,
|
|
3141
|
+
onDateChange = _ref.onDateChange,
|
|
3142
|
+
onProgressChange = _ref.onProgressChange,
|
|
3143
|
+
onDoubleClick = _ref.onDoubleClick,
|
|
3144
|
+
onClick = _ref.onClick,
|
|
3145
|
+
onDelete = _ref.onDelete;
|
|
3146
|
+
var point = svg !== null && svg !== void 0 && svg.current && "createSVGPoint" in svg.current ? svg.current.createSVGPoint() : undefined;
|
|
1938
3147
|
var _useState = React.useState(0),
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
3148
|
+
xStep = _useState[0],
|
|
3149
|
+
setXStep = _useState[1];
|
|
1942
3150
|
var _useState2 = React.useState(0),
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
3151
|
+
initEventX1Delta = _useState2[0],
|
|
3152
|
+
setInitEventX1Delta = _useState2[1];
|
|
1946
3153
|
var _useState3 = React.useState(false),
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
3154
|
+
isMoving = _useState3[0],
|
|
3155
|
+
setIsMoving = _useState3[1];
|
|
1950
3156
|
React.useEffect(function () {
|
|
1951
3157
|
var dateDelta = dates[1].getTime() - dates[0].getTime() - dates[1].getTimezoneOffset() * 60 * 1000 + dates[0].getTimezoneOffset() * 60 * 1000;
|
|
1952
3158
|
var newXStep = timeStep * columnWidth / dateDelta;
|
|
@@ -1956,62 +3162,52 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
1956
3162
|
var handleMouseMove = function handleMouseMove(event) {
|
|
1957
3163
|
try {
|
|
1958
3164
|
var _svg$current$getScree;
|
|
1959
|
-
|
|
1960
3165
|
if (!ganttEvent.changedTask || !point || !(svg !== null && svg !== void 0 && svg.current)) return Promise.resolve();
|
|
1961
3166
|
event.preventDefault();
|
|
1962
3167
|
point.x = event.clientX;
|
|
1963
3168
|
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
3169
|
var _handleTaskBySVGMouse = handleTaskBySVGMouseEvent(cursor.x, ganttEvent.action, ganttEvent.changedTask, xStep, timeStep, initEventX1Delta, rtl),
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
3170
|
+
isChanged = _handleTaskBySVGMouse.isChanged,
|
|
3171
|
+
changedTask = _handleTaskBySVGMouse.changedTask;
|
|
1969
3172
|
if (isChanged) {
|
|
1970
3173
|
setGanttEvent({
|
|
1971
3174
|
action: ganttEvent.action,
|
|
1972
3175
|
changedTask: changedTask
|
|
1973
3176
|
});
|
|
1974
3177
|
}
|
|
1975
|
-
|
|
1976
3178
|
return Promise.resolve();
|
|
1977
3179
|
} catch (e) {
|
|
1978
3180
|
return Promise.reject(e);
|
|
1979
3181
|
}
|
|
1980
3182
|
};
|
|
1981
|
-
|
|
1982
|
-
var handleMouseUp = function handleMouseUp(event) {
|
|
3183
|
+
var _handleMouseUp = function handleMouseUp(event) {
|
|
1983
3184
|
try {
|
|
1984
3185
|
var _svg$current$getScree2;
|
|
1985
|
-
|
|
1986
|
-
var _temp6 = function _temp6() {
|
|
3186
|
+
var _temp5 = function _temp5() {
|
|
1987
3187
|
if (!operationSuccess) {
|
|
1988
3188
|
setFailedTask(originalSelectedTask);
|
|
1989
3189
|
}
|
|
1990
3190
|
};
|
|
1991
|
-
|
|
1992
3191
|
var action = ganttEvent.action,
|
|
1993
|
-
|
|
1994
|
-
|
|
3192
|
+
originalSelectedTask = ganttEvent.originalSelectedTask,
|
|
3193
|
+
changedTask = ganttEvent.changedTask;
|
|
1995
3194
|
if (!changedTask || !point || !(svg !== null && svg !== void 0 && svg.current) || !originalSelectedTask) return Promise.resolve();
|
|
1996
3195
|
event.preventDefault();
|
|
1997
3196
|
point.x = event.clientX;
|
|
1998
3197
|
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
3198
|
var _handleTaskBySVGMouse2 = handleTaskBySVGMouseEvent(cursor.x, action, changedTask, xStep, timeStep, initEventX1Delta, rtl),
|
|
2001
|
-
|
|
2002
|
-
|
|
3199
|
+
newChangedTask = _handleTaskBySVGMouse2.changedTask;
|
|
2003
3200
|
var isNotLikeOriginal = originalSelectedTask.start !== newChangedTask.start || originalSelectedTask.end !== newChangedTask.end || originalSelectedTask.progress !== newChangedTask.progress;
|
|
2004
3201
|
svg.current.removeEventListener("mousemove", handleMouseMove);
|
|
2005
|
-
svg.current.removeEventListener("mouseup",
|
|
3202
|
+
svg.current.removeEventListener("mouseup", _handleMouseUp);
|
|
2006
3203
|
setGanttEvent({
|
|
2007
3204
|
action: ""
|
|
2008
3205
|
});
|
|
2009
3206
|
setIsMoving(false);
|
|
2010
3207
|
var operationSuccess = true;
|
|
2011
|
-
|
|
2012
|
-
var _temp7 = function () {
|
|
3208
|
+
var _temp4 = function () {
|
|
2013
3209
|
if ((action === "move" || action === "end" || action === "start") && onDateChange && isNotLikeOriginal) {
|
|
2014
|
-
var
|
|
3210
|
+
var _temp = _catch(function () {
|
|
2015
3211
|
return Promise.resolve(onDateChange(newChangedTask, newChangedTask.barChildren)).then(function (result) {
|
|
2016
3212
|
if (result !== undefined) {
|
|
2017
3213
|
operationSuccess = result;
|
|
@@ -2020,12 +3216,11 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2020
3216
|
}, function () {
|
|
2021
3217
|
operationSuccess = false;
|
|
2022
3218
|
});
|
|
2023
|
-
|
|
2024
|
-
if (_temp8 && _temp8.then) return _temp8.then(function () {});
|
|
3219
|
+
if (_temp && _temp.then) return _temp.then(function () {});
|
|
2025
3220
|
} else {
|
|
2026
|
-
var
|
|
3221
|
+
var _temp6 = function () {
|
|
2027
3222
|
if (onProgressChange && isNotLikeOriginal) {
|
|
2028
|
-
var
|
|
3223
|
+
var _temp2 = _catch(function () {
|
|
2029
3224
|
return Promise.resolve(onProgressChange(newChangedTask, newChangedTask.barChildren)).then(function (result) {
|
|
2030
3225
|
if (result !== undefined) {
|
|
2031
3226
|
operationSuccess = result;
|
|
@@ -2034,28 +3229,23 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2034
3229
|
}, function () {
|
|
2035
3230
|
operationSuccess = false;
|
|
2036
3231
|
});
|
|
2037
|
-
|
|
2038
|
-
if (_temp10 && _temp10.then) return _temp10.then(function () {});
|
|
3232
|
+
if (_temp2 && _temp2.then) return _temp2.then(function () {});
|
|
2039
3233
|
}
|
|
2040
3234
|
}();
|
|
2041
|
-
|
|
2042
|
-
if (_temp9 && _temp9.then) return _temp9.then(function () {});
|
|
3235
|
+
if (_temp6 && _temp6.then) return _temp6.then(function () {});
|
|
2043
3236
|
}
|
|
2044
3237
|
}();
|
|
2045
|
-
|
|
2046
|
-
return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp6) : _temp6(_temp7));
|
|
3238
|
+
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
|
|
2047
3239
|
} catch (e) {
|
|
2048
3240
|
return Promise.reject(e);
|
|
2049
3241
|
}
|
|
2050
3242
|
};
|
|
2051
|
-
|
|
2052
3243
|
if (!isMoving && (ganttEvent.action === "move" || ganttEvent.action === "end" || ganttEvent.action === "start" || ganttEvent.action === "progress") && svg !== null && svg !== void 0 && svg.current) {
|
|
2053
3244
|
svg.current.addEventListener("mousemove", handleMouseMove);
|
|
2054
|
-
svg.current.addEventListener("mouseup",
|
|
3245
|
+
svg.current.addEventListener("mouseup", _handleMouseUp);
|
|
2055
3246
|
setIsMoving(true);
|
|
2056
3247
|
}
|
|
2057
3248
|
}, [ganttEvent, xStep, initEventX1Delta, onProgressChange, timeStep, onDateChange, svg, isMoving, point, rtl, setFailedTask, setGanttEvent]);
|
|
2058
|
-
|
|
2059
3249
|
var handleBarEventStart = function handleBarEventStart(action, task, event) {
|
|
2060
3250
|
try {
|
|
2061
3251
|
return Promise.resolve(function () {
|
|
@@ -2065,11 +3255,11 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2065
3255
|
}
|
|
2066
3256
|
} else return function () {
|
|
2067
3257
|
if (isKeyboardEvent(event)) {
|
|
2068
|
-
var
|
|
3258
|
+
var _temp9 = function () {
|
|
2069
3259
|
if (action === "delete") {
|
|
2070
|
-
var
|
|
3260
|
+
var _temp8 = function () {
|
|
2071
3261
|
if (onDelete) {
|
|
2072
|
-
var
|
|
3262
|
+
var _temp7 = _catch(function () {
|
|
2073
3263
|
return Promise.resolve(onDelete(task)).then(function (result) {
|
|
2074
3264
|
if (result !== undefined && result) {
|
|
2075
3265
|
setGanttEvent({
|
|
@@ -2081,16 +3271,13 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2081
3271
|
}, function (error) {
|
|
2082
3272
|
console.error("Error on Delete. " + error);
|
|
2083
3273
|
});
|
|
2084
|
-
|
|
2085
|
-
if (_temp16 && _temp16.then) return _temp16.then(function () {});
|
|
3274
|
+
if (_temp7 && _temp7.then) return _temp7.then(function () {});
|
|
2086
3275
|
}
|
|
2087
3276
|
}();
|
|
2088
|
-
|
|
2089
|
-
if (_temp15 && _temp15.then) return _temp15.then(function () {});
|
|
3277
|
+
if (_temp8 && _temp8.then) return _temp8.then(function () {});
|
|
2090
3278
|
}
|
|
2091
3279
|
}();
|
|
2092
|
-
|
|
2093
|
-
if (_temp14 && _temp14.then) return _temp14.then(function () {});
|
|
3280
|
+
if (_temp9 && _temp9.then) return _temp9.then(function () {});
|
|
2094
3281
|
} else if (action === "mouseenter") {
|
|
2095
3282
|
if (!ganttEvent.action) {
|
|
2096
3283
|
setGanttEvent({
|
|
@@ -2111,7 +3298,6 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2111
3298
|
!!onClick && onClick(task);
|
|
2112
3299
|
} else if (action === "move") {
|
|
2113
3300
|
var _svg$current$getScree3;
|
|
2114
|
-
|
|
2115
3301
|
if (!(svg !== null && svg !== void 0 && svg.current) || !point) return;
|
|
2116
3302
|
point.x = event.clientX;
|
|
2117
3303
|
var cursor = point.matrixTransform((_svg$current$getScree3 = svg.current.getScreenCTM()) === null || _svg$current$getScree3 === void 0 ? void 0 : _svg$current$getScree3.inverse());
|
|
@@ -2134,7 +3320,6 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2134
3320
|
return Promise.reject(e);
|
|
2135
3321
|
}
|
|
2136
3322
|
};
|
|
2137
|
-
|
|
2138
3323
|
return React__default.createElement("g", {
|
|
2139
3324
|
className: "content"
|
|
2140
3325
|
}, React__default.createElement("g", {
|
|
@@ -2173,36 +3358,36 @@ var TaskGanttContent = function TaskGanttContent(_ref) {
|
|
|
2173
3358
|
})));
|
|
2174
3359
|
};
|
|
2175
3360
|
|
|
2176
|
-
var styles$9 = {"ganttVerticalContainer":"_CZjuD","horizontalContainer":"_2B2zv","wrapper":"_3eULf"};
|
|
3361
|
+
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
3362
|
|
|
2178
3363
|
var TaskGantt = function TaskGantt(_ref) {
|
|
2179
3364
|
var gridProps = _ref.gridProps,
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
3365
|
+
calendarProps = _ref.calendarProps,
|
|
3366
|
+
barProps = _ref.barProps,
|
|
3367
|
+
ganttHeight = _ref.ganttHeight,
|
|
3368
|
+
scrollY = _ref.scrollY,
|
|
3369
|
+
scrollX = _ref.scrollX,
|
|
3370
|
+
verticalGanttContainerRef = _ref.verticalGanttContainerRef;
|
|
2185
3371
|
var ganttSVGRef = React.useRef(null);
|
|
2186
3372
|
var horizontalContainerRef = React.useRef(null);
|
|
2187
|
-
var
|
|
2188
|
-
|
|
3373
|
+
var internalVerticalRef = React.useRef(null);
|
|
3374
|
+
var ganttContainerRef = verticalGanttContainerRef || internalVerticalRef;
|
|
2189
3375
|
var newBarProps = _extends({}, barProps, {
|
|
2190
3376
|
svg: ganttSVGRef
|
|
2191
3377
|
});
|
|
2192
|
-
|
|
2193
3378
|
React.useEffect(function () {
|
|
2194
3379
|
if (horizontalContainerRef.current) {
|
|
2195
3380
|
horizontalContainerRef.current.scrollTop = scrollY;
|
|
2196
3381
|
}
|
|
2197
3382
|
}, [scrollY]);
|
|
2198
3383
|
React.useEffect(function () {
|
|
2199
|
-
if (
|
|
2200
|
-
|
|
3384
|
+
if (ganttContainerRef.current) {
|
|
3385
|
+
ganttContainerRef.current.scrollLeft = scrollX;
|
|
2201
3386
|
}
|
|
2202
|
-
}, [scrollX]);
|
|
3387
|
+
}, [scrollX, ganttContainerRef]);
|
|
2203
3388
|
return React__default.createElement("div", {
|
|
2204
3389
|
className: styles$9.ganttVerticalContainer,
|
|
2205
|
-
ref:
|
|
3390
|
+
ref: ganttContainerRef,
|
|
2206
3391
|
dir: "ltr"
|
|
2207
3392
|
}, React__default.createElement("svg", {
|
|
2208
3393
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2231,223 +3416,241 @@ var styles$a = {"scrollWrapper":"_2k9Ys","scroll":"_19jgW"};
|
|
|
2231
3416
|
|
|
2232
3417
|
var HorizontalScroll = function HorizontalScroll(_ref) {
|
|
2233
3418
|
var scroll = _ref.scroll,
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
3419
|
+
svgWidth = _ref.svgWidth,
|
|
3420
|
+
scrollerWidth = _ref.scrollerWidth,
|
|
3421
|
+
rtl = _ref.rtl,
|
|
3422
|
+
onScroll = _ref.onScroll,
|
|
3423
|
+
dataTestId = _ref["data-testid"],
|
|
3424
|
+
containerRef = _ref.containerRef,
|
|
3425
|
+
hidden = _ref.hidden;
|
|
2238
3426
|
var scrollRef = React.useRef(null);
|
|
3427
|
+
var wrapperRef = containerRef != null ? containerRef : scrollRef;
|
|
2239
3428
|
React.useEffect(function () {
|
|
2240
|
-
if (
|
|
2241
|
-
|
|
3429
|
+
if (wrapperRef.current) {
|
|
3430
|
+
wrapperRef.current.scrollLeft = scroll;
|
|
2242
3431
|
}
|
|
2243
|
-
}, [scroll]);
|
|
3432
|
+
}, [scroll, wrapperRef]);
|
|
2244
3433
|
return React__default.createElement("div", {
|
|
2245
|
-
dir: "ltr",
|
|
2246
|
-
style: {
|
|
2247
|
-
margin: rtl ? "0px " + taskListWidth + "px 0px 0px" : "0px 0px 0px " + taskListWidth + "px"
|
|
2248
|
-
},
|
|
3434
|
+
dir: rtl ? "rtl" : "ltr",
|
|
2249
3435
|
className: styles$a.scrollWrapper,
|
|
2250
3436
|
onScroll: onScroll,
|
|
2251
|
-
ref:
|
|
3437
|
+
ref: wrapperRef,
|
|
3438
|
+
"data-testid": dataTestId,
|
|
3439
|
+
style: hidden ? {
|
|
3440
|
+
display: "none"
|
|
3441
|
+
} : {
|
|
3442
|
+
width: svgWidth
|
|
3443
|
+
}
|
|
2252
3444
|
}, React__default.createElement("div", {
|
|
2253
3445
|
style: {
|
|
2254
|
-
width: svgWidth
|
|
3446
|
+
width: scrollerWidth != null ? scrollerWidth : svgWidth
|
|
2255
3447
|
},
|
|
2256
3448
|
className: styles$a.scroll
|
|
2257
3449
|
}));
|
|
2258
3450
|
};
|
|
2259
3451
|
|
|
3452
|
+
var DEFAULT_TASK_LIST_WIDTH = 450;
|
|
3453
|
+
var MIN_PANE_WIDTH = 150;
|
|
3454
|
+
var SPLIT_HANDLE_WIDTH = 8;
|
|
3455
|
+
var clampTaskListWidth = function clampTaskListWidth(width, containerWidth) {
|
|
3456
|
+
var maxWidth = Math.max(MIN_PANE_WIDTH, containerWidth - MIN_PANE_WIDTH - SPLIT_HANDLE_WIDTH);
|
|
3457
|
+
return Math.min(Math.max(width, MIN_PANE_WIDTH), maxWidth);
|
|
3458
|
+
};
|
|
2260
3459
|
var Gantt = function Gantt(_ref) {
|
|
2261
3460
|
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
|
-
|
|
3461
|
+
_ref$headerHeight = _ref.headerHeight,
|
|
3462
|
+
headerHeight = _ref$headerHeight === void 0 ? 50 : _ref$headerHeight,
|
|
3463
|
+
_ref$columnWidth = _ref.columnWidth,
|
|
3464
|
+
columnWidth = _ref$columnWidth === void 0 ? 60 : _ref$columnWidth,
|
|
3465
|
+
_ref$listCellWidth = _ref.listCellWidth,
|
|
3466
|
+
listCellWidth = _ref$listCellWidth === void 0 ? "155px" : _ref$listCellWidth,
|
|
3467
|
+
_ref$rowHeight = _ref.rowHeight,
|
|
3468
|
+
rowHeight = _ref$rowHeight === void 0 ? 50 : _ref$rowHeight,
|
|
3469
|
+
_ref$ganttHeight = _ref.ganttHeight,
|
|
3470
|
+
ganttHeight = _ref$ganttHeight === void 0 ? 0 : _ref$ganttHeight,
|
|
3471
|
+
_ref$viewMode = _ref.viewMode,
|
|
3472
|
+
viewMode = _ref$viewMode === void 0 ? exports.ViewMode.Day : _ref$viewMode,
|
|
3473
|
+
_ref$preStepsCount = _ref.preStepsCount,
|
|
3474
|
+
preStepsCount = _ref$preStepsCount === void 0 ? 1 : _ref$preStepsCount,
|
|
3475
|
+
_ref$locale = _ref.locale,
|
|
3476
|
+
locale = _ref$locale === void 0 ? "en-GB" : _ref$locale,
|
|
3477
|
+
calendar = _ref.calendar,
|
|
3478
|
+
_ref$barFill = _ref.barFill,
|
|
3479
|
+
barFill = _ref$barFill === void 0 ? 60 : _ref$barFill,
|
|
3480
|
+
_ref$barCornerRadius = _ref.barCornerRadius,
|
|
3481
|
+
barCornerRadius = _ref$barCornerRadius === void 0 ? 3 : _ref$barCornerRadius,
|
|
3482
|
+
_ref$barProgressColor = _ref.barProgressColor,
|
|
3483
|
+
barProgressColor = _ref$barProgressColor === void 0 ? "#a3a3ff" : _ref$barProgressColor,
|
|
3484
|
+
_ref$barProgressSelec = _ref.barProgressSelectedColor,
|
|
3485
|
+
barProgressSelectedColor = _ref$barProgressSelec === void 0 ? "#8282f5" : _ref$barProgressSelec,
|
|
3486
|
+
_ref$barBackgroundCol = _ref.barBackgroundColor,
|
|
3487
|
+
barBackgroundColor = _ref$barBackgroundCol === void 0 ? "#b8c2cc" : _ref$barBackgroundCol,
|
|
3488
|
+
_ref$barBackgroundSel = _ref.barBackgroundSelectedColor,
|
|
3489
|
+
barBackgroundSelectedColor = _ref$barBackgroundSel === void 0 ? "#aeb8c2" : _ref$barBackgroundSel,
|
|
3490
|
+
_ref$projectProgressC = _ref.projectProgressColor,
|
|
3491
|
+
projectProgressColor = _ref$projectProgressC === void 0 ? "#7db59a" : _ref$projectProgressC,
|
|
3492
|
+
_ref$projectProgressS = _ref.projectProgressSelectedColor,
|
|
3493
|
+
projectProgressSelectedColor = _ref$projectProgressS === void 0 ? "#59a985" : _ref$projectProgressS,
|
|
3494
|
+
_ref$projectBackgroun = _ref.projectBackgroundColor,
|
|
3495
|
+
projectBackgroundColor = _ref$projectBackgroun === void 0 ? "#fac465" : _ref$projectBackgroun,
|
|
3496
|
+
_ref$projectBackgroun2 = _ref.projectBackgroundSelectedColor,
|
|
3497
|
+
projectBackgroundSelectedColor = _ref$projectBackgroun2 === void 0 ? "#f7bb53" : _ref$projectBackgroun2,
|
|
3498
|
+
_ref$milestoneBackgro = _ref.milestoneBackgroundColor,
|
|
3499
|
+
milestoneBackgroundColor = _ref$milestoneBackgro === void 0 ? "#f1c453" : _ref$milestoneBackgro,
|
|
3500
|
+
_ref$milestoneBackgro2 = _ref.milestoneBackgroundSelectedColor,
|
|
3501
|
+
milestoneBackgroundSelectedColor = _ref$milestoneBackgro2 === void 0 ? "#f29e4c" : _ref$milestoneBackgro2,
|
|
3502
|
+
_ref$rtl = _ref.rtl,
|
|
3503
|
+
rtl = _ref$rtl === void 0 ? false : _ref$rtl,
|
|
3504
|
+
_ref$handleWidth = _ref.handleWidth,
|
|
3505
|
+
handleWidth = _ref$handleWidth === void 0 ? 8 : _ref$handleWidth,
|
|
3506
|
+
_ref$timeStep = _ref.timeStep,
|
|
3507
|
+
timeStep = _ref$timeStep === void 0 ? 300000 : _ref$timeStep,
|
|
3508
|
+
_ref$arrowColor = _ref.arrowColor,
|
|
3509
|
+
arrowColor = _ref$arrowColor === void 0 ? "grey" : _ref$arrowColor,
|
|
3510
|
+
_ref$fontFamily = _ref.fontFamily,
|
|
3511
|
+
fontFamily = _ref$fontFamily === void 0 ? "Arial, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue" : _ref$fontFamily,
|
|
3512
|
+
_ref$fontSize = _ref.fontSize,
|
|
3513
|
+
fontSize = _ref$fontSize === void 0 ? "14px" : _ref$fontSize,
|
|
3514
|
+
_ref$arrowIndent = _ref.arrowIndent,
|
|
3515
|
+
arrowIndent = _ref$arrowIndent === void 0 ? 20 : _ref$arrowIndent,
|
|
3516
|
+
_ref$todayColor = _ref.todayColor,
|
|
3517
|
+
todayColor = _ref$todayColor === void 0 ? "rgba(252, 248, 227, 0.5)" : _ref$todayColor,
|
|
3518
|
+
viewDate = _ref.viewDate,
|
|
3519
|
+
_ref$TooltipContent = _ref.TooltipContent,
|
|
3520
|
+
TooltipContent = _ref$TooltipContent === void 0 ? StandardTooltipContent : _ref$TooltipContent,
|
|
3521
|
+
_ref$TaskListHeader = _ref.TaskListHeader,
|
|
3522
|
+
TaskListHeader = _ref$TaskListHeader === void 0 ? TaskListHeaderDefault : _ref$TaskListHeader,
|
|
3523
|
+
_ref$TaskListTable = _ref.TaskListTable,
|
|
3524
|
+
TaskListTable = _ref$TaskListTable === void 0 ? TaskListTableDefault : _ref$TaskListTable,
|
|
3525
|
+
_ref$visibleFields = _ref.visibleFields,
|
|
3526
|
+
visibleFields = _ref$visibleFields === void 0 ? DEFAULT_VISIBLE_FIELDS : _ref$visibleFields,
|
|
3527
|
+
_ref$effortDisplayUni = _ref.effortDisplayUnit,
|
|
3528
|
+
effortDisplayUnit = _ref$effortDisplayUni === void 0 ? "MH" : _ref$effortDisplayUni,
|
|
3529
|
+
enableColumnDrag = _ref.enableColumnDrag,
|
|
3530
|
+
onDateChange = _ref.onDateChange,
|
|
3531
|
+
onProgressChange = _ref.onProgressChange,
|
|
3532
|
+
onDoubleClick = _ref.onDoubleClick,
|
|
3533
|
+
onClick = _ref.onClick,
|
|
3534
|
+
onDelete = _ref.onDelete,
|
|
3535
|
+
onSelect = _ref.onSelect,
|
|
3536
|
+
onExpanderClick = _ref.onExpanderClick,
|
|
3537
|
+
onTaskUpdate = _ref.onTaskUpdate,
|
|
3538
|
+
onCellCommit = _ref.onCellCommit;
|
|
3539
|
+
var calendarConfig = React.useMemo(function () {
|
|
3540
|
+
return calendar ? normalizeCalendarConfig(calendar) : undefined;
|
|
3541
|
+
}, [calendar]);
|
|
2332
3542
|
var wrapperRef = React.useRef(null);
|
|
2333
3543
|
var taskListRef = React.useRef(null);
|
|
2334
|
-
|
|
3544
|
+
var taskListHeaderRef = React.useRef(null);
|
|
3545
|
+
var taskListBodyRef = React.useRef(null);
|
|
3546
|
+
var ganttContainerRef = React.useRef(null);
|
|
3547
|
+
var splitStartXRef = React.useRef(null);
|
|
3548
|
+
var splitStartWidthRef = React.useRef(null);
|
|
3549
|
+
var splitMoveHandlerRef = React.useRef(null);
|
|
3550
|
+
var splitUpHandlerRef = React.useRef(null);
|
|
3551
|
+
var supportsPointerEvents = typeof window !== "undefined" && "PointerEvent" in window;
|
|
2335
3552
|
var _useState = React.useState(function () {
|
|
2336
|
-
|
|
3553
|
+
var _ganttDateRange = ganttDateRange(tasks, viewMode, preStepsCount),
|
|
2337
3554
|
startDate = _ganttDateRange[0],
|
|
2338
3555
|
endDate = _ganttDateRange[1];
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
}
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
setDateSetup = _useState[1];
|
|
2347
|
-
|
|
3556
|
+
return {
|
|
3557
|
+
viewMode: viewMode,
|
|
3558
|
+
dates: seedDates(startDate, endDate, viewMode)
|
|
3559
|
+
};
|
|
3560
|
+
}),
|
|
3561
|
+
dateSetup = _useState[0],
|
|
3562
|
+
setDateSetup = _useState[1];
|
|
2348
3563
|
var _useState2 = React.useState(undefined),
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
setTaskListWidth = _useState3[1];
|
|
2355
|
-
|
|
3564
|
+
currentViewDate = _useState2[0],
|
|
3565
|
+
setCurrentViewDate = _useState2[1];
|
|
3566
|
+
var _useState3 = React.useState(DEFAULT_TASK_LIST_WIDTH),
|
|
3567
|
+
taskListWidth = _useState3[0],
|
|
3568
|
+
setTaskListWidth = _useState3[1];
|
|
2356
3569
|
var _useState4 = React.useState(0),
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
var
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
3570
|
+
wrapperWidth = _useState4[0],
|
|
3571
|
+
setWrapperWidth = _useState4[1];
|
|
3572
|
+
var _useState5 = React.useState(false),
|
|
3573
|
+
isResizing = _useState5[0],
|
|
3574
|
+
setIsResizing = _useState5[1];
|
|
3575
|
+
var _useState6 = React.useState(0),
|
|
3576
|
+
svgContainerWidth = _useState6[0],
|
|
3577
|
+
setSvgContainerWidth = _useState6[1];
|
|
3578
|
+
var _useState7 = React.useState(ganttHeight),
|
|
3579
|
+
svgContainerHeight = _useState7[0],
|
|
3580
|
+
setSvgContainerHeight = _useState7[1];
|
|
3581
|
+
var _useState8 = React.useState([]),
|
|
3582
|
+
barTasks = _useState8[0],
|
|
3583
|
+
setBarTasks = _useState8[1];
|
|
3584
|
+
var _useState9 = React.useState({
|
|
3585
|
+
action: ""
|
|
3586
|
+
}),
|
|
3587
|
+
ganttEvent = _useState9[0],
|
|
3588
|
+
setGanttEvent = _useState9[1];
|
|
2374
3589
|
var taskHeight = React.useMemo(function () {
|
|
2375
3590
|
return rowHeight * barFill / 100;
|
|
2376
3591
|
}, [rowHeight, barFill]);
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
failedTask = _useState9[0],
|
|
2384
|
-
setFailedTask = _useState9[1];
|
|
2385
|
-
|
|
3592
|
+
var _useState0 = React.useState(),
|
|
3593
|
+
selectedTask = _useState0[0],
|
|
3594
|
+
setSelectedTask = _useState0[1];
|
|
3595
|
+
var _useState1 = React.useState(null),
|
|
3596
|
+
failedTask = _useState1[0],
|
|
3597
|
+
setFailedTask = _useState1[1];
|
|
2386
3598
|
var svgWidth = dateSetup.dates.length * columnWidth;
|
|
2387
3599
|
var ganttFullHeight = barTasks.length * rowHeight;
|
|
2388
|
-
|
|
2389
3600
|
var _useState10 = React.useState(0),
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
3601
|
+
scrollY = _useState10[0],
|
|
3602
|
+
setScrollY = _useState10[1];
|
|
3603
|
+
var _useState11 = React.useState(0),
|
|
3604
|
+
scrollXLeft = _useState11[0],
|
|
3605
|
+
setScrollXLeft = _useState11[1];
|
|
3606
|
+
var _useState12 = React.useState(-1),
|
|
3607
|
+
scrollXRight = _useState12[0],
|
|
3608
|
+
setScrollXRight = _useState12[1];
|
|
3609
|
+
var _useState13 = React.useState(1430),
|
|
3610
|
+
leftScrollerWidth = _useState13[0],
|
|
3611
|
+
setLeftScrollerWidth = _useState13[1];
|
|
3612
|
+
var ignoreScrollLeftRef = React.useRef(false);
|
|
3613
|
+
var ignoreScrollRightRef = React.useRef(false);
|
|
2401
3614
|
React.useEffect(function () {
|
|
2402
3615
|
var filteredTasks;
|
|
2403
|
-
|
|
2404
3616
|
if (onExpanderClick) {
|
|
2405
3617
|
filteredTasks = removeHiddenTasks(tasks);
|
|
2406
3618
|
} else {
|
|
2407
3619
|
filteredTasks = tasks;
|
|
2408
3620
|
}
|
|
2409
|
-
|
|
2410
3621
|
filteredTasks = filteredTasks.sort(sortTasks);
|
|
2411
|
-
|
|
2412
3622
|
var _ganttDateRange2 = ganttDateRange(filteredTasks, viewMode, preStepsCount),
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
3623
|
+
startDate = _ganttDateRange2[0],
|
|
3624
|
+
endDate = _ganttDateRange2[1];
|
|
2416
3625
|
var newDates = seedDates(startDate, endDate, viewMode);
|
|
2417
|
-
|
|
2418
3626
|
if (rtl) {
|
|
2419
3627
|
newDates = newDates.reverse();
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
setScrollX(newDates.length * columnWidth);
|
|
3628
|
+
if (scrollXRight === -1) {
|
|
3629
|
+
setScrollXRight(newDates.length * columnWidth);
|
|
2423
3630
|
}
|
|
2424
3631
|
}
|
|
2425
|
-
|
|
2426
3632
|
setDateSetup({
|
|
2427
3633
|
dates: newDates,
|
|
2428
3634
|
viewMode: viewMode
|
|
2429
3635
|
});
|
|
2430
3636
|
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,
|
|
3637
|
+
}, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, columnWidth, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, scrollXRight, onExpanderClick]);
|
|
2432
3638
|
React.useEffect(function () {
|
|
2433
3639
|
if (viewMode === dateSetup.viewMode && (viewDate && !currentViewDate || viewDate && (currentViewDate === null || currentViewDate === void 0 ? void 0 : currentViewDate.valueOf()) !== viewDate.valueOf())) {
|
|
2434
3640
|
var dates = dateSetup.dates;
|
|
2435
3641
|
var index = dates.findIndex(function (d, i) {
|
|
2436
3642
|
return viewDate.valueOf() >= d.valueOf() && i + 1 !== dates.length && viewDate.valueOf() < dates[i + 1].valueOf();
|
|
2437
3643
|
});
|
|
2438
|
-
|
|
2439
3644
|
if (index === -1) {
|
|
2440
3645
|
return;
|
|
2441
3646
|
}
|
|
2442
|
-
|
|
2443
3647
|
setCurrentViewDate(viewDate);
|
|
2444
|
-
|
|
3648
|
+
setScrollXRight(columnWidth * index);
|
|
2445
3649
|
}
|
|
2446
3650
|
}, [viewDate, columnWidth, dateSetup.dates, dateSetup.viewMode, viewMode, currentViewDate, setCurrentViewDate]);
|
|
2447
3651
|
React.useEffect(function () {
|
|
2448
3652
|
var changedTask = ganttEvent.changedTask,
|
|
2449
|
-
|
|
2450
|
-
|
|
3653
|
+
action = ganttEvent.action;
|
|
2451
3654
|
if (changedTask) {
|
|
2452
3655
|
if (action === "delete") {
|
|
2453
3656
|
setGanttEvent({
|
|
@@ -2460,7 +3663,6 @@ var Gantt = function Gantt(_ref) {
|
|
|
2460
3663
|
var prevStateTask = barTasks.find(function (t) {
|
|
2461
3664
|
return t.id === changedTask.id;
|
|
2462
3665
|
});
|
|
2463
|
-
|
|
2464
3666
|
if (prevStateTask && (prevStateTask.start.getTime() !== changedTask.start.getTime() || prevStateTask.end.getTime() !== changedTask.end.getTime() || prevStateTask.progress !== changedTask.progress)) {
|
|
2465
3667
|
var newTaskList = barTasks.map(function (t) {
|
|
2466
3668
|
return t.id === changedTask.id ? changedTask : t;
|
|
@@ -2478,20 +3680,35 @@ var Gantt = function Gantt(_ref) {
|
|
|
2478
3680
|
setFailedTask(null);
|
|
2479
3681
|
}
|
|
2480
3682
|
}, [failedTask, barTasks]);
|
|
3683
|
+
React.useEffect(function () {
|
|
3684
|
+
var updateWrapperWidth = function updateWrapperWidth() {
|
|
3685
|
+
if (wrapperRef.current) {
|
|
3686
|
+
setWrapperWidth(wrapperRef.current.offsetWidth);
|
|
3687
|
+
}
|
|
3688
|
+
};
|
|
3689
|
+
updateWrapperWidth();
|
|
3690
|
+
window.addEventListener("resize", updateWrapperWidth);
|
|
3691
|
+
return function () {
|
|
3692
|
+
return window.removeEventListener("resize", updateWrapperWidth);
|
|
3693
|
+
};
|
|
3694
|
+
}, []);
|
|
2481
3695
|
React.useEffect(function () {
|
|
2482
3696
|
if (!listCellWidth) {
|
|
2483
3697
|
setTaskListWidth(0);
|
|
3698
|
+
return;
|
|
2484
3699
|
}
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
3700
|
+
if (wrapperWidth) {
|
|
3701
|
+
setTaskListWidth(function (prev) {
|
|
3702
|
+
return clampTaskListWidth(prev, wrapperWidth);
|
|
3703
|
+
});
|
|
2488
3704
|
}
|
|
2489
|
-
}, [
|
|
3705
|
+
}, [listCellWidth, wrapperWidth]);
|
|
3706
|
+
var taskListOffset = listCellWidth ? taskListWidth + SPLIT_HANDLE_WIDTH : 0;
|
|
2490
3707
|
React.useEffect(function () {
|
|
2491
|
-
if (
|
|
2492
|
-
setSvgContainerWidth(
|
|
3708
|
+
if (wrapperWidth) {
|
|
3709
|
+
setSvgContainerWidth(Math.max(wrapperWidth - taskListOffset, 0));
|
|
2493
3710
|
}
|
|
2494
|
-
}, [
|
|
3711
|
+
}, [wrapperWidth, taskListOffset]);
|
|
2495
3712
|
React.useEffect(function () {
|
|
2496
3713
|
if (ganttHeight) {
|
|
2497
3714
|
setSvgContainerHeight(ganttHeight + headerHeight);
|
|
@@ -2500,118 +3717,147 @@ var Gantt = function Gantt(_ref) {
|
|
|
2500
3717
|
}
|
|
2501
3718
|
}, [ganttHeight, tasks, headerHeight, rowHeight]);
|
|
2502
3719
|
React.useEffect(function () {
|
|
2503
|
-
|
|
2504
|
-
|
|
3720
|
+
return function () {
|
|
3721
|
+
if (splitMoveHandlerRef.current) {
|
|
3722
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3723
|
+
splitMoveHandlerRef.current = null;
|
|
3724
|
+
}
|
|
3725
|
+
if (splitUpHandlerRef.current) {
|
|
3726
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3727
|
+
splitUpHandlerRef.current = null;
|
|
3728
|
+
}
|
|
3729
|
+
};
|
|
3730
|
+
}, []);
|
|
3731
|
+
React.useEffect(function () {
|
|
2505
3732
|
var handleWheel = function handleWheel(event) {
|
|
2506
3733
|
if (event.shiftKey || event.deltaX) {
|
|
2507
3734
|
var scrollMove = event.deltaX ? event.deltaX : event.deltaY;
|
|
2508
|
-
var newScrollX =
|
|
2509
|
-
|
|
3735
|
+
var newScrollX = scrollXRight + scrollMove;
|
|
2510
3736
|
if (newScrollX < 0) {
|
|
2511
3737
|
newScrollX = 0;
|
|
2512
3738
|
} else if (newScrollX > svgWidth) {
|
|
2513
3739
|
newScrollX = svgWidth;
|
|
2514
3740
|
}
|
|
2515
|
-
|
|
2516
|
-
|
|
3741
|
+
ignoreScrollRightRef.current = true;
|
|
3742
|
+
setScrollXRight(newScrollX);
|
|
2517
3743
|
event.preventDefault();
|
|
2518
3744
|
} else if (ganttHeight) {
|
|
2519
3745
|
var newScrollY = scrollY + event.deltaY;
|
|
2520
|
-
|
|
2521
3746
|
if (newScrollY < 0) {
|
|
2522
3747
|
newScrollY = 0;
|
|
2523
3748
|
} else if (newScrollY > ganttFullHeight - ganttHeight) {
|
|
2524
3749
|
newScrollY = ganttFullHeight - ganttHeight;
|
|
2525
3750
|
}
|
|
2526
|
-
|
|
2527
3751
|
if (newScrollY !== scrollY) {
|
|
2528
3752
|
setScrollY(newScrollY);
|
|
2529
3753
|
event.preventDefault();
|
|
2530
3754
|
}
|
|
2531
3755
|
}
|
|
2532
|
-
|
|
2533
|
-
setIgnoreScrollEvent(true);
|
|
2534
3756
|
};
|
|
2535
|
-
|
|
2536
|
-
|
|
3757
|
+
var wrapperEl = wrapperRef.current;
|
|
3758
|
+
wrapperEl === null || wrapperEl === void 0 ? void 0 : wrapperEl.addEventListener("wheel", handleWheel, {
|
|
2537
3759
|
passive: false
|
|
2538
3760
|
});
|
|
2539
3761
|
return function () {
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
(_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.removeEventListener("wheel", handleWheel);
|
|
3762
|
+
wrapperEl === null || wrapperEl === void 0 ? void 0 : wrapperEl.removeEventListener("wheel", handleWheel);
|
|
2543
3763
|
};
|
|
2544
|
-
}, [
|
|
2545
|
-
|
|
3764
|
+
}, [scrollY, scrollXRight, ganttHeight, svgWidth, rtl, ganttFullHeight]);
|
|
3765
|
+
React.useEffect(function () {
|
|
3766
|
+
var updateLeftScroller = function updateLeftScroller() {
|
|
3767
|
+
var el = taskListBodyRef.current;
|
|
3768
|
+
if (el) {
|
|
3769
|
+
setLeftScrollerWidth(el.scrollWidth || 0);
|
|
3770
|
+
}
|
|
3771
|
+
};
|
|
3772
|
+
updateLeftScroller();
|
|
3773
|
+
var RO = window.ResizeObserver;
|
|
3774
|
+
var ro = RO ? new RO(updateLeftScroller) : null;
|
|
3775
|
+
if (ro && taskListBodyRef.current) {
|
|
3776
|
+
ro.observe(taskListBodyRef.current);
|
|
3777
|
+
}
|
|
3778
|
+
window.addEventListener("resize", updateLeftScroller);
|
|
3779
|
+
return function () {
|
|
3780
|
+
if (ro) {
|
|
3781
|
+
ro.disconnect();
|
|
3782
|
+
}
|
|
3783
|
+
window.removeEventListener("resize", updateLeftScroller);
|
|
3784
|
+
};
|
|
3785
|
+
}, [tasks, fontFamily, fontSize, listCellWidth, taskListBodyRef, visibleFields]);
|
|
2546
3786
|
var handleScrollY = function handleScrollY(event) {
|
|
2547
|
-
if (scrollY !== event.currentTarget.scrollTop && !
|
|
3787
|
+
if (scrollY !== event.currentTarget.scrollTop && !ignoreScrollLeftRef.current) {
|
|
2548
3788
|
setScrollY(event.currentTarget.scrollTop);
|
|
2549
|
-
|
|
3789
|
+
ignoreScrollLeftRef.current = true;
|
|
2550
3790
|
} else {
|
|
2551
|
-
|
|
3791
|
+
ignoreScrollLeftRef.current = false;
|
|
2552
3792
|
}
|
|
2553
3793
|
};
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
setIgnoreScrollEvent(true);
|
|
3794
|
+
var handleScrollLeft = function handleScrollLeft(event) {
|
|
3795
|
+
if (scrollXLeft !== event.currentTarget.scrollLeft && !ignoreScrollLeftRef.current) {
|
|
3796
|
+
setScrollXLeft(event.currentTarget.scrollLeft);
|
|
3797
|
+
ignoreScrollLeftRef.current = true;
|
|
2559
3798
|
} else {
|
|
2560
|
-
|
|
3799
|
+
ignoreScrollLeftRef.current = false;
|
|
3800
|
+
}
|
|
3801
|
+
};
|
|
3802
|
+
var handleScrollRight = function handleScrollRight(event) {
|
|
3803
|
+
if (scrollXRight !== event.currentTarget.scrollLeft && !ignoreScrollRightRef.current) {
|
|
3804
|
+
setScrollXRight(event.currentTarget.scrollLeft);
|
|
3805
|
+
ignoreScrollRightRef.current = true;
|
|
3806
|
+
} else {
|
|
3807
|
+
ignoreScrollRightRef.current = false;
|
|
3808
|
+
}
|
|
3809
|
+
if (ganttContainerRef.current && ganttContainerRef.current.scrollLeft !== event.currentTarget.scrollLeft) {
|
|
3810
|
+
ganttContainerRef.current.scrollLeft = event.currentTarget.scrollLeft;
|
|
2561
3811
|
}
|
|
2562
3812
|
};
|
|
2563
|
-
|
|
2564
3813
|
var handleKeyDown = function handleKeyDown(event) {
|
|
3814
|
+
var target = event.target;
|
|
3815
|
+
if (target instanceof HTMLElement) {
|
|
3816
|
+
if (target.isContentEditable || target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.tagName === "SELECT") {
|
|
3817
|
+
return;
|
|
3818
|
+
}
|
|
3819
|
+
}
|
|
2565
3820
|
event.preventDefault();
|
|
2566
3821
|
var newScrollY = scrollY;
|
|
2567
|
-
var newScrollX =
|
|
3822
|
+
var newScrollX = scrollXRight;
|
|
2568
3823
|
var isX = true;
|
|
2569
|
-
|
|
2570
3824
|
switch (event.key) {
|
|
2571
3825
|
case "Down":
|
|
2572
3826
|
case "ArrowDown":
|
|
2573
3827
|
newScrollY += rowHeight;
|
|
2574
3828
|
isX = false;
|
|
2575
3829
|
break;
|
|
2576
|
-
|
|
2577
3830
|
case "Up":
|
|
2578
3831
|
case "ArrowUp":
|
|
2579
3832
|
newScrollY -= rowHeight;
|
|
2580
3833
|
isX = false;
|
|
2581
3834
|
break;
|
|
2582
|
-
|
|
2583
3835
|
case "Left":
|
|
2584
3836
|
case "ArrowLeft":
|
|
2585
3837
|
newScrollX -= columnWidth;
|
|
2586
3838
|
break;
|
|
2587
|
-
|
|
2588
3839
|
case "Right":
|
|
2589
3840
|
case "ArrowRight":
|
|
2590
3841
|
newScrollX += columnWidth;
|
|
2591
3842
|
break;
|
|
2592
3843
|
}
|
|
2593
|
-
|
|
2594
3844
|
if (isX) {
|
|
2595
3845
|
if (newScrollX < 0) {
|
|
2596
3846
|
newScrollX = 0;
|
|
2597
3847
|
} else if (newScrollX > svgWidth) {
|
|
2598
3848
|
newScrollX = svgWidth;
|
|
2599
3849
|
}
|
|
2600
|
-
|
|
2601
|
-
|
|
3850
|
+
ignoreScrollRightRef.current = true;
|
|
3851
|
+
setScrollXRight(newScrollX);
|
|
2602
3852
|
} else {
|
|
2603
3853
|
if (newScrollY < 0) {
|
|
2604
3854
|
newScrollY = 0;
|
|
2605
3855
|
} else if (newScrollY > ganttFullHeight - ganttHeight) {
|
|
2606
3856
|
newScrollY = ganttFullHeight - ganttHeight;
|
|
2607
3857
|
}
|
|
2608
|
-
|
|
2609
3858
|
setScrollY(newScrollY);
|
|
2610
3859
|
}
|
|
2611
|
-
|
|
2612
|
-
setIgnoreScrollEvent(true);
|
|
2613
3860
|
};
|
|
2614
|
-
|
|
2615
3861
|
var handleSelectedTask = function handleSelectedTask(taskId) {
|
|
2616
3862
|
var newSelectedTask = barTasks.find(function (t) {
|
|
2617
3863
|
return t.id === taskId;
|
|
@@ -2619,20 +3865,16 @@ var Gantt = function Gantt(_ref) {
|
|
|
2619
3865
|
var oldSelectedTask = barTasks.find(function (t) {
|
|
2620
3866
|
return !!selectedTask && t.id === selectedTask.id;
|
|
2621
3867
|
});
|
|
2622
|
-
|
|
2623
3868
|
if (onSelect) {
|
|
2624
3869
|
if (oldSelectedTask) {
|
|
2625
3870
|
onSelect(oldSelectedTask, false);
|
|
2626
3871
|
}
|
|
2627
|
-
|
|
2628
3872
|
if (newSelectedTask) {
|
|
2629
3873
|
onSelect(newSelectedTask, true);
|
|
2630
3874
|
}
|
|
2631
3875
|
}
|
|
2632
|
-
|
|
2633
3876
|
setSelectedTask(newSelectedTask);
|
|
2634
3877
|
};
|
|
2635
|
-
|
|
2636
3878
|
var handleExpanderClick = function handleExpanderClick(task) {
|
|
2637
3879
|
if (onExpanderClick && task.hideChildren !== undefined) {
|
|
2638
3880
|
onExpanderClick(_extends({}, task, {
|
|
@@ -2640,7 +3882,69 @@ var Gantt = function Gantt(_ref) {
|
|
|
2640
3882
|
}));
|
|
2641
3883
|
}
|
|
2642
3884
|
};
|
|
2643
|
-
|
|
3885
|
+
var updateTaskListWidth = function updateTaskListWidth(clientX) {
|
|
3886
|
+
if (splitStartXRef.current == null || splitStartWidthRef.current == null) {
|
|
3887
|
+
return;
|
|
3888
|
+
}
|
|
3889
|
+
if (!wrapperRef.current) {
|
|
3890
|
+
return;
|
|
3891
|
+
}
|
|
3892
|
+
var delta = clientX - splitStartXRef.current;
|
|
3893
|
+
var nextWidth = clampTaskListWidth(splitStartWidthRef.current + delta, wrapperRef.current.offsetWidth);
|
|
3894
|
+
setTaskListWidth(nextWidth);
|
|
3895
|
+
};
|
|
3896
|
+
var handleSplitPointerDown = function handleSplitPointerDown(event) {
|
|
3897
|
+
event.preventDefault();
|
|
3898
|
+
splitStartXRef.current = event.clientX;
|
|
3899
|
+
splitStartWidthRef.current = taskListWidth;
|
|
3900
|
+
setIsResizing(true);
|
|
3901
|
+
if (event.currentTarget.setPointerCapture) {
|
|
3902
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
3903
|
+
}
|
|
3904
|
+
};
|
|
3905
|
+
var handleSplitPointerMove = function handleSplitPointerMove(event) {
|
|
3906
|
+
updateTaskListWidth(event.clientX);
|
|
3907
|
+
};
|
|
3908
|
+
var handleSplitPointerUp = function handleSplitPointerUp(event) {
|
|
3909
|
+
splitStartXRef.current = null;
|
|
3910
|
+
splitStartWidthRef.current = null;
|
|
3911
|
+
setIsResizing(false);
|
|
3912
|
+
if (event.currentTarget.releasePointerCapture) {
|
|
3913
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
3914
|
+
}
|
|
3915
|
+
};
|
|
3916
|
+
var handleSplitMouseDown = function handleSplitMouseDown(event) {
|
|
3917
|
+
event.preventDefault();
|
|
3918
|
+
splitStartXRef.current = event.clientX;
|
|
3919
|
+
splitStartWidthRef.current = taskListWidth;
|
|
3920
|
+
setIsResizing(true);
|
|
3921
|
+
if (splitMoveHandlerRef.current) {
|
|
3922
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3923
|
+
}
|
|
3924
|
+
if (splitUpHandlerRef.current) {
|
|
3925
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3926
|
+
}
|
|
3927
|
+
var handleMouseMove = function handleMouseMove(moveEvent) {
|
|
3928
|
+
updateTaskListWidth(moveEvent.clientX);
|
|
3929
|
+
};
|
|
3930
|
+
var handleMouseUp = function handleMouseUp() {
|
|
3931
|
+
splitStartXRef.current = null;
|
|
3932
|
+
splitStartWidthRef.current = null;
|
|
3933
|
+
setIsResizing(false);
|
|
3934
|
+
if (splitMoveHandlerRef.current) {
|
|
3935
|
+
document.removeEventListener("mousemove", splitMoveHandlerRef.current);
|
|
3936
|
+
splitMoveHandlerRef.current = null;
|
|
3937
|
+
}
|
|
3938
|
+
if (splitUpHandlerRef.current) {
|
|
3939
|
+
document.removeEventListener("mouseup", splitUpHandlerRef.current);
|
|
3940
|
+
splitUpHandlerRef.current = null;
|
|
3941
|
+
}
|
|
3942
|
+
};
|
|
3943
|
+
splitMoveHandlerRef.current = handleMouseMove;
|
|
3944
|
+
splitUpHandlerRef.current = handleMouseUp;
|
|
3945
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
3946
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
3947
|
+
};
|
|
2644
3948
|
var gridProps = {
|
|
2645
3949
|
columnWidth: columnWidth,
|
|
2646
3950
|
svgWidth: svgWidth,
|
|
@@ -2648,7 +3952,8 @@ var Gantt = function Gantt(_ref) {
|
|
|
2648
3952
|
rowHeight: rowHeight,
|
|
2649
3953
|
dates: dateSetup.dates,
|
|
2650
3954
|
todayColor: todayColor,
|
|
2651
|
-
rtl: rtl
|
|
3955
|
+
rtl: rtl,
|
|
3956
|
+
calendarConfig: calendarConfig
|
|
2652
3957
|
};
|
|
2653
3958
|
var calendarProps = {
|
|
2654
3959
|
dateSetup: dateSetup,
|
|
@@ -2658,7 +3963,8 @@ var Gantt = function Gantt(_ref) {
|
|
|
2658
3963
|
columnWidth: columnWidth,
|
|
2659
3964
|
fontFamily: fontFamily,
|
|
2660
3965
|
fontSize: fontSize,
|
|
2661
|
-
rtl: rtl
|
|
3966
|
+
rtl: rtl,
|
|
3967
|
+
calendarConfig: calendarConfig
|
|
2662
3968
|
};
|
|
2663
3969
|
var barProps = {
|
|
2664
3970
|
tasks: barTasks,
|
|
@@ -2690,45 +3996,78 @@ var Gantt = function Gantt(_ref) {
|
|
|
2690
3996
|
fontFamily: fontFamily,
|
|
2691
3997
|
fontSize: fontSize,
|
|
2692
3998
|
tasks: barTasks,
|
|
2693
|
-
locale: locale,
|
|
2694
3999
|
headerHeight: headerHeight,
|
|
2695
4000
|
scrollY: scrollY,
|
|
4001
|
+
horizontalScroll: scrollXLeft,
|
|
2696
4002
|
ganttHeight: ganttHeight,
|
|
2697
4003
|
horizontalContainerClass: styles$9.horizontalContainer,
|
|
4004
|
+
headerContainerRef: taskListHeaderRef,
|
|
4005
|
+
bodyContainerRef: taskListBodyRef,
|
|
4006
|
+
onHorizontalScroll: handleScrollLeft,
|
|
2698
4007
|
selectedTask: selectedTask,
|
|
2699
4008
|
taskListRef: taskListRef,
|
|
2700
4009
|
setSelectedTask: handleSelectedTask,
|
|
2701
4010
|
onExpanderClick: handleExpanderClick,
|
|
2702
4011
|
TaskListHeader: TaskListHeader,
|
|
2703
|
-
TaskListTable: TaskListTable
|
|
4012
|
+
TaskListTable: TaskListTable,
|
|
4013
|
+
visibleFields: visibleFields,
|
|
4014
|
+
onUpdateTask: onTaskUpdate,
|
|
4015
|
+
onCellCommit: onCellCommit,
|
|
4016
|
+
effortDisplayUnit: effortDisplayUnit,
|
|
4017
|
+
enableColumnDrag: enableColumnDrag
|
|
2704
4018
|
};
|
|
2705
4019
|
return React__default.createElement("div", null, React__default.createElement("div", {
|
|
2706
4020
|
className: styles$9.wrapper,
|
|
2707
4021
|
onKeyDown: handleKeyDown,
|
|
2708
4022
|
tabIndex: 0,
|
|
2709
4023
|
ref: wrapperRef
|
|
2710
|
-
}, listCellWidth && React__default.createElement(
|
|
4024
|
+
}, listCellWidth && React__default.createElement("div", {
|
|
4025
|
+
className: styles$9.taskListPanel,
|
|
4026
|
+
style: {
|
|
4027
|
+
width: taskListWidth
|
|
4028
|
+
},
|
|
4029
|
+
"data-testid": "task-list-panel"
|
|
4030
|
+
}, React__default.createElement(TaskList, Object.assign({}, tableProps))), listCellWidth && React__default.createElement("div", {
|
|
4031
|
+
className: styles$9.splitHandle + " " + (isResizing ? styles$9.splitHandleActive : ""),
|
|
4032
|
+
onPointerDown: supportsPointerEvents ? handleSplitPointerDown : undefined,
|
|
4033
|
+
onPointerMove: supportsPointerEvents ? handleSplitPointerMove : undefined,
|
|
4034
|
+
onPointerUp: supportsPointerEvents ? handleSplitPointerUp : undefined,
|
|
4035
|
+
onPointerCancel: supportsPointerEvents ? handleSplitPointerUp : undefined,
|
|
4036
|
+
onMouseDown: supportsPointerEvents ? undefined : handleSplitMouseDown,
|
|
4037
|
+
role: "separator",
|
|
4038
|
+
"aria-label": "Task/Schedule divider",
|
|
4039
|
+
"aria-orientation": "vertical",
|
|
4040
|
+
"data-testid": "pane-splitter"
|
|
4041
|
+
}), React__default.createElement("div", {
|
|
4042
|
+
className: styles$9.ganttPanel,
|
|
4043
|
+
style: {
|
|
4044
|
+
minWidth: MIN_PANE_WIDTH
|
|
4045
|
+
},
|
|
4046
|
+
"data-testid": "gantt-panel"
|
|
4047
|
+
}, React__default.createElement(TaskGantt, {
|
|
2711
4048
|
gridProps: gridProps,
|
|
2712
4049
|
calendarProps: calendarProps,
|
|
2713
4050
|
barProps: barProps,
|
|
2714
4051
|
ganttHeight: ganttHeight,
|
|
2715
4052
|
scrollY: scrollY,
|
|
2716
|
-
scrollX:
|
|
2717
|
-
|
|
4053
|
+
scrollX: scrollXRight,
|
|
4054
|
+
verticalGanttContainerRef: ganttContainerRef
|
|
4055
|
+
})), ganttEvent.changedTask && React__default.createElement(Tooltip, {
|
|
2718
4056
|
arrowIndent: arrowIndent,
|
|
2719
4057
|
rowHeight: rowHeight,
|
|
2720
4058
|
svgContainerHeight: svgContainerHeight,
|
|
2721
4059
|
svgContainerWidth: svgContainerWidth,
|
|
2722
4060
|
fontFamily: fontFamily,
|
|
2723
4061
|
fontSize: fontSize,
|
|
2724
|
-
scrollX:
|
|
4062
|
+
scrollX: scrollXRight,
|
|
2725
4063
|
scrollY: scrollY,
|
|
2726
4064
|
task: ganttEvent.changedTask,
|
|
2727
4065
|
headerHeight: headerHeight,
|
|
2728
|
-
taskListWidth:
|
|
4066
|
+
taskListWidth: taskListOffset,
|
|
2729
4067
|
TooltipContent: TooltipContent,
|
|
2730
4068
|
rtl: rtl,
|
|
2731
|
-
svgWidth: svgWidth
|
|
4069
|
+
svgWidth: svgWidth,
|
|
4070
|
+
effortDisplayUnit: effortDisplayUnit
|
|
2732
4071
|
}), React__default.createElement(VerticalScroll, {
|
|
2733
4072
|
ganttFullHeight: ganttFullHeight,
|
|
2734
4073
|
ganttHeight: ganttHeight,
|
|
@@ -2736,14 +4075,44 @@ var Gantt = function Gantt(_ref) {
|
|
|
2736
4075
|
scroll: scrollY,
|
|
2737
4076
|
onScroll: handleScrollY,
|
|
2738
4077
|
rtl: rtl
|
|
2739
|
-
})), React__default.createElement(
|
|
4078
|
+
})), React__default.createElement("div", {
|
|
4079
|
+
className: styles$9.scrollRow,
|
|
4080
|
+
style: {
|
|
4081
|
+
"--splitter-width": SPLIT_HANDLE_WIDTH + "px"
|
|
4082
|
+
}
|
|
4083
|
+
}, React__default.createElement("div", {
|
|
4084
|
+
className: styles$9.scrollCellLeft
|
|
4085
|
+
}, listCellWidth && React__default.createElement(HorizontalScroll, {
|
|
4086
|
+
svgWidth: taskListWidth,
|
|
4087
|
+
scrollerWidth: leftScrollerWidth,
|
|
4088
|
+
scroll: scrollXLeft,
|
|
4089
|
+
rtl: rtl,
|
|
4090
|
+
onScroll: handleScrollLeft
|
|
4091
|
+
})), listCellWidth && React__default.createElement("div", {
|
|
4092
|
+
className: styles$9.scrollSplitter
|
|
4093
|
+
}), React__default.createElement("div", {
|
|
4094
|
+
className: styles$9.scrollCellRight
|
|
4095
|
+
}, React__default.createElement(HorizontalScroll, {
|
|
2740
4096
|
svgWidth: svgWidth,
|
|
2741
|
-
|
|
2742
|
-
scroll: scrollX,
|
|
4097
|
+
scroll: scrollXRight,
|
|
2743
4098
|
rtl: rtl,
|
|
2744
|
-
onScroll:
|
|
2745
|
-
}));
|
|
4099
|
+
onScroll: handleScrollRight
|
|
4100
|
+
}))));
|
|
2746
4101
|
};
|
|
2747
4102
|
|
|
4103
|
+
exports.DEFAULT_VISIBLE_FIELDS = DEFAULT_VISIBLE_FIELDS;
|
|
2748
4104
|
exports.Gantt = Gantt;
|
|
4105
|
+
exports.TASK_PROCESS_OPTIONS = TASK_PROCESS_OPTIONS;
|
|
4106
|
+
exports.TASK_STATUS_BADGE_TEXT = TASK_STATUS_BADGE_TEXT;
|
|
4107
|
+
exports.TASK_STATUS_COLORS = TASK_STATUS_COLORS;
|
|
4108
|
+
exports.TASK_STATUS_OPTIONS = TASK_STATUS_OPTIONS;
|
|
4109
|
+
exports.formatDate = formatDate;
|
|
4110
|
+
exports.formatEffort = formatEffort;
|
|
4111
|
+
exports.getStatusBadgeText = getStatusBadgeText;
|
|
4112
|
+
exports.getStatusColor = getStatusColor;
|
|
4113
|
+
exports.normalizeProcess = normalizeProcess;
|
|
4114
|
+
exports.normalizeStatus = normalizeStatus;
|
|
4115
|
+
exports.parseDateFromInput = parseDateFromInput;
|
|
4116
|
+
exports.resolveVisibleFields = resolveVisibleFields;
|
|
4117
|
+
exports.sanitizeEffortInput = sanitizeEffortInput;
|
|
2749
4118
|
//# sourceMappingURL=index.js.map
|