@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/widget.mjs
CHANGED
|
@@ -4091,7 +4091,7 @@ var statusDropdownController = (props) => {
|
|
|
4091
4091
|
};
|
|
4092
4092
|
|
|
4093
4093
|
// src/widget/basic/many2one-field/controller.ts
|
|
4094
|
-
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as
|
|
4094
|
+
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
|
|
4095
4095
|
|
|
4096
4096
|
// src/hooks.ts
|
|
4097
4097
|
var hooks_exports = {};
|
|
@@ -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 getEnv6 } from "@fctc/interface-logic/environment";
|
|
4894
|
+
import { useGetActionDetail } from "@fctc/interface-logic/hooks";
|
|
4895
|
+
import { useState as useState6 } 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 = getEnv6().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] = useState6("");
|
|
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 useEffect8, useRef as useRef3 } 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 useEffect9, useState as
|
|
4986
|
+
import { useEffect as useEffect9, useState as useState7 } from "react";
|
|
4924
4987
|
function useDebounce(value, delay) {
|
|
4925
|
-
const [debouncedValue, setDebouncedValue] =
|
|
4988
|
+
const [debouncedValue, setDebouncedValue] = useState7(value);
|
|
4926
4989
|
useEffect9(() => {
|
|
4927
4990
|
const handler = setTimeout(() => {
|
|
4928
4991
|
setDebouncedValue(value);
|
|
@@ -4938,26 +5001,6 @@ function useDebounce(value, delay) {
|
|
|
4938
5001
|
__reExport(hooks_exports, hooks_star);
|
|
4939
5002
|
import * as hooks_star from "@fctc/interface-logic/hooks";
|
|
4940
5003
|
|
|
4941
|
-
// src/utils.ts
|
|
4942
|
-
var utils_exports = {};
|
|
4943
|
-
__export(utils_exports, {
|
|
4944
|
-
API_APP_URL: () => API_APP_URL,
|
|
4945
|
-
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
4946
|
-
STORAGES: () => STORAGES,
|
|
4947
|
-
combineContexts: () => combineContexts,
|
|
4948
|
-
convertFieldsToArray: () => convertFieldsToArray,
|
|
4949
|
-
countSum: () => countSum,
|
|
4950
|
-
getDateRange: () => getDateRange,
|
|
4951
|
-
languages: () => languages,
|
|
4952
|
-
mergeButtons: () => mergeButtons,
|
|
4953
|
-
setStorageItemAsync: () => setStorageItemAsync,
|
|
4954
|
-
useGetRowIds: () => useGetRowIds,
|
|
4955
|
-
useSelectionState: () => useSelectionState,
|
|
4956
|
-
useStorageState: () => useStorageState
|
|
4957
|
-
});
|
|
4958
|
-
__reExport(utils_exports, utils_star2);
|
|
4959
|
-
import * as utils_star2 from "@fctc/interface-logic/utils";
|
|
4960
|
-
|
|
4961
5004
|
// src/provider.ts
|
|
4962
5005
|
var provider_exports = {};
|
|
4963
5006
|
__reExport(provider_exports, provider_star);
|
|
@@ -4978,22 +5021,22 @@ var many2oneFieldController = (props) => {
|
|
|
4978
5021
|
options: fieldOptions,
|
|
4979
5022
|
showDetail
|
|
4980
5023
|
} = props;
|
|
4981
|
-
const
|
|
4982
|
-
const [
|
|
5024
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5025
|
+
const [options, setOptions] = useState8([]);
|
|
5026
|
+
const [inputValue, setInputValue] = useState8("");
|
|
4983
5027
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
4984
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
4985
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
4986
|
-
const [domainModal, setDomainModal] =
|
|
4987
|
-
const [domainObject, setDomainObject] =
|
|
5028
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
|
|
5029
|
+
const [tempSelectedOption, setTempSelectedOption] = useState8(null);
|
|
5030
|
+
const [domainModal, setDomainModal] = useState8(null);
|
|
5031
|
+
const [domainObject, setDomainObject] = useState8(null);
|
|
4988
5032
|
const actionData = sessionStorageUtils.getActionData();
|
|
4989
5033
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
4990
|
-
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
4991
5034
|
const initValue = methods?.getValues(name);
|
|
4992
5035
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
4993
5036
|
const contextObject = {
|
|
4994
5037
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
4995
5038
|
...fieldContext,
|
|
4996
|
-
...context
|
|
5039
|
+
...env?.context
|
|
4997
5040
|
};
|
|
4998
5041
|
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
4999
5042
|
const data = {
|
|
@@ -5137,13 +5180,13 @@ var many2oneFieldController = (props) => {
|
|
|
5137
5180
|
};
|
|
5138
5181
|
|
|
5139
5182
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5140
|
-
import { getEnv as
|
|
5183
|
+
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5141
5184
|
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
5142
5185
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5143
5186
|
var many2oneButtonController = (props) => {
|
|
5144
5187
|
const { domain, methods, relation } = props;
|
|
5145
5188
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5146
|
-
const env =
|
|
5189
|
+
const env = getEnv7();
|
|
5147
5190
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5148
5191
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5149
5192
|
const { data: dataOfSelection } = useGetSelection({
|
|
@@ -5164,16 +5207,10 @@ var many2oneButtonController = (props) => {
|
|
|
5164
5207
|
};
|
|
5165
5208
|
|
|
5166
5209
|
// src/widget/basic/many2many-field/controller.ts
|
|
5167
|
-
import { useEffect as useEffect11, useMemo as useMemo10, useState as
|
|
5168
|
-
import {
|
|
5169
|
-
useAppDispatch as useAppDispatch5,
|
|
5170
|
-
setFirstDomain,
|
|
5171
|
-
setViewDataStore,
|
|
5172
|
-
setPage,
|
|
5173
|
-
setGroupByDomain
|
|
5174
|
-
} from "@fctc/interface-logic/store";
|
|
5210
|
+
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
|
|
5175
5211
|
import {
|
|
5176
5212
|
evalJSONContext as evalJSONContext4,
|
|
5213
|
+
evalJSONDomain as evalJSONDomain4,
|
|
5177
5214
|
formatSortingString as formatSortingString2
|
|
5178
5215
|
} from "@fctc/interface-logic/utils";
|
|
5179
5216
|
var many2manyFieldController = (props) => {
|
|
@@ -5181,45 +5218,43 @@ var many2manyFieldController = (props) => {
|
|
|
5181
5218
|
relation,
|
|
5182
5219
|
domain,
|
|
5183
5220
|
context,
|
|
5221
|
+
options,
|
|
5184
5222
|
tab,
|
|
5185
|
-
|
|
5186
|
-
aid,
|
|
5187
|
-
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5188
|
-
fields,
|
|
5189
|
-
setFields,
|
|
5223
|
+
setSelectedRowKeys: setSelectedRowKeys3,
|
|
5190
5224
|
groupByDomain,
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
sessionStorageUtils
|
|
5225
|
+
enabled: enabledCallAPI,
|
|
5226
|
+
actionData
|
|
5194
5227
|
} = props;
|
|
5195
|
-
const appDispatch = useAppDispatch5();
|
|
5196
|
-
const actionData = sessionStorageUtils.getActionData();
|
|
5197
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5198
|
-
const [order, setOrder] = useState8();
|
|
5199
|
-
const [isLoadedData, setIsLoadedData] = useState8(false);
|
|
5200
|
-
const [domainMany2Many, setDomainMany2Many] = useState8(domain);
|
|
5201
5228
|
const { env } = (0, provider_exports.useEnv)();
|
|
5202
5229
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5230
|
+
const [order, setOrder] = useState9();
|
|
5231
|
+
const [page, setPage] = useState9(0);
|
|
5232
|
+
const [domainMany2Many, setDomainMany2Many] = useState9(null);
|
|
5233
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
5234
|
+
const contextObject = {
|
|
5235
|
+
...env.context,
|
|
5236
|
+
...context || {}
|
|
5237
|
+
};
|
|
5203
5238
|
const viewParams = {
|
|
5204
5239
|
model: relation,
|
|
5205
5240
|
views: [
|
|
5206
5241
|
[false, "list"],
|
|
5207
5242
|
[false, "search"]
|
|
5208
5243
|
],
|
|
5209
|
-
context
|
|
5244
|
+
context: contextObject
|
|
5210
5245
|
};
|
|
5211
|
-
const { data: viewResponse } = useGetView2(viewParams,
|
|
5246
|
+
const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
|
|
5212
5247
|
const baseModel = useMemo10(
|
|
5213
5248
|
() => ({
|
|
5214
5249
|
name: String(relation),
|
|
5215
5250
|
view: viewResponse || {},
|
|
5216
|
-
actContext:
|
|
5251
|
+
actContext: contextObject,
|
|
5217
5252
|
fields: [
|
|
5218
5253
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5219
5254
|
...tab?.fields ? tab.fields : []
|
|
5220
5255
|
]
|
|
5221
5256
|
}),
|
|
5222
|
-
[
|
|
5257
|
+
[relation, viewResponse]
|
|
5223
5258
|
);
|
|
5224
5259
|
const initModel = (0, hooks_exports.useModel)();
|
|
5225
5260
|
const modelInstance = useMemo10(() => {
|
|
@@ -5238,26 +5273,15 @@ var many2manyFieldController = (props) => {
|
|
|
5238
5273
|
const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
|
|
5239
5274
|
const fetchData = async () => {
|
|
5240
5275
|
try {
|
|
5241
|
-
|
|
5242
|
-
|
|
5243
|
-
|
|
5244
|
-
const modalData = viewResponse?.views?.list?.fields.map((field) => ({
|
|
5245
|
-
...viewResponse?.models?.[String(model)]?.[field?.name],
|
|
5246
|
-
...field
|
|
5247
|
-
}));
|
|
5248
|
-
if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
|
|
5249
|
-
setFields({
|
|
5250
|
-
...fields,
|
|
5251
|
-
[`${aid}_${relation}_popupmany2many`]: modalData
|
|
5252
|
-
});
|
|
5253
|
-
}
|
|
5254
|
-
appDispatch(setPage(0));
|
|
5276
|
+
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5277
|
+
setDomainMany2Many(domainParse);
|
|
5278
|
+
setPage(0);
|
|
5255
5279
|
} catch (err) {
|
|
5256
5280
|
console.log(err);
|
|
5257
5281
|
}
|
|
5258
5282
|
};
|
|
5259
5283
|
const queryKey = [
|
|
5260
|
-
`view-${relation}
|
|
5284
|
+
`view-${relation}`,
|
|
5261
5285
|
specification,
|
|
5262
5286
|
domainMany2Many,
|
|
5263
5287
|
debouncedPage,
|
|
@@ -5270,16 +5294,16 @@ var many2manyFieldController = (props) => {
|
|
|
5270
5294
|
domain: domainMany2Many,
|
|
5271
5295
|
offset: debouncedPage * 10,
|
|
5272
5296
|
limit: 10,
|
|
5273
|
-
context,
|
|
5297
|
+
context: contextObject,
|
|
5274
5298
|
fields: groupByDomain?.fields,
|
|
5275
5299
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5276
5300
|
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5277
5301
|
};
|
|
5278
|
-
const enabled =
|
|
5302
|
+
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5279
5303
|
const {
|
|
5280
5304
|
data: dataResponse,
|
|
5281
|
-
isLoading
|
|
5282
|
-
isFetched
|
|
5305
|
+
isLoading,
|
|
5306
|
+
isFetched,
|
|
5283
5307
|
isPlaceholderData
|
|
5284
5308
|
} = useGetListData3(data, queryKey, enabled);
|
|
5285
5309
|
useEffect11(() => {
|
|
@@ -5287,74 +5311,57 @@ var many2manyFieldController = (props) => {
|
|
|
5287
5311
|
fetchData();
|
|
5288
5312
|
}
|
|
5289
5313
|
return () => {
|
|
5290
|
-
|
|
5291
|
-
|
|
5292
|
-
...prevFields,
|
|
5293
|
-
[`${aid}_${relation}_popupmany2many`]: null
|
|
5294
|
-
}));
|
|
5295
|
-
appDispatch(setPage(0));
|
|
5296
|
-
setSelectedRowKeys4([]);
|
|
5314
|
+
setPage(0);
|
|
5315
|
+
setSelectedRowKeys3([]);
|
|
5297
5316
|
setDomainMany2Many(null);
|
|
5298
|
-
setIsLoadedData(false);
|
|
5299
5317
|
};
|
|
5300
5318
|
}, [viewResponse]);
|
|
5301
|
-
const { rows, columns, typeTable } = tableController({
|
|
5319
|
+
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
5302
5320
|
data: {
|
|
5303
|
-
fields:
|
|
5321
|
+
fields: viewResponse?.views?.list?.fields,
|
|
5304
5322
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5305
5323
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5306
|
-
context:
|
|
5324
|
+
context: contextObject,
|
|
5307
5325
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5308
5326
|
}
|
|
5309
5327
|
});
|
|
5310
|
-
const
|
|
5311
|
-
|
|
5312
|
-
model: relation,
|
|
5313
|
-
context
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
|
|
5320
|
-
data: dataFormView,
|
|
5321
|
-
queryKey: [`form-view-action-${relation}`],
|
|
5322
|
-
enabled: false
|
|
5328
|
+
const searchControllers = searchController({
|
|
5329
|
+
viewData: viewResponse,
|
|
5330
|
+
model: relation ?? "",
|
|
5331
|
+
context: contextObject,
|
|
5332
|
+
domain,
|
|
5333
|
+
fieldsList: [
|
|
5334
|
+
...columns?.filter(
|
|
5335
|
+
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
5336
|
+
)?.map((col) => ({ ...col.field })) ?? []
|
|
5337
|
+
]
|
|
5323
5338
|
});
|
|
5324
|
-
useEffect11(() => {
|
|
5325
|
-
if (isSuccess && dataFormViewResponse) {
|
|
5326
|
-
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5327
|
-
window.location.href = `/form/menu?model=${relation}`;
|
|
5328
|
-
}
|
|
5329
|
-
}, [isSuccess]);
|
|
5330
|
-
useEffect11(() => {
|
|
5331
|
-
if (domainMany2Many && !isLoadedData) {
|
|
5332
|
-
setIsLoadedData(true);
|
|
5333
|
-
}
|
|
5334
|
-
}, [domainMany2Many]);
|
|
5335
5339
|
const handleCreateNewOnPage = async () => {
|
|
5336
|
-
try {
|
|
5337
|
-
refetch();
|
|
5338
|
-
} catch (error) {
|
|
5339
|
-
console.log(error);
|
|
5340
|
-
}
|
|
5341
5340
|
};
|
|
5342
5341
|
return {
|
|
5343
5342
|
handleCreateNewOnPage,
|
|
5344
5343
|
optionsObject,
|
|
5344
|
+
totalRows: dataResponse?.length ?? 0,
|
|
5345
5345
|
rows,
|
|
5346
5346
|
columns,
|
|
5347
|
+
onToggleColumnOptional,
|
|
5347
5348
|
typeTable,
|
|
5348
|
-
|
|
5349
|
-
|
|
5350
|
-
isPlaceholderData
|
|
5349
|
+
isLoading,
|
|
5350
|
+
isFetched,
|
|
5351
|
+
isPlaceholderData,
|
|
5352
|
+
setPage,
|
|
5353
|
+
page,
|
|
5354
|
+
viewData: viewResponse,
|
|
5355
|
+
domain: domainMany2Many,
|
|
5356
|
+
setDomain: setDomainMany2Many,
|
|
5357
|
+
searchController: searchControllers
|
|
5351
5358
|
};
|
|
5352
5359
|
};
|
|
5353
5360
|
|
|
5354
5361
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5355
5362
|
import { useMemo as useMemo11 } from "react";
|
|
5356
5363
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5357
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as
|
|
5364
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5358
5365
|
var many2manyTagsController = (props) => {
|
|
5359
5366
|
const {
|
|
5360
5367
|
relation,
|
|
@@ -5369,7 +5376,7 @@ var many2manyTagsController = (props) => {
|
|
|
5369
5376
|
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5370
5377
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5371
5378
|
const domainObject = useMemo11(
|
|
5372
|
-
() =>
|
|
5379
|
+
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5373
5380
|
[domain, formValues]
|
|
5374
5381
|
);
|
|
5375
5382
|
const data = {
|
|
@@ -5410,8 +5417,8 @@ var many2manyTagsController = (props) => {
|
|
|
5410
5417
|
};
|
|
5411
5418
|
|
|
5412
5419
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5413
|
-
import { useState as
|
|
5414
|
-
import { evalJSONDomain as
|
|
5420
|
+
import { useState as useState10 } from "react";
|
|
5421
|
+
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5415
5422
|
var durationController = (props) => {
|
|
5416
5423
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5417
5424
|
const specification = {
|
|
@@ -5421,13 +5428,13 @@ var durationController = (props) => {
|
|
|
5421
5428
|
};
|
|
5422
5429
|
const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
|
|
5423
5430
|
const { env } = (0, provider_exports.useEnv)();
|
|
5424
|
-
const [disabled, setDisabled] =
|
|
5425
|
-
const [modelStatus, setModalStatus] =
|
|
5431
|
+
const [disabled, setDisabled] = useState10(false);
|
|
5432
|
+
const [modelStatus, setModalStatus] = useState10(false);
|
|
5426
5433
|
const queryKey = [`data-status-duration`, specification];
|
|
5427
5434
|
const listDataProps = {
|
|
5428
5435
|
model: relation,
|
|
5429
5436
|
specification,
|
|
5430
|
-
domain:
|
|
5437
|
+
domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5431
5438
|
limit: 10,
|
|
5432
5439
|
offset: 0,
|
|
5433
5440
|
fields: "",
|
|
@@ -5511,10 +5518,10 @@ var priorityFieldController = (props) => {
|
|
|
5511
5518
|
};
|
|
5512
5519
|
|
|
5513
5520
|
// src/widget/basic/download-file-field/controller.ts
|
|
5514
|
-
import { useId, useState as
|
|
5521
|
+
import { useId, useState as useState11 } from "react";
|
|
5515
5522
|
var downloadFileController = () => {
|
|
5516
5523
|
const inputId = useId();
|
|
5517
|
-
const [file, setFile] =
|
|
5524
|
+
const [file, setFile] = useState11(null);
|
|
5518
5525
|
const handleFileChange = (e) => {
|
|
5519
5526
|
setFile(e.target.files[0]);
|
|
5520
5527
|
};
|
|
@@ -6446,11 +6453,11 @@ var dateFieldController = (props) => {
|
|
|
6446
6453
|
};
|
|
6447
6454
|
|
|
6448
6455
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6449
|
-
import { useState as
|
|
6456
|
+
import { useState as useState12 } from "react";
|
|
6450
6457
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6451
6458
|
var copyLinkButtonController = (props) => {
|
|
6452
6459
|
const { value, defaultValue } = props;
|
|
6453
|
-
const [isCopied, setIsCopied] =
|
|
6460
|
+
const [isCopied, setIsCopied] = useState12(false);
|
|
6454
6461
|
const handleCopyToClipboard = async (value2) => {
|
|
6455
6462
|
await copyTextToClipboard(value2);
|
|
6456
6463
|
setIsCopied(true);
|
|
@@ -6498,14 +6505,14 @@ var colorFieldController = (props) => {
|
|
|
6498
6505
|
};
|
|
6499
6506
|
|
|
6500
6507
|
// src/widget/basic/binary-field/controller.ts
|
|
6501
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6508
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
|
|
6502
6509
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6503
6510
|
var binaryFieldController = (props) => {
|
|
6504
6511
|
const { name, methods, readonly = false, value } = props;
|
|
6505
6512
|
const inputId = useId2();
|
|
6506
|
-
const [selectedImage, setSelectedImage] =
|
|
6507
|
-
const [initialImage, setInitialImage] =
|
|
6508
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6513
|
+
const [selectedImage, setSelectedImage] = useState13(null);
|
|
6514
|
+
const [initialImage, setInitialImage] = useState13(value || null);
|
|
6515
|
+
const [isInsideTable, setIsInsideTable] = useState13(false);
|
|
6509
6516
|
const { setValue } = methods;
|
|
6510
6517
|
const binaryRef = useRef4(null);
|
|
6511
6518
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6595,112 +6602,41 @@ var binaryFieldController = (props) => {
|
|
|
6595
6602
|
};
|
|
6596
6603
|
};
|
|
6597
6604
|
|
|
6598
|
-
// src/widget/advance/table/table-body/controller.ts
|
|
6599
|
-
import {
|
|
6600
|
-
useAppDispatch as useAppDispatch6,
|
|
6601
|
-
setSelectedRowKeys,
|
|
6602
|
-
useAppSelector as useAppSelector4,
|
|
6603
|
-
selectList as selectList3
|
|
6604
|
-
} from "@fctc/interface-logic/store";
|
|
6605
|
-
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6606
|
-
var tableBodyController = (props) => {
|
|
6607
|
-
const {
|
|
6608
|
-
checkedAll,
|
|
6609
|
-
checkboxRef,
|
|
6610
|
-
setIsAutoSelect,
|
|
6611
|
-
row,
|
|
6612
|
-
isAutoSelect,
|
|
6613
|
-
selectedRowKeysRef,
|
|
6614
|
-
onClickRow
|
|
6615
|
-
} = props;
|
|
6616
|
-
const appDispatch = useAppDispatch6();
|
|
6617
|
-
const { selectedRowKeys } = useAppSelector4(selectList3);
|
|
6618
|
-
const checked = useMemo12(() => {
|
|
6619
|
-
if (!row?.id) return false;
|
|
6620
|
-
if (selectedRowKeys?.includes(row.id)) {
|
|
6621
|
-
return true;
|
|
6622
|
-
}
|
|
6623
|
-
return checkedAll;
|
|
6624
|
-
}, [row?.id, selectedRowKeys, checkedAll]);
|
|
6625
|
-
const handleCheckBoxSingle = (event) => {
|
|
6626
|
-
event.stopPropagation();
|
|
6627
|
-
if (checkedAll) {
|
|
6628
|
-
checkboxRef.current = "uncheck";
|
|
6629
|
-
setIsAutoSelect(true);
|
|
6630
|
-
return;
|
|
6631
|
-
}
|
|
6632
|
-
const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
|
|
6633
|
-
appDispatch(setSelectedRowKeys(newSelectedRowKeys));
|
|
6634
|
-
};
|
|
6635
|
-
const handleClickRow = (col, row2) => {
|
|
6636
|
-
onClickRow(col, row2);
|
|
6637
|
-
};
|
|
6638
|
-
useEffect13(() => {
|
|
6639
|
-
if (!row?.id) return;
|
|
6640
|
-
if (isAutoSelect) {
|
|
6641
|
-
if (checkboxRef?.current === "uncheck") {
|
|
6642
|
-
const filtered = selectedRowKeysRef.current.filter(
|
|
6643
|
-
(id) => id !== row.id
|
|
6644
|
-
);
|
|
6645
|
-
selectedRowKeysRef.current = filtered;
|
|
6646
|
-
appDispatch(setSelectedRowKeys(filtered));
|
|
6647
|
-
} else {
|
|
6648
|
-
const unique = Array.from(
|
|
6649
|
-
/* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
|
|
6650
|
-
);
|
|
6651
|
-
selectedRowKeysRef.current = unique;
|
|
6652
|
-
appDispatch(setSelectedRowKeys(unique));
|
|
6653
|
-
}
|
|
6654
|
-
}
|
|
6655
|
-
}, [isAutoSelect]);
|
|
6656
|
-
useEffect13(() => {
|
|
6657
|
-
if (!checkedAll) {
|
|
6658
|
-
checkboxRef.current = "enabled";
|
|
6659
|
-
false;
|
|
6660
|
-
}
|
|
6661
|
-
}, [checkedAll]);
|
|
6662
|
-
return {
|
|
6663
|
-
handleCheckBoxSingle,
|
|
6664
|
-
checked,
|
|
6665
|
-
handleClickRow
|
|
6666
|
-
};
|
|
6667
|
-
};
|
|
6668
|
-
|
|
6669
6605
|
// src/widget/advance/table/table-head/controller.ts
|
|
6670
6606
|
import {
|
|
6671
|
-
useAppDispatch as
|
|
6672
|
-
useAppSelector as
|
|
6607
|
+
useAppDispatch as useAppDispatch5,
|
|
6608
|
+
useAppSelector as useAppSelector4,
|
|
6673
6609
|
selectSearch as selectSearch3,
|
|
6674
|
-
setSelectedRowKeys
|
|
6610
|
+
setSelectedRowKeys
|
|
6675
6611
|
} from "@fctc/interface-logic/store";
|
|
6676
6612
|
var tableHeadController = (props) => {
|
|
6677
6613
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6678
|
-
const appDispatch =
|
|
6679
|
-
const { groupByDomain } =
|
|
6614
|
+
const appDispatch = useAppDispatch5();
|
|
6615
|
+
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
6680
6616
|
const handleCheckBoxAll = (event) => {
|
|
6681
6617
|
if (event?.target?.checked && typeTable === "list") {
|
|
6682
6618
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
6683
|
-
appDispatch(
|
|
6619
|
+
appDispatch(setSelectedRowKeys(allRowKeys));
|
|
6684
6620
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
6685
6621
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
6686
6622
|
const ids = Array.from(rowsIDs)?.map(
|
|
6687
6623
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
6688
6624
|
);
|
|
6689
6625
|
if (ids?.length > 0) {
|
|
6690
|
-
appDispatch(
|
|
6626
|
+
appDispatch(setSelectedRowKeys(ids));
|
|
6691
6627
|
} else {
|
|
6692
6628
|
const sum = countSum(
|
|
6693
6629
|
rows,
|
|
6694
6630
|
typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
|
|
6695
6631
|
);
|
|
6696
6632
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
6697
|
-
appDispatch(
|
|
6633
|
+
appDispatch(setSelectedRowKeys(keys));
|
|
6698
6634
|
}
|
|
6699
6635
|
if (selectedRowKeysRef) {
|
|
6700
6636
|
selectedRowKeysRef.current = [];
|
|
6701
6637
|
}
|
|
6702
6638
|
} else {
|
|
6703
|
-
appDispatch(
|
|
6639
|
+
appDispatch(setSelectedRowKeys([]));
|
|
6704
6640
|
}
|
|
6705
6641
|
};
|
|
6706
6642
|
return {
|
|
@@ -6709,16 +6645,16 @@ var tableHeadController = (props) => {
|
|
|
6709
6645
|
};
|
|
6710
6646
|
|
|
6711
6647
|
// src/widget/advance/table/table-view/controller.ts
|
|
6712
|
-
import { useEffect as
|
|
6648
|
+
import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
|
|
6713
6649
|
import {
|
|
6714
|
-
useAppSelector as
|
|
6650
|
+
useAppSelector as useAppSelector5,
|
|
6715
6651
|
selectSearch as selectSearch4,
|
|
6716
|
-
selectList as
|
|
6652
|
+
selectList as selectList3
|
|
6717
6653
|
} from "@fctc/interface-logic/store";
|
|
6718
6654
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6719
6655
|
var tableController = ({ data }) => {
|
|
6720
|
-
const [rows, setRows] =
|
|
6721
|
-
const [columns, setColumns] =
|
|
6656
|
+
const [rows, setRows] = useState14(data.records || []);
|
|
6657
|
+
const [columns, setColumns] = useState14([]);
|
|
6722
6658
|
const dataModelFields = data.fields?.map((field) => {
|
|
6723
6659
|
return {
|
|
6724
6660
|
...data.dataModel?.[field?.name],
|
|
@@ -6746,7 +6682,7 @@ var tableController = ({ data }) => {
|
|
|
6746
6682
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6747
6683
|
});
|
|
6748
6684
|
};
|
|
6749
|
-
|
|
6685
|
+
useEffect13(() => {
|
|
6750
6686
|
setRows(transformData(data.records || null));
|
|
6751
6687
|
}, [data.records]);
|
|
6752
6688
|
const handleGetColumns = () => {
|
|
@@ -6767,7 +6703,7 @@ var tableController = ({ data }) => {
|
|
|
6767
6703
|
}
|
|
6768
6704
|
return cols;
|
|
6769
6705
|
};
|
|
6770
|
-
|
|
6706
|
+
useEffect13(() => {
|
|
6771
6707
|
const columns2 = handleGetColumns();
|
|
6772
6708
|
setColumns(columns2);
|
|
6773
6709
|
}, [data.records]);
|
|
@@ -6792,17 +6728,17 @@ var tableController = ({ data }) => {
|
|
|
6792
6728
|
};
|
|
6793
6729
|
|
|
6794
6730
|
// src/widget/advance/table/table-group/controller.ts
|
|
6795
|
-
import { useEffect as
|
|
6731
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
|
|
6796
6732
|
import {
|
|
6797
6733
|
useOdooDataTransform,
|
|
6798
6734
|
useGetListData as useGetListData2
|
|
6799
6735
|
} from "@fctc/interface-logic/hooks";
|
|
6800
6736
|
import {
|
|
6801
|
-
useAppSelector as
|
|
6737
|
+
useAppSelector as useAppSelector6,
|
|
6802
6738
|
selectSearch as selectSearch5,
|
|
6803
|
-
selectList as
|
|
6804
|
-
useAppDispatch as
|
|
6805
|
-
setSelectedRowKeys as
|
|
6739
|
+
selectList as selectList4,
|
|
6740
|
+
useAppDispatch as useAppDispatch6,
|
|
6741
|
+
setSelectedRowKeys as setSelectedRowKeys2
|
|
6806
6742
|
} from "@fctc/interface-logic/store";
|
|
6807
6743
|
|
|
6808
6744
|
// src/environment.ts
|
|
@@ -6831,18 +6767,18 @@ var tableGroupController = (props) => {
|
|
|
6831
6767
|
setIsAutoSelect,
|
|
6832
6768
|
selectedRowKeysRef
|
|
6833
6769
|
} = props;
|
|
6834
|
-
const [pageGroup, setPageGroup] =
|
|
6835
|
-
const { groupByDomain, selectedTags } =
|
|
6836
|
-
const { selectedRowKeys } =
|
|
6837
|
-
const appDispatch =
|
|
6770
|
+
const [pageGroup, setPageGroup] = useState15(0);
|
|
6771
|
+
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
6772
|
+
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
6773
|
+
const appDispatch = useAppDispatch6();
|
|
6838
6774
|
const { toDataJS } = useOdooDataTransform();
|
|
6839
6775
|
const initVal = toDataJS(row, viewData, model);
|
|
6840
|
-
const [isShowGroup, setIsShowGroup] =
|
|
6841
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
6776
|
+
const [isShowGroup, setIsShowGroup] = useState15(false);
|
|
6777
|
+
const [colEmptyGroup, setColEmptyGroup] = useState15({
|
|
6842
6778
|
fromStart: 1,
|
|
6843
6779
|
fromEnd: 1
|
|
6844
6780
|
});
|
|
6845
|
-
const processedData =
|
|
6781
|
+
const processedData = useMemo13(() => {
|
|
6846
6782
|
const calculateColSpanEmpty = () => {
|
|
6847
6783
|
const startIndex = columns.findIndex(
|
|
6848
6784
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -6857,7 +6793,7 @@ var tableGroupController = (props) => {
|
|
|
6857
6793
|
};
|
|
6858
6794
|
return calculateColSpanEmpty();
|
|
6859
6795
|
}, [columns, row]);
|
|
6860
|
-
const shouldFetchData =
|
|
6796
|
+
const shouldFetchData = useMemo13(() => {
|
|
6861
6797
|
return !!isShowGroup;
|
|
6862
6798
|
}, [isShowGroup]);
|
|
6863
6799
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -6897,7 +6833,7 @@ var tableGroupController = (props) => {
|
|
|
6897
6833
|
}
|
|
6898
6834
|
});
|
|
6899
6835
|
const leftPadding = level > 1 ? level * 8 + "px" : "0px";
|
|
6900
|
-
|
|
6836
|
+
useEffect14(() => {
|
|
6901
6837
|
if (isShowGroup && selectedTags?.length > 0) {
|
|
6902
6838
|
setIsShowGroup(false);
|
|
6903
6839
|
}
|
|
@@ -6920,24 +6856,24 @@ var tableGroupController = (props) => {
|
|
|
6920
6856
|
const filteredIds = selectedRowKeys.filter(
|
|
6921
6857
|
(id) => !ids.includes(id)
|
|
6922
6858
|
);
|
|
6923
|
-
appDispatch(
|
|
6859
|
+
appDispatch(setSelectedRowKeys2(filteredIds));
|
|
6924
6860
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
|
|
6925
6861
|
const clonedKeys = [...selectedRowKeys];
|
|
6926
|
-
appDispatch(
|
|
6927
|
-
setTimeout(() => appDispatch(
|
|
6862
|
+
appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
|
|
6863
|
+
setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
|
|
6928
6864
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
6929
6865
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
6930
|
-
appDispatch(
|
|
6866
|
+
appDispatch(setSelectedRowKeys2(filteredKeys));
|
|
6931
6867
|
}
|
|
6932
6868
|
toggleShowGroup();
|
|
6933
6869
|
};
|
|
6934
|
-
|
|
6870
|
+
useEffect14(() => {
|
|
6935
6871
|
if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
6936
6872
|
return;
|
|
6937
6873
|
}
|
|
6938
6874
|
const clonedKeys = [...selectedRowKeys];
|
|
6939
|
-
|
|
6940
|
-
setTimeout(() =>
|
|
6875
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
6876
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
6941
6877
|
}, [isQueryFetched]);
|
|
6942
6878
|
return {
|
|
6943
6879
|
handleExpandChildGroup,
|
|
@@ -6975,26 +6911,28 @@ var import_moment2 = __toESM(require_moment());
|
|
|
6975
6911
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
6976
6912
|
import {
|
|
6977
6913
|
domainHelper as domainHelper2,
|
|
6978
|
-
|
|
6914
|
+
evalJSONContext as evalJSONContext8,
|
|
6915
|
+
evalJSONDomain as evalJSONDomain7,
|
|
6979
6916
|
validateAndParseDate
|
|
6980
6917
|
} from "@fctc/interface-logic/utils";
|
|
6981
|
-
import { useCallback as useCallback3, useEffect as
|
|
6918
|
+
import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
|
|
6982
6919
|
var searchController = ({
|
|
6983
6920
|
viewData,
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
searchMap
|
|
6921
|
+
model,
|
|
6922
|
+
domain,
|
|
6923
|
+
context,
|
|
6924
|
+
fieldsList
|
|
6989
6925
|
}) => {
|
|
6990
|
-
const
|
|
6991
|
-
const [
|
|
6992
|
-
const [
|
|
6993
|
-
const [
|
|
6994
|
-
const [
|
|
6995
|
-
const
|
|
6996
|
-
const
|
|
6997
|
-
const
|
|
6926
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
6927
|
+
const [filterBy, setFilterBy] = useState16(null);
|
|
6928
|
+
const [searchBy, setSearchBy] = useState16(null);
|
|
6929
|
+
const [groupBy, setGroupBy] = useState16(null);
|
|
6930
|
+
const [selectedTags, setSelectedTags] = useState16(null);
|
|
6931
|
+
const [searchString, setSearchString] = useState16("");
|
|
6932
|
+
const [searchMap, setSearchMap] = useState16({});
|
|
6933
|
+
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
6934
|
+
const contextSearch = { ...env.context, ...actionContext };
|
|
6935
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
6998
6936
|
const clearSearch = () => {
|
|
6999
6937
|
setFilterBy([]);
|
|
7000
6938
|
setGroupBy([]);
|
|
@@ -7038,10 +6976,9 @@ var searchController = ({
|
|
|
7038
6976
|
}
|
|
7039
6977
|
}
|
|
7040
6978
|
};
|
|
7041
|
-
|
|
7042
|
-
clearSearch();
|
|
6979
|
+
useEffect15(() => {
|
|
7043
6980
|
fetchData();
|
|
7044
|
-
}, [
|
|
6981
|
+
}, [model, viewData]);
|
|
7045
6982
|
const onChangeSearchInput = (search_string) => {
|
|
7046
6983
|
setSearchString(search_string);
|
|
7047
6984
|
};
|
|
@@ -7078,27 +7015,27 @@ var searchController = ({
|
|
|
7078
7015
|
};
|
|
7079
7016
|
const formatDomain = () => {
|
|
7080
7017
|
if (domainAction) {
|
|
7081
|
-
const
|
|
7018
|
+
const domain2 = [];
|
|
7082
7019
|
if (domainAction?.length > 0) {
|
|
7083
|
-
if (Object.keys(searchMap).
|
|
7084
|
-
|
|
7020
|
+
if (Object.keys(searchMap).some((key) => !key.includes(SearchType.GROUP))) {
|
|
7021
|
+
domain2.push("&");
|
|
7085
7022
|
}
|
|
7086
7023
|
domainAction.forEach((domainItem) => {
|
|
7087
|
-
|
|
7024
|
+
domain2.push(domainItem);
|
|
7088
7025
|
});
|
|
7089
7026
|
}
|
|
7090
7027
|
Object.keys(searchMap).forEach((key, keyIndex, keys) => {
|
|
7091
7028
|
if (!key?.includes(SearchType.GROUP)) {
|
|
7092
7029
|
if (keys.length > 1 && keyIndex < keys.length - 1) {
|
|
7093
|
-
|
|
7030
|
+
domain2.push("&");
|
|
7094
7031
|
}
|
|
7095
7032
|
const valuesOfKey = searchMap[key];
|
|
7096
7033
|
valuesOfKey.forEach((value, index) => {
|
|
7097
7034
|
if (index < valuesOfKey.length - 1) {
|
|
7098
|
-
|
|
7035
|
+
domain2.push("|");
|
|
7099
7036
|
}
|
|
7100
7037
|
if (value.domain) {
|
|
7101
|
-
|
|
7038
|
+
domain2.push(...value.domain);
|
|
7102
7039
|
return;
|
|
7103
7040
|
}
|
|
7104
7041
|
let valueDomainItem = value?.value;
|
|
@@ -7114,11 +7051,11 @@ var searchController = ({
|
|
|
7114
7051
|
}
|
|
7115
7052
|
}
|
|
7116
7053
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
7117
|
-
|
|
7054
|
+
domain2.push([value.name, operator, valueDomainItem]);
|
|
7118
7055
|
});
|
|
7119
7056
|
}
|
|
7120
7057
|
});
|
|
7121
|
-
return [...
|
|
7058
|
+
return [...domain2];
|
|
7122
7059
|
}
|
|
7123
7060
|
};
|
|
7124
7061
|
const setTagSearch = useCallback3(
|
|
@@ -7149,16 +7086,16 @@ var searchController = ({
|
|
|
7149
7086
|
const contexts = [];
|
|
7150
7087
|
let groupValues = [];
|
|
7151
7088
|
objValues?.forEach((objValue) => {
|
|
7152
|
-
const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7089
|
+
const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7153
7090
|
const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
|
|
7154
7091
|
contexts.push(
|
|
7155
|
-
...Array.isArray(
|
|
7092
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
|
|
7156
7093
|
);
|
|
7157
7094
|
groupValues[indexAppend] = {
|
|
7158
7095
|
contexts: [
|
|
7159
|
-
...Array.isArray(
|
|
7096
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
|
|
7160
7097
|
group_by: item
|
|
7161
|
-
})) : [
|
|
7098
|
+
})) : [context2]
|
|
7162
7099
|
],
|
|
7163
7100
|
strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
|
|
7164
7101
|
};
|
|
@@ -7184,40 +7121,39 @@ var searchController = ({
|
|
|
7184
7121
|
},
|
|
7185
7122
|
[searchMap]
|
|
7186
7123
|
);
|
|
7187
|
-
|
|
7188
|
-
setSelectedTags(null);
|
|
7124
|
+
useEffect15(() => {
|
|
7189
7125
|
setTagSearch(searchMap);
|
|
7190
7126
|
}, [searchMap]);
|
|
7191
7127
|
const handleAddTagSearch = (tag) => {
|
|
7192
7128
|
const {
|
|
7193
|
-
domain,
|
|
7129
|
+
domain: domain2,
|
|
7194
7130
|
groupIndex,
|
|
7195
7131
|
value,
|
|
7196
7132
|
type,
|
|
7197
7133
|
title,
|
|
7198
|
-
context,
|
|
7134
|
+
context: context2,
|
|
7199
7135
|
active,
|
|
7200
7136
|
dataIndex
|
|
7201
7137
|
} = tag;
|
|
7202
|
-
const domainFormat = new domainHelper2.Domain(
|
|
7138
|
+
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7203
7139
|
if (type === SearchType.FILTER) {
|
|
7204
7140
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
7205
7141
|
...tag,
|
|
7206
|
-
domain:
|
|
7142
|
+
domain: domain2 ? domainFormat.toList(context2) : null
|
|
7207
7143
|
});
|
|
7208
7144
|
} else if (type === SearchType.SEARCH) {
|
|
7209
7145
|
addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
|
|
7210
7146
|
...tag,
|
|
7211
|
-
domain:
|
|
7212
|
-
...
|
|
7147
|
+
domain: domain2 ? domainFormat.toList({
|
|
7148
|
+
...context2,
|
|
7213
7149
|
self: value
|
|
7214
7150
|
}) : null
|
|
7215
7151
|
});
|
|
7216
7152
|
} else if (type === SearchType.GROUP) {
|
|
7217
7153
|
addSearchItems(`${SearchType.GROUP}`, {
|
|
7218
7154
|
...tag,
|
|
7219
|
-
domain:
|
|
7220
|
-
context,
|
|
7155
|
+
domain: domain2 ? domainFormat.toList({
|
|
7156
|
+
context: context2,
|
|
7221
7157
|
self: value
|
|
7222
7158
|
}) : null
|
|
7223
7159
|
});
|
|
@@ -7237,7 +7173,8 @@ var searchController = ({
|
|
|
7237
7173
|
removeSearchItems,
|
|
7238
7174
|
onSearchString: onChangeSearchInput,
|
|
7239
7175
|
handleAddTagSearch,
|
|
7240
|
-
domain: formatDomain()
|
|
7176
|
+
domain: formatDomain(),
|
|
7177
|
+
context: contextSearch
|
|
7241
7178
|
};
|
|
7242
7179
|
};
|
|
7243
7180
|
export {
|
|
@@ -7255,7 +7192,6 @@ export {
|
|
|
7255
7192
|
priorityFieldController,
|
|
7256
7193
|
searchController,
|
|
7257
7194
|
statusDropdownController,
|
|
7258
|
-
tableBodyController,
|
|
7259
7195
|
tableController,
|
|
7260
7196
|
tableGroupController,
|
|
7261
7197
|
tableHeadController
|