@fctc/widget-logic 2.4.3 → 2.4.6
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/hooks.d.mts +559 -346
- package/dist/hooks.d.ts +559 -346
- package/dist/hooks.js +604 -480
- package/dist/hooks.mjs +615 -498
- package/dist/index.d.mts +4 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.js +706 -612
- package/dist/index.mjs +799 -647
- package/dist/utils.d.mts +1 -9
- package/dist/utils.d.ts +1 -9
- package/dist/utils.js +0 -12
- package/dist/utils.mjs +0 -10
- package/dist/widget.d.mts +6 -6
- package/dist/widget.d.ts +6 -6
- package/dist/widget.js +168 -713
- package/dist/widget.mjs +258 -745
- package/package.json +2 -2
package/dist/widget.mjs
CHANGED
|
@@ -41,7 +41,7 @@ var require_moment = __commonJS({
|
|
|
41
41
|
"use strict";
|
|
42
42
|
(function(global, factory) {
|
|
43
43
|
typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.moment = factory();
|
|
44
|
-
})(exports, function() {
|
|
44
|
+
})(exports, (function() {
|
|
45
45
|
"use strict";
|
|
46
46
|
var hookCallback;
|
|
47
47
|
function hooks() {
|
|
@@ -59,7 +59,7 @@ var require_moment = __commonJS({
|
|
|
59
59
|
function hasOwnProp(a, b) {
|
|
60
60
|
return Object.prototype.hasOwnProperty.call(a, b);
|
|
61
61
|
}
|
|
62
|
-
function
|
|
62
|
+
function isObjectEmpty4(obj) {
|
|
63
63
|
if (Object.getOwnPropertyNames) {
|
|
64
64
|
return Object.getOwnPropertyNames(obj).length === 0;
|
|
65
65
|
} else {
|
|
@@ -2198,7 +2198,7 @@ var require_moment = __commonJS({
|
|
|
2198
2198
|
strict = locale2;
|
|
2199
2199
|
locale2 = void 0;
|
|
2200
2200
|
}
|
|
2201
|
-
if (isObject(input) &&
|
|
2201
|
+
if (isObject(input) && isObjectEmpty4(input) || isArray(input) && input.length === 0) {
|
|
2202
2202
|
input = void 0;
|
|
2203
2203
|
}
|
|
2204
2204
|
c._isAMomentObject = true;
|
|
@@ -2617,7 +2617,7 @@ var require_moment = __commonJS({
|
|
|
2617
2617
|
return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
|
|
2618
2618
|
}
|
|
2619
2619
|
function isMomentInputObject(input) {
|
|
2620
|
-
var objectTest = isObject(input) && !
|
|
2620
|
+
var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
|
|
2621
2621
|
"years",
|
|
2622
2622
|
"year",
|
|
2623
2623
|
"y",
|
|
@@ -2659,7 +2659,7 @@ var require_moment = __commonJS({
|
|
|
2659
2659
|
return arrayTest && dataTypeTest;
|
|
2660
2660
|
}
|
|
2661
2661
|
function isCalendarSpec(input) {
|
|
2662
|
-
var objectTest = isObject(input) && !
|
|
2662
|
+
var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
|
|
2663
2663
|
"sameDay",
|
|
2664
2664
|
"nextDay",
|
|
2665
2665
|
"lastDay",
|
|
@@ -4032,7 +4032,7 @@ var require_moment = __commonJS({
|
|
|
4032
4032
|
// <input type="month" />
|
|
4033
4033
|
};
|
|
4034
4034
|
return hooks;
|
|
4035
|
-
});
|
|
4035
|
+
}));
|
|
4036
4036
|
}
|
|
4037
4037
|
});
|
|
4038
4038
|
|
|
@@ -4091,147 +4091,126 @@ var statusDropdownController = (props) => {
|
|
|
4091
4091
|
};
|
|
4092
4092
|
|
|
4093
4093
|
// src/widget/basic/many2one-field/controller.ts
|
|
4094
|
-
import { useCallback as
|
|
4094
|
+
import { useCallback as useCallback4, useEffect as useEffect10, useMemo as useMemo8, useState as useState7 } from "react";
|
|
4095
4095
|
|
|
4096
4096
|
// src/hooks.ts
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
|
|
4114
|
-
|
|
4097
|
+
import {
|
|
4098
|
+
useModel,
|
|
4099
|
+
useButton,
|
|
4100
|
+
useChangeStatus,
|
|
4101
|
+
useDelete,
|
|
4102
|
+
useDeleteComment,
|
|
4103
|
+
useDuplicateRecord,
|
|
4104
|
+
useExecuteImport,
|
|
4105
|
+
useExportExcel,
|
|
4106
|
+
useForgotPassword,
|
|
4107
|
+
useForgotPasswordSSO,
|
|
4108
|
+
useGet2FAMethods,
|
|
4109
|
+
useGetAccessByCode,
|
|
4110
|
+
useGetActionDetail,
|
|
4111
|
+
useGetAll,
|
|
4112
|
+
useGetCalendar,
|
|
4113
|
+
useGetComment,
|
|
4114
|
+
useGetCompanyInfo,
|
|
4115
|
+
useGetConversionRate,
|
|
4116
|
+
useGetCurrency,
|
|
4117
|
+
useGetCurrentCompany,
|
|
4118
|
+
useGetDetail,
|
|
4119
|
+
useGetFieldExport,
|
|
4120
|
+
useGetFieldOnChange,
|
|
4121
|
+
useGetFileExcel,
|
|
4122
|
+
useGetFormView,
|
|
4123
|
+
useGetGroups,
|
|
4124
|
+
useGetImage,
|
|
4125
|
+
useGetListCompany,
|
|
4126
|
+
useGetListData,
|
|
4127
|
+
useGetListMyBankAccount,
|
|
4128
|
+
useGetMenu,
|
|
4129
|
+
useGetPrintReport,
|
|
4130
|
+
useGetProGressBar,
|
|
4131
|
+
useGetProfile,
|
|
4132
|
+
useGetProvider,
|
|
4133
|
+
useGetResequence,
|
|
4134
|
+
useGetSelection,
|
|
4135
|
+
useGetUser,
|
|
4136
|
+
useGetView,
|
|
4137
|
+
useGrantAccess,
|
|
4138
|
+
useIsValidToken,
|
|
4139
|
+
useLoadAction,
|
|
4140
|
+
useLoadMessage,
|
|
4141
|
+
useLoginCredential,
|
|
4142
|
+
useLoginSocial,
|
|
4143
|
+
useLogout,
|
|
4144
|
+
useOdooDataTransform,
|
|
4145
|
+
useOnChangeForm,
|
|
4146
|
+
useParsePreview,
|
|
4147
|
+
usePrint,
|
|
4148
|
+
useRemoveRow,
|
|
4149
|
+
useRemoveTotpSetup,
|
|
4150
|
+
useRequestSetupTotp,
|
|
4151
|
+
useResetPassword,
|
|
4152
|
+
useResetPasswordSSO,
|
|
4153
|
+
useRunAction,
|
|
4154
|
+
useSave as useSave2,
|
|
4155
|
+
useSendComment,
|
|
4156
|
+
useSettingsWebRead2fa,
|
|
4157
|
+
useSignInSSO,
|
|
4158
|
+
useSwitchLocale,
|
|
4159
|
+
useUpdatePassword,
|
|
4160
|
+
useUploadFile,
|
|
4161
|
+
useUploadFileExcel,
|
|
4162
|
+
useUploadIdFile,
|
|
4163
|
+
useUploadImage,
|
|
4164
|
+
useValidateActionToken,
|
|
4165
|
+
useVerify2FA,
|
|
4166
|
+
useVerifyTotp
|
|
4167
|
+
} from "@fctc/interface-logic/hooks";
|
|
4168
|
+
|
|
4169
|
+
// src/hooks/core/use-app-provider.tsx
|
|
4170
|
+
import { createContext, useContext, useMemo as useMemo5 } from "react";
|
|
4171
|
+
|
|
4172
|
+
// src/hooks/core/use-menu.ts
|
|
4173
|
+
import { useMemo, useState as useState3 } from "react";
|
|
4115
4174
|
|
|
4116
4175
|
// src/hooks/core/use-call-action.ts
|
|
4117
|
-
import { useState as useState2 } from "react";
|
|
4118
|
-
import { getEnv as getEnv2 } from "@fctc/interface-logic/environment";
|
|
4119
|
-
import { useLoadAction, useRunAction } from "@fctc/interface-logic/hooks";
|
|
4120
|
-
var useCallAction = () => {
|
|
4121
|
-
const queryLoadAction = useLoadAction();
|
|
4122
|
-
const queryRunAction = useRunAction();
|
|
4123
|
-
const [data, setData] = useState2(void 0);
|
|
4124
|
-
const callAction = async ({
|
|
4125
|
-
aid,
|
|
4126
|
-
actionType = "ir.actions.act_window"
|
|
4127
|
-
}) => {
|
|
4128
|
-
const context = getEnv2().context;
|
|
4129
|
-
let res = void 0;
|
|
4130
|
-
if (actionType === "ir.actions.act_window") {
|
|
4131
|
-
res = await queryLoadAction.mutateAsync({
|
|
4132
|
-
idAction: aid,
|
|
4133
|
-
context
|
|
4134
|
-
});
|
|
4135
|
-
} else if (actionType === "ir.actions.server") {
|
|
4136
|
-
res = await queryRunAction.mutateAsync({
|
|
4137
|
-
idAction: aid,
|
|
4138
|
-
context
|
|
4139
|
-
});
|
|
4140
|
-
}
|
|
4141
|
-
setData(res);
|
|
4142
|
-
return res;
|
|
4143
|
-
};
|
|
4144
|
-
return [data, callAction];
|
|
4145
|
-
};
|
|
4176
|
+
import { useCallback, useState as useState2 } from "react";
|
|
4146
4177
|
|
|
4147
|
-
// src/
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
import
|
|
4151
|
-
var useConfig = ({ localStorageUtils, sessionStorageUtils }) => {
|
|
4152
|
-
const dispatch = useAppDispatch();
|
|
4153
|
-
const envConfig = useMemo(() => {
|
|
4154
|
-
return {
|
|
4155
|
-
mode: "development",
|
|
4156
|
-
baseUrl: "https://api.vitrust.app/c2/api/v2",
|
|
4157
|
-
config: {
|
|
4158
|
-
grantType: "password",
|
|
4159
|
-
clientId: "C52foVQSMpnNOcAP2CBIIkupOSfxUarF8nlOPfXM",
|
|
4160
|
-
clientSecret: "rColINr4a9QBFQPqQB8YU1XfBjqzwerDMJGBxsFK"
|
|
4161
|
-
}
|
|
4162
|
-
};
|
|
4163
|
-
}, []);
|
|
4164
|
-
const config = useMemo(() => {
|
|
4165
|
-
return {
|
|
4166
|
-
VITE_SIDEBAR_TYPE: "grid/sidebar",
|
|
4167
|
-
VITE_APP_DOMAIN: "https://api.vitrust.app/c2/",
|
|
4168
|
-
VITE_IS_EDU: true,
|
|
4169
|
-
VITE_LOGO_WHITE_LOGIN: "https://static.vitrust.app/vitrust/3a/3a1301f614dea6ee19ebf99b68f57e3fd46011d2.png",
|
|
4170
|
-
VITE_LOGO_BLACK_LOGIN: "https://static.vitrust.app/vitrust/32/3223918780da7a439f916faac9abf0bfe98dfa07.png",
|
|
4171
|
-
VITE_BACKGROUND_SIDEBAR: "linear-gradient(178deg, rgb(1, 106, 13) -0.89%, rgb(4, 179, 66) 99.46%",
|
|
4172
|
-
VITE_BANNER: "https://static.vitrust.app/vitrust/5d/5d20cab0627182b4ed5cba4ee42c58b98b663e5b.svg",
|
|
4173
|
-
VITE_BG_BUTTON: "#008F3C",
|
|
4174
|
-
VITE_BACKGROUND_PAGE: "#F9FAFB"
|
|
4175
|
-
};
|
|
4176
|
-
}, []);
|
|
4177
|
-
useEffect2(() => {
|
|
4178
|
-
try {
|
|
4179
|
-
const env = getEnv3();
|
|
4180
|
-
env.setupEnv({
|
|
4181
|
-
baseUrl: envConfig.baseUrl,
|
|
4182
|
-
port: 3e3,
|
|
4183
|
-
config: {
|
|
4184
|
-
grantType: envConfig.config.grantType,
|
|
4185
|
-
clientId: envConfig.config.clientId,
|
|
4186
|
-
clientSecret: envConfig.config.clientSecret
|
|
4187
|
-
},
|
|
4188
|
-
db: "preschool",
|
|
4189
|
-
localStorageUtils: localStorageUtils(),
|
|
4190
|
-
sessionStorageUtils: sessionStorageUtils()
|
|
4191
|
-
});
|
|
4192
|
-
dispatch(setEnvFile(config));
|
|
4193
|
-
} catch (error) {
|
|
4194
|
-
console.error("Error loading env or config:", error);
|
|
4195
|
-
}
|
|
4196
|
-
}, [dispatch, envConfig, config]);
|
|
4197
|
-
return { envConfig, config };
|
|
4198
|
-
};
|
|
4178
|
+
// src/provider.ts
|
|
4179
|
+
var provider_exports = {};
|
|
4180
|
+
__reExport(provider_exports, provider_star);
|
|
4181
|
+
import * as provider_star from "@fctc/interface-logic/provider";
|
|
4199
4182
|
|
|
4200
4183
|
// src/hooks/core/use-detail.ts
|
|
4201
|
-
import { setProfile, useAppDispatch as useAppDispatch2 } from "@fctc/interface-logic/store";
|
|
4202
4184
|
import { useQuery } from "@tanstack/react-query";
|
|
4203
|
-
import { useEffect as
|
|
4204
|
-
import { useGetDetail } from "@fctc/interface-logic/hooks";
|
|
4205
|
-
var useDetail = (accessToken, sub) => {
|
|
4206
|
-
const dispatch = useAppDispatch2();
|
|
4207
|
-
const fetchGetDetail = useGetDetail();
|
|
4208
|
-
const userDetailQuery = useQuery({
|
|
4209
|
-
queryKey: ["userDetailQuery", sub && accessToken],
|
|
4210
|
-
queryFn: () => {
|
|
4211
|
-
return fetchGetDetail.mutateAsync({
|
|
4212
|
-
model: "res.users",
|
|
4213
|
-
ids: [sub],
|
|
4214
|
-
specification: { image_256: {} }
|
|
4215
|
-
});
|
|
4216
|
-
},
|
|
4217
|
-
enabled: !!sub && !!accessToken
|
|
4218
|
-
});
|
|
4219
|
-
useEffect3(() => {
|
|
4220
|
-
if (userDetailQuery.data) {
|
|
4221
|
-
const userPicture = userDetailQuery.data;
|
|
4222
|
-
dispatch(
|
|
4223
|
-
setProfile({ ...userPicture, image: userPicture?.[0]?.image_256 })
|
|
4224
|
-
);
|
|
4225
|
-
}
|
|
4226
|
-
}, [userDetailQuery.data, dispatch]);
|
|
4227
|
-
return userDetailQuery;
|
|
4228
|
-
};
|
|
4185
|
+
import { useEffect as useEffect2 } from "react";
|
|
4229
4186
|
|
|
4230
|
-
// src/hooks/core/use-
|
|
4231
|
-
import {
|
|
4187
|
+
// src/hooks/core/use-profile.ts
|
|
4188
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
4189
|
+
import { useEffect as useEffect4, useMemo as useMemo2 } from "react";
|
|
4190
|
+
import { useTranslation } from "react-i18next";
|
|
4191
|
+
|
|
4192
|
+
// src/utils.ts
|
|
4193
|
+
var utils_exports = {};
|
|
4194
|
+
__export(utils_exports, {
|
|
4195
|
+
STORAGES: () => STORAGES,
|
|
4196
|
+
combineContexts: () => combineContexts,
|
|
4197
|
+
convertFieldsToArray: () => convertFieldsToArray,
|
|
4198
|
+
countSum: () => countSum,
|
|
4199
|
+
getDateRange: () => getDateRange,
|
|
4200
|
+
languages: () => languages,
|
|
4201
|
+
mergeButtons: () => mergeButtons,
|
|
4202
|
+
setStorageItemAsync: () => setStorageItemAsync,
|
|
4203
|
+
useStorageState: () => useStorageState
|
|
4204
|
+
});
|
|
4205
|
+
|
|
4206
|
+
// src/utils/constants.ts
|
|
4207
|
+
var languages = [
|
|
4208
|
+
{ id: "vi_VN", name: "VIE" },
|
|
4209
|
+
{ id: "en_US", name: "ENG" }
|
|
4210
|
+
];
|
|
4232
4211
|
|
|
4233
4212
|
// src/utils/function.ts
|
|
4234
|
-
import { useCallback, useEffect as
|
|
4213
|
+
import { useCallback as useCallback2, useEffect as useEffect3, useReducer } from "react";
|
|
4235
4214
|
var countSum = (data, field) => {
|
|
4236
4215
|
if (!data || !field) return 0;
|
|
4237
4216
|
return data.reduce(
|
|
@@ -4370,7 +4349,7 @@ async function setStorageItemAsync(key, value) {
|
|
|
4370
4349
|
}
|
|
4371
4350
|
function useStorageState(key) {
|
|
4372
4351
|
const [state, setState] = useAsyncState();
|
|
4373
|
-
|
|
4352
|
+
useEffect3(() => {
|
|
4374
4353
|
try {
|
|
4375
4354
|
const storedValue = localStorage.getItem(key);
|
|
4376
4355
|
setState(storedValue);
|
|
@@ -4378,7 +4357,7 @@ function useStorageState(key) {
|
|
|
4378
4357
|
console.error("Local storage is unavailable:", e);
|
|
4379
4358
|
}
|
|
4380
4359
|
}, [key]);
|
|
4381
|
-
const setValue =
|
|
4360
|
+
const setValue = useCallback2(
|
|
4382
4361
|
(value) => {
|
|
4383
4362
|
setState(value);
|
|
4384
4363
|
setStorageItemAsync(key, value);
|
|
@@ -4388,471 +4367,62 @@ function useStorageState(key) {
|
|
|
4388
4367
|
return [state, setValue];
|
|
4389
4368
|
}
|
|
4390
4369
|
|
|
4391
|
-
// src/
|
|
4392
|
-
|
|
4393
|
-
import
|
|
4394
|
-
useAppSelector,
|
|
4395
|
-
selectSearch,
|
|
4396
|
-
selectList
|
|
4397
|
-
} from "@fctc/interface-logic/store";
|
|
4398
|
-
import {
|
|
4399
|
-
evalJSONDomain,
|
|
4400
|
-
formatSortingString
|
|
4401
|
-
} from "@fctc/interface-logic/utils";
|
|
4402
|
-
var useListData = ({
|
|
4403
|
-
action,
|
|
4404
|
-
context,
|
|
4405
|
-
viewResponse
|
|
4406
|
-
}) => {
|
|
4407
|
-
const { groupByDomain } = useAppSelector(selectSearch);
|
|
4408
|
-
const initModel = useModel();
|
|
4409
|
-
const [type, setType] = useState3("list");
|
|
4410
|
-
const [mode, setMode] = useState3("month");
|
|
4411
|
-
const [currentDate, setCurrentDate] = useState3(/* @__PURE__ */ new Date());
|
|
4412
|
-
const { pageLimit, page, order } = useAppSelector(selectList);
|
|
4413
|
-
const listDataProps = useMemo2(() => {
|
|
4414
|
-
const actData = action?.result;
|
|
4415
|
-
if (!viewResponse || !actData || !context) {
|
|
4416
|
-
return null;
|
|
4417
|
-
}
|
|
4418
|
-
const specification = initModel.initModel({
|
|
4419
|
-
name: String(actData.res_model),
|
|
4420
|
-
view: viewResponse || {},
|
|
4421
|
-
actContext: context,
|
|
4422
|
-
fields: type === "kanban" ? viewResponse?.views?.kanban?.fields : type === "calendar" ? viewResponse?.views?.calendar?.fields : viewResponse?.views?.list?.fields
|
|
4423
|
-
}).getSpecification();
|
|
4424
|
-
const domain = type === "calendar" ? getDateRange(currentDate, mode) : actData?.domain ? Array.isArray(actData?.domain) ? [...actData?.domain] : evalJSONDomain(actData?.domain, context) : [];
|
|
4425
|
-
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
4426
|
-
const offset = page * pageLimit;
|
|
4427
|
-
const fields = type === "calendar" ? convertFieldsToArray(viewResponse?.views?.calendar?.fields) || [] : typeof groupByDomain === "object" ? groupByDomain?.fields : void 0;
|
|
4428
|
-
const groupby = typeof groupByDomain === "object" ? [groupByDomain?.contexts?.[0]?.group_by] : [];
|
|
4429
|
-
const sort = order ? order : viewResponse?.views?.list?.default_order ? formatSortingString(viewResponse?.views?.list?.default_order) : "";
|
|
4430
|
-
return {
|
|
4431
|
-
model: actData.res_model,
|
|
4432
|
-
specification,
|
|
4433
|
-
domain,
|
|
4434
|
-
limit,
|
|
4435
|
-
offset,
|
|
4436
|
-
fields,
|
|
4437
|
-
groupby,
|
|
4438
|
-
context,
|
|
4439
|
-
sort,
|
|
4440
|
-
type
|
|
4441
|
-
};
|
|
4442
|
-
}, [
|
|
4443
|
-
action?.result,
|
|
4444
|
-
context,
|
|
4445
|
-
currentDate,
|
|
4446
|
-
groupByDomain,
|
|
4447
|
-
initModel,
|
|
4448
|
-
mode,
|
|
4449
|
-
order,
|
|
4450
|
-
page,
|
|
4451
|
-
pageLimit,
|
|
4452
|
-
type,
|
|
4453
|
-
viewResponse
|
|
4454
|
-
]);
|
|
4455
|
-
const list = useGetListData(
|
|
4456
|
-
listDataProps,
|
|
4457
|
-
[listDataProps],
|
|
4458
|
-
!!listDataProps
|
|
4459
|
-
);
|
|
4460
|
-
return {
|
|
4461
|
-
...list,
|
|
4462
|
-
state: {
|
|
4463
|
-
type,
|
|
4464
|
-
setType,
|
|
4465
|
-
mode,
|
|
4466
|
-
setMode,
|
|
4467
|
-
currentDate,
|
|
4468
|
-
setCurrentDate
|
|
4469
|
-
}
|
|
4470
|
-
};
|
|
4471
|
-
};
|
|
4472
|
-
|
|
4473
|
-
// src/hooks/core/use-menu.ts
|
|
4474
|
-
import { useEffect as useEffect5, useMemo as useMemo3, useState as useState4 } from "react";
|
|
4475
|
-
|
|
4476
|
-
// src/utils/constants.ts
|
|
4477
|
-
var languages = [
|
|
4478
|
-
{ id: "vi_VN", name: "VIE" },
|
|
4479
|
-
{ id: "en_US", name: "ENG" }
|
|
4480
|
-
];
|
|
4481
|
-
var API_PRESCHOOL_URL = {
|
|
4482
|
-
baseURL: "https://preschool.vitrust.app"
|
|
4483
|
-
};
|
|
4484
|
-
var API_APP_URL = {
|
|
4485
|
-
baseUrl: "https://api.vitrust.app",
|
|
4486
|
-
c2: "https://api.vitrust.app/c2",
|
|
4487
|
-
apiV2: "https://api.vitrust.app/c2/api/v2"
|
|
4488
|
-
};
|
|
4489
|
-
|
|
4490
|
-
// src/hooks/core/use-menu.ts
|
|
4491
|
-
import { useGetMenu } from "@fctc/interface-logic/hooks";
|
|
4492
|
-
var useMenu = ({ context }) => {
|
|
4493
|
-
const menuData = useGetMenu(context, !!context);
|
|
4494
|
-
const [menuid, setMenuId] = useState4(void 0);
|
|
4495
|
-
const [action, setAction] = useCallAction();
|
|
4496
|
-
const configedIconData = useMemo3(() => {
|
|
4497
|
-
const data = menuData.data;
|
|
4498
|
-
return data?.map((item) => {
|
|
4499
|
-
return {
|
|
4500
|
-
...item,
|
|
4501
|
-
child_id: item?.child_id?.map((child) => {
|
|
4502
|
-
return {
|
|
4503
|
-
...child,
|
|
4504
|
-
url_icon: API_APP_URL.c2 + "/" + child.url_icon
|
|
4505
|
-
};
|
|
4506
|
-
}) ?? [],
|
|
4507
|
-
url_icon: API_APP_URL.c2 + "/" + item.url_icon
|
|
4508
|
-
};
|
|
4509
|
-
});
|
|
4510
|
-
}, [menuData.data]);
|
|
4511
|
-
const handleChangeMenu = async ({
|
|
4512
|
-
menu,
|
|
4513
|
-
subMenu
|
|
4514
|
-
}) => {
|
|
4515
|
-
const aid = subMenu?.action?.id?.id;
|
|
4516
|
-
const actionType = subMenu?.action?.type;
|
|
4517
|
-
await setAction({
|
|
4518
|
-
aid: Number(aid),
|
|
4519
|
-
actionType
|
|
4520
|
-
});
|
|
4521
|
-
if (menu) {
|
|
4522
|
-
setMenuId(menu.id?.toString() ?? "");
|
|
4523
|
-
}
|
|
4524
|
-
};
|
|
4525
|
-
useEffect5(() => {
|
|
4526
|
-
const firstRecord = configedIconData?.[0];
|
|
4527
|
-
const firstChild = firstRecord?.child_id?.[0];
|
|
4528
|
-
if (firstChild && firstRecord) {
|
|
4529
|
-
handleChangeMenu({ menu: firstRecord, subMenu: firstChild });
|
|
4530
|
-
}
|
|
4531
|
-
}, [configedIconData]);
|
|
4532
|
-
return {
|
|
4533
|
-
...menuData,
|
|
4534
|
-
data: configedIconData,
|
|
4535
|
-
action: { handleChangeMenu },
|
|
4536
|
-
state: { menuid, action },
|
|
4537
|
-
context
|
|
4538
|
-
};
|
|
4539
|
-
};
|
|
4540
|
-
|
|
4541
|
-
// src/hooks/core/use-profile.ts
|
|
4542
|
-
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
4543
|
-
import { useEffect as useEffect6, useMemo as useMemo4 } from "react";
|
|
4544
|
-
import { useTranslation } from "react-i18next";
|
|
4545
|
-
import { getEnv as getEnv4 } from "@fctc/interface-logic/environment";
|
|
4546
|
-
import { useGetProfile } from "@fctc/interface-logic/hooks";
|
|
4547
|
-
import { useAppDispatch as useAppDispatch3, setDataUser } from "@fctc/interface-logic/store";
|
|
4548
|
-
var useProfile = (accessToken) => {
|
|
4549
|
-
const getProfile = useGetProfile();
|
|
4550
|
-
const dispatch = useAppDispatch3();
|
|
4551
|
-
const { i18n: i18n2 } = useTranslation();
|
|
4552
|
-
const fetchUserProfile = async () => {
|
|
4553
|
-
return await getProfile.mutateAsync();
|
|
4554
|
-
};
|
|
4555
|
-
const userInfoQuery = useQuery2({
|
|
4556
|
-
queryKey: ["userInfo", accessToken],
|
|
4557
|
-
queryFn: fetchUserProfile,
|
|
4558
|
-
enabled: !!accessToken
|
|
4559
|
-
});
|
|
4560
|
-
useEffect6(() => {
|
|
4561
|
-
if (userInfoQuery.data) {
|
|
4562
|
-
const userInfo = userInfoQuery.data;
|
|
4563
|
-
const env = getEnv4();
|
|
4564
|
-
env.setUid(userInfo?.sub);
|
|
4565
|
-
dispatch(setDataUser(userInfo));
|
|
4566
|
-
const userLocale = languages.find((lang) => lang?.id === userInfo?.locale);
|
|
4567
|
-
env.setLang(userLocale?.id);
|
|
4568
|
-
i18n2.changeLanguage(userLocale?.id.split("_")[0]);
|
|
4569
|
-
}
|
|
4570
|
-
}, [dispatch, userInfoQuery.data]);
|
|
4571
|
-
const context = useMemo4(() => {
|
|
4572
|
-
if (userInfoQuery.data?.sub && userInfoQuery.data?.locale) {
|
|
4573
|
-
return {
|
|
4574
|
-
uid: Number(userInfoQuery.data.sub),
|
|
4575
|
-
allowed_company_ids: [],
|
|
4576
|
-
lang: String(userInfoQuery.data.locale),
|
|
4577
|
-
tz: "Asia/Saigon"
|
|
4578
|
-
};
|
|
4579
|
-
}
|
|
4580
|
-
return void 0;
|
|
4581
|
-
}, [userInfoQuery.data]);
|
|
4582
|
-
return { ...userInfoQuery, context };
|
|
4583
|
-
};
|
|
4584
|
-
|
|
4585
|
-
// src/hooks/core/use-user.ts
|
|
4586
|
-
var useUser = (accessToken) => {
|
|
4587
|
-
const userProfile = useProfile(accessToken);
|
|
4588
|
-
const userDetail = useDetail(accessToken, userProfile.data?.sub);
|
|
4589
|
-
return { userProfile, userDetail, context: userProfile.context };
|
|
4590
|
-
};
|
|
4370
|
+
// src/utils.ts
|
|
4371
|
+
__reExport(utils_exports, utils_star);
|
|
4372
|
+
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4591
4373
|
|
|
4592
4374
|
// src/hooks/core/use-view-v2.ts
|
|
4593
|
-
import { useMemo as
|
|
4594
|
-
import { useGetView } from "@fctc/interface-logic/hooks";
|
|
4595
|
-
var useViewV2 = ({
|
|
4596
|
-
action,
|
|
4597
|
-
context
|
|
4598
|
-
}) => {
|
|
4599
|
-
const viewParams = useMemo5(() => {
|
|
4600
|
-
if (!action?.result) {
|
|
4601
|
-
return void 0;
|
|
4602
|
-
}
|
|
4603
|
-
const actionResult = action?.result;
|
|
4604
|
-
return {
|
|
4605
|
-
model: String(actionResult?.res_model),
|
|
4606
|
-
views: [
|
|
4607
|
-
...Array.isArray(actionResult?.views) ? actionResult?.views.map(
|
|
4608
|
-
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
4609
|
-
) : [],
|
|
4610
|
-
[
|
|
4611
|
-
Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
|
|
4612
|
-
"search"
|
|
4613
|
-
]
|
|
4614
|
-
],
|
|
4615
|
-
context
|
|
4616
|
-
};
|
|
4617
|
-
}, [action, context]);
|
|
4618
|
-
const view = useGetView(
|
|
4619
|
-
viewParams || {},
|
|
4620
|
-
!!viewParams
|
|
4621
|
-
);
|
|
4622
|
-
return {
|
|
4623
|
-
...view,
|
|
4624
|
-
context
|
|
4625
|
-
};
|
|
4626
|
-
};
|
|
4627
|
-
|
|
4628
|
-
// src/hooks/core/use-auth.ts
|
|
4629
|
-
import { useLoginCredential } from "@fctc/interface-logic/hooks";
|
|
4630
|
-
import {
|
|
4631
|
-
setDataUser as setDataUser2,
|
|
4632
|
-
setMenuList,
|
|
4633
|
-
setProfile as setProfile2,
|
|
4634
|
-
useAppDispatch as useAppDispatch4
|
|
4635
|
-
} from "@fctc/interface-logic/store";
|
|
4636
|
-
var useAuth = () => {
|
|
4637
|
-
const [[isLoading, accessToken], setAccessToken] = useStorageState("TOKEN");
|
|
4638
|
-
const loginMutate = useLoginCredential();
|
|
4639
|
-
const dispatch = useAppDispatch4();
|
|
4640
|
-
const signIn = async (email, password) => {
|
|
4641
|
-
try {
|
|
4642
|
-
loginMutate.mutate(
|
|
4643
|
-
{
|
|
4644
|
-
email,
|
|
4645
|
-
password,
|
|
4646
|
-
path: "/authentication/oauth2/token"
|
|
4647
|
-
},
|
|
4648
|
-
{
|
|
4649
|
-
onSuccess: (res) => {
|
|
4650
|
-
},
|
|
4651
|
-
onError: (err) => {
|
|
4652
|
-
}
|
|
4653
|
-
}
|
|
4654
|
-
);
|
|
4655
|
-
} catch (error) {
|
|
4656
|
-
throw new Error("Login failed");
|
|
4657
|
-
}
|
|
4658
|
-
};
|
|
4659
|
-
const signOut = async () => {
|
|
4660
|
-
dispatch(setMenuList([]));
|
|
4661
|
-
dispatch(setDataUser2({}));
|
|
4662
|
-
dispatch(setProfile2({}));
|
|
4663
|
-
setAccessToken(null);
|
|
4664
|
-
};
|
|
4665
|
-
return {
|
|
4666
|
-
signIn,
|
|
4667
|
-
signOut,
|
|
4668
|
-
accessToken,
|
|
4669
|
-
isLoading
|
|
4670
|
-
};
|
|
4671
|
-
};
|
|
4672
|
-
|
|
4673
|
-
// src/hooks/core/use-app-provider.tsx
|
|
4674
|
-
import { createContext, useContext, useMemo as useMemo7 } from "react";
|
|
4375
|
+
import { useMemo as useMemo3 } from "react";
|
|
4675
4376
|
|
|
4676
4377
|
// src/hooks/core/use-company.ts
|
|
4677
4378
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
4678
|
-
import { useEffect as
|
|
4679
|
-
import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
|
|
4680
|
-
import {
|
|
4681
|
-
useGetCurrentCompany,
|
|
4682
|
-
useGetCompanyInfo
|
|
4683
|
-
} from "@fctc/interface-logic/hooks";
|
|
4684
|
-
var useCompany = (accessToken) => {
|
|
4685
|
-
const getCurrentCompany = useGetCurrentCompany();
|
|
4686
|
-
const fetchCurrentCompany = async () => {
|
|
4687
|
-
return await getCurrentCompany.mutateAsync();
|
|
4688
|
-
};
|
|
4689
|
-
const currentCompany = useQuery3({
|
|
4690
|
-
queryKey: ["currentCompany", accessToken],
|
|
4691
|
-
queryFn: fetchCurrentCompany,
|
|
4692
|
-
enabled: !!accessToken
|
|
4693
|
-
});
|
|
4694
|
-
const current_company_id = useMemo6(() => {
|
|
4695
|
-
return currentCompany.data?.current_company_id;
|
|
4696
|
-
}, [currentCompany.data]);
|
|
4697
|
-
useEffect7(() => {
|
|
4698
|
-
if (current_company_id) {
|
|
4699
|
-
const companyIDs = [current_company_id];
|
|
4700
|
-
const env = getEnv5();
|
|
4701
|
-
env.setAllowCompanies([...companyIDs]);
|
|
4702
|
-
env.setCompanies(companyIDs);
|
|
4703
|
-
}
|
|
4704
|
-
}, [current_company_id]);
|
|
4705
|
-
const getCompanyInfo = useGetCompanyInfo();
|
|
4706
|
-
const companyInfo = useQuery3({
|
|
4707
|
-
queryKey: ["companyInfoQuery", current_company_id, accessToken],
|
|
4708
|
-
queryFn: () => getCompanyInfo.mutateAsync(Number(current_company_id)),
|
|
4709
|
-
enabled: !!current_company_id && !!accessToken
|
|
4710
|
-
});
|
|
4711
|
-
useEffect7(() => {
|
|
4712
|
-
if (companyInfo.data) {
|
|
4713
|
-
const companyInfoData = companyInfo.data;
|
|
4714
|
-
if (companyInfoData?.length) {
|
|
4715
|
-
const env = getEnv5();
|
|
4716
|
-
env.setDefaultCompany(companyInfoData[0]);
|
|
4717
|
-
}
|
|
4718
|
-
}
|
|
4719
|
-
}, [companyInfo.data]);
|
|
4720
|
-
return {
|
|
4721
|
-
currentCompany,
|
|
4722
|
-
companyInfo,
|
|
4723
|
-
context: { allowed_company_ids: [current_company_id] }
|
|
4724
|
-
};
|
|
4725
|
-
};
|
|
4726
|
-
var use_company_default = useCompany;
|
|
4379
|
+
import { useEffect as useEffect5, useMemo as useMemo4 } from "react";
|
|
4727
4380
|
|
|
4728
4381
|
// src/hooks/core/use-app-provider.tsx
|
|
4729
|
-
import { evalJSONContext } from "@fctc/interface-logic/utils";
|
|
4730
4382
|
import { jsx } from "react/jsx-runtime";
|
|
4731
4383
|
var AppProviderInitialValue = {
|
|
4732
|
-
config: {},
|
|
4733
4384
|
user: {},
|
|
4734
|
-
auth: {},
|
|
4735
4385
|
company: {},
|
|
4736
4386
|
action: {},
|
|
4737
4387
|
menu: {},
|
|
4738
|
-
view: {}
|
|
4739
|
-
list: {}
|
|
4388
|
+
view: {}
|
|
4740
4389
|
};
|
|
4741
4390
|
var ReactContext = createContext(AppProviderInitialValue);
|
|
4742
|
-
var AppProvider = ({ children }) => {
|
|
4743
|
-
const config = useConfig({});
|
|
4744
|
-
const auth = useAuth();
|
|
4745
|
-
const user = useUser(auth.accessToken);
|
|
4746
|
-
const company = use_company_default(auth.accessToken);
|
|
4747
|
-
const menuContext = useMemo7(() => {
|
|
4748
|
-
return combineContexts([user.context, company.context]);
|
|
4749
|
-
}, [user.context, company.context]);
|
|
4750
|
-
const menu = useMenu({ context: menuContext });
|
|
4751
|
-
const action = useMemo7(() => {
|
|
4752
|
-
return menu.state.action;
|
|
4753
|
-
}, [menu.state.action]);
|
|
4754
|
-
const viewContext = useMemo7(() => {
|
|
4755
|
-
return combineContexts([
|
|
4756
|
-
menuContext,
|
|
4757
|
-
{ ...evalJSONContext(action?.result?.context) }
|
|
4758
|
-
]);
|
|
4759
|
-
}, [menuContext, action?.result?.context]);
|
|
4760
|
-
const view = useViewV2({
|
|
4761
|
-
action,
|
|
4762
|
-
context: viewContext
|
|
4763
|
-
});
|
|
4764
|
-
const list = useListData({
|
|
4765
|
-
action,
|
|
4766
|
-
viewResponse: view.data,
|
|
4767
|
-
context: viewContext
|
|
4768
|
-
});
|
|
4769
|
-
return /* @__PURE__ */ jsx(
|
|
4770
|
-
ReactContext.Provider,
|
|
4771
|
-
{
|
|
4772
|
-
value: {
|
|
4773
|
-
config,
|
|
4774
|
-
auth,
|
|
4775
|
-
user,
|
|
4776
|
-
company,
|
|
4777
|
-
menu,
|
|
4778
|
-
list,
|
|
4779
|
-
action,
|
|
4780
|
-
view
|
|
4781
|
-
},
|
|
4782
|
-
children
|
|
4783
|
-
}
|
|
4784
|
-
);
|
|
4785
|
-
};
|
|
4786
|
-
var useAppProvider = () => {
|
|
4787
|
-
const context = useContext(ReactContext);
|
|
4788
|
-
if (!context) {
|
|
4789
|
-
return AppProviderInitialValue;
|
|
4790
|
-
}
|
|
4791
|
-
return context;
|
|
4792
|
-
};
|
|
4793
4391
|
|
|
4794
|
-
// src/hooks/core/use-
|
|
4795
|
-
import {
|
|
4796
|
-
import { useGetActionDetail } from "@fctc/interface-logic/hooks";
|
|
4797
|
-
import { useState as useState5 } from "react";
|
|
4392
|
+
// src/hooks/core/use-config.ts
|
|
4393
|
+
import { useEffect as useEffect6 } from "react";
|
|
4798
4394
|
|
|
4799
|
-
// src/
|
|
4800
|
-
|
|
4801
|
-
__export(utils_exports, {
|
|
4802
|
-
API_APP_URL: () => API_APP_URL,
|
|
4803
|
-
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
4804
|
-
STORAGES: () => STORAGES,
|
|
4805
|
-
combineContexts: () => combineContexts,
|
|
4806
|
-
convertFieldsToArray: () => convertFieldsToArray,
|
|
4807
|
-
countSum: () => countSum,
|
|
4808
|
-
getDateRange: () => getDateRange,
|
|
4809
|
-
languages: () => languages,
|
|
4810
|
-
mergeButtons: () => mergeButtons,
|
|
4811
|
-
setStorageItemAsync: () => setStorageItemAsync,
|
|
4812
|
-
useStorageState: () => useStorageState
|
|
4813
|
-
});
|
|
4814
|
-
__reExport(utils_exports, utils_star);
|
|
4815
|
-
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4395
|
+
// src/hooks/core/use-get-specification.ts
|
|
4396
|
+
import { useMemo as useMemo6 } from "react";
|
|
4816
4397
|
|
|
4817
|
-
// src/hooks/core/use-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
|
|
4843
|
-
const path2 = (0, utils_exports.formatUrlPath)({
|
|
4844
|
-
viewType,
|
|
4845
|
-
actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
|
|
4846
|
-
aid: menu?.action?.id?.id,
|
|
4847
|
-
model: queryActionDetail.res_model
|
|
4848
|
-
});
|
|
4849
|
-
setPath(path2);
|
|
4850
|
-
};
|
|
4851
|
-
return { handleClick, path, queryActionDetail };
|
|
4852
|
-
};
|
|
4398
|
+
// src/hooks/core/use-list-data.ts
|
|
4399
|
+
import { useMemo as useMemo7, useState as useState6 } from "react";
|
|
4400
|
+
import {
|
|
4401
|
+
evalJSONDomain,
|
|
4402
|
+
formatSortingString,
|
|
4403
|
+
isObjectEmpty as isObjectEmpty3
|
|
4404
|
+
} from "@fctc/interface-logic/utils";
|
|
4405
|
+
|
|
4406
|
+
// src/hooks/utils/use-click-outside.ts
|
|
4407
|
+
import { useEffect as useEffect7, useRef as useRef2 } from "react";
|
|
4408
|
+
|
|
4409
|
+
// src/hooks/utils/use-debounce.ts
|
|
4410
|
+
import { useEffect as useEffect8, useState as useState4 } from "react";
|
|
4411
|
+
function useDebounce(value, delay) {
|
|
4412
|
+
const [debouncedValue, setDebouncedValue] = useState4(value);
|
|
4413
|
+
useEffect8(() => {
|
|
4414
|
+
const handler = setTimeout(() => {
|
|
4415
|
+
setDebouncedValue(value);
|
|
4416
|
+
}, delay);
|
|
4417
|
+
return () => {
|
|
4418
|
+
clearTimeout(handler);
|
|
4419
|
+
};
|
|
4420
|
+
}, [value, delay]);
|
|
4421
|
+
return [debouncedValue];
|
|
4422
|
+
}
|
|
4853
4423
|
|
|
4854
|
-
// src/hooks/
|
|
4855
|
-
import { useCallback as
|
|
4424
|
+
// src/hooks/utils/use-get-rowids.ts
|
|
4425
|
+
import { useCallback as useCallback3, useEffect as useEffect9, useRef as useRef3, useState as useState5 } from "react";
|
|
4856
4426
|
var useGetRowIds = (tableRef) => {
|
|
4857
4427
|
function isElementVisible(el) {
|
|
4858
4428
|
const style = window.getComputedStyle(el);
|
|
@@ -4869,9 +4439,9 @@ var useGetRowIds = (tableRef) => {
|
|
|
4869
4439
|
}
|
|
4870
4440
|
return true;
|
|
4871
4441
|
}
|
|
4872
|
-
const [rowIds, setRowIds] =
|
|
4873
|
-
const lastRowIdsRef =
|
|
4874
|
-
const updateVisibleRowIds =
|
|
4442
|
+
const [rowIds, setRowIds] = useState5([]);
|
|
4443
|
+
const lastRowIdsRef = useRef3([]);
|
|
4444
|
+
const updateVisibleRowIds = useCallback3(() => {
|
|
4875
4445
|
const table = tableRef.current;
|
|
4876
4446
|
if (!table) return;
|
|
4877
4447
|
const rows = table.querySelectorAll("tr[data-row-id]");
|
|
@@ -4889,7 +4459,7 @@ var useGetRowIds = (tableRef) => {
|
|
|
4889
4459
|
setRowIds(uniqueIds);
|
|
4890
4460
|
}
|
|
4891
4461
|
}, [tableRef]);
|
|
4892
|
-
|
|
4462
|
+
useEffect9(() => {
|
|
4893
4463
|
const table = tableRef.current;
|
|
4894
4464
|
if (!table) return;
|
|
4895
4465
|
const mutationObserver = new MutationObserver(() => {
|
|
@@ -4917,66 +4487,11 @@ var useGetRowIds = (tableRef) => {
|
|
|
4917
4487
|
return { rowIds, refresh: updateVisibleRowIds };
|
|
4918
4488
|
};
|
|
4919
4489
|
|
|
4920
|
-
// src/hooks/utils/use-click-outside.ts
|
|
4921
|
-
import { useEffect as useEffect9, useRef as useRef3 } from "react";
|
|
4922
|
-
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
4923
|
-
var useClickOutside = ({
|
|
4924
|
-
handler,
|
|
4925
|
-
events = DEFAULT_EVENTS,
|
|
4926
|
-
nodes = [],
|
|
4927
|
-
refs
|
|
4928
|
-
}) => {
|
|
4929
|
-
const ref = useRef3(null);
|
|
4930
|
-
useEffect9(() => {
|
|
4931
|
-
const listener = (event) => {
|
|
4932
|
-
const { target } = event;
|
|
4933
|
-
if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
|
|
4934
|
-
return;
|
|
4935
|
-
}
|
|
4936
|
-
if (!(target instanceof HTMLElement)) return;
|
|
4937
|
-
const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
|
|
4938
|
-
const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
|
|
4939
|
-
if (shouldTrigger && !shouldIgnore) {
|
|
4940
|
-
handler(event);
|
|
4941
|
-
}
|
|
4942
|
-
};
|
|
4943
|
-
events.forEach((event) => document.addEventListener(event, listener));
|
|
4944
|
-
return () => {
|
|
4945
|
-
events.forEach((event) => document.removeEventListener(event, listener));
|
|
4946
|
-
};
|
|
4947
|
-
}, [handler, nodes, events]);
|
|
4948
|
-
return ref;
|
|
4949
|
-
};
|
|
4950
|
-
|
|
4951
|
-
// src/hooks/utils/use-debounce.ts
|
|
4952
|
-
import { useEffect as useEffect10, useState as useState7 } from "react";
|
|
4953
|
-
function useDebounce(value, delay) {
|
|
4954
|
-
const [debouncedValue, setDebouncedValue] = useState7(value);
|
|
4955
|
-
useEffect10(() => {
|
|
4956
|
-
const handler = setTimeout(() => {
|
|
4957
|
-
setDebouncedValue(value);
|
|
4958
|
-
}, delay);
|
|
4959
|
-
return () => {
|
|
4960
|
-
clearTimeout(handler);
|
|
4961
|
-
};
|
|
4962
|
-
}, [value, delay]);
|
|
4963
|
-
return [debouncedValue];
|
|
4964
|
-
}
|
|
4965
|
-
|
|
4966
|
-
// src/hooks.ts
|
|
4967
|
-
__reExport(hooks_exports, hooks_star);
|
|
4968
|
-
import * as hooks_star from "@fctc/interface-logic/hooks";
|
|
4969
|
-
|
|
4970
4490
|
// src/store.ts
|
|
4971
4491
|
var store_exports = {};
|
|
4972
4492
|
__reExport(store_exports, store_star);
|
|
4973
4493
|
import * as store_star from "@fctc/interface-logic/store";
|
|
4974
4494
|
|
|
4975
|
-
// src/provider.ts
|
|
4976
|
-
var provider_exports = {};
|
|
4977
|
-
__reExport(provider_exports, provider_star);
|
|
4978
|
-
import * as provider_star from "@fctc/interface-logic/provider";
|
|
4979
|
-
|
|
4980
4495
|
// src/widget/basic/many2one-field/controller.ts
|
|
4981
4496
|
var many2oneFieldController = (props) => {
|
|
4982
4497
|
const {
|
|
@@ -4993,13 +4508,13 @@ var many2oneFieldController = (props) => {
|
|
|
4993
4508
|
showDetail
|
|
4994
4509
|
} = props;
|
|
4995
4510
|
const { env } = (0, provider_exports.useEnv)();
|
|
4996
|
-
const [options, setOptions] =
|
|
4997
|
-
const [inputValue, setInputValue] =
|
|
4511
|
+
const [options, setOptions] = useState7([]);
|
|
4512
|
+
const [inputValue, setInputValue] = useState7("");
|
|
4998
4513
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
4999
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
5000
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
5001
|
-
const [domainModal, setDomainModal] =
|
|
5002
|
-
const [domainObject, setDomainObject] =
|
|
4514
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
|
|
4515
|
+
const [tempSelectedOption, setTempSelectedOption] = useState7(null);
|
|
4516
|
+
const [domainModal, setDomainModal] = useState7(null);
|
|
4517
|
+
const [domainObject, setDomainObject] = useState7(null);
|
|
5003
4518
|
const actionData = sessionStorageUtils.getActionData();
|
|
5004
4519
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5005
4520
|
const initValue = methods?.getValues(name);
|
|
@@ -5009,7 +4524,7 @@ var many2oneFieldController = (props) => {
|
|
|
5009
4524
|
...fieldContext,
|
|
5010
4525
|
...env?.context
|
|
5011
4526
|
};
|
|
5012
|
-
const { useGetSelection:
|
|
4527
|
+
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5013
4528
|
const data = {
|
|
5014
4529
|
model: relation,
|
|
5015
4530
|
domain: domainObject,
|
|
@@ -5025,7 +4540,7 @@ var many2oneFieldController = (props) => {
|
|
|
5025
4540
|
data: dataOfSelection,
|
|
5026
4541
|
refetch,
|
|
5027
4542
|
isFetching
|
|
5028
|
-
} =
|
|
4543
|
+
} = useGetSelection3({
|
|
5029
4544
|
data,
|
|
5030
4545
|
queryKey,
|
|
5031
4546
|
enabled: false
|
|
@@ -5036,12 +4551,12 @@ var many2oneFieldController = (props) => {
|
|
|
5036
4551
|
label: val?.display_name || val?.name
|
|
5037
4552
|
})) || [];
|
|
5038
4553
|
}, [dataOfSelection]);
|
|
5039
|
-
|
|
4554
|
+
useEffect10(() => {
|
|
5040
4555
|
setOptions(selectOptions);
|
|
5041
4556
|
setDomainModal(domainObject);
|
|
5042
4557
|
if (relation === "student.subject") (0, store_exports.setListSubject)(selectOptions);
|
|
5043
4558
|
}, [selectOptions]);
|
|
5044
|
-
|
|
4559
|
+
useEffect10(() => {
|
|
5045
4560
|
setDomainObject(
|
|
5046
4561
|
(0, utils_exports.evalJSONDomain)(
|
|
5047
4562
|
domain,
|
|
@@ -5049,7 +4564,7 @@ var many2oneFieldController = (props) => {
|
|
|
5049
4564
|
)
|
|
5050
4565
|
);
|
|
5051
4566
|
}, [domain, formValues]);
|
|
5052
|
-
|
|
4567
|
+
useEffect10(() => {
|
|
5053
4568
|
if (!propValue && tempSelectedOption) {
|
|
5054
4569
|
methods.setValue(name, null);
|
|
5055
4570
|
setTempSelectedOption(null);
|
|
@@ -5060,10 +4575,10 @@ var many2oneFieldController = (props) => {
|
|
|
5060
4575
|
});
|
|
5061
4576
|
}
|
|
5062
4577
|
}, [propValue]);
|
|
5063
|
-
const fetchMoreOptions =
|
|
4578
|
+
const fetchMoreOptions = useCallback4(() => {
|
|
5064
4579
|
refetch();
|
|
5065
4580
|
}, [refetch]);
|
|
5066
|
-
|
|
4581
|
+
useEffect10(() => {
|
|
5067
4582
|
if (debouncedInputValue) {
|
|
5068
4583
|
const filteredDomain = [...domainObject ?? []]?.filter(
|
|
5069
4584
|
(d) => !(Array.isArray(d) && d[0] === "name" && d[1] === "ilike")
|
|
@@ -5078,7 +4593,7 @@ var many2oneFieldController = (props) => {
|
|
|
5078
4593
|
}, 50);
|
|
5079
4594
|
}
|
|
5080
4595
|
}, [debouncedInputValue]);
|
|
5081
|
-
const handleChooseRecord =
|
|
4596
|
+
const handleChooseRecord = useCallback4(
|
|
5082
4597
|
(idRecord) => {
|
|
5083
4598
|
const newOption = options.find(
|
|
5084
4599
|
(option) => option.value === idRecord
|
|
@@ -5103,8 +4618,8 @@ var many2oneFieldController = (props) => {
|
|
|
5103
4618
|
},
|
|
5104
4619
|
[options, methods, name, onChange]
|
|
5105
4620
|
);
|
|
5106
|
-
const handleClose =
|
|
5107
|
-
const handleSelectChange =
|
|
4621
|
+
const handleClose = useCallback4(() => setIsShowModalMany2Many(false), []);
|
|
4622
|
+
const handleSelectChange = useCallback4(
|
|
5108
4623
|
(selectedOption) => {
|
|
5109
4624
|
if (!selectedOption) {
|
|
5110
4625
|
methods.setValue(name, null, { shouldDirty: true });
|
|
@@ -5151,16 +4666,16 @@ var many2oneFieldController = (props) => {
|
|
|
5151
4666
|
};
|
|
5152
4667
|
|
|
5153
4668
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5154
|
-
import { getEnv as
|
|
5155
|
-
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
4669
|
+
import { getEnv as getEnv2 } from "@fctc/interface-logic/environment";
|
|
4670
|
+
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5156
4671
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5157
4672
|
var many2oneButtonController = (props) => {
|
|
5158
4673
|
const { domain, methods, relation } = props;
|
|
5159
4674
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5160
|
-
const env =
|
|
4675
|
+
const env = getEnv2();
|
|
5161
4676
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5162
4677
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5163
|
-
const { data: dataOfSelection } =
|
|
4678
|
+
const { data: dataOfSelection } = useGetSelection2({
|
|
5164
4679
|
data: {
|
|
5165
4680
|
model: relation ?? "",
|
|
5166
4681
|
domain: domainObject,
|
|
@@ -5178,7 +4693,7 @@ var many2oneButtonController = (props) => {
|
|
|
5178
4693
|
};
|
|
5179
4694
|
|
|
5180
4695
|
// src/widget/basic/many2many-field/controller.ts
|
|
5181
|
-
import { useEffect as
|
|
4696
|
+
import { useEffect as useEffect11, useMemo as useMemo9, useState as useState8 } from "react";
|
|
5182
4697
|
import {
|
|
5183
4698
|
evalJSONContext as evalJSONContext4,
|
|
5184
4699
|
evalJSONDomain as evalJSONDomain4,
|
|
@@ -5191,16 +4706,16 @@ var many2manyFieldController = (props) => {
|
|
|
5191
4706
|
context,
|
|
5192
4707
|
options,
|
|
5193
4708
|
tab,
|
|
5194
|
-
setSelectedRowKeys:
|
|
4709
|
+
setSelectedRowKeys: setSelectedRowKeys2,
|
|
5195
4710
|
groupByDomain,
|
|
5196
4711
|
enabled: enabledCallAPI,
|
|
5197
4712
|
actionData
|
|
5198
4713
|
} = props;
|
|
5199
4714
|
const { env } = (0, provider_exports.useEnv)();
|
|
5200
|
-
const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView } = (0, provider_exports.useService)();
|
|
5201
|
-
const [order, setOrder] =
|
|
5202
|
-
const [page, setPage] =
|
|
5203
|
-
const [domainMany2Many, setDomainMany2Many] =
|
|
4715
|
+
const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
|
|
4716
|
+
const [order, setOrder] = useState8();
|
|
4717
|
+
const [page, setPage] = useState8(0);
|
|
4718
|
+
const [domainMany2Many, setDomainMany2Many] = useState8(null);
|
|
5204
4719
|
const [debouncedPage] = useDebounce(page, 500);
|
|
5205
4720
|
const contextObject = {
|
|
5206
4721
|
...env.context,
|
|
@@ -5227,7 +4742,7 @@ var many2manyFieldController = (props) => {
|
|
|
5227
4742
|
}),
|
|
5228
4743
|
[relation, viewResponse]
|
|
5229
4744
|
);
|
|
5230
|
-
const initModel =
|
|
4745
|
+
const initModel = useModel();
|
|
5231
4746
|
const modelInstance = useMemo9(() => {
|
|
5232
4747
|
if (viewResponse) {
|
|
5233
4748
|
return initModel.initModel(baseModel);
|
|
@@ -5277,13 +4792,13 @@ var many2manyFieldController = (props) => {
|
|
|
5277
4792
|
isFetched,
|
|
5278
4793
|
isPlaceholderData
|
|
5279
4794
|
} = useGetListData2(data, queryKey, enabled);
|
|
5280
|
-
|
|
4795
|
+
useEffect11(() => {
|
|
5281
4796
|
if (viewResponse) {
|
|
5282
4797
|
fetchData();
|
|
5283
4798
|
}
|
|
5284
4799
|
return () => {
|
|
5285
4800
|
setPage(0);
|
|
5286
|
-
|
|
4801
|
+
setSelectedRowKeys2([]);
|
|
5287
4802
|
setDomainMany2Many(null);
|
|
5288
4803
|
};
|
|
5289
4804
|
}, [viewResponse]);
|
|
@@ -5344,7 +4859,7 @@ var many2manyTagsController = (props) => {
|
|
|
5344
4859
|
} = props;
|
|
5345
4860
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5346
4861
|
const { env } = (0, provider_exports.useEnv)();
|
|
5347
|
-
const { useGetSelection:
|
|
4862
|
+
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5348
4863
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5349
4864
|
const domainObject = useMemo10(
|
|
5350
4865
|
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
@@ -5363,7 +4878,7 @@ var many2manyTagsController = (props) => {
|
|
|
5363
4878
|
enabled: true,
|
|
5364
4879
|
context: env.context
|
|
5365
4880
|
};
|
|
5366
|
-
const { data: dataOfSelection } =
|
|
4881
|
+
const { data: dataOfSelection } = useGetSelection3({
|
|
5367
4882
|
data,
|
|
5368
4883
|
queryKey: [`data_${relation}`, domainObject]
|
|
5369
4884
|
});
|
|
@@ -5388,7 +4903,7 @@ var many2manyTagsController = (props) => {
|
|
|
5388
4903
|
};
|
|
5389
4904
|
|
|
5390
4905
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5391
|
-
import { useState as
|
|
4906
|
+
import { useState as useState9 } from "react";
|
|
5392
4907
|
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5393
4908
|
var durationController = (props) => {
|
|
5394
4909
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
@@ -5397,10 +4912,10 @@ var durationController = (props) => {
|
|
|
5397
4912
|
name: "",
|
|
5398
4913
|
fold: ""
|
|
5399
4914
|
};
|
|
5400
|
-
const { useGetListData: useGetListData2, useChangeStatus } = (0, provider_exports.useService)();
|
|
4915
|
+
const { useGetListData: useGetListData2, useChangeStatus: useChangeStatus2 } = (0, provider_exports.useService)();
|
|
5401
4916
|
const { env } = (0, provider_exports.useEnv)();
|
|
5402
|
-
const [disabled, setDisabled] =
|
|
5403
|
-
const [modelStatus, setModalStatus] =
|
|
4917
|
+
const [disabled, setDisabled] = useState9(false);
|
|
4918
|
+
const [modelStatus, setModalStatus] = useState9(false);
|
|
5404
4919
|
const queryKey = [`data-status-duration`, specification];
|
|
5405
4920
|
const listDataProps = {
|
|
5406
4921
|
model: relation,
|
|
@@ -5420,7 +4935,7 @@ var durationController = (props) => {
|
|
|
5420
4935
|
queryKey,
|
|
5421
4936
|
enabled
|
|
5422
4937
|
);
|
|
5423
|
-
const { mutate: fetchChangeStatus } =
|
|
4938
|
+
const { mutate: fetchChangeStatus } = useChangeStatus2();
|
|
5424
4939
|
const handleClick = async (stage_id) => {
|
|
5425
4940
|
setDisabled(true);
|
|
5426
4941
|
if (stage_id) {
|
|
@@ -5460,8 +4975,8 @@ var priorityFieldController = (props) => {
|
|
|
5460
4975
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
5461
4976
|
const _context = { ...evalJSONContext6(actionData?.context) };
|
|
5462
4977
|
const contextObject = { ...context, ..._context };
|
|
5463
|
-
const { useSave:
|
|
5464
|
-
const { mutateAsync: fetchSave } =
|
|
4978
|
+
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
4979
|
+
const { mutateAsync: fetchSave } = useSave3();
|
|
5465
4980
|
const savePriorities = async ({
|
|
5466
4981
|
value,
|
|
5467
4982
|
resetPriority
|
|
@@ -5490,10 +5005,10 @@ var priorityFieldController = (props) => {
|
|
|
5490
5005
|
};
|
|
5491
5006
|
|
|
5492
5007
|
// src/widget/basic/download-file-field/controller.ts
|
|
5493
|
-
import { useId, useState as
|
|
5008
|
+
import { useId, useState as useState10 } from "react";
|
|
5494
5009
|
var downloadFileController = () => {
|
|
5495
5010
|
const inputId = useId();
|
|
5496
|
-
const [file, setFile] =
|
|
5011
|
+
const [file, setFile] = useState10(null);
|
|
5497
5012
|
const handleFileChange = (e) => {
|
|
5498
5013
|
setFile(e.target.files[0]);
|
|
5499
5014
|
};
|
|
@@ -6425,11 +5940,11 @@ var dateFieldController = (props) => {
|
|
|
6425
5940
|
};
|
|
6426
5941
|
|
|
6427
5942
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6428
|
-
import { useState as
|
|
5943
|
+
import { useState as useState11 } from "react";
|
|
6429
5944
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6430
5945
|
var copyLinkButtonController = (props) => {
|
|
6431
5946
|
const { value, defaultValue } = props;
|
|
6432
|
-
const [isCopied, setIsCopied] =
|
|
5947
|
+
const [isCopied, setIsCopied] = useState11(false);
|
|
6433
5948
|
const handleCopyToClipboard = async (value2) => {
|
|
6434
5949
|
await copyTextToClipboard(value2);
|
|
6435
5950
|
setIsCopied(true);
|
|
@@ -6448,11 +5963,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
|
|
|
6448
5963
|
var colorFieldController = (props) => {
|
|
6449
5964
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6450
5965
|
const { env } = (0, provider_exports.useEnv)();
|
|
6451
|
-
const { useSave:
|
|
5966
|
+
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
6452
5967
|
const _context = { ...evalJSONContext7(actionData?.context) || {} };
|
|
6453
5968
|
const contextObject = { ...env.context, ..._context };
|
|
6454
5969
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6455
|
-
const { mutate: onSave } =
|
|
5970
|
+
const { mutate: onSave } = useSave3();
|
|
6456
5971
|
const savePickColor = async (colorObject) => {
|
|
6457
5972
|
const { id } = colorObject;
|
|
6458
5973
|
if (value === id) return;
|
|
@@ -6477,14 +5992,14 @@ var colorFieldController = (props) => {
|
|
|
6477
5992
|
};
|
|
6478
5993
|
|
|
6479
5994
|
// src/widget/basic/binary-field/controller.ts
|
|
6480
|
-
import { useEffect as
|
|
5995
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
|
|
6481
5996
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6482
5997
|
var binaryFieldController = (props) => {
|
|
6483
5998
|
const { name, methods, readonly = false, value } = props;
|
|
6484
5999
|
const inputId = useId2();
|
|
6485
|
-
const [selectedImage, setSelectedImage] =
|
|
6486
|
-
const [initialImage, setInitialImage] =
|
|
6487
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6000
|
+
const [selectedImage, setSelectedImage] = useState12(null);
|
|
6001
|
+
const [initialImage, setInitialImage] = useState12(value || null);
|
|
6002
|
+
const [isInsideTable, setIsInsideTable] = useState12(false);
|
|
6488
6003
|
const { setValue } = methods;
|
|
6489
6004
|
const binaryRef = useRef4(null);
|
|
6490
6005
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6548,14 +6063,14 @@ var binaryFieldController = (props) => {
|
|
|
6548
6063
|
else if (base64.startsWith("UklGR")) mimeType = "image/webp";
|
|
6549
6064
|
return mimeType ? `data:${mimeType};base64,${base64}` : null;
|
|
6550
6065
|
};
|
|
6551
|
-
|
|
6066
|
+
useEffect12(() => {
|
|
6552
6067
|
return () => {
|
|
6553
6068
|
if (selectedImage) {
|
|
6554
6069
|
URL.revokeObjectURL(selectedImage);
|
|
6555
6070
|
}
|
|
6556
6071
|
};
|
|
6557
6072
|
}, [selectedImage]);
|
|
6558
|
-
|
|
6073
|
+
useEffect12(() => {
|
|
6559
6074
|
if (binaryRef.current) {
|
|
6560
6075
|
const isInsideTable2 = !!binaryRef.current.closest("table");
|
|
6561
6076
|
setIsInsideTable(isInsideTable2);
|
|
@@ -6575,11 +6090,16 @@ var binaryFieldController = (props) => {
|
|
|
6575
6090
|
};
|
|
6576
6091
|
|
|
6577
6092
|
// src/widget/advance/table/table-head/controller.ts
|
|
6578
|
-
import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6579
6093
|
import { useMemo as useMemo11, useRef as useRef5 } from "react";
|
|
6580
6094
|
var tableHeadController = (props) => {
|
|
6581
|
-
const {
|
|
6582
|
-
|
|
6095
|
+
const {
|
|
6096
|
+
typeTable,
|
|
6097
|
+
rows,
|
|
6098
|
+
tableRef,
|
|
6099
|
+
groupByList,
|
|
6100
|
+
selectedRowKeys,
|
|
6101
|
+
setSelectedRowKeys: setSelectedRowKeys2
|
|
6102
|
+
} = props;
|
|
6583
6103
|
const { rowIds: recordIds } = useGetRowIds(tableRef);
|
|
6584
6104
|
const selectedRowKeysRef = useRef5(recordIds);
|
|
6585
6105
|
const isGroupTable = typeTable === "group";
|
|
@@ -6605,27 +6125,27 @@ var tableHeadController = (props) => {
|
|
|
6605
6125
|
const handleCheckBoxAll = (event) => {
|
|
6606
6126
|
if (event?.target?.checked && typeTable === "list") {
|
|
6607
6127
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
6608
|
-
|
|
6128
|
+
setSelectedRowKeys2(allRowKeys);
|
|
6609
6129
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
6610
6130
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
6611
6131
|
const ids = Array.from(rowsIDs)?.map(
|
|
6612
6132
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
6613
6133
|
);
|
|
6614
6134
|
if (ids?.length > 0) {
|
|
6615
|
-
|
|
6135
|
+
setSelectedRowKeys2(ids);
|
|
6616
6136
|
} else {
|
|
6617
6137
|
const sum = countSum(
|
|
6618
6138
|
rows,
|
|
6619
6139
|
typeof groupByList === "object" ? groupByList?.contexts?.[0]?.group_by : void 0
|
|
6620
6140
|
);
|
|
6621
6141
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
6622
|
-
|
|
6142
|
+
setSelectedRowKeys2(keys);
|
|
6623
6143
|
}
|
|
6624
6144
|
if (selectedRowKeysRef) {
|
|
6625
6145
|
selectedRowKeysRef.current = [];
|
|
6626
6146
|
}
|
|
6627
6147
|
} else {
|
|
6628
|
-
|
|
6148
|
+
setSelectedRowKeys2([]);
|
|
6629
6149
|
}
|
|
6630
6150
|
};
|
|
6631
6151
|
return {
|
|
@@ -6636,11 +6156,11 @@ var tableHeadController = (props) => {
|
|
|
6636
6156
|
};
|
|
6637
6157
|
|
|
6638
6158
|
// src/widget/advance/table/table-view/controller.ts
|
|
6639
|
-
import { useEffect as
|
|
6159
|
+
import { useEffect as useEffect13, useState as useState13 } from "react";
|
|
6640
6160
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6641
6161
|
var tableController = ({ data }) => {
|
|
6642
|
-
const [rows, setRows] =
|
|
6643
|
-
const [columns, setColumns] =
|
|
6162
|
+
const [rows, setRows] = useState13(null);
|
|
6163
|
+
const [columns, setColumns] = useState13(null);
|
|
6644
6164
|
const dataModelFields = data?.fields?.map((field) => {
|
|
6645
6165
|
return {
|
|
6646
6166
|
...data.dataModel?.[field?.name],
|
|
@@ -6668,7 +6188,7 @@ var tableController = ({ data }) => {
|
|
|
6668
6188
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6669
6189
|
});
|
|
6670
6190
|
};
|
|
6671
|
-
|
|
6191
|
+
useEffect13(() => {
|
|
6672
6192
|
setRows(transformData(data.records));
|
|
6673
6193
|
}, [data.records]);
|
|
6674
6194
|
const handleGetColumns = () => {
|
|
@@ -6689,7 +6209,7 @@ var tableController = ({ data }) => {
|
|
|
6689
6209
|
}
|
|
6690
6210
|
return cols;
|
|
6691
6211
|
};
|
|
6692
|
-
|
|
6212
|
+
useEffect13(() => {
|
|
6693
6213
|
if (!columns) {
|
|
6694
6214
|
setColumns(handleGetColumns());
|
|
6695
6215
|
}
|
|
@@ -6706,12 +6226,14 @@ var tableController = ({ data }) => {
|
|
|
6706
6226
|
});
|
|
6707
6227
|
setColumns(tempColumn);
|
|
6708
6228
|
};
|
|
6709
|
-
|
|
6710
|
-
|
|
6711
|
-
setColumns(null);
|
|
6712
|
-
return () => {
|
|
6713
|
-
setRows(null);
|
|
6229
|
+
useEffect13(() => {
|
|
6230
|
+
if (data?.fields != null) {
|
|
6714
6231
|
setColumns(null);
|
|
6232
|
+
}
|
|
6233
|
+
return () => {
|
|
6234
|
+
if (data?.fields != null) {
|
|
6235
|
+
setColumns(null);
|
|
6236
|
+
}
|
|
6715
6237
|
};
|
|
6716
6238
|
}, [data?.fields]);
|
|
6717
6239
|
return {
|
|
@@ -6723,10 +6245,10 @@ var tableController = ({ data }) => {
|
|
|
6723
6245
|
};
|
|
6724
6246
|
|
|
6725
6247
|
// src/widget/advance/table/table-group/controller.ts
|
|
6726
|
-
import { useEffect as
|
|
6248
|
+
import { useEffect as useEffect14, useMemo as useMemo12, useState as useState14 } from "react";
|
|
6727
6249
|
import {
|
|
6728
|
-
useAppSelector as
|
|
6729
|
-
selectList
|
|
6250
|
+
useAppSelector as useAppSelector2,
|
|
6251
|
+
selectList
|
|
6730
6252
|
} from "@fctc/interface-logic/store";
|
|
6731
6253
|
var tableGroupController = (props) => {
|
|
6732
6254
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -6741,12 +6263,12 @@ var tableGroupController = (props) => {
|
|
|
6741
6263
|
context,
|
|
6742
6264
|
checkedAll,
|
|
6743
6265
|
groupByList,
|
|
6744
|
-
setSelectedRowKeys:
|
|
6266
|
+
setSelectedRowKeys: setSelectedRowKeys2
|
|
6745
6267
|
} = props;
|
|
6746
|
-
const [pageGroup, setPageGroup] =
|
|
6747
|
-
const { selectedRowKeys } =
|
|
6748
|
-
const [isShowGroup, setIsShowGroup] =
|
|
6749
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
6268
|
+
const [pageGroup, setPageGroup] = useState14(0);
|
|
6269
|
+
const { selectedRowKeys } = useAppSelector2(selectList);
|
|
6270
|
+
const [isShowGroup, setIsShowGroup] = useState14(false);
|
|
6271
|
+
const [colEmptyGroup, setColEmptyGroup] = useState14({
|
|
6750
6272
|
fromStart: 1,
|
|
6751
6273
|
fromEnd: 1
|
|
6752
6274
|
});
|
|
@@ -6823,25 +6345,25 @@ var tableGroupController = (props) => {
|
|
|
6823
6345
|
const filteredIds = selectedRowKeys.filter(
|
|
6824
6346
|
(id) => !ids.includes(id)
|
|
6825
6347
|
);
|
|
6826
|
-
|
|
6348
|
+
setSelectedRowKeys2(filteredIds);
|
|
6827
6349
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull) {
|
|
6828
6350
|
const clonedKeys = [...selectedRowKeys];
|
|
6829
|
-
|
|
6830
|
-
setTimeout(() =>
|
|
6351
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
6352
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
6831
6353
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
6832
6354
|
console.log("abc");
|
|
6833
6355
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
6834
|
-
|
|
6356
|
+
setSelectedRowKeys2(filteredKeys);
|
|
6835
6357
|
}
|
|
6836
6358
|
toggleShowGroup();
|
|
6837
6359
|
};
|
|
6838
|
-
|
|
6360
|
+
useEffect14(() => {
|
|
6839
6361
|
if (!isDataGroupFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
6840
6362
|
return;
|
|
6841
6363
|
}
|
|
6842
6364
|
const clonedKeys = [...selectedRowKeys];
|
|
6843
|
-
|
|
6844
|
-
setTimeout(() =>
|
|
6365
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
6366
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
6845
6367
|
}, [isDataGroupFetched]);
|
|
6846
6368
|
return {
|
|
6847
6369
|
onExpandChildGroup,
|
|
@@ -6868,7 +6390,7 @@ import {
|
|
|
6868
6390
|
evalJSONDomain as evalJSONDomain7,
|
|
6869
6391
|
validateAndParseDate
|
|
6870
6392
|
} from "@fctc/interface-logic/utils";
|
|
6871
|
-
import { useCallback as
|
|
6393
|
+
import { useCallback as useCallback5, useEffect as useEffect15, useState as useState15 } from "react";
|
|
6872
6394
|
var searchController = ({
|
|
6873
6395
|
viewData,
|
|
6874
6396
|
model,
|
|
@@ -6877,12 +6399,12 @@ var searchController = ({
|
|
|
6877
6399
|
fieldsList
|
|
6878
6400
|
}) => {
|
|
6879
6401
|
const { env } = (0, provider_exports.useEnv)();
|
|
6880
|
-
const [filterBy, setFilterBy] =
|
|
6881
|
-
const [searchBy, setSearchBy] =
|
|
6882
|
-
const [groupBy, setGroupBy] =
|
|
6883
|
-
const [selectedTags, setSelectedTags] =
|
|
6884
|
-
const [searchString, setSearchString] =
|
|
6885
|
-
const [searchMap, setSearchMap] =
|
|
6402
|
+
const [filterBy, setFilterBy] = useState15(null);
|
|
6403
|
+
const [searchBy, setSearchBy] = useState15(null);
|
|
6404
|
+
const [groupBy, setGroupBy] = useState15(null);
|
|
6405
|
+
const [selectedTags, setSelectedTags] = useState15(null);
|
|
6406
|
+
const [searchString, setSearchString] = useState15("");
|
|
6407
|
+
const [searchMap, setSearchMap] = useState15({});
|
|
6886
6408
|
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
6887
6409
|
const contextSearch = { ...env.context, ...actionContext };
|
|
6888
6410
|
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
@@ -6929,7 +6451,7 @@ var searchController = ({
|
|
|
6929
6451
|
}
|
|
6930
6452
|
}
|
|
6931
6453
|
};
|
|
6932
|
-
|
|
6454
|
+
useEffect15(() => {
|
|
6933
6455
|
fetchData();
|
|
6934
6456
|
}, [model, viewData]);
|
|
6935
6457
|
const onChangeSearchInput = (search_string) => {
|
|
@@ -7011,7 +6533,7 @@ var searchController = ({
|
|
|
7011
6533
|
return [...domain2];
|
|
7012
6534
|
}
|
|
7013
6535
|
};
|
|
7014
|
-
const setTagSearch =
|
|
6536
|
+
const setTagSearch = useCallback5(
|
|
7015
6537
|
(updatedMap) => {
|
|
7016
6538
|
if (!updatedMap) return;
|
|
7017
6539
|
const tagsSearch = Object.entries(updatedMap).map(
|
|
@@ -7074,20 +6596,11 @@ var searchController = ({
|
|
|
7074
6596
|
},
|
|
7075
6597
|
[searchMap]
|
|
7076
6598
|
);
|
|
7077
|
-
|
|
6599
|
+
useEffect15(() => {
|
|
7078
6600
|
setTagSearch(searchMap);
|
|
7079
6601
|
}, [searchMap]);
|
|
7080
6602
|
const handleAddTagSearch = (tag) => {
|
|
7081
|
-
const {
|
|
7082
|
-
domain: domain2,
|
|
7083
|
-
groupIndex,
|
|
7084
|
-
value,
|
|
7085
|
-
type,
|
|
7086
|
-
title,
|
|
7087
|
-
context: context2,
|
|
7088
|
-
active,
|
|
7089
|
-
dataIndex
|
|
7090
|
-
} = tag;
|
|
6603
|
+
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
7091
6604
|
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7092
6605
|
if (type === SearchType.FILTER) {
|
|
7093
6606
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|