@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/index.mjs
CHANGED
|
@@ -4072,7 +4072,6 @@ __export(index_exports, {
|
|
|
4072
4072
|
searchController: () => searchController,
|
|
4073
4073
|
setStorageItemAsync: () => setStorageItemAsync,
|
|
4074
4074
|
statusDropdownController: () => statusDropdownController,
|
|
4075
|
-
tableBodyController: () => tableBodyController,
|
|
4076
4075
|
tableController: () => tableController,
|
|
4077
4076
|
tableGroupController: () => tableGroupController,
|
|
4078
4077
|
tableHeadController: () => tableHeadController,
|
|
@@ -5320,6 +5319,7 @@ var many2oneFieldController = (props) => {
|
|
|
5320
5319
|
options: fieldOptions,
|
|
5321
5320
|
showDetail
|
|
5322
5321
|
} = props;
|
|
5322
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5323
5323
|
const [options, setOptions] = useState8([]);
|
|
5324
5324
|
const [inputValue, setInputValue] = useState8("");
|
|
5325
5325
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
@@ -5329,15 +5329,14 @@ var many2oneFieldController = (props) => {
|
|
|
5329
5329
|
const [domainObject, setDomainObject] = useState8(null);
|
|
5330
5330
|
const actionData = sessionStorageUtils.getActionData();
|
|
5331
5331
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5332
|
-
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
5333
5332
|
const initValue = methods?.getValues(name);
|
|
5334
5333
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
5335
5334
|
const contextObject = {
|
|
5336
5335
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
5337
5336
|
...fieldContext,
|
|
5338
|
-
...context
|
|
5337
|
+
...env?.context
|
|
5339
5338
|
};
|
|
5340
|
-
const { useGetSelection:
|
|
5339
|
+
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5341
5340
|
const data = {
|
|
5342
5341
|
model: relation,
|
|
5343
5342
|
domain: domainObject,
|
|
@@ -5353,7 +5352,7 @@ var many2oneFieldController = (props) => {
|
|
|
5353
5352
|
data: dataOfSelection,
|
|
5354
5353
|
refetch,
|
|
5355
5354
|
isFetching
|
|
5356
|
-
} =
|
|
5355
|
+
} = useGetSelection2({
|
|
5357
5356
|
data,
|
|
5358
5357
|
queryKey,
|
|
5359
5358
|
enabled: false
|
|
@@ -5507,15 +5506,9 @@ var many2oneButtonController = (props) => {
|
|
|
5507
5506
|
|
|
5508
5507
|
// src/widget/basic/many2many-field/controller.ts
|
|
5509
5508
|
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
|
|
5510
|
-
import {
|
|
5511
|
-
useAppDispatch as useAppDispatch5,
|
|
5512
|
-
setFirstDomain,
|
|
5513
|
-
setViewDataStore,
|
|
5514
|
-
setPage,
|
|
5515
|
-
setGroupByDomain
|
|
5516
|
-
} from "@fctc/interface-logic/store";
|
|
5517
5509
|
import {
|
|
5518
5510
|
evalJSONContext as evalJSONContext4,
|
|
5511
|
+
evalJSONDomain as evalJSONDomain4,
|
|
5519
5512
|
formatSortingString as formatSortingString2
|
|
5520
5513
|
} from "@fctc/interface-logic/utils";
|
|
5521
5514
|
var many2manyFieldController = (props) => {
|
|
@@ -5523,45 +5516,43 @@ var many2manyFieldController = (props) => {
|
|
|
5523
5516
|
relation,
|
|
5524
5517
|
domain,
|
|
5525
5518
|
context,
|
|
5519
|
+
options,
|
|
5526
5520
|
tab,
|
|
5527
|
-
|
|
5528
|
-
aid,
|
|
5529
|
-
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5530
|
-
fields,
|
|
5531
|
-
setFields,
|
|
5521
|
+
setSelectedRowKeys: setSelectedRowKeys3,
|
|
5532
5522
|
groupByDomain,
|
|
5533
|
-
|
|
5534
|
-
|
|
5535
|
-
sessionStorageUtils
|
|
5523
|
+
enabled: enabledCallAPI,
|
|
5524
|
+
actionData
|
|
5536
5525
|
} = props;
|
|
5537
|
-
const appDispatch = useAppDispatch5();
|
|
5538
|
-
const actionData = sessionStorageUtils.getActionData();
|
|
5539
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5540
|
-
const [order, setOrder] = useState9();
|
|
5541
|
-
const [isLoadedData, setIsLoadedData] = useState9(false);
|
|
5542
|
-
const [domainMany2Many, setDomainMany2Many] = useState9(domain);
|
|
5543
5526
|
const { env } = (0, provider_exports.useEnv)();
|
|
5544
5527
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5528
|
+
const [order, setOrder] = useState9();
|
|
5529
|
+
const [page, setPage] = useState9(0);
|
|
5530
|
+
const [domainMany2Many, setDomainMany2Many] = useState9(null);
|
|
5531
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
5532
|
+
const contextObject = {
|
|
5533
|
+
...env.context,
|
|
5534
|
+
...context || {}
|
|
5535
|
+
};
|
|
5545
5536
|
const viewParams = {
|
|
5546
5537
|
model: relation,
|
|
5547
5538
|
views: [
|
|
5548
5539
|
[false, "list"],
|
|
5549
5540
|
[false, "search"]
|
|
5550
5541
|
],
|
|
5551
|
-
context
|
|
5542
|
+
context: contextObject
|
|
5552
5543
|
};
|
|
5553
|
-
const { data: viewResponse } = useGetView2(viewParams,
|
|
5544
|
+
const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
|
|
5554
5545
|
const baseModel = useMemo10(
|
|
5555
5546
|
() => ({
|
|
5556
5547
|
name: String(relation),
|
|
5557
5548
|
view: viewResponse || {},
|
|
5558
|
-
actContext:
|
|
5549
|
+
actContext: contextObject,
|
|
5559
5550
|
fields: [
|
|
5560
5551
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5561
5552
|
...tab?.fields ? tab.fields : []
|
|
5562
5553
|
]
|
|
5563
5554
|
}),
|
|
5564
|
-
[
|
|
5555
|
+
[relation, viewResponse]
|
|
5565
5556
|
);
|
|
5566
5557
|
const initModel = (0, hooks_exports.useModel)();
|
|
5567
5558
|
const modelInstance = useMemo10(() => {
|
|
@@ -5580,26 +5571,15 @@ var many2manyFieldController = (props) => {
|
|
|
5580
5571
|
const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
|
|
5581
5572
|
const fetchData = async () => {
|
|
5582
5573
|
try {
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
const modalData = viewResponse?.views?.list?.fields.map((field) => ({
|
|
5587
|
-
...viewResponse?.models?.[String(model)]?.[field?.name],
|
|
5588
|
-
...field
|
|
5589
|
-
}));
|
|
5590
|
-
if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
|
|
5591
|
-
setFields({
|
|
5592
|
-
...fields,
|
|
5593
|
-
[`${aid}_${relation}_popupmany2many`]: modalData
|
|
5594
|
-
});
|
|
5595
|
-
}
|
|
5596
|
-
appDispatch(setPage(0));
|
|
5574
|
+
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5575
|
+
setDomainMany2Many(domainParse);
|
|
5576
|
+
setPage(0);
|
|
5597
5577
|
} catch (err) {
|
|
5598
5578
|
console.log(err);
|
|
5599
5579
|
}
|
|
5600
5580
|
};
|
|
5601
5581
|
const queryKey = [
|
|
5602
|
-
`view-${relation}
|
|
5582
|
+
`view-${relation}`,
|
|
5603
5583
|
specification,
|
|
5604
5584
|
domainMany2Many,
|
|
5605
5585
|
debouncedPage,
|
|
@@ -5612,16 +5592,16 @@ var many2manyFieldController = (props) => {
|
|
|
5612
5592
|
domain: domainMany2Many,
|
|
5613
5593
|
offset: debouncedPage * 10,
|
|
5614
5594
|
limit: 10,
|
|
5615
|
-
context,
|
|
5595
|
+
context: contextObject,
|
|
5616
5596
|
fields: groupByDomain?.fields,
|
|
5617
5597
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5618
5598
|
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5619
5599
|
};
|
|
5620
|
-
const enabled =
|
|
5600
|
+
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5621
5601
|
const {
|
|
5622
5602
|
data: dataResponse,
|
|
5623
|
-
isLoading
|
|
5624
|
-
isFetched
|
|
5603
|
+
isLoading,
|
|
5604
|
+
isFetched,
|
|
5625
5605
|
isPlaceholderData
|
|
5626
5606
|
} = useGetListData3(data, queryKey, enabled);
|
|
5627
5607
|
useEffect11(() => {
|
|
@@ -5629,76 +5609,57 @@ var many2manyFieldController = (props) => {
|
|
|
5629
5609
|
fetchData();
|
|
5630
5610
|
}
|
|
5631
5611
|
return () => {
|
|
5632
|
-
|
|
5633
|
-
|
|
5634
|
-
...prevFields,
|
|
5635
|
-
[`${aid}_${relation}_popupmany2many`]: null
|
|
5636
|
-
}));
|
|
5637
|
-
appDispatch(setPage(0));
|
|
5638
|
-
setSelectedRowKeys4([]);
|
|
5612
|
+
setPage(0);
|
|
5613
|
+
setSelectedRowKeys3([]);
|
|
5639
5614
|
setDomainMany2Many(null);
|
|
5640
|
-
setIsLoadedData(false);
|
|
5641
5615
|
};
|
|
5642
5616
|
}, [viewResponse]);
|
|
5643
|
-
const { rows, columns, typeTable } = tableController({
|
|
5617
|
+
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
5644
5618
|
data: {
|
|
5645
|
-
fields:
|
|
5619
|
+
fields: viewResponse?.views?.list?.fields,
|
|
5646
5620
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5647
5621
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5648
|
-
context:
|
|
5622
|
+
context: contextObject,
|
|
5649
5623
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5650
5624
|
}
|
|
5651
5625
|
});
|
|
5652
|
-
const
|
|
5653
|
-
|
|
5654
|
-
model: relation,
|
|
5655
|
-
context
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
|
|
5660
|
-
|
|
5661
|
-
|
|
5662
|
-
data: dataFormView,
|
|
5663
|
-
queryKey: [`form-view-action-${relation}`],
|
|
5664
|
-
enabled: false
|
|
5626
|
+
const searchControllers = searchController({
|
|
5627
|
+
viewData: viewResponse,
|
|
5628
|
+
model: relation ?? "",
|
|
5629
|
+
context: contextObject,
|
|
5630
|
+
domain,
|
|
5631
|
+
fieldsList: [
|
|
5632
|
+
...columns?.filter(
|
|
5633
|
+
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
5634
|
+
)?.map((col) => ({ ...col.field })) ?? []
|
|
5635
|
+
]
|
|
5665
5636
|
});
|
|
5666
|
-
useEffect11(() => {
|
|
5667
|
-
if (isSuccess && dataFormViewResponse) {
|
|
5668
|
-
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5669
|
-
window.location.href = `/form/menu?model=${relation}`;
|
|
5670
|
-
}
|
|
5671
|
-
}, [isSuccess]);
|
|
5672
|
-
useEffect11(() => {
|
|
5673
|
-
if (domainMany2Many && !isLoadedData) {
|
|
5674
|
-
setIsLoadedData(true);
|
|
5675
|
-
}
|
|
5676
|
-
}, [domainMany2Many]);
|
|
5677
5637
|
const handleCreateNewOnPage = async () => {
|
|
5678
|
-
try {
|
|
5679
|
-
refetch();
|
|
5680
|
-
} catch (error) {
|
|
5681
|
-
console.log(error);
|
|
5682
|
-
}
|
|
5683
5638
|
};
|
|
5684
5639
|
return {
|
|
5685
5640
|
handleCreateNewOnPage,
|
|
5686
5641
|
optionsObject,
|
|
5642
|
+
totalRows: dataResponse?.length ?? 0,
|
|
5687
5643
|
rows,
|
|
5688
5644
|
columns,
|
|
5645
|
+
onToggleColumnOptional,
|
|
5689
5646
|
typeTable,
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
isPlaceholderData
|
|
5647
|
+
isLoading,
|
|
5648
|
+
isFetched,
|
|
5649
|
+
isPlaceholderData,
|
|
5650
|
+
setPage,
|
|
5651
|
+
page,
|
|
5652
|
+
viewData: viewResponse,
|
|
5653
|
+
domain: domainMany2Many,
|
|
5654
|
+
setDomain: setDomainMany2Many,
|
|
5655
|
+
searchController: searchControllers
|
|
5693
5656
|
};
|
|
5694
5657
|
};
|
|
5695
5658
|
|
|
5696
5659
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5697
5660
|
import { useMemo as useMemo11 } from "react";
|
|
5698
5661
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5699
|
-
import {
|
|
5700
|
-
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5701
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
|
|
5662
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5702
5663
|
var many2manyTagsController = (props) => {
|
|
5703
5664
|
const {
|
|
5704
5665
|
relation,
|
|
@@ -5709,10 +5670,11 @@ var many2manyTagsController = (props) => {
|
|
|
5709
5670
|
placeholderNoOption
|
|
5710
5671
|
} = props;
|
|
5711
5672
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5712
|
-
const env =
|
|
5673
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5674
|
+
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5713
5675
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5714
5676
|
const domainObject = useMemo11(
|
|
5715
|
-
() =>
|
|
5677
|
+
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5716
5678
|
[domain, formValues]
|
|
5717
5679
|
);
|
|
5718
5680
|
const data = {
|
|
@@ -5748,16 +5710,15 @@ var many2manyTagsController = (props) => {
|
|
|
5748
5710
|
options,
|
|
5749
5711
|
customNoOptionsMessage,
|
|
5750
5712
|
tranfer,
|
|
5751
|
-
dataOfSelection,
|
|
5752
5713
|
isUser
|
|
5753
5714
|
};
|
|
5754
5715
|
};
|
|
5755
5716
|
|
|
5756
5717
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5757
5718
|
import { useState as useState10 } from "react";
|
|
5758
|
-
import { evalJSONDomain as
|
|
5719
|
+
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5759
5720
|
var durationController = (props) => {
|
|
5760
|
-
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5721
|
+
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5761
5722
|
const specification = {
|
|
5762
5723
|
id: 0,
|
|
5763
5724
|
name: "",
|
|
@@ -5771,7 +5732,7 @@ var durationController = (props) => {
|
|
|
5771
5732
|
const listDataProps = {
|
|
5772
5733
|
model: relation,
|
|
5773
5734
|
specification,
|
|
5774
|
-
domain:
|
|
5735
|
+
domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5775
5736
|
limit: 10,
|
|
5776
5737
|
offset: 0,
|
|
5777
5738
|
fields: "",
|
|
@@ -5781,7 +5742,11 @@ var durationController = (props) => {
|
|
|
5781
5742
|
},
|
|
5782
5743
|
sort: ""
|
|
5783
5744
|
};
|
|
5784
|
-
const { data: dataResponse } = useGetListData3(
|
|
5745
|
+
const { data: dataResponse } = useGetListData3(
|
|
5746
|
+
listDataProps,
|
|
5747
|
+
queryKey,
|
|
5748
|
+
enabled
|
|
5749
|
+
);
|
|
5785
5750
|
const { mutate: fetchChangeStatus } = useChangeStatus();
|
|
5786
5751
|
const handleClick = async (stage_id) => {
|
|
5787
5752
|
setDisabled(true);
|
|
@@ -5817,41 +5782,28 @@ var durationController = (props) => {
|
|
|
5817
5782
|
};
|
|
5818
5783
|
|
|
5819
5784
|
// src/widget/basic/priority-field/controller.ts
|
|
5820
|
-
import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
|
|
5821
5785
|
import { evalJSONContext as evalJSONContext6 } from "@fctc/interface-logic/utils";
|
|
5822
5786
|
var priorityFieldController = (props) => {
|
|
5823
|
-
const {
|
|
5824
|
-
value,
|
|
5825
|
-
isForm,
|
|
5826
|
-
name,
|
|
5827
|
-
methods,
|
|
5828
|
-
onChange,
|
|
5829
|
-
model,
|
|
5830
|
-
selection,
|
|
5831
|
-
id,
|
|
5832
|
-
actionData,
|
|
5833
|
-
viewData,
|
|
5834
|
-
context
|
|
5835
|
-
} = props;
|
|
5787
|
+
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
5836
5788
|
const _context = { ...evalJSONContext6(actionData?.context) };
|
|
5837
5789
|
const contextObject = { ...context, ..._context };
|
|
5838
|
-
const
|
|
5839
|
-
const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
|
|
5790
|
+
const { useSave: useSave2 } = (0, provider_exports.useService)();
|
|
5840
5791
|
const { mutateAsync: fetchSave } = useSave2();
|
|
5841
5792
|
const savePriorities = async ({
|
|
5842
|
-
value
|
|
5793
|
+
value,
|
|
5843
5794
|
resetPriority
|
|
5844
5795
|
}) => {
|
|
5845
|
-
const priorityValue =
|
|
5796
|
+
const priorityValue = value <= 0 ? 0 : value - 1;
|
|
5846
5797
|
try {
|
|
5847
5798
|
fetchSave({
|
|
5848
|
-
ids:
|
|
5849
|
-
data: { [name
|
|
5850
|
-
model: model
|
|
5851
|
-
context: contextObject
|
|
5799
|
+
ids: index ? [index] : [],
|
|
5800
|
+
data: { [String(name)]: String(priorityValue) },
|
|
5801
|
+
model: String(model),
|
|
5802
|
+
context: contextObject,
|
|
5803
|
+
specification
|
|
5852
5804
|
});
|
|
5853
5805
|
if (typeof onChange === "function") {
|
|
5854
|
-
onChange(name
|
|
5806
|
+
onChange(String(name), String(priorityValue));
|
|
5855
5807
|
}
|
|
5856
5808
|
} catch (error) {
|
|
5857
5809
|
if (resetPriority) {
|
|
@@ -5860,14 +5812,7 @@ var priorityFieldController = (props) => {
|
|
|
5860
5812
|
}
|
|
5861
5813
|
};
|
|
5862
5814
|
return {
|
|
5863
|
-
|
|
5864
|
-
isForm,
|
|
5865
|
-
methods,
|
|
5866
|
-
defaultPriority,
|
|
5867
|
-
savePriorities,
|
|
5868
|
-
label,
|
|
5869
|
-
id,
|
|
5870
|
-
onChange
|
|
5815
|
+
savePriorities
|
|
5871
5816
|
};
|
|
5872
5817
|
};
|
|
5873
5818
|
|
|
@@ -6830,11 +6775,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
|
|
|
6830
6775
|
var colorFieldController = (props) => {
|
|
6831
6776
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6832
6777
|
const { env } = (0, provider_exports.useEnv)();
|
|
6833
|
-
const { useSave:
|
|
6778
|
+
const { useSave: useSave2 } = (0, provider_exports.useService)();
|
|
6834
6779
|
const _context = { ...evalJSONContext7(actionData?.context) || {} };
|
|
6835
6780
|
const contextObject = { ...env.context, ..._context };
|
|
6836
6781
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6837
|
-
const { mutate: onSave } =
|
|
6782
|
+
const { mutate: onSave } = useSave2();
|
|
6838
6783
|
const savePickColor = async (colorObject) => {
|
|
6839
6784
|
const { id } = colorObject;
|
|
6840
6785
|
if (value === id) return;
|
|
@@ -6956,108 +6901,41 @@ var binaryFieldController = (props) => {
|
|
|
6956
6901
|
};
|
|
6957
6902
|
};
|
|
6958
6903
|
|
|
6959
|
-
// src/widget/advance/table/table-body/controller.ts
|
|
6960
|
-
import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6961
|
-
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6962
|
-
var tableBodyController = (props) => {
|
|
6963
|
-
const {
|
|
6964
|
-
checkedAll,
|
|
6965
|
-
checkboxRef,
|
|
6966
|
-
setIsAutoSelect,
|
|
6967
|
-
selectedRowKeys,
|
|
6968
|
-
row,
|
|
6969
|
-
isAutoSelect,
|
|
6970
|
-
selectedRowKeysRef,
|
|
6971
|
-
onClickRow
|
|
6972
|
-
} = props;
|
|
6973
|
-
const appDispatch = useAppDispatch6();
|
|
6974
|
-
const checked = useMemo12(() => {
|
|
6975
|
-
if (!row?.id) return false;
|
|
6976
|
-
if (selectedRowKeys?.includes(row.id)) {
|
|
6977
|
-
return true;
|
|
6978
|
-
}
|
|
6979
|
-
return checkedAll;
|
|
6980
|
-
}, [row?.id, selectedRowKeys, checkedAll]);
|
|
6981
|
-
const handleCheckBoxSingle = (event) => {
|
|
6982
|
-
event.stopPropagation();
|
|
6983
|
-
if (checkedAll) {
|
|
6984
|
-
checkboxRef.current = "uncheck";
|
|
6985
|
-
setIsAutoSelect(true);
|
|
6986
|
-
return;
|
|
6987
|
-
}
|
|
6988
|
-
const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
|
|
6989
|
-
console.log("newSelectedRowKeys", newSelectedRowKeys);
|
|
6990
|
-
appDispatch(setSelectedRowKeys(newSelectedRowKeys));
|
|
6991
|
-
};
|
|
6992
|
-
const handleClickRow = (col, row2) => {
|
|
6993
|
-
onClickRow(col, row2);
|
|
6994
|
-
};
|
|
6995
|
-
useEffect13(() => {
|
|
6996
|
-
if (!row?.id) return;
|
|
6997
|
-
if (isAutoSelect) {
|
|
6998
|
-
if (checkboxRef?.current === "uncheck") {
|
|
6999
|
-
const filtered = selectedRowKeysRef.current.filter(
|
|
7000
|
-
(id) => id !== row.id
|
|
7001
|
-
);
|
|
7002
|
-
selectedRowKeysRef.current = filtered;
|
|
7003
|
-
appDispatch(setSelectedRowKeys(filtered));
|
|
7004
|
-
} else {
|
|
7005
|
-
const unique = Array.from(
|
|
7006
|
-
/* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
|
|
7007
|
-
);
|
|
7008
|
-
selectedRowKeysRef.current = unique;
|
|
7009
|
-
appDispatch(setSelectedRowKeys(unique));
|
|
7010
|
-
}
|
|
7011
|
-
}
|
|
7012
|
-
}, [isAutoSelect]);
|
|
7013
|
-
useEffect13(() => {
|
|
7014
|
-
if (!checkedAll) {
|
|
7015
|
-
checkboxRef.current = "enabled";
|
|
7016
|
-
false;
|
|
7017
|
-
}
|
|
7018
|
-
}, [checkedAll]);
|
|
7019
|
-
return {
|
|
7020
|
-
handleCheckBoxSingle,
|
|
7021
|
-
checked,
|
|
7022
|
-
handleClickRow
|
|
7023
|
-
};
|
|
7024
|
-
};
|
|
7025
|
-
|
|
7026
6904
|
// src/widget/advance/table/table-head/controller.ts
|
|
7027
6905
|
import {
|
|
7028
|
-
useAppDispatch as
|
|
6906
|
+
useAppDispatch as useAppDispatch5,
|
|
7029
6907
|
useAppSelector as useAppSelector4,
|
|
7030
6908
|
selectSearch as selectSearch3,
|
|
7031
|
-
setSelectedRowKeys
|
|
6909
|
+
setSelectedRowKeys
|
|
7032
6910
|
} from "@fctc/interface-logic/store";
|
|
7033
6911
|
var tableHeadController = (props) => {
|
|
7034
6912
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
7035
|
-
const appDispatch =
|
|
6913
|
+
const appDispatch = useAppDispatch5();
|
|
7036
6914
|
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
7037
6915
|
const handleCheckBoxAll = (event) => {
|
|
7038
6916
|
if (event?.target?.checked && typeTable === "list") {
|
|
7039
6917
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
7040
|
-
appDispatch(
|
|
6918
|
+
appDispatch(setSelectedRowKeys(allRowKeys));
|
|
7041
6919
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
7042
6920
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
7043
6921
|
const ids = Array.from(rowsIDs)?.map(
|
|
7044
6922
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
7045
6923
|
);
|
|
7046
6924
|
if (ids?.length > 0) {
|
|
7047
|
-
appDispatch(
|
|
6925
|
+
appDispatch(setSelectedRowKeys(ids));
|
|
7048
6926
|
} else {
|
|
7049
6927
|
const sum = countSum(
|
|
7050
6928
|
rows,
|
|
7051
6929
|
typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
|
|
7052
6930
|
);
|
|
7053
6931
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
7054
|
-
appDispatch(
|
|
6932
|
+
appDispatch(setSelectedRowKeys(keys));
|
|
7055
6933
|
}
|
|
7056
6934
|
if (selectedRowKeysRef) {
|
|
7057
6935
|
selectedRowKeysRef.current = [];
|
|
7058
6936
|
}
|
|
7059
6937
|
} else {
|
|
7060
|
-
appDispatch(
|
|
6938
|
+
appDispatch(setSelectedRowKeys([]));
|
|
7061
6939
|
}
|
|
7062
6940
|
};
|
|
7063
6941
|
return {
|
|
@@ -7066,7 +6944,7 @@ var tableHeadController = (props) => {
|
|
|
7066
6944
|
};
|
|
7067
6945
|
|
|
7068
6946
|
// src/widget/advance/table/table-view/controller.ts
|
|
7069
|
-
import { useEffect as
|
|
6947
|
+
import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
|
|
7070
6948
|
import {
|
|
7071
6949
|
useAppSelector as useAppSelector5,
|
|
7072
6950
|
selectSearch as selectSearch4,
|
|
@@ -7103,7 +6981,7 @@ var tableController = ({ data }) => {
|
|
|
7103
6981
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
7104
6982
|
});
|
|
7105
6983
|
};
|
|
7106
|
-
|
|
6984
|
+
useEffect13(() => {
|
|
7107
6985
|
setRows(transformData(data.records || null));
|
|
7108
6986
|
}, [data.records]);
|
|
7109
6987
|
const handleGetColumns = () => {
|
|
@@ -7124,7 +7002,7 @@ var tableController = ({ data }) => {
|
|
|
7124
7002
|
}
|
|
7125
7003
|
return cols;
|
|
7126
7004
|
};
|
|
7127
|
-
|
|
7005
|
+
useEffect13(() => {
|
|
7128
7006
|
const columns2 = handleGetColumns();
|
|
7129
7007
|
setColumns(columns2);
|
|
7130
7008
|
}, [data.records]);
|
|
@@ -7149,7 +7027,7 @@ var tableController = ({ data }) => {
|
|
|
7149
7027
|
};
|
|
7150
7028
|
|
|
7151
7029
|
// src/widget/advance/table/table-group/controller.ts
|
|
7152
|
-
import { useEffect as
|
|
7030
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
|
|
7153
7031
|
import {
|
|
7154
7032
|
useOdooDataTransform,
|
|
7155
7033
|
useGetListData as useGetListData2
|
|
@@ -7158,8 +7036,8 @@ import {
|
|
|
7158
7036
|
useAppSelector as useAppSelector6,
|
|
7159
7037
|
selectSearch as selectSearch5,
|
|
7160
7038
|
selectList as selectList4,
|
|
7161
|
-
useAppDispatch as
|
|
7162
|
-
setSelectedRowKeys as
|
|
7039
|
+
useAppDispatch as useAppDispatch6,
|
|
7040
|
+
setSelectedRowKeys as setSelectedRowKeys2
|
|
7163
7041
|
} from "@fctc/interface-logic/store";
|
|
7164
7042
|
|
|
7165
7043
|
// src/environment.ts
|
|
@@ -7191,7 +7069,7 @@ var tableGroupController = (props) => {
|
|
|
7191
7069
|
const [pageGroup, setPageGroup] = useState15(0);
|
|
7192
7070
|
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
7193
7071
|
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
7194
|
-
const appDispatch =
|
|
7072
|
+
const appDispatch = useAppDispatch6();
|
|
7195
7073
|
const { toDataJS } = useOdooDataTransform();
|
|
7196
7074
|
const initVal = toDataJS(row, viewData, model);
|
|
7197
7075
|
const [isShowGroup, setIsShowGroup] = useState15(false);
|
|
@@ -7199,7 +7077,7 @@ var tableGroupController = (props) => {
|
|
|
7199
7077
|
fromStart: 1,
|
|
7200
7078
|
fromEnd: 1
|
|
7201
7079
|
});
|
|
7202
|
-
const processedData =
|
|
7080
|
+
const processedData = useMemo13(() => {
|
|
7203
7081
|
const calculateColSpanEmpty = () => {
|
|
7204
7082
|
const startIndex = columns.findIndex(
|
|
7205
7083
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -7214,7 +7092,7 @@ var tableGroupController = (props) => {
|
|
|
7214
7092
|
};
|
|
7215
7093
|
return calculateColSpanEmpty();
|
|
7216
7094
|
}, [columns, row]);
|
|
7217
|
-
const shouldFetchData =
|
|
7095
|
+
const shouldFetchData = useMemo13(() => {
|
|
7218
7096
|
return !!isShowGroup;
|
|
7219
7097
|
}, [isShowGroup]);
|
|
7220
7098
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -7254,7 +7132,7 @@ var tableGroupController = (props) => {
|
|
|
7254
7132
|
}
|
|
7255
7133
|
});
|
|
7256
7134
|
const leftPadding = level > 1 ? level * 8 + "px" : "0px";
|
|
7257
|
-
|
|
7135
|
+
useEffect14(() => {
|
|
7258
7136
|
if (isShowGroup && selectedTags?.length > 0) {
|
|
7259
7137
|
setIsShowGroup(false);
|
|
7260
7138
|
}
|
|
@@ -7277,24 +7155,24 @@ var tableGroupController = (props) => {
|
|
|
7277
7155
|
const filteredIds = selectedRowKeys.filter(
|
|
7278
7156
|
(id) => !ids.includes(id)
|
|
7279
7157
|
);
|
|
7280
|
-
appDispatch(
|
|
7158
|
+
appDispatch(setSelectedRowKeys2(filteredIds));
|
|
7281
7159
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
|
|
7282
7160
|
const clonedKeys = [...selectedRowKeys];
|
|
7283
|
-
appDispatch(
|
|
7284
|
-
setTimeout(() => appDispatch(
|
|
7161
|
+
appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
|
|
7162
|
+
setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
|
|
7285
7163
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
7286
7164
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
7287
|
-
appDispatch(
|
|
7165
|
+
appDispatch(setSelectedRowKeys2(filteredKeys));
|
|
7288
7166
|
}
|
|
7289
7167
|
toggleShowGroup();
|
|
7290
7168
|
};
|
|
7291
|
-
|
|
7169
|
+
useEffect14(() => {
|
|
7292
7170
|
if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
7293
7171
|
return;
|
|
7294
7172
|
}
|
|
7295
7173
|
const clonedKeys = [...selectedRowKeys];
|
|
7296
|
-
|
|
7297
|
-
setTimeout(() =>
|
|
7174
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
7175
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
7298
7176
|
}, [isQueryFetched]);
|
|
7299
7177
|
return {
|
|
7300
7178
|
handleExpandChildGroup,
|
|
@@ -7332,26 +7210,28 @@ var import_moment2 = __toESM(require_moment());
|
|
|
7332
7210
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
7333
7211
|
import {
|
|
7334
7212
|
domainHelper as domainHelper2,
|
|
7335
|
-
|
|
7213
|
+
evalJSONContext as evalJSONContext8,
|
|
7214
|
+
evalJSONDomain as evalJSONDomain7,
|
|
7336
7215
|
validateAndParseDate
|
|
7337
7216
|
} from "@fctc/interface-logic/utils";
|
|
7338
|
-
import { useCallback as useCallback3, useEffect as
|
|
7217
|
+
import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
|
|
7339
7218
|
var searchController = ({
|
|
7340
7219
|
viewData,
|
|
7341
|
-
|
|
7342
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
searchMap
|
|
7220
|
+
model,
|
|
7221
|
+
domain,
|
|
7222
|
+
context,
|
|
7223
|
+
fieldsList
|
|
7346
7224
|
}) => {
|
|
7225
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
7347
7226
|
const [filterBy, setFilterBy] = useState16(null);
|
|
7348
7227
|
const [searchBy, setSearchBy] = useState16(null);
|
|
7349
7228
|
const [groupBy, setGroupBy] = useState16(null);
|
|
7350
7229
|
const [selectedTags, setSelectedTags] = useState16(null);
|
|
7351
7230
|
const [searchString, setSearchString] = useState16("");
|
|
7352
|
-
const
|
|
7353
|
-
const
|
|
7354
|
-
const
|
|
7231
|
+
const [searchMap, setSearchMap] = useState16({});
|
|
7232
|
+
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
7233
|
+
const contextSearch = { ...env.context, ...actionContext };
|
|
7234
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
7355
7235
|
const clearSearch = () => {
|
|
7356
7236
|
setFilterBy([]);
|
|
7357
7237
|
setGroupBy([]);
|
|
@@ -7395,10 +7275,9 @@ var searchController = ({
|
|
|
7395
7275
|
}
|
|
7396
7276
|
}
|
|
7397
7277
|
};
|
|
7398
|
-
|
|
7399
|
-
clearSearch();
|
|
7278
|
+
useEffect15(() => {
|
|
7400
7279
|
fetchData();
|
|
7401
|
-
}, [
|
|
7280
|
+
}, [model, viewData]);
|
|
7402
7281
|
const onChangeSearchInput = (search_string) => {
|
|
7403
7282
|
setSearchString(search_string);
|
|
7404
7283
|
};
|
|
@@ -7435,27 +7314,27 @@ var searchController = ({
|
|
|
7435
7314
|
};
|
|
7436
7315
|
const formatDomain = () => {
|
|
7437
7316
|
if (domainAction) {
|
|
7438
|
-
const
|
|
7317
|
+
const domain2 = [];
|
|
7439
7318
|
if (domainAction?.length > 0) {
|
|
7440
|
-
if (Object.keys(searchMap).
|
|
7441
|
-
|
|
7319
|
+
if (Object.keys(searchMap).some((key) => !key.includes(SearchType.GROUP))) {
|
|
7320
|
+
domain2.push("&");
|
|
7442
7321
|
}
|
|
7443
7322
|
domainAction.forEach((domainItem) => {
|
|
7444
|
-
|
|
7323
|
+
domain2.push(domainItem);
|
|
7445
7324
|
});
|
|
7446
7325
|
}
|
|
7447
7326
|
Object.keys(searchMap).forEach((key, keyIndex, keys) => {
|
|
7448
7327
|
if (!key?.includes(SearchType.GROUP)) {
|
|
7449
7328
|
if (keys.length > 1 && keyIndex < keys.length - 1) {
|
|
7450
|
-
|
|
7329
|
+
domain2.push("&");
|
|
7451
7330
|
}
|
|
7452
7331
|
const valuesOfKey = searchMap[key];
|
|
7453
7332
|
valuesOfKey.forEach((value, index) => {
|
|
7454
7333
|
if (index < valuesOfKey.length - 1) {
|
|
7455
|
-
|
|
7334
|
+
domain2.push("|");
|
|
7456
7335
|
}
|
|
7457
7336
|
if (value.domain) {
|
|
7458
|
-
|
|
7337
|
+
domain2.push(...value.domain);
|
|
7459
7338
|
return;
|
|
7460
7339
|
}
|
|
7461
7340
|
let valueDomainItem = value?.value;
|
|
@@ -7471,11 +7350,11 @@ var searchController = ({
|
|
|
7471
7350
|
}
|
|
7472
7351
|
}
|
|
7473
7352
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
7474
|
-
|
|
7353
|
+
domain2.push([value.name, operator, valueDomainItem]);
|
|
7475
7354
|
});
|
|
7476
7355
|
}
|
|
7477
7356
|
});
|
|
7478
|
-
return [...
|
|
7357
|
+
return [...domain2];
|
|
7479
7358
|
}
|
|
7480
7359
|
};
|
|
7481
7360
|
const setTagSearch = useCallback3(
|
|
@@ -7506,16 +7385,16 @@ var searchController = ({
|
|
|
7506
7385
|
const contexts = [];
|
|
7507
7386
|
let groupValues = [];
|
|
7508
7387
|
objValues?.forEach((objValue) => {
|
|
7509
|
-
const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7388
|
+
const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7510
7389
|
const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
|
|
7511
7390
|
contexts.push(
|
|
7512
|
-
...Array.isArray(
|
|
7391
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
|
|
7513
7392
|
);
|
|
7514
7393
|
groupValues[indexAppend] = {
|
|
7515
7394
|
contexts: [
|
|
7516
|
-
...Array.isArray(
|
|
7395
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
|
|
7517
7396
|
group_by: item
|
|
7518
|
-
})) : [
|
|
7397
|
+
})) : [context2]
|
|
7519
7398
|
],
|
|
7520
7399
|
strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
|
|
7521
7400
|
};
|
|
@@ -7541,40 +7420,39 @@ var searchController = ({
|
|
|
7541
7420
|
},
|
|
7542
7421
|
[searchMap]
|
|
7543
7422
|
);
|
|
7544
|
-
|
|
7545
|
-
setSelectedTags(null);
|
|
7423
|
+
useEffect15(() => {
|
|
7546
7424
|
setTagSearch(searchMap);
|
|
7547
7425
|
}, [searchMap]);
|
|
7548
7426
|
const handleAddTagSearch = (tag) => {
|
|
7549
7427
|
const {
|
|
7550
|
-
domain,
|
|
7428
|
+
domain: domain2,
|
|
7551
7429
|
groupIndex,
|
|
7552
7430
|
value,
|
|
7553
7431
|
type,
|
|
7554
7432
|
title,
|
|
7555
|
-
context,
|
|
7433
|
+
context: context2,
|
|
7556
7434
|
active,
|
|
7557
7435
|
dataIndex
|
|
7558
7436
|
} = tag;
|
|
7559
|
-
const domainFormat = new domainHelper2.Domain(
|
|
7437
|
+
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7560
7438
|
if (type === SearchType.FILTER) {
|
|
7561
7439
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
7562
7440
|
...tag,
|
|
7563
|
-
domain:
|
|
7441
|
+
domain: domain2 ? domainFormat.toList(context2) : null
|
|
7564
7442
|
});
|
|
7565
7443
|
} else if (type === SearchType.SEARCH) {
|
|
7566
7444
|
addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
|
|
7567
7445
|
...tag,
|
|
7568
|
-
domain:
|
|
7569
|
-
...
|
|
7446
|
+
domain: domain2 ? domainFormat.toList({
|
|
7447
|
+
...context2,
|
|
7570
7448
|
self: value
|
|
7571
7449
|
}) : null
|
|
7572
7450
|
});
|
|
7573
7451
|
} else if (type === SearchType.GROUP) {
|
|
7574
7452
|
addSearchItems(`${SearchType.GROUP}`, {
|
|
7575
7453
|
...tag,
|
|
7576
|
-
domain:
|
|
7577
|
-
context,
|
|
7454
|
+
domain: domain2 ? domainFormat.toList({
|
|
7455
|
+
context: context2,
|
|
7578
7456
|
self: value
|
|
7579
7457
|
}) : null
|
|
7580
7458
|
});
|
|
@@ -7594,7 +7472,8 @@ var searchController = ({
|
|
|
7594
7472
|
removeSearchItems,
|
|
7595
7473
|
onSearchString: onChangeSearchInput,
|
|
7596
7474
|
handleAddTagSearch,
|
|
7597
|
-
domain: formatDomain()
|
|
7475
|
+
domain: formatDomain(),
|
|
7476
|
+
context: contextSearch
|
|
7598
7477
|
};
|
|
7599
7478
|
};
|
|
7600
7479
|
|
|
@@ -7661,7 +7540,6 @@ export {
|
|
|
7661
7540
|
searchController,
|
|
7662
7541
|
setStorageItemAsync,
|
|
7663
7542
|
statusDropdownController,
|
|
7664
|
-
tableBodyController,
|
|
7665
7543
|
tableController,
|
|
7666
7544
|
tableGroupController,
|
|
7667
7545
|
tableHeadController,
|