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