@fctc/widget-logic 2.2.3 → 2.2.4
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/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +153 -271
- package/dist/index.mjs +142 -264
- package/dist/types.d.mts +2 -0
- package/dist/types.d.ts +2 -0
- package/dist/widget.d.mts +49 -46
- package/dist/widget.d.ts +49 -46
- package/dist/widget.js +153 -271
- package/dist/widget.mjs +142 -263
- package/package.json +2 -2
package/dist/widget.mjs
CHANGED
|
@@ -5021,6 +5021,7 @@ var many2oneFieldController = (props) => {
|
|
|
5021
5021
|
options: fieldOptions,
|
|
5022
5022
|
showDetail
|
|
5023
5023
|
} = props;
|
|
5024
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5024
5025
|
const [options, setOptions] = useState8([]);
|
|
5025
5026
|
const [inputValue, setInputValue] = useState8("");
|
|
5026
5027
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
@@ -5030,15 +5031,14 @@ var many2oneFieldController = (props) => {
|
|
|
5030
5031
|
const [domainObject, setDomainObject] = useState8(null);
|
|
5031
5032
|
const actionData = sessionStorageUtils.getActionData();
|
|
5032
5033
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5033
|
-
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
5034
5034
|
const initValue = methods?.getValues(name);
|
|
5035
5035
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
5036
5036
|
const contextObject = {
|
|
5037
5037
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
5038
5038
|
...fieldContext,
|
|
5039
|
-
...context
|
|
5039
|
+
...env?.context
|
|
5040
5040
|
};
|
|
5041
|
-
const { useGetSelection:
|
|
5041
|
+
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5042
5042
|
const data = {
|
|
5043
5043
|
model: relation,
|
|
5044
5044
|
domain: domainObject,
|
|
@@ -5054,7 +5054,7 @@ var many2oneFieldController = (props) => {
|
|
|
5054
5054
|
data: dataOfSelection,
|
|
5055
5055
|
refetch,
|
|
5056
5056
|
isFetching
|
|
5057
|
-
} =
|
|
5057
|
+
} = useGetSelection2({
|
|
5058
5058
|
data,
|
|
5059
5059
|
queryKey,
|
|
5060
5060
|
enabled: false
|
|
@@ -5208,15 +5208,9 @@ var many2oneButtonController = (props) => {
|
|
|
5208
5208
|
|
|
5209
5209
|
// src/widget/basic/many2many-field/controller.ts
|
|
5210
5210
|
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
|
|
5211
|
-
import {
|
|
5212
|
-
useAppDispatch as useAppDispatch5,
|
|
5213
|
-
setFirstDomain,
|
|
5214
|
-
setViewDataStore,
|
|
5215
|
-
setPage,
|
|
5216
|
-
setGroupByDomain
|
|
5217
|
-
} from "@fctc/interface-logic/store";
|
|
5218
5211
|
import {
|
|
5219
5212
|
evalJSONContext as evalJSONContext4,
|
|
5213
|
+
evalJSONDomain as evalJSONDomain4,
|
|
5220
5214
|
formatSortingString as formatSortingString2
|
|
5221
5215
|
} from "@fctc/interface-logic/utils";
|
|
5222
5216
|
var many2manyFieldController = (props) => {
|
|
@@ -5224,45 +5218,43 @@ var many2manyFieldController = (props) => {
|
|
|
5224
5218
|
relation,
|
|
5225
5219
|
domain,
|
|
5226
5220
|
context,
|
|
5221
|
+
options,
|
|
5227
5222
|
tab,
|
|
5228
|
-
|
|
5229
|
-
aid,
|
|
5230
|
-
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5231
|
-
fields,
|
|
5232
|
-
setFields,
|
|
5223
|
+
setSelectedRowKeys: setSelectedRowKeys3,
|
|
5233
5224
|
groupByDomain,
|
|
5234
|
-
|
|
5235
|
-
|
|
5236
|
-
sessionStorageUtils
|
|
5225
|
+
enabled: enabledCallAPI,
|
|
5226
|
+
actionData
|
|
5237
5227
|
} = props;
|
|
5238
|
-
const appDispatch = useAppDispatch5();
|
|
5239
|
-
const actionData = sessionStorageUtils.getActionData();
|
|
5240
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5241
|
-
const [order, setOrder] = useState9();
|
|
5242
|
-
const [isLoadedData, setIsLoadedData] = useState9(false);
|
|
5243
|
-
const [domainMany2Many, setDomainMany2Many] = useState9(domain);
|
|
5244
5228
|
const { env } = (0, provider_exports.useEnv)();
|
|
5245
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
|
+
};
|
|
5246
5238
|
const viewParams = {
|
|
5247
5239
|
model: relation,
|
|
5248
5240
|
views: [
|
|
5249
5241
|
[false, "list"],
|
|
5250
5242
|
[false, "search"]
|
|
5251
5243
|
],
|
|
5252
|
-
context
|
|
5244
|
+
context: contextObject
|
|
5253
5245
|
};
|
|
5254
|
-
const { data: viewResponse } = useGetView2(viewParams,
|
|
5246
|
+
const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
|
|
5255
5247
|
const baseModel = useMemo10(
|
|
5256
5248
|
() => ({
|
|
5257
5249
|
name: String(relation),
|
|
5258
5250
|
view: viewResponse || {},
|
|
5259
|
-
actContext:
|
|
5251
|
+
actContext: contextObject,
|
|
5260
5252
|
fields: [
|
|
5261
5253
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5262
5254
|
...tab?.fields ? tab.fields : []
|
|
5263
5255
|
]
|
|
5264
5256
|
}),
|
|
5265
|
-
[
|
|
5257
|
+
[relation, viewResponse]
|
|
5266
5258
|
);
|
|
5267
5259
|
const initModel = (0, hooks_exports.useModel)();
|
|
5268
5260
|
const modelInstance = useMemo10(() => {
|
|
@@ -5281,26 +5273,15 @@ var many2manyFieldController = (props) => {
|
|
|
5281
5273
|
const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
|
|
5282
5274
|
const fetchData = async () => {
|
|
5283
5275
|
try {
|
|
5284
|
-
|
|
5285
|
-
|
|
5286
|
-
|
|
5287
|
-
const modalData = viewResponse?.views?.list?.fields.map((field) => ({
|
|
5288
|
-
...viewResponse?.models?.[String(model)]?.[field?.name],
|
|
5289
|
-
...field
|
|
5290
|
-
}));
|
|
5291
|
-
if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
|
|
5292
|
-
setFields({
|
|
5293
|
-
...fields,
|
|
5294
|
-
[`${aid}_${relation}_popupmany2many`]: modalData
|
|
5295
|
-
});
|
|
5296
|
-
}
|
|
5297
|
-
appDispatch(setPage(0));
|
|
5276
|
+
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5277
|
+
setDomainMany2Many(domainParse);
|
|
5278
|
+
setPage(0);
|
|
5298
5279
|
} catch (err) {
|
|
5299
5280
|
console.log(err);
|
|
5300
5281
|
}
|
|
5301
5282
|
};
|
|
5302
5283
|
const queryKey = [
|
|
5303
|
-
`view-${relation}
|
|
5284
|
+
`view-${relation}`,
|
|
5304
5285
|
specification,
|
|
5305
5286
|
domainMany2Many,
|
|
5306
5287
|
debouncedPage,
|
|
@@ -5313,16 +5294,16 @@ var many2manyFieldController = (props) => {
|
|
|
5313
5294
|
domain: domainMany2Many,
|
|
5314
5295
|
offset: debouncedPage * 10,
|
|
5315
5296
|
limit: 10,
|
|
5316
|
-
context,
|
|
5297
|
+
context: contextObject,
|
|
5317
5298
|
fields: groupByDomain?.fields,
|
|
5318
5299
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5319
5300
|
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5320
5301
|
};
|
|
5321
|
-
const enabled =
|
|
5302
|
+
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5322
5303
|
const {
|
|
5323
5304
|
data: dataResponse,
|
|
5324
|
-
isLoading
|
|
5325
|
-
isFetched
|
|
5305
|
+
isLoading,
|
|
5306
|
+
isFetched,
|
|
5326
5307
|
isPlaceholderData
|
|
5327
5308
|
} = useGetListData3(data, queryKey, enabled);
|
|
5328
5309
|
useEffect11(() => {
|
|
@@ -5330,76 +5311,57 @@ var many2manyFieldController = (props) => {
|
|
|
5330
5311
|
fetchData();
|
|
5331
5312
|
}
|
|
5332
5313
|
return () => {
|
|
5333
|
-
|
|
5334
|
-
|
|
5335
|
-
...prevFields,
|
|
5336
|
-
[`${aid}_${relation}_popupmany2many`]: null
|
|
5337
|
-
}));
|
|
5338
|
-
appDispatch(setPage(0));
|
|
5339
|
-
setSelectedRowKeys4([]);
|
|
5314
|
+
setPage(0);
|
|
5315
|
+
setSelectedRowKeys3([]);
|
|
5340
5316
|
setDomainMany2Many(null);
|
|
5341
|
-
setIsLoadedData(false);
|
|
5342
5317
|
};
|
|
5343
5318
|
}, [viewResponse]);
|
|
5344
|
-
const { rows, columns, typeTable } = tableController({
|
|
5319
|
+
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
5345
5320
|
data: {
|
|
5346
|
-
fields:
|
|
5321
|
+
fields: viewResponse?.views?.list?.fields,
|
|
5347
5322
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5348
5323
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5349
|
-
context:
|
|
5324
|
+
context: contextObject,
|
|
5350
5325
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5351
5326
|
}
|
|
5352
5327
|
});
|
|
5353
|
-
const
|
|
5354
|
-
|
|
5355
|
-
model: relation,
|
|
5356
|
-
context
|
|
5357
|
-
|
|
5358
|
-
|
|
5359
|
-
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
data: dataFormView,
|
|
5364
|
-
queryKey: [`form-view-action-${relation}`],
|
|
5365
|
-
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
|
+
]
|
|
5366
5338
|
});
|
|
5367
|
-
useEffect11(() => {
|
|
5368
|
-
if (isSuccess && dataFormViewResponse) {
|
|
5369
|
-
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5370
|
-
window.location.href = `/form/menu?model=${relation}`;
|
|
5371
|
-
}
|
|
5372
|
-
}, [isSuccess]);
|
|
5373
|
-
useEffect11(() => {
|
|
5374
|
-
if (domainMany2Many && !isLoadedData) {
|
|
5375
|
-
setIsLoadedData(true);
|
|
5376
|
-
}
|
|
5377
|
-
}, [domainMany2Many]);
|
|
5378
5339
|
const handleCreateNewOnPage = async () => {
|
|
5379
|
-
try {
|
|
5380
|
-
refetch();
|
|
5381
|
-
} catch (error) {
|
|
5382
|
-
console.log(error);
|
|
5383
|
-
}
|
|
5384
5340
|
};
|
|
5385
5341
|
return {
|
|
5386
5342
|
handleCreateNewOnPage,
|
|
5387
5343
|
optionsObject,
|
|
5344
|
+
totalRows: dataResponse?.length ?? 0,
|
|
5388
5345
|
rows,
|
|
5389
5346
|
columns,
|
|
5347
|
+
onToggleColumnOptional,
|
|
5390
5348
|
typeTable,
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
isPlaceholderData
|
|
5349
|
+
isLoading,
|
|
5350
|
+
isFetched,
|
|
5351
|
+
isPlaceholderData,
|
|
5352
|
+
setPage,
|
|
5353
|
+
page,
|
|
5354
|
+
viewData: viewResponse,
|
|
5355
|
+
domain: domainMany2Many,
|
|
5356
|
+
setDomain: setDomainMany2Many,
|
|
5357
|
+
searchController: searchControllers
|
|
5394
5358
|
};
|
|
5395
5359
|
};
|
|
5396
5360
|
|
|
5397
5361
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5398
5362
|
import { useMemo as useMemo11 } from "react";
|
|
5399
5363
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5400
|
-
import {
|
|
5401
|
-
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5402
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
|
|
5364
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5403
5365
|
var many2manyTagsController = (props) => {
|
|
5404
5366
|
const {
|
|
5405
5367
|
relation,
|
|
@@ -5410,10 +5372,11 @@ var many2manyTagsController = (props) => {
|
|
|
5410
5372
|
placeholderNoOption
|
|
5411
5373
|
} = props;
|
|
5412
5374
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5413
|
-
const env =
|
|
5375
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5376
|
+
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5414
5377
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5415
5378
|
const domainObject = useMemo11(
|
|
5416
|
-
() =>
|
|
5379
|
+
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5417
5380
|
[domain, formValues]
|
|
5418
5381
|
);
|
|
5419
5382
|
const data = {
|
|
@@ -5449,16 +5412,15 @@ var many2manyTagsController = (props) => {
|
|
|
5449
5412
|
options,
|
|
5450
5413
|
customNoOptionsMessage,
|
|
5451
5414
|
tranfer,
|
|
5452
|
-
dataOfSelection,
|
|
5453
5415
|
isUser
|
|
5454
5416
|
};
|
|
5455
5417
|
};
|
|
5456
5418
|
|
|
5457
5419
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5458
5420
|
import { useState as useState10 } from "react";
|
|
5459
|
-
import { evalJSONDomain as
|
|
5421
|
+
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5460
5422
|
var durationController = (props) => {
|
|
5461
|
-
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5423
|
+
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5462
5424
|
const specification = {
|
|
5463
5425
|
id: 0,
|
|
5464
5426
|
name: "",
|
|
@@ -5472,7 +5434,7 @@ var durationController = (props) => {
|
|
|
5472
5434
|
const listDataProps = {
|
|
5473
5435
|
model: relation,
|
|
5474
5436
|
specification,
|
|
5475
|
-
domain:
|
|
5437
|
+
domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5476
5438
|
limit: 10,
|
|
5477
5439
|
offset: 0,
|
|
5478
5440
|
fields: "",
|
|
@@ -5482,7 +5444,11 @@ var durationController = (props) => {
|
|
|
5482
5444
|
},
|
|
5483
5445
|
sort: ""
|
|
5484
5446
|
};
|
|
5485
|
-
const { data: dataResponse } = useGetListData3(
|
|
5447
|
+
const { data: dataResponse } = useGetListData3(
|
|
5448
|
+
listDataProps,
|
|
5449
|
+
queryKey,
|
|
5450
|
+
enabled
|
|
5451
|
+
);
|
|
5486
5452
|
const { mutate: fetchChangeStatus } = useChangeStatus();
|
|
5487
5453
|
const handleClick = async (stage_id) => {
|
|
5488
5454
|
setDisabled(true);
|
|
@@ -5518,41 +5484,28 @@ var durationController = (props) => {
|
|
|
5518
5484
|
};
|
|
5519
5485
|
|
|
5520
5486
|
// src/widget/basic/priority-field/controller.ts
|
|
5521
|
-
import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
|
|
5522
5487
|
import { evalJSONContext as evalJSONContext6 } from "@fctc/interface-logic/utils";
|
|
5523
5488
|
var priorityFieldController = (props) => {
|
|
5524
|
-
const {
|
|
5525
|
-
value,
|
|
5526
|
-
isForm,
|
|
5527
|
-
name,
|
|
5528
|
-
methods,
|
|
5529
|
-
onChange,
|
|
5530
|
-
model,
|
|
5531
|
-
selection,
|
|
5532
|
-
id,
|
|
5533
|
-
actionData,
|
|
5534
|
-
viewData,
|
|
5535
|
-
context
|
|
5536
|
-
} = props;
|
|
5489
|
+
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
5537
5490
|
const _context = { ...evalJSONContext6(actionData?.context) };
|
|
5538
5491
|
const contextObject = { ...context, ..._context };
|
|
5539
|
-
const
|
|
5540
|
-
const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
|
|
5492
|
+
const { useSave: useSave2 } = (0, provider_exports.useService)();
|
|
5541
5493
|
const { mutateAsync: fetchSave } = useSave2();
|
|
5542
5494
|
const savePriorities = async ({
|
|
5543
|
-
value
|
|
5495
|
+
value,
|
|
5544
5496
|
resetPriority
|
|
5545
5497
|
}) => {
|
|
5546
|
-
const priorityValue =
|
|
5498
|
+
const priorityValue = value <= 0 ? 0 : value - 1;
|
|
5547
5499
|
try {
|
|
5548
5500
|
fetchSave({
|
|
5549
|
-
ids:
|
|
5550
|
-
data: { [name
|
|
5551
|
-
model: model
|
|
5552
|
-
context: contextObject
|
|
5501
|
+
ids: index ? [index] : [],
|
|
5502
|
+
data: { [String(name)]: String(priorityValue) },
|
|
5503
|
+
model: String(model),
|
|
5504
|
+
context: contextObject,
|
|
5505
|
+
specification
|
|
5553
5506
|
});
|
|
5554
5507
|
if (typeof onChange === "function") {
|
|
5555
|
-
onChange(name
|
|
5508
|
+
onChange(String(name), String(priorityValue));
|
|
5556
5509
|
}
|
|
5557
5510
|
} catch (error) {
|
|
5558
5511
|
if (resetPriority) {
|
|
@@ -5561,14 +5514,7 @@ var priorityFieldController = (props) => {
|
|
|
5561
5514
|
}
|
|
5562
5515
|
};
|
|
5563
5516
|
return {
|
|
5564
|
-
|
|
5565
|
-
isForm,
|
|
5566
|
-
methods,
|
|
5567
|
-
defaultPriority,
|
|
5568
|
-
savePriorities,
|
|
5569
|
-
label,
|
|
5570
|
-
id,
|
|
5571
|
-
onChange
|
|
5517
|
+
savePriorities
|
|
5572
5518
|
};
|
|
5573
5519
|
};
|
|
5574
5520
|
|
|
@@ -6531,11 +6477,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
|
|
|
6531
6477
|
var colorFieldController = (props) => {
|
|
6532
6478
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6533
6479
|
const { env } = (0, provider_exports.useEnv)();
|
|
6534
|
-
const { useSave:
|
|
6480
|
+
const { useSave: useSave2 } = (0, provider_exports.useService)();
|
|
6535
6481
|
const _context = { ...evalJSONContext7(actionData?.context) || {} };
|
|
6536
6482
|
const contextObject = { ...env.context, ..._context };
|
|
6537
6483
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6538
|
-
const { mutate: onSave } =
|
|
6484
|
+
const { mutate: onSave } = useSave2();
|
|
6539
6485
|
const savePickColor = async (colorObject) => {
|
|
6540
6486
|
const { id } = colorObject;
|
|
6541
6487
|
if (value === id) return;
|
|
@@ -6657,108 +6603,41 @@ var binaryFieldController = (props) => {
|
|
|
6657
6603
|
};
|
|
6658
6604
|
};
|
|
6659
6605
|
|
|
6660
|
-
// src/widget/advance/table/table-body/controller.ts
|
|
6661
|
-
import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6662
|
-
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6663
|
-
var tableBodyController = (props) => {
|
|
6664
|
-
const {
|
|
6665
|
-
checkedAll,
|
|
6666
|
-
checkboxRef,
|
|
6667
|
-
setIsAutoSelect,
|
|
6668
|
-
selectedRowKeys,
|
|
6669
|
-
row,
|
|
6670
|
-
isAutoSelect,
|
|
6671
|
-
selectedRowKeysRef,
|
|
6672
|
-
onClickRow
|
|
6673
|
-
} = props;
|
|
6674
|
-
const appDispatch = useAppDispatch6();
|
|
6675
|
-
const checked = useMemo12(() => {
|
|
6676
|
-
if (!row?.id) return false;
|
|
6677
|
-
if (selectedRowKeys?.includes(row.id)) {
|
|
6678
|
-
return true;
|
|
6679
|
-
}
|
|
6680
|
-
return checkedAll;
|
|
6681
|
-
}, [row?.id, selectedRowKeys, checkedAll]);
|
|
6682
|
-
const handleCheckBoxSingle = (event) => {
|
|
6683
|
-
event.stopPropagation();
|
|
6684
|
-
if (checkedAll) {
|
|
6685
|
-
checkboxRef.current = "uncheck";
|
|
6686
|
-
setIsAutoSelect(true);
|
|
6687
|
-
return;
|
|
6688
|
-
}
|
|
6689
|
-
const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
|
|
6690
|
-
console.log("newSelectedRowKeys", newSelectedRowKeys);
|
|
6691
|
-
appDispatch(setSelectedRowKeys(newSelectedRowKeys));
|
|
6692
|
-
};
|
|
6693
|
-
const handleClickRow = (col, row2) => {
|
|
6694
|
-
onClickRow(col, row2);
|
|
6695
|
-
};
|
|
6696
|
-
useEffect13(() => {
|
|
6697
|
-
if (!row?.id) return;
|
|
6698
|
-
if (isAutoSelect) {
|
|
6699
|
-
if (checkboxRef?.current === "uncheck") {
|
|
6700
|
-
const filtered = selectedRowKeysRef.current.filter(
|
|
6701
|
-
(id) => id !== row.id
|
|
6702
|
-
);
|
|
6703
|
-
selectedRowKeysRef.current = filtered;
|
|
6704
|
-
appDispatch(setSelectedRowKeys(filtered));
|
|
6705
|
-
} else {
|
|
6706
|
-
const unique = Array.from(
|
|
6707
|
-
/* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
|
|
6708
|
-
);
|
|
6709
|
-
selectedRowKeysRef.current = unique;
|
|
6710
|
-
appDispatch(setSelectedRowKeys(unique));
|
|
6711
|
-
}
|
|
6712
|
-
}
|
|
6713
|
-
}, [isAutoSelect]);
|
|
6714
|
-
useEffect13(() => {
|
|
6715
|
-
if (!checkedAll) {
|
|
6716
|
-
checkboxRef.current = "enabled";
|
|
6717
|
-
false;
|
|
6718
|
-
}
|
|
6719
|
-
}, [checkedAll]);
|
|
6720
|
-
return {
|
|
6721
|
-
handleCheckBoxSingle,
|
|
6722
|
-
checked,
|
|
6723
|
-
handleClickRow
|
|
6724
|
-
};
|
|
6725
|
-
};
|
|
6726
|
-
|
|
6727
6606
|
// src/widget/advance/table/table-head/controller.ts
|
|
6728
6607
|
import {
|
|
6729
|
-
useAppDispatch as
|
|
6608
|
+
useAppDispatch as useAppDispatch5,
|
|
6730
6609
|
useAppSelector as useAppSelector4,
|
|
6731
6610
|
selectSearch as selectSearch3,
|
|
6732
|
-
setSelectedRowKeys
|
|
6611
|
+
setSelectedRowKeys
|
|
6733
6612
|
} from "@fctc/interface-logic/store";
|
|
6734
6613
|
var tableHeadController = (props) => {
|
|
6735
6614
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6736
|
-
const appDispatch =
|
|
6615
|
+
const appDispatch = useAppDispatch5();
|
|
6737
6616
|
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
6738
6617
|
const handleCheckBoxAll = (event) => {
|
|
6739
6618
|
if (event?.target?.checked && typeTable === "list") {
|
|
6740
6619
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
6741
|
-
appDispatch(
|
|
6620
|
+
appDispatch(setSelectedRowKeys(allRowKeys));
|
|
6742
6621
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
6743
6622
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
6744
6623
|
const ids = Array.from(rowsIDs)?.map(
|
|
6745
6624
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
6746
6625
|
);
|
|
6747
6626
|
if (ids?.length > 0) {
|
|
6748
|
-
appDispatch(
|
|
6627
|
+
appDispatch(setSelectedRowKeys(ids));
|
|
6749
6628
|
} else {
|
|
6750
6629
|
const sum = countSum(
|
|
6751
6630
|
rows,
|
|
6752
6631
|
typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
|
|
6753
6632
|
);
|
|
6754
6633
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
6755
|
-
appDispatch(
|
|
6634
|
+
appDispatch(setSelectedRowKeys(keys));
|
|
6756
6635
|
}
|
|
6757
6636
|
if (selectedRowKeysRef) {
|
|
6758
6637
|
selectedRowKeysRef.current = [];
|
|
6759
6638
|
}
|
|
6760
6639
|
} else {
|
|
6761
|
-
appDispatch(
|
|
6640
|
+
appDispatch(setSelectedRowKeys([]));
|
|
6762
6641
|
}
|
|
6763
6642
|
};
|
|
6764
6643
|
return {
|
|
@@ -6767,7 +6646,7 @@ var tableHeadController = (props) => {
|
|
|
6767
6646
|
};
|
|
6768
6647
|
|
|
6769
6648
|
// src/widget/advance/table/table-view/controller.ts
|
|
6770
|
-
import { useEffect as
|
|
6649
|
+
import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
|
|
6771
6650
|
import {
|
|
6772
6651
|
useAppSelector as useAppSelector5,
|
|
6773
6652
|
selectSearch as selectSearch4,
|
|
@@ -6804,7 +6683,7 @@ var tableController = ({ data }) => {
|
|
|
6804
6683
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6805
6684
|
});
|
|
6806
6685
|
};
|
|
6807
|
-
|
|
6686
|
+
useEffect13(() => {
|
|
6808
6687
|
setRows(transformData(data.records || null));
|
|
6809
6688
|
}, [data.records]);
|
|
6810
6689
|
const handleGetColumns = () => {
|
|
@@ -6825,7 +6704,7 @@ var tableController = ({ data }) => {
|
|
|
6825
6704
|
}
|
|
6826
6705
|
return cols;
|
|
6827
6706
|
};
|
|
6828
|
-
|
|
6707
|
+
useEffect13(() => {
|
|
6829
6708
|
const columns2 = handleGetColumns();
|
|
6830
6709
|
setColumns(columns2);
|
|
6831
6710
|
}, [data.records]);
|
|
@@ -6850,7 +6729,7 @@ var tableController = ({ data }) => {
|
|
|
6850
6729
|
};
|
|
6851
6730
|
|
|
6852
6731
|
// src/widget/advance/table/table-group/controller.ts
|
|
6853
|
-
import { useEffect as
|
|
6732
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
|
|
6854
6733
|
import {
|
|
6855
6734
|
useOdooDataTransform,
|
|
6856
6735
|
useGetListData as useGetListData2
|
|
@@ -6859,8 +6738,8 @@ import {
|
|
|
6859
6738
|
useAppSelector as useAppSelector6,
|
|
6860
6739
|
selectSearch as selectSearch5,
|
|
6861
6740
|
selectList as selectList4,
|
|
6862
|
-
useAppDispatch as
|
|
6863
|
-
setSelectedRowKeys as
|
|
6741
|
+
useAppDispatch as useAppDispatch6,
|
|
6742
|
+
setSelectedRowKeys as setSelectedRowKeys2
|
|
6864
6743
|
} from "@fctc/interface-logic/store";
|
|
6865
6744
|
|
|
6866
6745
|
// src/environment.ts
|
|
@@ -6892,7 +6771,7 @@ var tableGroupController = (props) => {
|
|
|
6892
6771
|
const [pageGroup, setPageGroup] = useState15(0);
|
|
6893
6772
|
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
6894
6773
|
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
6895
|
-
const appDispatch =
|
|
6774
|
+
const appDispatch = useAppDispatch6();
|
|
6896
6775
|
const { toDataJS } = useOdooDataTransform();
|
|
6897
6776
|
const initVal = toDataJS(row, viewData, model);
|
|
6898
6777
|
const [isShowGroup, setIsShowGroup] = useState15(false);
|
|
@@ -6900,7 +6779,7 @@ var tableGroupController = (props) => {
|
|
|
6900
6779
|
fromStart: 1,
|
|
6901
6780
|
fromEnd: 1
|
|
6902
6781
|
});
|
|
6903
|
-
const processedData =
|
|
6782
|
+
const processedData = useMemo13(() => {
|
|
6904
6783
|
const calculateColSpanEmpty = () => {
|
|
6905
6784
|
const startIndex = columns.findIndex(
|
|
6906
6785
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -6915,7 +6794,7 @@ var tableGroupController = (props) => {
|
|
|
6915
6794
|
};
|
|
6916
6795
|
return calculateColSpanEmpty();
|
|
6917
6796
|
}, [columns, row]);
|
|
6918
|
-
const shouldFetchData =
|
|
6797
|
+
const shouldFetchData = useMemo13(() => {
|
|
6919
6798
|
return !!isShowGroup;
|
|
6920
6799
|
}, [isShowGroup]);
|
|
6921
6800
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -6955,7 +6834,7 @@ var tableGroupController = (props) => {
|
|
|
6955
6834
|
}
|
|
6956
6835
|
});
|
|
6957
6836
|
const leftPadding = level > 1 ? level * 8 + "px" : "0px";
|
|
6958
|
-
|
|
6837
|
+
useEffect14(() => {
|
|
6959
6838
|
if (isShowGroup && selectedTags?.length > 0) {
|
|
6960
6839
|
setIsShowGroup(false);
|
|
6961
6840
|
}
|
|
@@ -6978,24 +6857,24 @@ var tableGroupController = (props) => {
|
|
|
6978
6857
|
const filteredIds = selectedRowKeys.filter(
|
|
6979
6858
|
(id) => !ids.includes(id)
|
|
6980
6859
|
);
|
|
6981
|
-
appDispatch(
|
|
6860
|
+
appDispatch(setSelectedRowKeys2(filteredIds));
|
|
6982
6861
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
|
|
6983
6862
|
const clonedKeys = [...selectedRowKeys];
|
|
6984
|
-
appDispatch(
|
|
6985
|
-
setTimeout(() => appDispatch(
|
|
6863
|
+
appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
|
|
6864
|
+
setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
|
|
6986
6865
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
6987
6866
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
6988
|
-
appDispatch(
|
|
6867
|
+
appDispatch(setSelectedRowKeys2(filteredKeys));
|
|
6989
6868
|
}
|
|
6990
6869
|
toggleShowGroup();
|
|
6991
6870
|
};
|
|
6992
|
-
|
|
6871
|
+
useEffect14(() => {
|
|
6993
6872
|
if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
6994
6873
|
return;
|
|
6995
6874
|
}
|
|
6996
6875
|
const clonedKeys = [...selectedRowKeys];
|
|
6997
|
-
|
|
6998
|
-
setTimeout(() =>
|
|
6876
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
6877
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
6999
6878
|
}, [isQueryFetched]);
|
|
7000
6879
|
return {
|
|
7001
6880
|
handleExpandChildGroup,
|
|
@@ -7033,26 +6912,28 @@ var import_moment2 = __toESM(require_moment());
|
|
|
7033
6912
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
7034
6913
|
import {
|
|
7035
6914
|
domainHelper as domainHelper2,
|
|
7036
|
-
|
|
6915
|
+
evalJSONContext as evalJSONContext8,
|
|
6916
|
+
evalJSONDomain as evalJSONDomain7,
|
|
7037
6917
|
validateAndParseDate
|
|
7038
6918
|
} from "@fctc/interface-logic/utils";
|
|
7039
|
-
import { useCallback as useCallback3, useEffect as
|
|
6919
|
+
import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
|
|
7040
6920
|
var searchController = ({
|
|
7041
6921
|
viewData,
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
searchMap
|
|
6922
|
+
model,
|
|
6923
|
+
domain,
|
|
6924
|
+
context,
|
|
6925
|
+
fieldsList
|
|
7047
6926
|
}) => {
|
|
6927
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
7048
6928
|
const [filterBy, setFilterBy] = useState16(null);
|
|
7049
6929
|
const [searchBy, setSearchBy] = useState16(null);
|
|
7050
6930
|
const [groupBy, setGroupBy] = useState16(null);
|
|
7051
6931
|
const [selectedTags, setSelectedTags] = useState16(null);
|
|
7052
6932
|
const [searchString, setSearchString] = useState16("");
|
|
7053
|
-
const
|
|
7054
|
-
const
|
|
7055
|
-
const
|
|
6933
|
+
const [searchMap, setSearchMap] = useState16({});
|
|
6934
|
+
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
6935
|
+
const contextSearch = { ...env.context, ...actionContext };
|
|
6936
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
7056
6937
|
const clearSearch = () => {
|
|
7057
6938
|
setFilterBy([]);
|
|
7058
6939
|
setGroupBy([]);
|
|
@@ -7096,10 +6977,9 @@ var searchController = ({
|
|
|
7096
6977
|
}
|
|
7097
6978
|
}
|
|
7098
6979
|
};
|
|
7099
|
-
|
|
7100
|
-
clearSearch();
|
|
6980
|
+
useEffect15(() => {
|
|
7101
6981
|
fetchData();
|
|
7102
|
-
}, [
|
|
6982
|
+
}, [model, viewData]);
|
|
7103
6983
|
const onChangeSearchInput = (search_string) => {
|
|
7104
6984
|
setSearchString(search_string);
|
|
7105
6985
|
};
|
|
@@ -7136,27 +7016,27 @@ var searchController = ({
|
|
|
7136
7016
|
};
|
|
7137
7017
|
const formatDomain = () => {
|
|
7138
7018
|
if (domainAction) {
|
|
7139
|
-
const
|
|
7019
|
+
const domain2 = [];
|
|
7140
7020
|
if (domainAction?.length > 0) {
|
|
7141
|
-
if (Object.keys(searchMap).
|
|
7142
|
-
|
|
7021
|
+
if (Object.keys(searchMap).some((key) => !key.includes(SearchType.GROUP))) {
|
|
7022
|
+
domain2.push("&");
|
|
7143
7023
|
}
|
|
7144
7024
|
domainAction.forEach((domainItem) => {
|
|
7145
|
-
|
|
7025
|
+
domain2.push(domainItem);
|
|
7146
7026
|
});
|
|
7147
7027
|
}
|
|
7148
7028
|
Object.keys(searchMap).forEach((key, keyIndex, keys) => {
|
|
7149
7029
|
if (!key?.includes(SearchType.GROUP)) {
|
|
7150
7030
|
if (keys.length > 1 && keyIndex < keys.length - 1) {
|
|
7151
|
-
|
|
7031
|
+
domain2.push("&");
|
|
7152
7032
|
}
|
|
7153
7033
|
const valuesOfKey = searchMap[key];
|
|
7154
7034
|
valuesOfKey.forEach((value, index) => {
|
|
7155
7035
|
if (index < valuesOfKey.length - 1) {
|
|
7156
|
-
|
|
7036
|
+
domain2.push("|");
|
|
7157
7037
|
}
|
|
7158
7038
|
if (value.domain) {
|
|
7159
|
-
|
|
7039
|
+
domain2.push(...value.domain);
|
|
7160
7040
|
return;
|
|
7161
7041
|
}
|
|
7162
7042
|
let valueDomainItem = value?.value;
|
|
@@ -7172,11 +7052,11 @@ var searchController = ({
|
|
|
7172
7052
|
}
|
|
7173
7053
|
}
|
|
7174
7054
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
7175
|
-
|
|
7055
|
+
domain2.push([value.name, operator, valueDomainItem]);
|
|
7176
7056
|
});
|
|
7177
7057
|
}
|
|
7178
7058
|
});
|
|
7179
|
-
return [...
|
|
7059
|
+
return [...domain2];
|
|
7180
7060
|
}
|
|
7181
7061
|
};
|
|
7182
7062
|
const setTagSearch = useCallback3(
|
|
@@ -7207,16 +7087,16 @@ var searchController = ({
|
|
|
7207
7087
|
const contexts = [];
|
|
7208
7088
|
let groupValues = [];
|
|
7209
7089
|
objValues?.forEach((objValue) => {
|
|
7210
|
-
const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7090
|
+
const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7211
7091
|
const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
|
|
7212
7092
|
contexts.push(
|
|
7213
|
-
...Array.isArray(
|
|
7093
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
|
|
7214
7094
|
);
|
|
7215
7095
|
groupValues[indexAppend] = {
|
|
7216
7096
|
contexts: [
|
|
7217
|
-
...Array.isArray(
|
|
7097
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
|
|
7218
7098
|
group_by: item
|
|
7219
|
-
})) : [
|
|
7099
|
+
})) : [context2]
|
|
7220
7100
|
],
|
|
7221
7101
|
strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
|
|
7222
7102
|
};
|
|
@@ -7242,40 +7122,39 @@ var searchController = ({
|
|
|
7242
7122
|
},
|
|
7243
7123
|
[searchMap]
|
|
7244
7124
|
);
|
|
7245
|
-
|
|
7246
|
-
setSelectedTags(null);
|
|
7125
|
+
useEffect15(() => {
|
|
7247
7126
|
setTagSearch(searchMap);
|
|
7248
7127
|
}, [searchMap]);
|
|
7249
7128
|
const handleAddTagSearch = (tag) => {
|
|
7250
7129
|
const {
|
|
7251
|
-
domain,
|
|
7130
|
+
domain: domain2,
|
|
7252
7131
|
groupIndex,
|
|
7253
7132
|
value,
|
|
7254
7133
|
type,
|
|
7255
7134
|
title,
|
|
7256
|
-
context,
|
|
7135
|
+
context: context2,
|
|
7257
7136
|
active,
|
|
7258
7137
|
dataIndex
|
|
7259
7138
|
} = tag;
|
|
7260
|
-
const domainFormat = new domainHelper2.Domain(
|
|
7139
|
+
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7261
7140
|
if (type === SearchType.FILTER) {
|
|
7262
7141
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
7263
7142
|
...tag,
|
|
7264
|
-
domain:
|
|
7143
|
+
domain: domain2 ? domainFormat.toList(context2) : null
|
|
7265
7144
|
});
|
|
7266
7145
|
} else if (type === SearchType.SEARCH) {
|
|
7267
7146
|
addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
|
|
7268
7147
|
...tag,
|
|
7269
|
-
domain:
|
|
7270
|
-
...
|
|
7148
|
+
domain: domain2 ? domainFormat.toList({
|
|
7149
|
+
...context2,
|
|
7271
7150
|
self: value
|
|
7272
7151
|
}) : null
|
|
7273
7152
|
});
|
|
7274
7153
|
} else if (type === SearchType.GROUP) {
|
|
7275
7154
|
addSearchItems(`${SearchType.GROUP}`, {
|
|
7276
7155
|
...tag,
|
|
7277
|
-
domain:
|
|
7278
|
-
context,
|
|
7156
|
+
domain: domain2 ? domainFormat.toList({
|
|
7157
|
+
context: context2,
|
|
7279
7158
|
self: value
|
|
7280
7159
|
}) : null
|
|
7281
7160
|
});
|
|
@@ -7295,7 +7174,8 @@ var searchController = ({
|
|
|
7295
7174
|
removeSearchItems,
|
|
7296
7175
|
onSearchString: onChangeSearchInput,
|
|
7297
7176
|
handleAddTagSearch,
|
|
7298
|
-
domain: formatDomain()
|
|
7177
|
+
domain: formatDomain(),
|
|
7178
|
+
context: contextSearch
|
|
7299
7179
|
};
|
|
7300
7180
|
};
|
|
7301
7181
|
export {
|
|
@@ -7313,7 +7193,6 @@ export {
|
|
|
7313
7193
|
priorityFieldController,
|
|
7314
7194
|
searchController,
|
|
7315
7195
|
statusDropdownController,
|
|
7316
|
-
tableBodyController,
|
|
7317
7196
|
tableController,
|
|
7318
7197
|
tableGroupController,
|
|
7319
7198
|
tableHeadController
|