phx-react 1.3.1065 → 1.3.1067
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/dist/cjs/components/Func/Explanation/checkAllowExplanation.d.ts +4 -1
- package/dist/cjs/components/Func/Explanation/checkAllowExplanation.js +68 -16
- package/dist/cjs/components/Func/Explanation/checkAllowExplanation.js.map +1 -1
- package/dist/cjs/components/SearchResultListV3/SearchResultList.js +72 -49
- package/dist/cjs/components/SearchResultListV3/SearchResultList.js.map +1 -1
- package/dist/cjs/query/explannation/index.d.ts +1 -0
- package/dist/cjs/query/explannation/index.js +2 -1
- package/dist/cjs/query/explannation/index.js.map +1 -1
- package/dist/esm/components/Func/Explanation/checkAllowExplanation.d.ts +4 -1
- package/dist/esm/components/Func/Explanation/checkAllowExplanation.js +69 -17
- package/dist/esm/components/Func/Explanation/checkAllowExplanation.js.map +1 -1
- package/dist/esm/components/SearchResultListV3/SearchResultList.js +73 -50
- package/dist/esm/components/SearchResultListV3/SearchResultList.js.map +1 -1
- package/dist/esm/query/explannation/index.d.ts +1 -0
- package/dist/esm/query/explannation/index.js +1 -0
- package/dist/esm/query/explannation/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export default function PHXAllowExplanation({ request_code, work_date, }: {
|
|
1
|
+
export default function PHXAllowExplanation({ request_code, work_date, start_at, end_at, attendance_code_id, }: {
|
|
2
2
|
work_date: string;
|
|
3
3
|
request_code: string;
|
|
4
|
+
start_at?: string;
|
|
5
|
+
end_at?: string;
|
|
6
|
+
attendance_code_id?: number;
|
|
4
7
|
}): Promise<boolean>;
|
|
@@ -5,15 +5,48 @@ var explannation_1 = require("../../../query/explannation");
|
|
|
5
5
|
var constants_1 = require("../../../utils/constants");
|
|
6
6
|
var clientQueryV3_1 = tslib_1.__importDefault(require("../clientQueryV3"));
|
|
7
7
|
var getLoginInfo_1 = tslib_1.__importDefault(require("../getLoginInfo"));
|
|
8
|
+
// Tính số giờ làm việc thực tế
|
|
9
|
+
function getDurationTime(timeCheckin, // "07:30:00"
|
|
10
|
+
timeCheckout, // "17:30:00"
|
|
11
|
+
lunchBreakStart, // "12:00:00"
|
|
12
|
+
lunchBreakEnd) {
|
|
13
|
+
if (!timeCheckin || !timeCheckout)
|
|
14
|
+
return 0;
|
|
15
|
+
var baseDate = new Date(); // mốc ngày bất kỳ (hôm nay)
|
|
16
|
+
baseDate.setHours(0, 0, 0, 0);
|
|
17
|
+
var parseTimeToDate = function (timeStr) {
|
|
18
|
+
var _a = timeStr.split(':').map(Number), h = _a[0], m = _a[1], s = _a[2];
|
|
19
|
+
var d = new Date(baseDate);
|
|
20
|
+
d.setHours(h, m, s || 0, 0);
|
|
21
|
+
return d;
|
|
22
|
+
};
|
|
23
|
+
var start = parseTimeToDate(timeCheckin);
|
|
24
|
+
var end = parseTimeToDate(timeCheckout);
|
|
25
|
+
var totalMinutes = Math.floor((end.getTime() - start.getTime()) / (1000 * 60));
|
|
26
|
+
if (lunchBreakStart && lunchBreakEnd) {
|
|
27
|
+
var breakStart = parseTimeToDate(lunchBreakStart);
|
|
28
|
+
var breakEnd = parseTimeToDate(lunchBreakEnd);
|
|
29
|
+
// Tính phần giao giữa thời gian làm việc và nghỉ trưa
|
|
30
|
+
var overlapStart = new Date(Math.max(start.getTime(), breakStart.getTime()));
|
|
31
|
+
var overlapEnd = new Date(Math.min(end.getTime(), breakEnd.getTime()));
|
|
32
|
+
var breakDurationMinutes = Math.max(0, (overlapEnd.getTime() - overlapStart.getTime()) / (1000 * 60));
|
|
33
|
+
totalMinutes -= breakDurationMinutes;
|
|
34
|
+
}
|
|
35
|
+
// Làm tròn số phút
|
|
36
|
+
var totalMinuteCeils = Math.ceil(totalMinutes);
|
|
37
|
+
var totalHours = totalMinuteCeils / 60;
|
|
38
|
+
return totalHours;
|
|
39
|
+
}
|
|
8
40
|
function PHXAllowExplanation(_a) {
|
|
9
|
-
var _b, _c, _d, _e, _f, _g;
|
|
10
|
-
var request_code = _a.request_code, work_date = _a.work_date;
|
|
41
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
42
|
+
var request_code = _a.request_code, work_date = _a.work_date, start_at = _a.start_at, end_at = _a.end_at, attendance_code_id = _a.attendance_code_id;
|
|
11
43
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
12
|
-
var userInfo, userLoginId, school_id,
|
|
13
|
-
return tslib_1.__generator(this, function (
|
|
14
|
-
switch (
|
|
44
|
+
var isCheckValidateTimeInput, userInfo, userLoginId, school_id, _k, data, isHasData, _l, hrm_checkin_explanation_config, _m, hrm_checkin_hrm_checkin_shift_config, _o, users, staffDepartmentData, staffDepartmentId_1, limitTimeCreate, dataShiftConfig, _p, codeData, workTimeExplanation, break_start, break_end, allow_break_time, isHasBreakTime, totalWorkingReal, _q, applicable_days, parseDate, getDayName, workDate, today, currentDate, workingDaysPassed, d, error_1;
|
|
45
|
+
return tslib_1.__generator(this, function (_r) {
|
|
46
|
+
switch (_r.label) {
|
|
15
47
|
case 0:
|
|
16
|
-
|
|
48
|
+
_r.trys.push([0, 5, , 6]);
|
|
49
|
+
isCheckValidateTimeInput = Boolean(attendance_code_id && start_at && end_at);
|
|
17
50
|
userInfo = (0, getLoginInfo_1["default"])();
|
|
18
51
|
userLoginId = userInfo === null || userInfo === void 0 ? void 0 : userInfo.id;
|
|
19
52
|
school_id = userInfo === null || userInfo === void 0 ? void 0 : userInfo.school_id;
|
|
@@ -22,24 +55,42 @@ function PHXAllowExplanation(_a) {
|
|
|
22
55
|
variables: { school_id: school_id, user_id: userLoginId }
|
|
23
56
|
})];
|
|
24
57
|
case 1:
|
|
25
|
-
|
|
58
|
+
_k = (_r.sent()).data, data = _k === void 0 ? {} : _k;
|
|
26
59
|
isHasData = ((_b = data.hrm_checkin_hrm_checkin_shift_config) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
|
|
27
60
|
((_c = data.hrm_checkin_explanation_config) === null || _c === void 0 ? void 0 : _c.length) > 0 &&
|
|
28
61
|
((_d = data.users) === null || _d === void 0 ? void 0 : _d.length) > 0;
|
|
29
62
|
// Không có data sẽ trả về false luôn
|
|
30
63
|
if (!isHasData)
|
|
31
64
|
return [2 /*return*/, false];
|
|
32
|
-
|
|
65
|
+
_l = data.hrm_checkin_explanation_config, hrm_checkin_explanation_config = _l === void 0 ? [] : _l, _m = data.hrm_checkin_hrm_checkin_shift_config, hrm_checkin_hrm_checkin_shift_config = _m === void 0 ? [] : _m, _o = data.users, users = _o === void 0 ? [] : _o;
|
|
33
66
|
staffDepartmentData = ((_e = users[0]) === null || _e === void 0 ? void 0 : _e.department_users) || [];
|
|
34
67
|
staffDepartmentId_1 = ((_f = staffDepartmentData[0]) === null || _f === void 0 ? void 0 : _f.department_id) || 0;
|
|
35
68
|
limitTimeCreate = (_g = hrm_checkin_explanation_config.find(function (item) { var _a; return ((_a = item.approval_type) === null || _a === void 0 ? void 0 : _a.code) === request_code || item.request_type_id === null; })) === null || _g === void 0 ? void 0 : _g.limit_time_create;
|
|
36
|
-
|
|
37
|
-
if (!
|
|
69
|
+
dataShiftConfig = hrm_checkin_hrm_checkin_shift_config.find(function (configData) { return configData.department_id === staffDepartmentId_1 || configData.department_id === null; }) || {};
|
|
70
|
+
if (!isCheckValidateTimeInput) return [3 /*break*/, 3];
|
|
71
|
+
return [4 /*yield*/, (0, clientQueryV3_1["default"])({
|
|
72
|
+
query: explannation_1.queryAttendanceCode,
|
|
73
|
+
variables: { id: attendance_code_id }
|
|
74
|
+
})];
|
|
75
|
+
case 2:
|
|
76
|
+
_p = (_r.sent()).data, codeData = _p === void 0 ? {} : _p;
|
|
77
|
+
workTimeExplanation = Number(((_j = (_h = codeData.hrm_checkin_attendance_code) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.work_time) || 0);
|
|
78
|
+
// Nếu ngày giải trình k có workTime auto return true
|
|
79
|
+
if (!workTimeExplanation)
|
|
38
80
|
return [2 /*return*/, true
|
|
39
|
-
//
|
|
81
|
+
// Lấy số giờ nhập trừ đi nghỉ trưa nếu có
|
|
40
82
|
];
|
|
41
|
-
|
|
42
|
-
|
|
83
|
+
break_start = dataShiftConfig.break_start, break_end = dataShiftConfig.break_end, allow_break_time = dataShiftConfig.allow_break_time;
|
|
84
|
+
isHasBreakTime = Boolean(allow_break_time && break_start && break_end);
|
|
85
|
+
totalWorkingReal = isHasBreakTime
|
|
86
|
+
? getDurationTime(start_at, end_at, break_start, break_end)
|
|
87
|
+
: getDurationTime(start_at, end_at);
|
|
88
|
+
return [2 /*return*/, totalWorkingReal >= workTimeExplanation];
|
|
89
|
+
case 3:
|
|
90
|
+
// nếu không giới hạn thời gian tạo đơn return true luôn
|
|
91
|
+
if (!limitTimeCreate)
|
|
92
|
+
return [2 /*return*/, true];
|
|
93
|
+
_q = dataShiftConfig.applicable_days, applicable_days = _q === void 0 ? [] : _q;
|
|
43
94
|
parseDate = function (dateStr) {
|
|
44
95
|
var _a = dateStr.split('-').map(Number), y = _a[0], m = _a[1], d = _a[2];
|
|
45
96
|
return new Date(y, m - 1, d);
|
|
@@ -62,11 +113,12 @@ function PHXAllowExplanation(_a) {
|
|
|
62
113
|
}
|
|
63
114
|
// chỉ hợp lệ nếu số ngày làm việc đã qua <= limit_time_create
|
|
64
115
|
return [2 /*return*/, workingDaysPassed <= Number(limitTimeCreate)];
|
|
65
|
-
case
|
|
66
|
-
|
|
116
|
+
case 4: return [3 /*break*/, 6];
|
|
117
|
+
case 5:
|
|
118
|
+
error_1 = _r.sent();
|
|
67
119
|
console.log(error_1, 'error');
|
|
68
120
|
return [2 /*return*/, false];
|
|
69
|
-
case
|
|
121
|
+
case 6: return [2 /*return*/];
|
|
70
122
|
}
|
|
71
123
|
});
|
|
72
124
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAllowExplanation.js","sourceRoot":"","sources":["../../../../../src/components/Func/Explanation/checkAllowExplanation.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"checkAllowExplanation.js","sourceRoot":"","sources":["../../../../../src/components/Func/Explanation/checkAllowExplanation.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,18 +24,23 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
24
24
|
var _f = (0, react_1.useState)(false), isSearchLoading = _f[0], setIsSearchLoading = _f[1];
|
|
25
25
|
var _g = (0, react_1.useState)(false), isSearching = _g[0], setIsSearching = _g[1];
|
|
26
26
|
var _h = (0, react_1.useState)([]), searchDataResult = _h[0], setSearchDataResult = _h[1];
|
|
27
|
-
|
|
27
|
+
// Refs for improved control
|
|
28
|
+
var searchIdRef = (0, react_1.useRef)(0);
|
|
29
|
+
var lastFetchedQueryRef = (0, react_1.useRef)('');
|
|
30
|
+
var lastFetchedAtRef = (0, react_1.useRef)(0);
|
|
31
|
+
var lastUserEditAtRef = (0, react_1.useRef)(0);
|
|
28
32
|
var filterQuery = function (query, value) {
|
|
29
33
|
var formatValue = isUnaccentSearchValue ? (0, helpers_1.unaccentValue)(value) : value;
|
|
30
34
|
return query.replace(/%@value%/g, "\"\"%".concat(formatValue, "%\"\""));
|
|
31
35
|
};
|
|
32
|
-
|
|
36
|
+
// fetchSearchData now accepts the query string to avoid closure issues
|
|
37
|
+
var fetchSearchData = function (value) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
33
38
|
var searchQuery, res, e_1;
|
|
34
39
|
return tslib_1.__generator(this, function (_a) {
|
|
35
40
|
switch (_a.label) {
|
|
36
41
|
case 0:
|
|
37
42
|
_a.trys.push([0, 2, , 3]);
|
|
38
|
-
searchQuery = search ? filterQuery(search.query,
|
|
43
|
+
searchQuery = search ? filterQuery(search.query, value) : '';
|
|
39
44
|
return [4 /*yield*/, (0, clientQueryV3_1["default"])({
|
|
40
45
|
query: searchQuery
|
|
41
46
|
})];
|
|
@@ -45,47 +50,48 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
45
50
|
case 2:
|
|
46
51
|
e_1 = _a.sent();
|
|
47
52
|
console.log(e_1);
|
|
48
|
-
return [2 /*return
|
|
53
|
+
return [2 /*return*/, null];
|
|
49
54
|
case 3: return [2 /*return*/];
|
|
50
55
|
}
|
|
51
56
|
});
|
|
52
57
|
}); };
|
|
53
58
|
var getData = function (option) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
54
|
-
var startTime, result, data, endTime, duration;
|
|
59
|
+
var startTime, result, data, endTime, duration, e_2;
|
|
55
60
|
return tslib_1.__generator(this, function (_a) {
|
|
56
61
|
switch (_a.label) {
|
|
57
62
|
case 0:
|
|
63
|
+
_a.trys.push([0, 4, , 5]);
|
|
58
64
|
startTime = performance.now();
|
|
59
65
|
return [4 /*yield*/, option()];
|
|
60
66
|
case 1:
|
|
61
67
|
result = _a.sent();
|
|
68
|
+
if (!result)
|
|
69
|
+
return [2 /*return*/, null];
|
|
62
70
|
data = result.data;
|
|
63
71
|
endTime = performance.now();
|
|
64
72
|
duration = endTime - startTime;
|
|
65
73
|
if (!(duration < constants_1.requestMaxDuration)) return [3 /*break*/, 3];
|
|
66
|
-
console.info('promise delay...');
|
|
67
74
|
return [4 /*yield*/, new Promise(function (r) { return setTimeout(r, 300); })];
|
|
68
75
|
case 2:
|
|
69
76
|
_a.sent();
|
|
70
77
|
_a.label = 3;
|
|
71
78
|
case 3: return [2 /*return*/, data];
|
|
79
|
+
case 4:
|
|
80
|
+
e_2 = _a.sent();
|
|
81
|
+
console.error(e_2);
|
|
82
|
+
return [2 /*return*/, null];
|
|
83
|
+
case 5: return [2 /*return*/];
|
|
72
84
|
}
|
|
73
85
|
});
|
|
74
86
|
}); };
|
|
75
87
|
var searchChange = function (e) {
|
|
76
|
-
var value = e.target.value;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
setIsSearching(true);
|
|
81
|
-
if (replaceSensitiveValue === '') {
|
|
82
|
-
setIsSearching(false);
|
|
83
|
-
}
|
|
84
|
-
if (replaceSensitiveValue !== previousValue) {
|
|
85
|
-
setPreviousValue(replaceSensitiveValue);
|
|
86
|
-
}
|
|
88
|
+
var value = e.target.value.replace(/\\/g, '');
|
|
89
|
+
setSearchValue(value);
|
|
90
|
+
setIsSearching(value !== '');
|
|
91
|
+
lastUserEditAtRef.current = Date.now(); // mark user edit time
|
|
87
92
|
};
|
|
88
93
|
var debouncedSearch = (0, useDebounce_1["default"])(searchValue, 300);
|
|
94
|
+
// keep formatDynamicFields & message & handleClickSearchItem as-is
|
|
89
95
|
var formatDynamicFields = function (dataParams) {
|
|
90
96
|
var formattedValues = [];
|
|
91
97
|
var searchData = {};
|
|
@@ -99,7 +105,6 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
99
105
|
searchData[item.keyChild] = dataParams[item.keyChild];
|
|
100
106
|
}
|
|
101
107
|
});
|
|
102
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
103
108
|
for (var field in searchData) {
|
|
104
109
|
if (searchData[field] !== null && searchData[field] !== undefined) {
|
|
105
110
|
formattedValues.push("".concat(searchData[field])
|
|
@@ -111,25 +116,19 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
111
116
|
}
|
|
112
117
|
return formattedValues.join(' - ');
|
|
113
118
|
};
|
|
114
|
-
(0, react_1.useEffect)(function () {
|
|
115
|
-
if (searchValue === '') {
|
|
116
|
-
setSearchDataResult([]);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
setIsSearchLoading(true);
|
|
120
|
-
}
|
|
121
|
-
}, [searchValue]);
|
|
122
119
|
var handleClickSearchItem = function (item) {
|
|
123
120
|
getSearchResult(item);
|
|
124
121
|
setIsSearching(false);
|
|
125
|
-
formatDynamicFields(item);
|
|
126
|
-
setSearchValue(formatDynamicFields(item));
|
|
122
|
+
var formatted = formatDynamicFields(item);
|
|
127
123
|
if (isArray) {
|
|
128
124
|
setSearchValue('');
|
|
129
125
|
}
|
|
130
|
-
if (isFillInput && handleCustomRender) {
|
|
126
|
+
else if (isFillInput && handleCustomRender) {
|
|
131
127
|
setSearchValue(handleCustomRender(item));
|
|
132
128
|
}
|
|
129
|
+
else {
|
|
130
|
+
setSearchValue(formatted);
|
|
131
|
+
}
|
|
133
132
|
};
|
|
134
133
|
var message = function (type) {
|
|
135
134
|
var errorMessage = '';
|
|
@@ -157,19 +156,35 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
157
156
|
}
|
|
158
157
|
return errorMessage;
|
|
159
158
|
};
|
|
160
|
-
|
|
161
|
-
|
|
159
|
+
// Improved search function that accepts the debounced query
|
|
160
|
+
var handleSearch = function (query) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
161
|
+
var currentId, data, dataTable, result, finalData;
|
|
162
162
|
return tslib_1.__generator(this, function (_a) {
|
|
163
163
|
switch (_a.label) {
|
|
164
164
|
case 0:
|
|
165
|
+
currentId = ++searchIdRef.current;
|
|
165
166
|
setIsSearchLoading(true);
|
|
166
|
-
return [4 /*yield*/, getData(fetchSearchData)
|
|
167
|
+
return [4 /*yield*/, getData(function () { return fetchSearchData(query); })
|
|
168
|
+
// if fetch failed or was null
|
|
169
|
+
];
|
|
167
170
|
case 1:
|
|
168
171
|
data = _a.sent();
|
|
172
|
+
// if fetch failed or was null
|
|
173
|
+
if (!data) {
|
|
174
|
+
// only clear loading if still the la request
|
|
175
|
+
if (currentId === searchIdRef.current)
|
|
176
|
+
setIsSearchLoading(false);
|
|
177
|
+
return [2 /*return*/];
|
|
178
|
+
}
|
|
179
|
+
// If another search has started meanwhile, drop this result
|
|
180
|
+
if (currentId !== searchIdRef.current) {
|
|
181
|
+
return [2 /*return*/];
|
|
182
|
+
}
|
|
169
183
|
dataTable = search.keyResult;
|
|
170
184
|
result = queryValueType === 'default' ? data[dataTable] : handleQueryValue(data[dataTable]);
|
|
171
|
-
|
|
172
|
-
|
|
185
|
+
finalData = result;
|
|
186
|
+
if (listSelected && listSelected.length > 0) {
|
|
187
|
+
finalData = result.map(function (item) {
|
|
173
188
|
var isSelected;
|
|
174
189
|
switch (name) {
|
|
175
190
|
case 'user_assigned_tuition':
|
|
@@ -179,30 +194,38 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
179
194
|
isSelected = listSelected.some(function (selectedItem) { return selectedItem.id === item.id; });
|
|
180
195
|
break;
|
|
181
196
|
}
|
|
182
|
-
|
|
183
|
-
return tslib_1.__assign(tslib_1.__assign({}, item), { is_selected: true });
|
|
184
|
-
}
|
|
185
|
-
return item;
|
|
197
|
+
return isSelected ? tslib_1.__assign(tslib_1.__assign({}, item), { is_selected: true }) : item;
|
|
186
198
|
});
|
|
187
|
-
setSearchDataResult(newData);
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
setSearchDataResult(result);
|
|
191
199
|
}
|
|
192
|
-
|
|
200
|
+
setSearchDataResult(finalData);
|
|
201
|
+
lastFetchedQueryRef.current = query;
|
|
202
|
+
lastFetchedAtRef.current = Date.now();
|
|
203
|
+
// only clear loading if this is still the latest request
|
|
204
|
+
if (currentId === searchIdRef.current)
|
|
205
|
+
setIsSearchLoading(false);
|
|
193
206
|
return [2 /*return*/];
|
|
194
207
|
}
|
|
195
208
|
});
|
|
196
209
|
}); };
|
|
210
|
+
// NOTE: removed the old effect that set isSearchLoading(true) on every searchValue change.
|
|
211
|
+
// We now rely on the debounced effect to start/stop loading.
|
|
197
212
|
(0, react_1.useEffect)(function () {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
213
|
+
// If debouncedSearch is empty -> clear results and stop loading
|
|
214
|
+
if (!debouncedSearch || debouncedSearch.trim() === '') {
|
|
215
|
+
setSearchDataResult([]);
|
|
216
|
+
setIsSearchLoading(false);
|
|
217
|
+
return;
|
|
202
218
|
}
|
|
203
|
-
|
|
204
|
-
|
|
219
|
+
// If we already fetched this exact query and user hasn't edited since last fetch, skip fetching
|
|
220
|
+
var userEditedAfterLastFetch = lastUserEditAtRef.current > lastFetchedAtRef.current;
|
|
221
|
+
var needFetch = debouncedSearch !== lastFetchedQueryRef.current || userEditedAfterLastFetch;
|
|
222
|
+
if (!needFetch) {
|
|
223
|
+
// nothing to do
|
|
224
|
+
return;
|
|
205
225
|
}
|
|
226
|
+
// run search for this debounced value
|
|
227
|
+
handleSearch(debouncedSearch);
|
|
228
|
+
setValue(name, debouncedSearch);
|
|
206
229
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
207
230
|
}, [debouncedSearch]);
|
|
208
231
|
return (react_1["default"].createElement("div", { className: 'relative w-full' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultList.js","sourceRoot":"","sources":["../../../../src/components/SearchResultListV3/SearchResultList.tsx"],"names":[],"mappings":";;;;AAAA,uDAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"SearchResultList.js","sourceRoot":"","sources":["../../../../src/components/SearchResultListV3/SearchResultList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
export declare const queryShiftAndExplanationConfig = "\nquery getShiftAndExplanationConfig($school_id: Int!, $user_id: Int!) {\n users(where: {id: {_eq: $user_id}}) {\n department_users(where: {deleted_at: {_is_null: true}}) {\n department_id\n department {\n name\n }\n }\n }\n hrm_checkin_hrm_checkin_shift_config(where: {deleted_at: {_is_null: true}, school_id: {_eq: $school_id}}) {\n id\n applicable_days\n department_id\n working_hours_per_day\n break_start\n break_end\n allow_break_time\n }\n hrm_checkin_explanation_config(where: {deleted_at: {_is_null: true}}) {\n limit_time_create\n id\n request_type_id\n approval_type {\n id\n code\n }\n }\n}";
|
|
2
|
+
export declare const queryAttendanceCode = "\nquery getAttendanceCode($id: Int!) {\n hrm_checkin_attendance_code(where: {id: {_eq: $id}}) {\n id\n work_time\n }\n}";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
exports.__esModule = true;
|
|
3
|
-
exports.queryShiftAndExplanationConfig = void 0;
|
|
3
|
+
exports.queryAttendanceCode = exports.queryShiftAndExplanationConfig = void 0;
|
|
4
4
|
exports.queryShiftAndExplanationConfig = "\nquery getShiftAndExplanationConfig($school_id: Int!, $user_id: Int!) {\n users(where: {id: {_eq: $user_id}}) {\n department_users(where: {deleted_at: {_is_null: true}}) {\n department_id\n department {\n name\n }\n }\n }\n hrm_checkin_hrm_checkin_shift_config(where: {deleted_at: {_is_null: true}, school_id: {_eq: $school_id}}) {\n id\n applicable_days\n department_id\n working_hours_per_day\n break_start\n break_end\n allow_break_time\n }\n hrm_checkin_explanation_config(where: {deleted_at: {_is_null: true}}) {\n limit_time_create\n id\n request_type_id\n approval_type {\n id\n code\n }\n }\n}";
|
|
5
|
+
exports.queryAttendanceCode = "\nquery getAttendanceCode($id: Int!) {\n hrm_checkin_attendance_code(where: {id: {_eq: $id}}) {\n id\n work_time\n }\n}";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/query/explannation/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG,guBA4B5C,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/query/explannation/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG,guBA4B5C,CAAA;AAEW,QAAA,mBAAmB,GAAG,uIAMjC,CAAA"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export default function PHXAllowExplanation({ request_code, work_date, }: {
|
|
1
|
+
export default function PHXAllowExplanation({ request_code, work_date, start_at, end_at, attendance_code_id, }: {
|
|
2
2
|
work_date: string;
|
|
3
3
|
request_code: string;
|
|
4
|
+
start_at?: string;
|
|
5
|
+
end_at?: string;
|
|
6
|
+
attendance_code_id?: number;
|
|
4
7
|
}): Promise<boolean>;
|
|
@@ -1,17 +1,50 @@
|
|
|
1
1
|
import { __awaiter, __generator } from "tslib";
|
|
2
|
-
import { queryShiftAndExplanationConfig } from '../../../query/explannation';
|
|
2
|
+
import { queryAttendanceCode, queryShiftAndExplanationConfig } from '../../../query/explannation';
|
|
3
3
|
import { LIST_DAY_OF_WEEK } from '../../../utils/constants';
|
|
4
4
|
import PHXClientQueryV3 from '../clientQueryV3';
|
|
5
5
|
import PHXFuncGetLoggedInfo from '../getLoginInfo';
|
|
6
|
+
// Tính số giờ làm việc thực tế
|
|
7
|
+
function getDurationTime(timeCheckin, // "07:30:00"
|
|
8
|
+
timeCheckout, // "17:30:00"
|
|
9
|
+
lunchBreakStart, // "12:00:00"
|
|
10
|
+
lunchBreakEnd) {
|
|
11
|
+
if (!timeCheckin || !timeCheckout)
|
|
12
|
+
return 0;
|
|
13
|
+
var baseDate = new Date(); // mốc ngày bất kỳ (hôm nay)
|
|
14
|
+
baseDate.setHours(0, 0, 0, 0);
|
|
15
|
+
var parseTimeToDate = function (timeStr) {
|
|
16
|
+
var _a = timeStr.split(':').map(Number), h = _a[0], m = _a[1], s = _a[2];
|
|
17
|
+
var d = new Date(baseDate);
|
|
18
|
+
d.setHours(h, m, s || 0, 0);
|
|
19
|
+
return d;
|
|
20
|
+
};
|
|
21
|
+
var start = parseTimeToDate(timeCheckin);
|
|
22
|
+
var end = parseTimeToDate(timeCheckout);
|
|
23
|
+
var totalMinutes = Math.floor((end.getTime() - start.getTime()) / (1000 * 60));
|
|
24
|
+
if (lunchBreakStart && lunchBreakEnd) {
|
|
25
|
+
var breakStart = parseTimeToDate(lunchBreakStart);
|
|
26
|
+
var breakEnd = parseTimeToDate(lunchBreakEnd);
|
|
27
|
+
// Tính phần giao giữa thời gian làm việc và nghỉ trưa
|
|
28
|
+
var overlapStart = new Date(Math.max(start.getTime(), breakStart.getTime()));
|
|
29
|
+
var overlapEnd = new Date(Math.min(end.getTime(), breakEnd.getTime()));
|
|
30
|
+
var breakDurationMinutes = Math.max(0, (overlapEnd.getTime() - overlapStart.getTime()) / (1000 * 60));
|
|
31
|
+
totalMinutes -= breakDurationMinutes;
|
|
32
|
+
}
|
|
33
|
+
// Làm tròn số phút
|
|
34
|
+
var totalMinuteCeils = Math.ceil(totalMinutes);
|
|
35
|
+
var totalHours = totalMinuteCeils / 60;
|
|
36
|
+
return totalHours;
|
|
37
|
+
}
|
|
6
38
|
export default function PHXAllowExplanation(_a) {
|
|
7
|
-
var _b, _c, _d, _e, _f, _g;
|
|
8
|
-
var request_code = _a.request_code, work_date = _a.work_date;
|
|
39
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
40
|
+
var request_code = _a.request_code, work_date = _a.work_date, start_at = _a.start_at, end_at = _a.end_at, attendance_code_id = _a.attendance_code_id;
|
|
9
41
|
return __awaiter(this, void 0, void 0, function () {
|
|
10
|
-
var userInfo, userLoginId, school_id,
|
|
11
|
-
return __generator(this, function (
|
|
12
|
-
switch (
|
|
42
|
+
var isCheckValidateTimeInput, userInfo, userLoginId, school_id, _k, data, isHasData, _l, hrm_checkin_explanation_config, _m, hrm_checkin_hrm_checkin_shift_config, _o, users, staffDepartmentData, staffDepartmentId_1, limitTimeCreate, dataShiftConfig, _p, codeData, workTimeExplanation, break_start, break_end, allow_break_time, isHasBreakTime, totalWorkingReal, _q, applicable_days, parseDate, getDayName, workDate, today, currentDate, workingDaysPassed, d, error_1;
|
|
43
|
+
return __generator(this, function (_r) {
|
|
44
|
+
switch (_r.label) {
|
|
13
45
|
case 0:
|
|
14
|
-
|
|
46
|
+
_r.trys.push([0, 5, , 6]);
|
|
47
|
+
isCheckValidateTimeInput = Boolean(attendance_code_id && start_at && end_at);
|
|
15
48
|
userInfo = PHXFuncGetLoggedInfo();
|
|
16
49
|
userLoginId = userInfo === null || userInfo === void 0 ? void 0 : userInfo.id;
|
|
17
50
|
school_id = userInfo === null || userInfo === void 0 ? void 0 : userInfo.school_id;
|
|
@@ -20,24 +53,42 @@ export default function PHXAllowExplanation(_a) {
|
|
|
20
53
|
variables: { school_id: school_id, user_id: userLoginId }
|
|
21
54
|
})];
|
|
22
55
|
case 1:
|
|
23
|
-
|
|
56
|
+
_k = (_r.sent()).data, data = _k === void 0 ? {} : _k;
|
|
24
57
|
isHasData = ((_b = data.hrm_checkin_hrm_checkin_shift_config) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
|
|
25
58
|
((_c = data.hrm_checkin_explanation_config) === null || _c === void 0 ? void 0 : _c.length) > 0 &&
|
|
26
59
|
((_d = data.users) === null || _d === void 0 ? void 0 : _d.length) > 0;
|
|
27
60
|
// Không có data sẽ trả về false luôn
|
|
28
61
|
if (!isHasData)
|
|
29
62
|
return [2 /*return*/, false];
|
|
30
|
-
|
|
63
|
+
_l = data.hrm_checkin_explanation_config, hrm_checkin_explanation_config = _l === void 0 ? [] : _l, _m = data.hrm_checkin_hrm_checkin_shift_config, hrm_checkin_hrm_checkin_shift_config = _m === void 0 ? [] : _m, _o = data.users, users = _o === void 0 ? [] : _o;
|
|
31
64
|
staffDepartmentData = ((_e = users[0]) === null || _e === void 0 ? void 0 : _e.department_users) || [];
|
|
32
65
|
staffDepartmentId_1 = ((_f = staffDepartmentData[0]) === null || _f === void 0 ? void 0 : _f.department_id) || 0;
|
|
33
66
|
limitTimeCreate = (_g = hrm_checkin_explanation_config.find(function (item) { var _a; return ((_a = item.approval_type) === null || _a === void 0 ? void 0 : _a.code) === request_code || item.request_type_id === null; })) === null || _g === void 0 ? void 0 : _g.limit_time_create;
|
|
34
|
-
|
|
35
|
-
if (!
|
|
67
|
+
dataShiftConfig = hrm_checkin_hrm_checkin_shift_config.find(function (configData) { return configData.department_id === staffDepartmentId_1 || configData.department_id === null; }) || {};
|
|
68
|
+
if (!isCheckValidateTimeInput) return [3 /*break*/, 3];
|
|
69
|
+
return [4 /*yield*/, PHXClientQueryV3({
|
|
70
|
+
query: queryAttendanceCode,
|
|
71
|
+
variables: { id: attendance_code_id }
|
|
72
|
+
})];
|
|
73
|
+
case 2:
|
|
74
|
+
_p = (_r.sent()).data, codeData = _p === void 0 ? {} : _p;
|
|
75
|
+
workTimeExplanation = Number(((_j = (_h = codeData.hrm_checkin_attendance_code) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.work_time) || 0);
|
|
76
|
+
// Nếu ngày giải trình k có workTime auto return true
|
|
77
|
+
if (!workTimeExplanation)
|
|
36
78
|
return [2 /*return*/, true
|
|
37
|
-
//
|
|
79
|
+
// Lấy số giờ nhập trừ đi nghỉ trưa nếu có
|
|
38
80
|
];
|
|
39
|
-
|
|
40
|
-
|
|
81
|
+
break_start = dataShiftConfig.break_start, break_end = dataShiftConfig.break_end, allow_break_time = dataShiftConfig.allow_break_time;
|
|
82
|
+
isHasBreakTime = Boolean(allow_break_time && break_start && break_end);
|
|
83
|
+
totalWorkingReal = isHasBreakTime
|
|
84
|
+
? getDurationTime(start_at, end_at, break_start, break_end)
|
|
85
|
+
: getDurationTime(start_at, end_at);
|
|
86
|
+
return [2 /*return*/, totalWorkingReal >= workTimeExplanation];
|
|
87
|
+
case 3:
|
|
88
|
+
// nếu không giới hạn thời gian tạo đơn return true luôn
|
|
89
|
+
if (!limitTimeCreate)
|
|
90
|
+
return [2 /*return*/, true];
|
|
91
|
+
_q = dataShiftConfig.applicable_days, applicable_days = _q === void 0 ? [] : _q;
|
|
41
92
|
parseDate = function (dateStr) {
|
|
42
93
|
var _a = dateStr.split('-').map(Number), y = _a[0], m = _a[1], d = _a[2];
|
|
43
94
|
return new Date(y, m - 1, d);
|
|
@@ -60,11 +111,12 @@ export default function PHXAllowExplanation(_a) {
|
|
|
60
111
|
}
|
|
61
112
|
// chỉ hợp lệ nếu số ngày làm việc đã qua <= limit_time_create
|
|
62
113
|
return [2 /*return*/, workingDaysPassed <= Number(limitTimeCreate)];
|
|
63
|
-
case
|
|
64
|
-
|
|
114
|
+
case 4: return [3 /*break*/, 6];
|
|
115
|
+
case 5:
|
|
116
|
+
error_1 = _r.sent();
|
|
65
117
|
console.log(error_1, 'error');
|
|
66
118
|
return [2 /*return*/, false];
|
|
67
|
-
case
|
|
119
|
+
case 6: return [2 /*return*/];
|
|
68
120
|
}
|
|
69
121
|
});
|
|
70
122
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAllowExplanation.js","sourceRoot":"","sources":["../../../../../src/components/Func/Explanation/checkAllowExplanation.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"checkAllowExplanation.js","sourceRoot":"","sources":["../../../../../src/components/Func/Explanation/checkAllowExplanation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __assign, __awaiter, __generator } from "tslib";
|
|
2
2
|
import { CheckIcon, MagnifyingGlassIcon } from '@heroicons/react/24/outline';
|
|
3
|
-
import React, { useEffect, useState } from 'react';
|
|
3
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
4
4
|
import EmptySearchResult from './EmptySearchResult';
|
|
5
5
|
import PHXUseDebounce from '../Func/useDebounce';
|
|
6
6
|
import ErrorMessage from '../../commons/ErrorMessage';
|
|
@@ -20,18 +20,23 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
20
20
|
var _f = useState(false), isSearchLoading = _f[0], setIsSearchLoading = _f[1];
|
|
21
21
|
var _g = useState(false), isSearching = _g[0], setIsSearching = _g[1];
|
|
22
22
|
var _h = useState([]), searchDataResult = _h[0], setSearchDataResult = _h[1];
|
|
23
|
-
|
|
23
|
+
// Refs for improved control
|
|
24
|
+
var searchIdRef = useRef(0);
|
|
25
|
+
var lastFetchedQueryRef = useRef('');
|
|
26
|
+
var lastFetchedAtRef = useRef(0);
|
|
27
|
+
var lastUserEditAtRef = useRef(0);
|
|
24
28
|
var filterQuery = function (query, value) {
|
|
25
29
|
var formatValue = isUnaccentSearchValue ? unaccentValue(value) : value;
|
|
26
30
|
return query.replace(/%@value%/g, "\"\"%".concat(formatValue, "%\"\""));
|
|
27
31
|
};
|
|
28
|
-
|
|
32
|
+
// fetchSearchData now accepts the query string to avoid closure issues
|
|
33
|
+
var fetchSearchData = function (value) { return __awaiter(void 0, void 0, void 0, function () {
|
|
29
34
|
var searchQuery, res, e_1;
|
|
30
35
|
return __generator(this, function (_a) {
|
|
31
36
|
switch (_a.label) {
|
|
32
37
|
case 0:
|
|
33
38
|
_a.trys.push([0, 2, , 3]);
|
|
34
|
-
searchQuery = search ? filterQuery(search.query,
|
|
39
|
+
searchQuery = search ? filterQuery(search.query, value) : '';
|
|
35
40
|
return [4 /*yield*/, PHXClientQueryV3({
|
|
36
41
|
query: searchQuery
|
|
37
42
|
})];
|
|
@@ -41,47 +46,48 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
41
46
|
case 2:
|
|
42
47
|
e_1 = _a.sent();
|
|
43
48
|
console.log(e_1);
|
|
44
|
-
return [2 /*return
|
|
49
|
+
return [2 /*return*/, null];
|
|
45
50
|
case 3: return [2 /*return*/];
|
|
46
51
|
}
|
|
47
52
|
});
|
|
48
53
|
}); };
|
|
49
54
|
var getData = function (option) { return __awaiter(void 0, void 0, void 0, function () {
|
|
50
|
-
var startTime, result, data, endTime, duration;
|
|
55
|
+
var startTime, result, data, endTime, duration, e_2;
|
|
51
56
|
return __generator(this, function (_a) {
|
|
52
57
|
switch (_a.label) {
|
|
53
58
|
case 0:
|
|
59
|
+
_a.trys.push([0, 4, , 5]);
|
|
54
60
|
startTime = performance.now();
|
|
55
61
|
return [4 /*yield*/, option()];
|
|
56
62
|
case 1:
|
|
57
63
|
result = _a.sent();
|
|
64
|
+
if (!result)
|
|
65
|
+
return [2 /*return*/, null];
|
|
58
66
|
data = result.data;
|
|
59
67
|
endTime = performance.now();
|
|
60
68
|
duration = endTime - startTime;
|
|
61
69
|
if (!(duration < requestMaxDuration)) return [3 /*break*/, 3];
|
|
62
|
-
console.info('promise delay...');
|
|
63
70
|
return [4 /*yield*/, new Promise(function (r) { return setTimeout(r, 300); })];
|
|
64
71
|
case 2:
|
|
65
72
|
_a.sent();
|
|
66
73
|
_a.label = 3;
|
|
67
74
|
case 3: return [2 /*return*/, data];
|
|
75
|
+
case 4:
|
|
76
|
+
e_2 = _a.sent();
|
|
77
|
+
console.error(e_2);
|
|
78
|
+
return [2 /*return*/, null];
|
|
79
|
+
case 5: return [2 /*return*/];
|
|
68
80
|
}
|
|
69
81
|
});
|
|
70
82
|
}); };
|
|
71
83
|
var searchChange = function (e) {
|
|
72
|
-
var value = e.target.value;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
setIsSearching(true);
|
|
77
|
-
if (replaceSensitiveValue === '') {
|
|
78
|
-
setIsSearching(false);
|
|
79
|
-
}
|
|
80
|
-
if (replaceSensitiveValue !== previousValue) {
|
|
81
|
-
setPreviousValue(replaceSensitiveValue);
|
|
82
|
-
}
|
|
84
|
+
var value = e.target.value.replace(/\\/g, '');
|
|
85
|
+
setSearchValue(value);
|
|
86
|
+
setIsSearching(value !== '');
|
|
87
|
+
lastUserEditAtRef.current = Date.now(); // mark user edit time
|
|
83
88
|
};
|
|
84
89
|
var debouncedSearch = PHXUseDebounce(searchValue, 300);
|
|
90
|
+
// keep formatDynamicFields & message & handleClickSearchItem as-is
|
|
85
91
|
var formatDynamicFields = function (dataParams) {
|
|
86
92
|
var formattedValues = [];
|
|
87
93
|
var searchData = {};
|
|
@@ -95,7 +101,6 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
95
101
|
searchData[item.keyChild] = dataParams[item.keyChild];
|
|
96
102
|
}
|
|
97
103
|
});
|
|
98
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
99
104
|
for (var field in searchData) {
|
|
100
105
|
if (searchData[field] !== null && searchData[field] !== undefined) {
|
|
101
106
|
formattedValues.push("".concat(searchData[field])
|
|
@@ -107,25 +112,19 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
107
112
|
}
|
|
108
113
|
return formattedValues.join(' - ');
|
|
109
114
|
};
|
|
110
|
-
useEffect(function () {
|
|
111
|
-
if (searchValue === '') {
|
|
112
|
-
setSearchDataResult([]);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
setIsSearchLoading(true);
|
|
116
|
-
}
|
|
117
|
-
}, [searchValue]);
|
|
118
115
|
var handleClickSearchItem = function (item) {
|
|
119
116
|
getSearchResult(item);
|
|
120
117
|
setIsSearching(false);
|
|
121
|
-
formatDynamicFields(item);
|
|
122
|
-
setSearchValue(formatDynamicFields(item));
|
|
118
|
+
var formatted = formatDynamicFields(item);
|
|
123
119
|
if (isArray) {
|
|
124
120
|
setSearchValue('');
|
|
125
121
|
}
|
|
126
|
-
if (isFillInput && handleCustomRender) {
|
|
122
|
+
else if (isFillInput && handleCustomRender) {
|
|
127
123
|
setSearchValue(handleCustomRender(item));
|
|
128
124
|
}
|
|
125
|
+
else {
|
|
126
|
+
setSearchValue(formatted);
|
|
127
|
+
}
|
|
129
128
|
};
|
|
130
129
|
var message = function (type) {
|
|
131
130
|
var errorMessage = '';
|
|
@@ -153,19 +152,35 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
153
152
|
}
|
|
154
153
|
return errorMessage;
|
|
155
154
|
};
|
|
156
|
-
|
|
157
|
-
|
|
155
|
+
// Improved search function that accepts the debounced query
|
|
156
|
+
var handleSearch = function (query) { return __awaiter(void 0, void 0, void 0, function () {
|
|
157
|
+
var currentId, data, dataTable, result, finalData;
|
|
158
158
|
return __generator(this, function (_a) {
|
|
159
159
|
switch (_a.label) {
|
|
160
160
|
case 0:
|
|
161
|
+
currentId = ++searchIdRef.current;
|
|
161
162
|
setIsSearchLoading(true);
|
|
162
|
-
return [4 /*yield*/, getData(fetchSearchData)
|
|
163
|
+
return [4 /*yield*/, getData(function () { return fetchSearchData(query); })
|
|
164
|
+
// if fetch failed or was null
|
|
165
|
+
];
|
|
163
166
|
case 1:
|
|
164
167
|
data = _a.sent();
|
|
168
|
+
// if fetch failed or was null
|
|
169
|
+
if (!data) {
|
|
170
|
+
// only clear loading if still the la request
|
|
171
|
+
if (currentId === searchIdRef.current)
|
|
172
|
+
setIsSearchLoading(false);
|
|
173
|
+
return [2 /*return*/];
|
|
174
|
+
}
|
|
175
|
+
// If another search has started meanwhile, drop this result
|
|
176
|
+
if (currentId !== searchIdRef.current) {
|
|
177
|
+
return [2 /*return*/];
|
|
178
|
+
}
|
|
165
179
|
dataTable = search.keyResult;
|
|
166
180
|
result = queryValueType === 'default' ? data[dataTable] : handleQueryValue(data[dataTable]);
|
|
167
|
-
|
|
168
|
-
|
|
181
|
+
finalData = result;
|
|
182
|
+
if (listSelected && listSelected.length > 0) {
|
|
183
|
+
finalData = result.map(function (item) {
|
|
169
184
|
var isSelected;
|
|
170
185
|
switch (name) {
|
|
171
186
|
case 'user_assigned_tuition':
|
|
@@ -175,30 +190,38 @@ var PHXSearchResultListV3 = function (_a) {
|
|
|
175
190
|
isSelected = listSelected.some(function (selectedItem) { return selectedItem.id === item.id; });
|
|
176
191
|
break;
|
|
177
192
|
}
|
|
178
|
-
|
|
179
|
-
return __assign(__assign({}, item), { is_selected: true });
|
|
180
|
-
}
|
|
181
|
-
return item;
|
|
193
|
+
return isSelected ? __assign(__assign({}, item), { is_selected: true }) : item;
|
|
182
194
|
});
|
|
183
|
-
setSearchDataResult(newData);
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
setSearchDataResult(result);
|
|
187
195
|
}
|
|
188
|
-
|
|
196
|
+
setSearchDataResult(finalData);
|
|
197
|
+
lastFetchedQueryRef.current = query;
|
|
198
|
+
lastFetchedAtRef.current = Date.now();
|
|
199
|
+
// only clear loading if this is still the latest request
|
|
200
|
+
if (currentId === searchIdRef.current)
|
|
201
|
+
setIsSearchLoading(false);
|
|
189
202
|
return [2 /*return*/];
|
|
190
203
|
}
|
|
191
204
|
});
|
|
192
205
|
}); };
|
|
206
|
+
// NOTE: removed the old effect that set isSearchLoading(true) on every searchValue change.
|
|
207
|
+
// We now rely on the debounced effect to start/stop loading.
|
|
193
208
|
useEffect(function () {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
209
|
+
// If debouncedSearch is empty -> clear results and stop loading
|
|
210
|
+
if (!debouncedSearch || debouncedSearch.trim() === '') {
|
|
211
|
+
setSearchDataResult([]);
|
|
212
|
+
setIsSearchLoading(false);
|
|
213
|
+
return;
|
|
198
214
|
}
|
|
199
|
-
|
|
200
|
-
|
|
215
|
+
// If we already fetched this exact query and user hasn't edited since last fetch, skip fetching
|
|
216
|
+
var userEditedAfterLastFetch = lastUserEditAtRef.current > lastFetchedAtRef.current;
|
|
217
|
+
var needFetch = debouncedSearch !== lastFetchedQueryRef.current || userEditedAfterLastFetch;
|
|
218
|
+
if (!needFetch) {
|
|
219
|
+
// nothing to do
|
|
220
|
+
return;
|
|
201
221
|
}
|
|
222
|
+
// run search for this debounced value
|
|
223
|
+
handleSearch(debouncedSearch);
|
|
224
|
+
setValue(name, debouncedSearch);
|
|
202
225
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
203
226
|
}, [debouncedSearch]);
|
|
204
227
|
return (React.createElement("div", { className: 'relative w-full' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultList.js","sourceRoot":"","sources":["../../../../src/components/SearchResultListV3/SearchResultList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,EAAM,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"SearchResultList.js","sourceRoot":"","sources":["../../../../src/components/SearchResultListV3/SearchResultList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
export declare const queryShiftAndExplanationConfig = "\nquery getShiftAndExplanationConfig($school_id: Int!, $user_id: Int!) {\n users(where: {id: {_eq: $user_id}}) {\n department_users(where: {deleted_at: {_is_null: true}}) {\n department_id\n department {\n name\n }\n }\n }\n hrm_checkin_hrm_checkin_shift_config(where: {deleted_at: {_is_null: true}, school_id: {_eq: $school_id}}) {\n id\n applicable_days\n department_id\n working_hours_per_day\n break_start\n break_end\n allow_break_time\n }\n hrm_checkin_explanation_config(where: {deleted_at: {_is_null: true}}) {\n limit_time_create\n id\n request_type_id\n approval_type {\n id\n code\n }\n }\n}";
|
|
2
|
+
export declare const queryAttendanceCode = "\nquery getAttendanceCode($id: Int!) {\n hrm_checkin_attendance_code(where: {id: {_eq: $id}}) {\n id\n work_time\n }\n}";
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export var queryShiftAndExplanationConfig = "\nquery getShiftAndExplanationConfig($school_id: Int!, $user_id: Int!) {\n users(where: {id: {_eq: $user_id}}) {\n department_users(where: {deleted_at: {_is_null: true}}) {\n department_id\n department {\n name\n }\n }\n }\n hrm_checkin_hrm_checkin_shift_config(where: {deleted_at: {_is_null: true}, school_id: {_eq: $school_id}}) {\n id\n applicable_days\n department_id\n working_hours_per_day\n break_start\n break_end\n allow_break_time\n }\n hrm_checkin_explanation_config(where: {deleted_at: {_is_null: true}}) {\n limit_time_create\n id\n request_type_id\n approval_type {\n id\n code\n }\n }\n}";
|
|
2
|
+
export var queryAttendanceCode = "\nquery getAttendanceCode($id: Int!) {\n hrm_checkin_attendance_code(where: {id: {_eq: $id}}) {\n id\n work_time\n }\n}";
|
|
2
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/query/explannation/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,8BAA8B,GAAG,guBA4B5C,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/query/explannation/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,8BAA8B,GAAG,guBA4B5C,CAAA;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAAG,uIAMjC,CAAA"}
|