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