@fctc/widget-logic 2.0.8 → 2.0.10
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 +12 -1
- package/dist/hooks.d.ts +12 -1
- package/dist/hooks.js +179 -6
- package/dist/hooks.mjs +179 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +256 -310
- package/dist/index.mjs +229 -292
- package/dist/types.d.mts +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/widget.d.mts +46 -34
- package/dist/widget.d.ts +46 -34
- package/dist/widget.js +246 -302
- package/dist/widget.mjs +223 -287
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -4072,7 +4072,6 @@ __export(index_exports, {
|
|
|
4072
4072
|
searchController: () => searchController,
|
|
4073
4073
|
setStorageItemAsync: () => setStorageItemAsync,
|
|
4074
4074
|
statusDropdownController: () => statusDropdownController,
|
|
4075
|
-
tableBodyController: () => tableBodyController,
|
|
4076
4075
|
tableController: () => tableController,
|
|
4077
4076
|
tableGroupController: () => tableGroupController,
|
|
4078
4077
|
tableHeadController: () => tableHeadController,
|
|
@@ -4086,6 +4085,7 @@ __export(index_exports, {
|
|
|
4086
4085
|
useGetRowIds: () => useGetRowIds,
|
|
4087
4086
|
useListData: () => useListData,
|
|
4088
4087
|
useMenu: () => useMenu,
|
|
4088
|
+
useMenuItem: () => useMenuItem,
|
|
4089
4089
|
useProfile: () => useProfile,
|
|
4090
4090
|
useSelectionState: () => useSelectionState,
|
|
4091
4091
|
useStorageState: () => useStorageState,
|
|
@@ -4106,6 +4106,7 @@ __export(hooks_exports, {
|
|
|
4106
4106
|
useDetail: () => useDetail,
|
|
4107
4107
|
useListData: () => useListData,
|
|
4108
4108
|
useMenu: () => useMenu,
|
|
4109
|
+
useMenuItem: () => useMenuItem,
|
|
4109
4110
|
useProfile: () => useProfile,
|
|
4110
4111
|
useUser: () => useUser,
|
|
4111
4112
|
useViewV2: () => useViewV2
|
|
@@ -4888,6 +4889,68 @@ var useAppProvider = () => {
|
|
|
4888
4889
|
return context;
|
|
4889
4890
|
};
|
|
4890
4891
|
|
|
4892
|
+
// src/hooks/core/use-menu-item.tsx
|
|
4893
|
+
import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
|
|
4894
|
+
import { useGetActionDetail } from "@fctc/interface-logic/hooks";
|
|
4895
|
+
import { useState as useState5 } from "react";
|
|
4896
|
+
|
|
4897
|
+
// src/utils.ts
|
|
4898
|
+
var utils_exports = {};
|
|
4899
|
+
__export(utils_exports, {
|
|
4900
|
+
API_APP_URL: () => API_APP_URL,
|
|
4901
|
+
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
4902
|
+
STORAGES: () => STORAGES,
|
|
4903
|
+
combineContexts: () => combineContexts,
|
|
4904
|
+
convertFieldsToArray: () => convertFieldsToArray,
|
|
4905
|
+
countSum: () => countSum,
|
|
4906
|
+
getDateRange: () => getDateRange,
|
|
4907
|
+
languages: () => languages,
|
|
4908
|
+
mergeButtons: () => mergeButtons,
|
|
4909
|
+
setStorageItemAsync: () => setStorageItemAsync,
|
|
4910
|
+
useGetRowIds: () => useGetRowIds,
|
|
4911
|
+
useSelectionState: () => useSelectionState,
|
|
4912
|
+
useStorageState: () => useStorageState
|
|
4913
|
+
});
|
|
4914
|
+
__reExport(utils_exports, utils_star);
|
|
4915
|
+
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4916
|
+
|
|
4917
|
+
// src/hooks/core/use-menu-item.tsx
|
|
4918
|
+
var useMenuItem = (props) => {
|
|
4919
|
+
const { menu, activeMenuId } = props;
|
|
4920
|
+
const model = menu?.action?.res_model;
|
|
4921
|
+
const aid = menu?.action?.id?.id;
|
|
4922
|
+
const id = menu?.id;
|
|
4923
|
+
const context = getEnv5().context;
|
|
4924
|
+
const queryActionDetail = useGetActionDetail({
|
|
4925
|
+
aid,
|
|
4926
|
+
id,
|
|
4927
|
+
model,
|
|
4928
|
+
context,
|
|
4929
|
+
enabled: true,
|
|
4930
|
+
queryKey: [`action-${aid}`]
|
|
4931
|
+
}).data;
|
|
4932
|
+
const [path, setPath] = useState5("");
|
|
4933
|
+
const handleClick = () => {
|
|
4934
|
+
if (location?.pathname === "/list/menu" && activeMenuId === menu?.id) {
|
|
4935
|
+
return;
|
|
4936
|
+
}
|
|
4937
|
+
const hasListView = queryActionDetail.views.some(
|
|
4938
|
+
([id2, type]) => type === "list"
|
|
4939
|
+
);
|
|
4940
|
+
const viewType = hasListView ? "list" : "form";
|
|
4941
|
+
const isAccountPayment = menu?.action?.res_model === "account.payment" && menu?.action?.id?.id === 1551;
|
|
4942
|
+
const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
|
|
4943
|
+
const path2 = (0, utils_exports.formatUrlPath)({
|
|
4944
|
+
viewType,
|
|
4945
|
+
actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
|
|
4946
|
+
aid: menu?.action?.id?.id,
|
|
4947
|
+
model: queryActionDetail.res_model
|
|
4948
|
+
});
|
|
4949
|
+
setPath(path2);
|
|
4950
|
+
};
|
|
4951
|
+
return { handleClick, path, queryActionDetail };
|
|
4952
|
+
};
|
|
4953
|
+
|
|
4891
4954
|
// src/hooks/utils/use-click-outside.ts
|
|
4892
4955
|
import { useEffect as useEffect7, useRef as useRef2 } from "react";
|
|
4893
4956
|
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
@@ -4920,9 +4983,9 @@ var useClickOutside = ({
|
|
|
4920
4983
|
};
|
|
4921
4984
|
|
|
4922
4985
|
// src/hooks/utils/use-debounce.ts
|
|
4923
|
-
import { useEffect as useEffect8, useState as
|
|
4986
|
+
import { useEffect as useEffect8, useState as useState6 } from "react";
|
|
4924
4987
|
function useDebounce(value, delay) {
|
|
4925
|
-
const [debouncedValue, setDebouncedValue] =
|
|
4988
|
+
const [debouncedValue, setDebouncedValue] = useState6(value);
|
|
4926
4989
|
useEffect8(() => {
|
|
4927
4990
|
const handler = setTimeout(() => {
|
|
4928
4991
|
setDebouncedValue(value);
|
|
@@ -5180,18 +5243,18 @@ var ChevronBottomIcon = ({
|
|
|
5180
5243
|
};
|
|
5181
5244
|
|
|
5182
5245
|
// src/widget/basic/status-dropdown-field/controller.ts
|
|
5183
|
-
import { useEffect as useEffect9, useRef as useRef3, useState as
|
|
5184
|
-
import { getEnv as
|
|
5246
|
+
import { useEffect as useEffect9, useRef as useRef3, useState as useState7 } from "react";
|
|
5247
|
+
import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
|
|
5185
5248
|
import { useSave } from "@fctc/interface-logic/hooks";
|
|
5186
5249
|
var statusDropdownController = (props) => {
|
|
5187
5250
|
const { selection, isForm, id, model, name, state, onRefetch } = props;
|
|
5188
|
-
const env =
|
|
5251
|
+
const env = getEnv6();
|
|
5189
5252
|
const colors = {
|
|
5190
5253
|
normal: "bg-[#e9ecef]",
|
|
5191
5254
|
done: "bg-primary",
|
|
5192
5255
|
blocked: "bg-red-500"
|
|
5193
5256
|
};
|
|
5194
|
-
const [isOpen, setIsOpen] =
|
|
5257
|
+
const [isOpen, setIsOpen] = useState7(false);
|
|
5195
5258
|
const buttonRef = useRef3(null);
|
|
5196
5259
|
useEffect9(() => {
|
|
5197
5260
|
const handleClickOutside = (event) => {
|
|
@@ -5234,27 +5297,7 @@ var statusDropdownController = (props) => {
|
|
|
5234
5297
|
};
|
|
5235
5298
|
|
|
5236
5299
|
// src/widget/basic/many2one-field/controller.ts
|
|
5237
|
-
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as
|
|
5238
|
-
|
|
5239
|
-
// src/utils.ts
|
|
5240
|
-
var utils_exports = {};
|
|
5241
|
-
__export(utils_exports, {
|
|
5242
|
-
API_APP_URL: () => API_APP_URL,
|
|
5243
|
-
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
5244
|
-
STORAGES: () => STORAGES,
|
|
5245
|
-
combineContexts: () => combineContexts,
|
|
5246
|
-
convertFieldsToArray: () => convertFieldsToArray,
|
|
5247
|
-
countSum: () => countSum,
|
|
5248
|
-
getDateRange: () => getDateRange,
|
|
5249
|
-
languages: () => languages,
|
|
5250
|
-
mergeButtons: () => mergeButtons,
|
|
5251
|
-
setStorageItemAsync: () => setStorageItemAsync,
|
|
5252
|
-
useGetRowIds: () => useGetRowIds,
|
|
5253
|
-
useSelectionState: () => useSelectionState,
|
|
5254
|
-
useStorageState: () => useStorageState
|
|
5255
|
-
});
|
|
5256
|
-
__reExport(utils_exports, utils_star2);
|
|
5257
|
-
import * as utils_star2 from "@fctc/interface-logic/utils";
|
|
5300
|
+
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
|
|
5258
5301
|
|
|
5259
5302
|
// src/provider.ts
|
|
5260
5303
|
var provider_exports = {};
|
|
@@ -5276,22 +5319,22 @@ var many2oneFieldController = (props) => {
|
|
|
5276
5319
|
options: fieldOptions,
|
|
5277
5320
|
showDetail
|
|
5278
5321
|
} = props;
|
|
5279
|
-
const
|
|
5280
|
-
const [
|
|
5322
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5323
|
+
const [options, setOptions] = useState8([]);
|
|
5324
|
+
const [inputValue, setInputValue] = useState8("");
|
|
5281
5325
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
5282
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
5283
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
5284
|
-
const [domainModal, setDomainModal] =
|
|
5285
|
-
const [domainObject, setDomainObject] =
|
|
5326
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
|
|
5327
|
+
const [tempSelectedOption, setTempSelectedOption] = useState8(null);
|
|
5328
|
+
const [domainModal, setDomainModal] = useState8(null);
|
|
5329
|
+
const [domainObject, setDomainObject] = useState8(null);
|
|
5286
5330
|
const actionData = sessionStorageUtils.getActionData();
|
|
5287
5331
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5288
|
-
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
5289
5332
|
const initValue = methods?.getValues(name);
|
|
5290
5333
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
5291
5334
|
const contextObject = {
|
|
5292
5335
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
5293
5336
|
...fieldContext,
|
|
5294
|
-
...context
|
|
5337
|
+
...env?.context
|
|
5295
5338
|
};
|
|
5296
5339
|
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5297
5340
|
const data = {
|
|
@@ -5435,13 +5478,13 @@ var many2oneFieldController = (props) => {
|
|
|
5435
5478
|
};
|
|
5436
5479
|
|
|
5437
5480
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5438
|
-
import { getEnv as
|
|
5481
|
+
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5439
5482
|
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
5440
5483
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5441
5484
|
var many2oneButtonController = (props) => {
|
|
5442
5485
|
const { domain, methods, relation } = props;
|
|
5443
5486
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5444
|
-
const env =
|
|
5487
|
+
const env = getEnv7();
|
|
5445
5488
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5446
5489
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5447
5490
|
const { data: dataOfSelection } = useGetSelection({
|
|
@@ -5462,16 +5505,10 @@ var many2oneButtonController = (props) => {
|
|
|
5462
5505
|
};
|
|
5463
5506
|
|
|
5464
5507
|
// src/widget/basic/many2many-field/controller.ts
|
|
5465
|
-
import { useEffect as useEffect11, useMemo as useMemo10, useState as
|
|
5466
|
-
import {
|
|
5467
|
-
useAppDispatch as useAppDispatch5,
|
|
5468
|
-
setFirstDomain,
|
|
5469
|
-
setViewDataStore,
|
|
5470
|
-
setPage,
|
|
5471
|
-
setGroupByDomain
|
|
5472
|
-
} from "@fctc/interface-logic/store";
|
|
5508
|
+
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
|
|
5473
5509
|
import {
|
|
5474
5510
|
evalJSONContext as evalJSONContext4,
|
|
5511
|
+
evalJSONDomain as evalJSONDomain4,
|
|
5475
5512
|
formatSortingString as formatSortingString2
|
|
5476
5513
|
} from "@fctc/interface-logic/utils";
|
|
5477
5514
|
var many2manyFieldController = (props) => {
|
|
@@ -5479,45 +5516,43 @@ var many2manyFieldController = (props) => {
|
|
|
5479
5516
|
relation,
|
|
5480
5517
|
domain,
|
|
5481
5518
|
context,
|
|
5519
|
+
options,
|
|
5482
5520
|
tab,
|
|
5483
|
-
|
|
5484
|
-
aid,
|
|
5485
|
-
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5486
|
-
fields,
|
|
5487
|
-
setFields,
|
|
5521
|
+
setSelectedRowKeys: setSelectedRowKeys3,
|
|
5488
5522
|
groupByDomain,
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
sessionStorageUtils
|
|
5523
|
+
enabled: enabledCallAPI,
|
|
5524
|
+
actionData
|
|
5492
5525
|
} = props;
|
|
5493
|
-
const appDispatch = useAppDispatch5();
|
|
5494
|
-
const actionData = sessionStorageUtils.getActionData();
|
|
5495
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5496
|
-
const [order, setOrder] = useState8();
|
|
5497
|
-
const [isLoadedData, setIsLoadedData] = useState8(false);
|
|
5498
|
-
const [domainMany2Many, setDomainMany2Many] = useState8(domain);
|
|
5499
5526
|
const { env } = (0, provider_exports.useEnv)();
|
|
5500
5527
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5528
|
+
const [order, setOrder] = useState9();
|
|
5529
|
+
const [page, setPage] = useState9(0);
|
|
5530
|
+
const [domainMany2Many, setDomainMany2Many] = useState9(null);
|
|
5531
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
5532
|
+
const contextObject = {
|
|
5533
|
+
...env.context,
|
|
5534
|
+
...context || {}
|
|
5535
|
+
};
|
|
5501
5536
|
const viewParams = {
|
|
5502
5537
|
model: relation,
|
|
5503
5538
|
views: [
|
|
5504
5539
|
[false, "list"],
|
|
5505
5540
|
[false, "search"]
|
|
5506
5541
|
],
|
|
5507
|
-
context
|
|
5542
|
+
context: contextObject
|
|
5508
5543
|
};
|
|
5509
|
-
const { data: viewResponse } = useGetView2(viewParams,
|
|
5544
|
+
const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
|
|
5510
5545
|
const baseModel = useMemo10(
|
|
5511
5546
|
() => ({
|
|
5512
5547
|
name: String(relation),
|
|
5513
5548
|
view: viewResponse || {},
|
|
5514
|
-
actContext:
|
|
5549
|
+
actContext: contextObject,
|
|
5515
5550
|
fields: [
|
|
5516
5551
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5517
5552
|
...tab?.fields ? tab.fields : []
|
|
5518
5553
|
]
|
|
5519
5554
|
}),
|
|
5520
|
-
[
|
|
5555
|
+
[relation, viewResponse]
|
|
5521
5556
|
);
|
|
5522
5557
|
const initModel = (0, hooks_exports.useModel)();
|
|
5523
5558
|
const modelInstance = useMemo10(() => {
|
|
@@ -5536,26 +5571,15 @@ var many2manyFieldController = (props) => {
|
|
|
5536
5571
|
const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
|
|
5537
5572
|
const fetchData = async () => {
|
|
5538
5573
|
try {
|
|
5539
|
-
|
|
5540
|
-
|
|
5541
|
-
|
|
5542
|
-
const modalData = viewResponse?.views?.list?.fields.map((field) => ({
|
|
5543
|
-
...viewResponse?.models?.[String(model)]?.[field?.name],
|
|
5544
|
-
...field
|
|
5545
|
-
}));
|
|
5546
|
-
if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
|
|
5547
|
-
setFields({
|
|
5548
|
-
...fields,
|
|
5549
|
-
[`${aid}_${relation}_popupmany2many`]: modalData
|
|
5550
|
-
});
|
|
5551
|
-
}
|
|
5552
|
-
appDispatch(setPage(0));
|
|
5574
|
+
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5575
|
+
setDomainMany2Many(domainParse);
|
|
5576
|
+
setPage(0);
|
|
5553
5577
|
} catch (err) {
|
|
5554
5578
|
console.log(err);
|
|
5555
5579
|
}
|
|
5556
5580
|
};
|
|
5557
5581
|
const queryKey = [
|
|
5558
|
-
`view-${relation}
|
|
5582
|
+
`view-${relation}`,
|
|
5559
5583
|
specification,
|
|
5560
5584
|
domainMany2Many,
|
|
5561
5585
|
debouncedPage,
|
|
@@ -5568,16 +5592,16 @@ var many2manyFieldController = (props) => {
|
|
|
5568
5592
|
domain: domainMany2Many,
|
|
5569
5593
|
offset: debouncedPage * 10,
|
|
5570
5594
|
limit: 10,
|
|
5571
|
-
context,
|
|
5595
|
+
context: contextObject,
|
|
5572
5596
|
fields: groupByDomain?.fields,
|
|
5573
5597
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5574
5598
|
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5575
5599
|
};
|
|
5576
|
-
const enabled =
|
|
5600
|
+
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5577
5601
|
const {
|
|
5578
5602
|
data: dataResponse,
|
|
5579
|
-
isLoading
|
|
5580
|
-
isFetched
|
|
5603
|
+
isLoading,
|
|
5604
|
+
isFetched,
|
|
5581
5605
|
isPlaceholderData
|
|
5582
5606
|
} = useGetListData3(data, queryKey, enabled);
|
|
5583
5607
|
useEffect11(() => {
|
|
@@ -5585,74 +5609,57 @@ var many2manyFieldController = (props) => {
|
|
|
5585
5609
|
fetchData();
|
|
5586
5610
|
}
|
|
5587
5611
|
return () => {
|
|
5588
|
-
|
|
5589
|
-
|
|
5590
|
-
...prevFields,
|
|
5591
|
-
[`${aid}_${relation}_popupmany2many`]: null
|
|
5592
|
-
}));
|
|
5593
|
-
appDispatch(setPage(0));
|
|
5594
|
-
setSelectedRowKeys4([]);
|
|
5612
|
+
setPage(0);
|
|
5613
|
+
setSelectedRowKeys3([]);
|
|
5595
5614
|
setDomainMany2Many(null);
|
|
5596
|
-
setIsLoadedData(false);
|
|
5597
5615
|
};
|
|
5598
5616
|
}, [viewResponse]);
|
|
5599
|
-
const { rows, columns, typeTable } = tableController({
|
|
5617
|
+
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
5600
5618
|
data: {
|
|
5601
|
-
fields:
|
|
5619
|
+
fields: viewResponse?.views?.list?.fields,
|
|
5602
5620
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5603
5621
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5604
|
-
context:
|
|
5622
|
+
context: contextObject,
|
|
5605
5623
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5606
5624
|
}
|
|
5607
5625
|
});
|
|
5608
|
-
const
|
|
5609
|
-
|
|
5610
|
-
model: relation,
|
|
5611
|
-
context
|
|
5612
|
-
|
|
5613
|
-
|
|
5614
|
-
|
|
5615
|
-
|
|
5616
|
-
|
|
5617
|
-
|
|
5618
|
-
data: dataFormView,
|
|
5619
|
-
queryKey: [`form-view-action-${relation}`],
|
|
5620
|
-
enabled: false
|
|
5626
|
+
const searchControllers = searchController({
|
|
5627
|
+
viewData: viewResponse,
|
|
5628
|
+
model: relation ?? "",
|
|
5629
|
+
context: contextObject,
|
|
5630
|
+
domain,
|
|
5631
|
+
fieldsList: [
|
|
5632
|
+
...columns?.filter(
|
|
5633
|
+
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
5634
|
+
)?.map((col) => ({ ...col.field })) ?? []
|
|
5635
|
+
]
|
|
5621
5636
|
});
|
|
5622
|
-
useEffect11(() => {
|
|
5623
|
-
if (isSuccess && dataFormViewResponse) {
|
|
5624
|
-
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5625
|
-
window.location.href = `/form/menu?model=${relation}`;
|
|
5626
|
-
}
|
|
5627
|
-
}, [isSuccess]);
|
|
5628
|
-
useEffect11(() => {
|
|
5629
|
-
if (domainMany2Many && !isLoadedData) {
|
|
5630
|
-
setIsLoadedData(true);
|
|
5631
|
-
}
|
|
5632
|
-
}, [domainMany2Many]);
|
|
5633
5637
|
const handleCreateNewOnPage = async () => {
|
|
5634
|
-
try {
|
|
5635
|
-
refetch();
|
|
5636
|
-
} catch (error) {
|
|
5637
|
-
console.log(error);
|
|
5638
|
-
}
|
|
5639
5638
|
};
|
|
5640
5639
|
return {
|
|
5641
5640
|
handleCreateNewOnPage,
|
|
5642
5641
|
optionsObject,
|
|
5642
|
+
totalRows: dataResponse?.length ?? 0,
|
|
5643
5643
|
rows,
|
|
5644
5644
|
columns,
|
|
5645
|
+
onToggleColumnOptional,
|
|
5645
5646
|
typeTable,
|
|
5646
|
-
|
|
5647
|
-
|
|
5648
|
-
isPlaceholderData
|
|
5647
|
+
isLoading,
|
|
5648
|
+
isFetched,
|
|
5649
|
+
isPlaceholderData,
|
|
5650
|
+
setPage,
|
|
5651
|
+
page,
|
|
5652
|
+
viewData: viewResponse,
|
|
5653
|
+
domain: domainMany2Many,
|
|
5654
|
+
setDomain: setDomainMany2Many,
|
|
5655
|
+
searchController: searchControllers
|
|
5649
5656
|
};
|
|
5650
5657
|
};
|
|
5651
5658
|
|
|
5652
5659
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5653
5660
|
import { useMemo as useMemo11 } from "react";
|
|
5654
5661
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5655
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as
|
|
5662
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5656
5663
|
var many2manyTagsController = (props) => {
|
|
5657
5664
|
const {
|
|
5658
5665
|
relation,
|
|
@@ -5667,7 +5674,7 @@ var many2manyTagsController = (props) => {
|
|
|
5667
5674
|
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5668
5675
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5669
5676
|
const domainObject = useMemo11(
|
|
5670
|
-
() =>
|
|
5677
|
+
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5671
5678
|
[domain, formValues]
|
|
5672
5679
|
);
|
|
5673
5680
|
const data = {
|
|
@@ -5708,8 +5715,8 @@ var many2manyTagsController = (props) => {
|
|
|
5708
5715
|
};
|
|
5709
5716
|
|
|
5710
5717
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5711
|
-
import { useState as
|
|
5712
|
-
import { evalJSONDomain as
|
|
5718
|
+
import { useState as useState10 } from "react";
|
|
5719
|
+
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5713
5720
|
var durationController = (props) => {
|
|
5714
5721
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5715
5722
|
const specification = {
|
|
@@ -5719,13 +5726,13 @@ var durationController = (props) => {
|
|
|
5719
5726
|
};
|
|
5720
5727
|
const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
|
|
5721
5728
|
const { env } = (0, provider_exports.useEnv)();
|
|
5722
|
-
const [disabled, setDisabled] =
|
|
5723
|
-
const [modelStatus, setModalStatus] =
|
|
5729
|
+
const [disabled, setDisabled] = useState10(false);
|
|
5730
|
+
const [modelStatus, setModalStatus] = useState10(false);
|
|
5724
5731
|
const queryKey = [`data-status-duration`, specification];
|
|
5725
5732
|
const listDataProps = {
|
|
5726
5733
|
model: relation,
|
|
5727
5734
|
specification,
|
|
5728
|
-
domain:
|
|
5735
|
+
domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5729
5736
|
limit: 10,
|
|
5730
5737
|
offset: 0,
|
|
5731
5738
|
fields: "",
|
|
@@ -5809,10 +5816,10 @@ var priorityFieldController = (props) => {
|
|
|
5809
5816
|
};
|
|
5810
5817
|
|
|
5811
5818
|
// src/widget/basic/download-file-field/controller.ts
|
|
5812
|
-
import { useId, useState as
|
|
5819
|
+
import { useId, useState as useState11 } from "react";
|
|
5813
5820
|
var downloadFileController = () => {
|
|
5814
5821
|
const inputId = useId();
|
|
5815
|
-
const [file, setFile] =
|
|
5822
|
+
const [file, setFile] = useState11(null);
|
|
5816
5823
|
const handleFileChange = (e) => {
|
|
5817
5824
|
setFile(e.target.files[0]);
|
|
5818
5825
|
};
|
|
@@ -6744,11 +6751,11 @@ var dateFieldController = (props) => {
|
|
|
6744
6751
|
};
|
|
6745
6752
|
|
|
6746
6753
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6747
|
-
import { useState as
|
|
6754
|
+
import { useState as useState12 } from "react";
|
|
6748
6755
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6749
6756
|
var copyLinkButtonController = (props) => {
|
|
6750
6757
|
const { value, defaultValue } = props;
|
|
6751
|
-
const [isCopied, setIsCopied] =
|
|
6758
|
+
const [isCopied, setIsCopied] = useState12(false);
|
|
6752
6759
|
const handleCopyToClipboard = async (value2) => {
|
|
6753
6760
|
await copyTextToClipboard(value2);
|
|
6754
6761
|
setIsCopied(true);
|
|
@@ -6796,14 +6803,14 @@ var colorFieldController = (props) => {
|
|
|
6796
6803
|
};
|
|
6797
6804
|
|
|
6798
6805
|
// src/widget/basic/binary-field/controller.ts
|
|
6799
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6806
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
|
|
6800
6807
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6801
6808
|
var binaryFieldController = (props) => {
|
|
6802
6809
|
const { name, methods, readonly = false, value } = props;
|
|
6803
6810
|
const inputId = useId2();
|
|
6804
|
-
const [selectedImage, setSelectedImage] =
|
|
6805
|
-
const [initialImage, setInitialImage] =
|
|
6806
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6811
|
+
const [selectedImage, setSelectedImage] = useState13(null);
|
|
6812
|
+
const [initialImage, setInitialImage] = useState13(value || null);
|
|
6813
|
+
const [isInsideTable, setIsInsideTable] = useState13(false);
|
|
6807
6814
|
const { setValue } = methods;
|
|
6808
6815
|
const binaryRef = useRef4(null);
|
|
6809
6816
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6893,112 +6900,41 @@ var binaryFieldController = (props) => {
|
|
|
6893
6900
|
};
|
|
6894
6901
|
};
|
|
6895
6902
|
|
|
6896
|
-
// src/widget/advance/table/table-body/controller.ts
|
|
6897
|
-
import {
|
|
6898
|
-
useAppDispatch as useAppDispatch6,
|
|
6899
|
-
setSelectedRowKeys,
|
|
6900
|
-
useAppSelector as useAppSelector4,
|
|
6901
|
-
selectList as selectList3
|
|
6902
|
-
} from "@fctc/interface-logic/store";
|
|
6903
|
-
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6904
|
-
var tableBodyController = (props) => {
|
|
6905
|
-
const {
|
|
6906
|
-
checkedAll,
|
|
6907
|
-
checkboxRef,
|
|
6908
|
-
setIsAutoSelect,
|
|
6909
|
-
row,
|
|
6910
|
-
isAutoSelect,
|
|
6911
|
-
selectedRowKeysRef,
|
|
6912
|
-
onClickRow
|
|
6913
|
-
} = props;
|
|
6914
|
-
const appDispatch = useAppDispatch6();
|
|
6915
|
-
const { selectedRowKeys } = useAppSelector4(selectList3);
|
|
6916
|
-
const checked = useMemo12(() => {
|
|
6917
|
-
if (!row?.id) return false;
|
|
6918
|
-
if (selectedRowKeys?.includes(row.id)) {
|
|
6919
|
-
return true;
|
|
6920
|
-
}
|
|
6921
|
-
return checkedAll;
|
|
6922
|
-
}, [row?.id, selectedRowKeys, checkedAll]);
|
|
6923
|
-
const handleCheckBoxSingle = (event) => {
|
|
6924
|
-
event.stopPropagation();
|
|
6925
|
-
if (checkedAll) {
|
|
6926
|
-
checkboxRef.current = "uncheck";
|
|
6927
|
-
setIsAutoSelect(true);
|
|
6928
|
-
return;
|
|
6929
|
-
}
|
|
6930
|
-
const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
|
|
6931
|
-
appDispatch(setSelectedRowKeys(newSelectedRowKeys));
|
|
6932
|
-
};
|
|
6933
|
-
const handleClickRow = (col, row2) => {
|
|
6934
|
-
onClickRow(col, row2);
|
|
6935
|
-
};
|
|
6936
|
-
useEffect13(() => {
|
|
6937
|
-
if (!row?.id) return;
|
|
6938
|
-
if (isAutoSelect) {
|
|
6939
|
-
if (checkboxRef?.current === "uncheck") {
|
|
6940
|
-
const filtered = selectedRowKeysRef.current.filter(
|
|
6941
|
-
(id) => id !== row.id
|
|
6942
|
-
);
|
|
6943
|
-
selectedRowKeysRef.current = filtered;
|
|
6944
|
-
appDispatch(setSelectedRowKeys(filtered));
|
|
6945
|
-
} else {
|
|
6946
|
-
const unique = Array.from(
|
|
6947
|
-
/* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
|
|
6948
|
-
);
|
|
6949
|
-
selectedRowKeysRef.current = unique;
|
|
6950
|
-
appDispatch(setSelectedRowKeys(unique));
|
|
6951
|
-
}
|
|
6952
|
-
}
|
|
6953
|
-
}, [isAutoSelect]);
|
|
6954
|
-
useEffect13(() => {
|
|
6955
|
-
if (!checkedAll) {
|
|
6956
|
-
checkboxRef.current = "enabled";
|
|
6957
|
-
false;
|
|
6958
|
-
}
|
|
6959
|
-
}, [checkedAll]);
|
|
6960
|
-
return {
|
|
6961
|
-
handleCheckBoxSingle,
|
|
6962
|
-
checked,
|
|
6963
|
-
handleClickRow
|
|
6964
|
-
};
|
|
6965
|
-
};
|
|
6966
|
-
|
|
6967
6903
|
// src/widget/advance/table/table-head/controller.ts
|
|
6968
6904
|
import {
|
|
6969
|
-
useAppDispatch as
|
|
6970
|
-
useAppSelector as
|
|
6905
|
+
useAppDispatch as useAppDispatch5,
|
|
6906
|
+
useAppSelector as useAppSelector4,
|
|
6971
6907
|
selectSearch as selectSearch3,
|
|
6972
|
-
setSelectedRowKeys
|
|
6908
|
+
setSelectedRowKeys
|
|
6973
6909
|
} from "@fctc/interface-logic/store";
|
|
6974
6910
|
var tableHeadController = (props) => {
|
|
6975
6911
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6976
|
-
const appDispatch =
|
|
6977
|
-
const { groupByDomain } =
|
|
6912
|
+
const appDispatch = useAppDispatch5();
|
|
6913
|
+
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
6978
6914
|
const handleCheckBoxAll = (event) => {
|
|
6979
6915
|
if (event?.target?.checked && typeTable === "list") {
|
|
6980
6916
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
6981
|
-
appDispatch(
|
|
6917
|
+
appDispatch(setSelectedRowKeys(allRowKeys));
|
|
6982
6918
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
6983
6919
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
6984
6920
|
const ids = Array.from(rowsIDs)?.map(
|
|
6985
6921
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
6986
6922
|
);
|
|
6987
6923
|
if (ids?.length > 0) {
|
|
6988
|
-
appDispatch(
|
|
6924
|
+
appDispatch(setSelectedRowKeys(ids));
|
|
6989
6925
|
} else {
|
|
6990
6926
|
const sum = countSum(
|
|
6991
6927
|
rows,
|
|
6992
6928
|
typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
|
|
6993
6929
|
);
|
|
6994
6930
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
6995
|
-
appDispatch(
|
|
6931
|
+
appDispatch(setSelectedRowKeys(keys));
|
|
6996
6932
|
}
|
|
6997
6933
|
if (selectedRowKeysRef) {
|
|
6998
6934
|
selectedRowKeysRef.current = [];
|
|
6999
6935
|
}
|
|
7000
6936
|
} else {
|
|
7001
|
-
appDispatch(
|
|
6937
|
+
appDispatch(setSelectedRowKeys([]));
|
|
7002
6938
|
}
|
|
7003
6939
|
};
|
|
7004
6940
|
return {
|
|
@@ -7007,16 +6943,16 @@ var tableHeadController = (props) => {
|
|
|
7007
6943
|
};
|
|
7008
6944
|
|
|
7009
6945
|
// src/widget/advance/table/table-view/controller.ts
|
|
7010
|
-
import { useEffect as
|
|
6946
|
+
import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
|
|
7011
6947
|
import {
|
|
7012
|
-
useAppSelector as
|
|
6948
|
+
useAppSelector as useAppSelector5,
|
|
7013
6949
|
selectSearch as selectSearch4,
|
|
7014
|
-
selectList as
|
|
6950
|
+
selectList as selectList3
|
|
7015
6951
|
} from "@fctc/interface-logic/store";
|
|
7016
6952
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
7017
6953
|
var tableController = ({ data }) => {
|
|
7018
|
-
const [rows, setRows] =
|
|
7019
|
-
const [columns, setColumns] =
|
|
6954
|
+
const [rows, setRows] = useState14(data.records || []);
|
|
6955
|
+
const [columns, setColumns] = useState14([]);
|
|
7020
6956
|
const dataModelFields = data.fields?.map((field) => {
|
|
7021
6957
|
return {
|
|
7022
6958
|
...data.dataModel?.[field?.name],
|
|
@@ -7044,7 +6980,7 @@ var tableController = ({ data }) => {
|
|
|
7044
6980
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
7045
6981
|
});
|
|
7046
6982
|
};
|
|
7047
|
-
|
|
6983
|
+
useEffect13(() => {
|
|
7048
6984
|
setRows(transformData(data.records || null));
|
|
7049
6985
|
}, [data.records]);
|
|
7050
6986
|
const handleGetColumns = () => {
|
|
@@ -7065,7 +7001,7 @@ var tableController = ({ data }) => {
|
|
|
7065
7001
|
}
|
|
7066
7002
|
return cols;
|
|
7067
7003
|
};
|
|
7068
|
-
|
|
7004
|
+
useEffect13(() => {
|
|
7069
7005
|
const columns2 = handleGetColumns();
|
|
7070
7006
|
setColumns(columns2);
|
|
7071
7007
|
}, [data.records]);
|
|
@@ -7090,17 +7026,17 @@ var tableController = ({ data }) => {
|
|
|
7090
7026
|
};
|
|
7091
7027
|
|
|
7092
7028
|
// src/widget/advance/table/table-group/controller.ts
|
|
7093
|
-
import { useEffect as
|
|
7029
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
|
|
7094
7030
|
import {
|
|
7095
7031
|
useOdooDataTransform,
|
|
7096
7032
|
useGetListData as useGetListData2
|
|
7097
7033
|
} from "@fctc/interface-logic/hooks";
|
|
7098
7034
|
import {
|
|
7099
|
-
useAppSelector as
|
|
7035
|
+
useAppSelector as useAppSelector6,
|
|
7100
7036
|
selectSearch as selectSearch5,
|
|
7101
|
-
selectList as
|
|
7102
|
-
useAppDispatch as
|
|
7103
|
-
setSelectedRowKeys as
|
|
7037
|
+
selectList as selectList4,
|
|
7038
|
+
useAppDispatch as useAppDispatch6,
|
|
7039
|
+
setSelectedRowKeys as setSelectedRowKeys2
|
|
7104
7040
|
} from "@fctc/interface-logic/store";
|
|
7105
7041
|
|
|
7106
7042
|
// src/environment.ts
|
|
@@ -7129,18 +7065,18 @@ var tableGroupController = (props) => {
|
|
|
7129
7065
|
setIsAutoSelect,
|
|
7130
7066
|
selectedRowKeysRef
|
|
7131
7067
|
} = props;
|
|
7132
|
-
const [pageGroup, setPageGroup] =
|
|
7133
|
-
const { groupByDomain, selectedTags } =
|
|
7134
|
-
const { selectedRowKeys } =
|
|
7135
|
-
const appDispatch =
|
|
7068
|
+
const [pageGroup, setPageGroup] = useState15(0);
|
|
7069
|
+
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
7070
|
+
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
7071
|
+
const appDispatch = useAppDispatch6();
|
|
7136
7072
|
const { toDataJS } = useOdooDataTransform();
|
|
7137
7073
|
const initVal = toDataJS(row, viewData, model);
|
|
7138
|
-
const [isShowGroup, setIsShowGroup] =
|
|
7139
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
7074
|
+
const [isShowGroup, setIsShowGroup] = useState15(false);
|
|
7075
|
+
const [colEmptyGroup, setColEmptyGroup] = useState15({
|
|
7140
7076
|
fromStart: 1,
|
|
7141
7077
|
fromEnd: 1
|
|
7142
7078
|
});
|
|
7143
|
-
const processedData =
|
|
7079
|
+
const processedData = useMemo13(() => {
|
|
7144
7080
|
const calculateColSpanEmpty = () => {
|
|
7145
7081
|
const startIndex = columns.findIndex(
|
|
7146
7082
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -7155,7 +7091,7 @@ var tableGroupController = (props) => {
|
|
|
7155
7091
|
};
|
|
7156
7092
|
return calculateColSpanEmpty();
|
|
7157
7093
|
}, [columns, row]);
|
|
7158
|
-
const shouldFetchData =
|
|
7094
|
+
const shouldFetchData = useMemo13(() => {
|
|
7159
7095
|
return !!isShowGroup;
|
|
7160
7096
|
}, [isShowGroup]);
|
|
7161
7097
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -7195,7 +7131,7 @@ var tableGroupController = (props) => {
|
|
|
7195
7131
|
}
|
|
7196
7132
|
});
|
|
7197
7133
|
const leftPadding = level > 1 ? level * 8 + "px" : "0px";
|
|
7198
|
-
|
|
7134
|
+
useEffect14(() => {
|
|
7199
7135
|
if (isShowGroup && selectedTags?.length > 0) {
|
|
7200
7136
|
setIsShowGroup(false);
|
|
7201
7137
|
}
|
|
@@ -7218,24 +7154,24 @@ var tableGroupController = (props) => {
|
|
|
7218
7154
|
const filteredIds = selectedRowKeys.filter(
|
|
7219
7155
|
(id) => !ids.includes(id)
|
|
7220
7156
|
);
|
|
7221
|
-
appDispatch(
|
|
7157
|
+
appDispatch(setSelectedRowKeys2(filteredIds));
|
|
7222
7158
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
|
|
7223
7159
|
const clonedKeys = [...selectedRowKeys];
|
|
7224
|
-
appDispatch(
|
|
7225
|
-
setTimeout(() => appDispatch(
|
|
7160
|
+
appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
|
|
7161
|
+
setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
|
|
7226
7162
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
7227
7163
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
7228
|
-
appDispatch(
|
|
7164
|
+
appDispatch(setSelectedRowKeys2(filteredKeys));
|
|
7229
7165
|
}
|
|
7230
7166
|
toggleShowGroup();
|
|
7231
7167
|
};
|
|
7232
|
-
|
|
7168
|
+
useEffect14(() => {
|
|
7233
7169
|
if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
7234
7170
|
return;
|
|
7235
7171
|
}
|
|
7236
7172
|
const clonedKeys = [...selectedRowKeys];
|
|
7237
|
-
|
|
7238
|
-
setTimeout(() =>
|
|
7173
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
7174
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
7239
7175
|
}, [isQueryFetched]);
|
|
7240
7176
|
return {
|
|
7241
7177
|
handleExpandChildGroup,
|
|
@@ -7273,26 +7209,28 @@ var import_moment2 = __toESM(require_moment());
|
|
|
7273
7209
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
7274
7210
|
import {
|
|
7275
7211
|
domainHelper as domainHelper2,
|
|
7276
|
-
|
|
7212
|
+
evalJSONContext as evalJSONContext8,
|
|
7213
|
+
evalJSONDomain as evalJSONDomain7,
|
|
7277
7214
|
validateAndParseDate
|
|
7278
7215
|
} from "@fctc/interface-logic/utils";
|
|
7279
|
-
import { useCallback as useCallback3, useEffect as
|
|
7216
|
+
import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
|
|
7280
7217
|
var searchController = ({
|
|
7281
7218
|
viewData,
|
|
7282
|
-
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7286
|
-
searchMap
|
|
7219
|
+
model,
|
|
7220
|
+
domain,
|
|
7221
|
+
context,
|
|
7222
|
+
fieldsList
|
|
7287
7223
|
}) => {
|
|
7288
|
-
const
|
|
7289
|
-
const [
|
|
7290
|
-
const [
|
|
7291
|
-
const [
|
|
7292
|
-
const [
|
|
7293
|
-
const
|
|
7294
|
-
const
|
|
7295
|
-
const
|
|
7224
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
7225
|
+
const [filterBy, setFilterBy] = useState16(null);
|
|
7226
|
+
const [searchBy, setSearchBy] = useState16(null);
|
|
7227
|
+
const [groupBy, setGroupBy] = useState16(null);
|
|
7228
|
+
const [selectedTags, setSelectedTags] = useState16(null);
|
|
7229
|
+
const [searchString, setSearchString] = useState16("");
|
|
7230
|
+
const [searchMap, setSearchMap] = useState16({});
|
|
7231
|
+
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
7232
|
+
const contextSearch = { ...env.context, ...actionContext };
|
|
7233
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
7296
7234
|
const clearSearch = () => {
|
|
7297
7235
|
setFilterBy([]);
|
|
7298
7236
|
setGroupBy([]);
|
|
@@ -7336,10 +7274,9 @@ var searchController = ({
|
|
|
7336
7274
|
}
|
|
7337
7275
|
}
|
|
7338
7276
|
};
|
|
7339
|
-
|
|
7340
|
-
clearSearch();
|
|
7277
|
+
useEffect15(() => {
|
|
7341
7278
|
fetchData();
|
|
7342
|
-
}, [
|
|
7279
|
+
}, [model, viewData]);
|
|
7343
7280
|
const onChangeSearchInput = (search_string) => {
|
|
7344
7281
|
setSearchString(search_string);
|
|
7345
7282
|
};
|
|
@@ -7376,27 +7313,27 @@ var searchController = ({
|
|
|
7376
7313
|
};
|
|
7377
7314
|
const formatDomain = () => {
|
|
7378
7315
|
if (domainAction) {
|
|
7379
|
-
const
|
|
7316
|
+
const domain2 = [];
|
|
7380
7317
|
if (domainAction?.length > 0) {
|
|
7381
|
-
if (Object.keys(searchMap).
|
|
7382
|
-
|
|
7318
|
+
if (Object.keys(searchMap).some((key) => !key.includes(SearchType.GROUP))) {
|
|
7319
|
+
domain2.push("&");
|
|
7383
7320
|
}
|
|
7384
7321
|
domainAction.forEach((domainItem) => {
|
|
7385
|
-
|
|
7322
|
+
domain2.push(domainItem);
|
|
7386
7323
|
});
|
|
7387
7324
|
}
|
|
7388
7325
|
Object.keys(searchMap).forEach((key, keyIndex, keys) => {
|
|
7389
7326
|
if (!key?.includes(SearchType.GROUP)) {
|
|
7390
7327
|
if (keys.length > 1 && keyIndex < keys.length - 1) {
|
|
7391
|
-
|
|
7328
|
+
domain2.push("&");
|
|
7392
7329
|
}
|
|
7393
7330
|
const valuesOfKey = searchMap[key];
|
|
7394
7331
|
valuesOfKey.forEach((value, index) => {
|
|
7395
7332
|
if (index < valuesOfKey.length - 1) {
|
|
7396
|
-
|
|
7333
|
+
domain2.push("|");
|
|
7397
7334
|
}
|
|
7398
7335
|
if (value.domain) {
|
|
7399
|
-
|
|
7336
|
+
domain2.push(...value.domain);
|
|
7400
7337
|
return;
|
|
7401
7338
|
}
|
|
7402
7339
|
let valueDomainItem = value?.value;
|
|
@@ -7412,11 +7349,11 @@ var searchController = ({
|
|
|
7412
7349
|
}
|
|
7413
7350
|
}
|
|
7414
7351
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
7415
|
-
|
|
7352
|
+
domain2.push([value.name, operator, valueDomainItem]);
|
|
7416
7353
|
});
|
|
7417
7354
|
}
|
|
7418
7355
|
});
|
|
7419
|
-
return [...
|
|
7356
|
+
return [...domain2];
|
|
7420
7357
|
}
|
|
7421
7358
|
};
|
|
7422
7359
|
const setTagSearch = useCallback3(
|
|
@@ -7447,16 +7384,16 @@ var searchController = ({
|
|
|
7447
7384
|
const contexts = [];
|
|
7448
7385
|
let groupValues = [];
|
|
7449
7386
|
objValues?.forEach((objValue) => {
|
|
7450
|
-
const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7387
|
+
const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7451
7388
|
const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
|
|
7452
7389
|
contexts.push(
|
|
7453
|
-
...Array.isArray(
|
|
7390
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
|
|
7454
7391
|
);
|
|
7455
7392
|
groupValues[indexAppend] = {
|
|
7456
7393
|
contexts: [
|
|
7457
|
-
...Array.isArray(
|
|
7394
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
|
|
7458
7395
|
group_by: item
|
|
7459
|
-
})) : [
|
|
7396
|
+
})) : [context2]
|
|
7460
7397
|
],
|
|
7461
7398
|
strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
|
|
7462
7399
|
};
|
|
@@ -7482,40 +7419,39 @@ var searchController = ({
|
|
|
7482
7419
|
},
|
|
7483
7420
|
[searchMap]
|
|
7484
7421
|
);
|
|
7485
|
-
|
|
7486
|
-
setSelectedTags(null);
|
|
7422
|
+
useEffect15(() => {
|
|
7487
7423
|
setTagSearch(searchMap);
|
|
7488
7424
|
}, [searchMap]);
|
|
7489
7425
|
const handleAddTagSearch = (tag) => {
|
|
7490
7426
|
const {
|
|
7491
|
-
domain,
|
|
7427
|
+
domain: domain2,
|
|
7492
7428
|
groupIndex,
|
|
7493
7429
|
value,
|
|
7494
7430
|
type,
|
|
7495
7431
|
title,
|
|
7496
|
-
context,
|
|
7432
|
+
context: context2,
|
|
7497
7433
|
active,
|
|
7498
7434
|
dataIndex
|
|
7499
7435
|
} = tag;
|
|
7500
|
-
const domainFormat = new domainHelper2.Domain(
|
|
7436
|
+
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7501
7437
|
if (type === SearchType.FILTER) {
|
|
7502
7438
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
7503
7439
|
...tag,
|
|
7504
|
-
domain:
|
|
7440
|
+
domain: domain2 ? domainFormat.toList(context2) : null
|
|
7505
7441
|
});
|
|
7506
7442
|
} else if (type === SearchType.SEARCH) {
|
|
7507
7443
|
addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
|
|
7508
7444
|
...tag,
|
|
7509
|
-
domain:
|
|
7510
|
-
...
|
|
7445
|
+
domain: domain2 ? domainFormat.toList({
|
|
7446
|
+
...context2,
|
|
7511
7447
|
self: value
|
|
7512
7448
|
}) : null
|
|
7513
7449
|
});
|
|
7514
7450
|
} else if (type === SearchType.GROUP) {
|
|
7515
7451
|
addSearchItems(`${SearchType.GROUP}`, {
|
|
7516
7452
|
...tag,
|
|
7517
|
-
domain:
|
|
7518
|
-
context,
|
|
7453
|
+
domain: domain2 ? domainFormat.toList({
|
|
7454
|
+
context: context2,
|
|
7519
7455
|
self: value
|
|
7520
7456
|
}) : null
|
|
7521
7457
|
});
|
|
@@ -7535,7 +7471,8 @@ var searchController = ({
|
|
|
7535
7471
|
removeSearchItems,
|
|
7536
7472
|
onSearchString: onChangeSearchInput,
|
|
7537
7473
|
handleAddTagSearch,
|
|
7538
|
-
domain: formatDomain()
|
|
7474
|
+
domain: formatDomain(),
|
|
7475
|
+
context: contextSearch
|
|
7539
7476
|
};
|
|
7540
7477
|
};
|
|
7541
7478
|
|
|
@@ -7602,7 +7539,6 @@ export {
|
|
|
7602
7539
|
searchController,
|
|
7603
7540
|
setStorageItemAsync,
|
|
7604
7541
|
statusDropdownController,
|
|
7605
|
-
tableBodyController,
|
|
7606
7542
|
tableController,
|
|
7607
7543
|
tableGroupController,
|
|
7608
7544
|
tableHeadController,
|
|
@@ -7616,6 +7552,7 @@ export {
|
|
|
7616
7552
|
useGetRowIds,
|
|
7617
7553
|
useListData,
|
|
7618
7554
|
useMenu,
|
|
7555
|
+
useMenuItem,
|
|
7619
7556
|
useProfile,
|
|
7620
7557
|
useSelectionState,
|
|
7621
7558
|
useStorageState,
|