@fctc/widget-logic 3.0.3 → 3.0.5
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.js +51 -64
- package/dist/index.mjs +84 -101
- package/dist/widget.d.mts +17 -11
- package/dist/widget.d.ts +17 -11
- package/dist/widget.js +136 -64
- package/dist/widget.mjs +169 -101
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -5517,17 +5517,13 @@ var many2manyFieldController = (props) => {
|
|
|
5517
5517
|
domain,
|
|
5518
5518
|
context,
|
|
5519
5519
|
options,
|
|
5520
|
-
|
|
5521
|
-
|
|
5522
|
-
groupByDomain,
|
|
5523
|
-
enabled: enabledCallAPI
|
|
5520
|
+
enabled: enabledCallAPI,
|
|
5521
|
+
service
|
|
5524
5522
|
} = props;
|
|
5525
5523
|
const { env } = (0, provider_exports.useEnv)();
|
|
5526
|
-
const {
|
|
5527
|
-
const
|
|
5528
|
-
const
|
|
5529
|
-
const [domainMany2Many, setDomainMany2Many] = (0, import_react17.useState)(null);
|
|
5530
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5524
|
+
const { user } = useAppProvider();
|
|
5525
|
+
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
5526
|
+
const dataUser = user?.userProfile?.data;
|
|
5531
5527
|
const contextObject = {
|
|
5532
5528
|
...env.context,
|
|
5533
5529
|
...context || {}
|
|
@@ -5544,61 +5540,46 @@ var many2manyFieldController = (props) => {
|
|
|
5544
5540
|
viewParams,
|
|
5545
5541
|
enabled: enabledCallAPI
|
|
5546
5542
|
});
|
|
5547
|
-
const { specification } = useGetSpecification({
|
|
5548
|
-
model: String(relation),
|
|
5549
|
-
viewData: viewResponse || {},
|
|
5550
|
-
fields: [
|
|
5551
|
-
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5552
|
-
...tab?.fields ? tab.fields : []
|
|
5553
|
-
]
|
|
5554
|
-
});
|
|
5555
5543
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
5556
|
-
const optionsObject =
|
|
5557
|
-
const fetchData = async () => {
|
|
5558
|
-
try {
|
|
5559
|
-
const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5560
|
-
setDomainMany2Many(domainParse);
|
|
5561
|
-
setPage(0);
|
|
5562
|
-
} catch (err) {
|
|
5563
|
-
console.log(err);
|
|
5564
|
-
}
|
|
5565
|
-
};
|
|
5566
|
-
const queryKey = [
|
|
5567
|
-
`view-${relation}`,
|
|
5568
|
-
specification,
|
|
5569
|
-
domainMany2Many,
|
|
5570
|
-
debouncedPage,
|
|
5571
|
-
groupByDomain,
|
|
5572
|
-
order
|
|
5573
|
-
];
|
|
5574
|
-
const data = {
|
|
5575
|
-
model: relation,
|
|
5576
|
-
specification,
|
|
5577
|
-
domain: domainMany2Many,
|
|
5578
|
-
offset: debouncedPage * 10,
|
|
5579
|
-
limit: 10,
|
|
5580
|
-
context: contextObject,
|
|
5581
|
-
fields: groupByDomain?.fields,
|
|
5582
|
-
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5583
|
-
sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
|
|
5584
|
-
};
|
|
5585
|
-
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5544
|
+
const optionsObject = (options && typeof options === "string" ? (0, import_utils9.evalJSONContext)(options) : options) || {};
|
|
5586
5545
|
const {
|
|
5587
5546
|
data: dataResponse,
|
|
5588
|
-
isLoading,
|
|
5589
5547
|
isFetched,
|
|
5548
|
+
isLoading,
|
|
5549
|
+
state,
|
|
5590
5550
|
isPlaceholderData
|
|
5591
|
-
} =
|
|
5551
|
+
} = useListData({
|
|
5552
|
+
action: {
|
|
5553
|
+
domain,
|
|
5554
|
+
res_model: relation
|
|
5555
|
+
},
|
|
5556
|
+
context: contextObject,
|
|
5557
|
+
model: relation ?? "",
|
|
5558
|
+
viewData: viewResponse,
|
|
5559
|
+
service,
|
|
5560
|
+
xNode: service == "wesap" && dataUser.x_node
|
|
5561
|
+
});
|
|
5562
|
+
const {
|
|
5563
|
+
selectedRowKeys,
|
|
5564
|
+
groupByList,
|
|
5565
|
+
domain: domainList,
|
|
5566
|
+
page,
|
|
5567
|
+
pageLimit,
|
|
5568
|
+
setDomain,
|
|
5569
|
+
setOrder,
|
|
5570
|
+
setPage,
|
|
5571
|
+
setSelectedRowKeys,
|
|
5572
|
+
setGroupByList,
|
|
5573
|
+
setPageLimit
|
|
5574
|
+
} = state;
|
|
5592
5575
|
(0, import_react17.useEffect)(() => {
|
|
5593
|
-
if (viewResponse) {
|
|
5594
|
-
fetchData();
|
|
5595
|
-
}
|
|
5596
5576
|
return () => {
|
|
5597
|
-
|
|
5598
|
-
|
|
5599
|
-
|
|
5577
|
+
setDomain(null);
|
|
5578
|
+
setOrder("");
|
|
5579
|
+
setGroupByList(null);
|
|
5580
|
+
setPageLimit(10);
|
|
5600
5581
|
};
|
|
5601
|
-
}, [
|
|
5582
|
+
}, []);
|
|
5602
5583
|
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
5603
5584
|
data: {
|
|
5604
5585
|
fields: viewResponse?.views?.list?.fields,
|
|
@@ -5622,22 +5603,28 @@ var many2manyFieldController = (props) => {
|
|
|
5622
5603
|
const handleCreateNewOnPage = async () => {
|
|
5623
5604
|
};
|
|
5624
5605
|
return {
|
|
5625
|
-
handleCreateNewOnPage,
|
|
5626
|
-
optionsObject,
|
|
5627
|
-
totalRows: dataResponse?.length ?? 0,
|
|
5628
5606
|
rows,
|
|
5629
5607
|
columns,
|
|
5608
|
+
optionsObject,
|
|
5609
|
+
viewData: viewResponse,
|
|
5610
|
+
totalRows: dataResponse?.length ?? 0,
|
|
5630
5611
|
onToggleColumnOptional,
|
|
5631
5612
|
typeTable,
|
|
5632
5613
|
isLoading,
|
|
5633
5614
|
isFetched,
|
|
5634
5615
|
isPlaceholderData,
|
|
5635
|
-
setPage,
|
|
5636
5616
|
page,
|
|
5637
|
-
|
|
5638
|
-
|
|
5639
|
-
|
|
5640
|
-
|
|
5617
|
+
pageLimit,
|
|
5618
|
+
groupByList,
|
|
5619
|
+
selectedRowKeys,
|
|
5620
|
+
domain: domainList,
|
|
5621
|
+
setPage,
|
|
5622
|
+
setDomain,
|
|
5623
|
+
setPageLimit,
|
|
5624
|
+
setGroupByList,
|
|
5625
|
+
setSelectedRowKeys,
|
|
5626
|
+
searchController: searchControllers,
|
|
5627
|
+
handleCreateNewOnPage
|
|
5641
5628
|
};
|
|
5642
5629
|
};
|
|
5643
5630
|
|
package/dist/index.mjs
CHANGED
|
@@ -5590,29 +5590,21 @@ var many2oneButtonController = (props) => {
|
|
|
5590
5590
|
};
|
|
5591
5591
|
|
|
5592
5592
|
// src/widget/basic/many2many-field/controller.ts
|
|
5593
|
-
import { useEffect as useEffect11
|
|
5594
|
-
import {
|
|
5595
|
-
evalJSONContext as evalJSONContext4,
|
|
5596
|
-
evalJSONDomain as evalJSONDomain4,
|
|
5597
|
-
formatSortingString as formatSortingString2
|
|
5598
|
-
} from "@fctc/interface-logic/utils";
|
|
5593
|
+
import { useEffect as useEffect11 } from "react";
|
|
5594
|
+
import { evalJSONContext as evalJSONContext4 } from "@fctc/interface-logic/utils";
|
|
5599
5595
|
var many2manyFieldController = (props) => {
|
|
5600
5596
|
const {
|
|
5601
5597
|
relation,
|
|
5602
5598
|
domain,
|
|
5603
5599
|
context,
|
|
5604
5600
|
options,
|
|
5605
|
-
|
|
5606
|
-
|
|
5607
|
-
groupByDomain,
|
|
5608
|
-
enabled: enabledCallAPI
|
|
5601
|
+
enabled: enabledCallAPI,
|
|
5602
|
+
service
|
|
5609
5603
|
} = props;
|
|
5610
5604
|
const { env } = (0, provider_exports.useEnv)();
|
|
5611
|
-
const {
|
|
5612
|
-
const
|
|
5613
|
-
const
|
|
5614
|
-
const [domainMany2Many, setDomainMany2Many] = useState8(null);
|
|
5615
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5605
|
+
const { user } = useAppProvider();
|
|
5606
|
+
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
5607
|
+
const dataUser = user?.userProfile?.data;
|
|
5616
5608
|
const contextObject = {
|
|
5617
5609
|
...env.context,
|
|
5618
5610
|
...context || {}
|
|
@@ -5629,61 +5621,46 @@ var many2manyFieldController = (props) => {
|
|
|
5629
5621
|
viewParams,
|
|
5630
5622
|
enabled: enabledCallAPI
|
|
5631
5623
|
});
|
|
5632
|
-
const { specification } = useGetSpecification({
|
|
5633
|
-
model: String(relation),
|
|
5634
|
-
viewData: viewResponse || {},
|
|
5635
|
-
fields: [
|
|
5636
|
-
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5637
|
-
...tab?.fields ? tab.fields : []
|
|
5638
|
-
]
|
|
5639
|
-
});
|
|
5640
5624
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
5641
|
-
const optionsObject =
|
|
5642
|
-
const fetchData = async () => {
|
|
5643
|
-
try {
|
|
5644
|
-
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5645
|
-
setDomainMany2Many(domainParse);
|
|
5646
|
-
setPage(0);
|
|
5647
|
-
} catch (err) {
|
|
5648
|
-
console.log(err);
|
|
5649
|
-
}
|
|
5650
|
-
};
|
|
5651
|
-
const queryKey = [
|
|
5652
|
-
`view-${relation}`,
|
|
5653
|
-
specification,
|
|
5654
|
-
domainMany2Many,
|
|
5655
|
-
debouncedPage,
|
|
5656
|
-
groupByDomain,
|
|
5657
|
-
order
|
|
5658
|
-
];
|
|
5659
|
-
const data = {
|
|
5660
|
-
model: relation,
|
|
5661
|
-
specification,
|
|
5662
|
-
domain: domainMany2Many,
|
|
5663
|
-
offset: debouncedPage * 10,
|
|
5664
|
-
limit: 10,
|
|
5665
|
-
context: contextObject,
|
|
5666
|
-
fields: groupByDomain?.fields,
|
|
5667
|
-
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5668
|
-
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5669
|
-
};
|
|
5670
|
-
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5625
|
+
const optionsObject = (options && typeof options === "string" ? evalJSONContext4(options) : options) || {};
|
|
5671
5626
|
const {
|
|
5672
5627
|
data: dataResponse,
|
|
5673
|
-
isLoading,
|
|
5674
5628
|
isFetched,
|
|
5629
|
+
isLoading,
|
|
5630
|
+
state,
|
|
5675
5631
|
isPlaceholderData
|
|
5676
|
-
} =
|
|
5632
|
+
} = useListData({
|
|
5633
|
+
action: {
|
|
5634
|
+
domain,
|
|
5635
|
+
res_model: relation
|
|
5636
|
+
},
|
|
5637
|
+
context: contextObject,
|
|
5638
|
+
model: relation ?? "",
|
|
5639
|
+
viewData: viewResponse,
|
|
5640
|
+
service,
|
|
5641
|
+
xNode: service == "wesap" && dataUser.x_node
|
|
5642
|
+
});
|
|
5643
|
+
const {
|
|
5644
|
+
selectedRowKeys,
|
|
5645
|
+
groupByList,
|
|
5646
|
+
domain: domainList,
|
|
5647
|
+
page,
|
|
5648
|
+
pageLimit,
|
|
5649
|
+
setDomain,
|
|
5650
|
+
setOrder,
|
|
5651
|
+
setPage,
|
|
5652
|
+
setSelectedRowKeys,
|
|
5653
|
+
setGroupByList,
|
|
5654
|
+
setPageLimit
|
|
5655
|
+
} = state;
|
|
5677
5656
|
useEffect11(() => {
|
|
5678
|
-
if (viewResponse) {
|
|
5679
|
-
fetchData();
|
|
5680
|
-
}
|
|
5681
5657
|
return () => {
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5658
|
+
setDomain(null);
|
|
5659
|
+
setOrder("");
|
|
5660
|
+
setGroupByList(null);
|
|
5661
|
+
setPageLimit(10);
|
|
5685
5662
|
};
|
|
5686
|
-
}, [
|
|
5663
|
+
}, []);
|
|
5687
5664
|
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
5688
5665
|
data: {
|
|
5689
5666
|
fields: viewResponse?.views?.list?.fields,
|
|
@@ -5707,29 +5684,35 @@ var many2manyFieldController = (props) => {
|
|
|
5707
5684
|
const handleCreateNewOnPage = async () => {
|
|
5708
5685
|
};
|
|
5709
5686
|
return {
|
|
5710
|
-
handleCreateNewOnPage,
|
|
5711
|
-
optionsObject,
|
|
5712
|
-
totalRows: dataResponse?.length ?? 0,
|
|
5713
5687
|
rows,
|
|
5714
5688
|
columns,
|
|
5689
|
+
optionsObject,
|
|
5690
|
+
viewData: viewResponse,
|
|
5691
|
+
totalRows: dataResponse?.length ?? 0,
|
|
5715
5692
|
onToggleColumnOptional,
|
|
5716
5693
|
typeTable,
|
|
5717
5694
|
isLoading,
|
|
5718
5695
|
isFetched,
|
|
5719
5696
|
isPlaceholderData,
|
|
5720
|
-
setPage,
|
|
5721
5697
|
page,
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5698
|
+
pageLimit,
|
|
5699
|
+
groupByList,
|
|
5700
|
+
selectedRowKeys,
|
|
5701
|
+
domain: domainList,
|
|
5702
|
+
setPage,
|
|
5703
|
+
setDomain,
|
|
5704
|
+
setPageLimit,
|
|
5705
|
+
setGroupByList,
|
|
5706
|
+
setSelectedRowKeys,
|
|
5707
|
+
searchController: searchControllers,
|
|
5708
|
+
handleCreateNewOnPage
|
|
5726
5709
|
};
|
|
5727
5710
|
};
|
|
5728
5711
|
|
|
5729
5712
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5730
5713
|
import { useMemo as useMemo9 } from "react";
|
|
5731
5714
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5732
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as
|
|
5715
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
|
|
5733
5716
|
var many2manyTagsController = (props) => {
|
|
5734
5717
|
const {
|
|
5735
5718
|
relation,
|
|
@@ -5746,7 +5729,7 @@ var many2manyTagsController = (props) => {
|
|
|
5746
5729
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5747
5730
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5748
5731
|
const domainObject = useMemo9(
|
|
5749
|
-
() =>
|
|
5732
|
+
() => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5750
5733
|
[domain, formValues]
|
|
5751
5734
|
);
|
|
5752
5735
|
const data = {
|
|
@@ -5789,8 +5772,8 @@ var many2manyTagsController = (props) => {
|
|
|
5789
5772
|
};
|
|
5790
5773
|
|
|
5791
5774
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5792
|
-
import { useState as
|
|
5793
|
-
import { evalJSONDomain as
|
|
5775
|
+
import { useState as useState8 } from "react";
|
|
5776
|
+
import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5794
5777
|
var durationController = (props) => {
|
|
5795
5778
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5796
5779
|
const specification = {
|
|
@@ -5800,13 +5783,13 @@ var durationController = (props) => {
|
|
|
5800
5783
|
};
|
|
5801
5784
|
const { useGetListData: useGetListData2, useChangeStatus: useChangeStatus2 } = (0, provider_exports.useService)();
|
|
5802
5785
|
const { env } = (0, provider_exports.useEnv)();
|
|
5803
|
-
const [disabled, setDisabled] =
|
|
5804
|
-
const [modelStatus, setModalStatus] =
|
|
5786
|
+
const [disabled, setDisabled] = useState8(false);
|
|
5787
|
+
const [modelStatus, setModalStatus] = useState8(false);
|
|
5805
5788
|
const queryKey = [`data-status-duration`, specification];
|
|
5806
5789
|
const listDataProps = {
|
|
5807
5790
|
model: relation,
|
|
5808
5791
|
specification,
|
|
5809
|
-
domain:
|
|
5792
|
+
domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5810
5793
|
limit: 10,
|
|
5811
5794
|
offset: 0,
|
|
5812
5795
|
fields: "",
|
|
@@ -5891,10 +5874,10 @@ var priorityFieldController = (props) => {
|
|
|
5891
5874
|
};
|
|
5892
5875
|
|
|
5893
5876
|
// src/widget/basic/download-file-field/controller.ts
|
|
5894
|
-
import { useId, useState as
|
|
5877
|
+
import { useId, useState as useState9 } from "react";
|
|
5895
5878
|
var downloadFileController = () => {
|
|
5896
5879
|
const inputId = useId();
|
|
5897
|
-
const [file, setFile] =
|
|
5880
|
+
const [file, setFile] = useState9(null);
|
|
5898
5881
|
const handleFileChange = (e) => {
|
|
5899
5882
|
setFile(e.target.files[0]);
|
|
5900
5883
|
};
|
|
@@ -6826,11 +6809,11 @@ var dateFieldController = (props) => {
|
|
|
6826
6809
|
};
|
|
6827
6810
|
|
|
6828
6811
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6829
|
-
import { useState as
|
|
6812
|
+
import { useState as useState10 } from "react";
|
|
6830
6813
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6831
6814
|
var copyLinkButtonController = (props) => {
|
|
6832
6815
|
const { value, defaultValue } = props;
|
|
6833
|
-
const [isCopied, setIsCopied] =
|
|
6816
|
+
const [isCopied, setIsCopied] = useState10(false);
|
|
6834
6817
|
const handleCopyToClipboard = async (value2) => {
|
|
6835
6818
|
await copyTextToClipboard(value2);
|
|
6836
6819
|
setIsCopied(true);
|
|
@@ -6878,14 +6861,14 @@ var colorFieldController = (props) => {
|
|
|
6878
6861
|
};
|
|
6879
6862
|
|
|
6880
6863
|
// src/widget/basic/binary-field/controller.ts
|
|
6881
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6864
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState11 } from "react";
|
|
6882
6865
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6883
6866
|
var binaryFieldController = (props) => {
|
|
6884
6867
|
const { name, methods, readonly = false, value } = props;
|
|
6885
6868
|
const inputId = useId2();
|
|
6886
|
-
const [selectedImage, setSelectedImage] =
|
|
6887
|
-
const [initialImage, setInitialImage] =
|
|
6888
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6869
|
+
const [selectedImage, setSelectedImage] = useState11(null);
|
|
6870
|
+
const [initialImage, setInitialImage] = useState11(value || null);
|
|
6871
|
+
const [isInsideTable, setIsInsideTable] = useState11(false);
|
|
6889
6872
|
const { setValue } = methods;
|
|
6890
6873
|
const binaryRef = useRef4(null);
|
|
6891
6874
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -7042,11 +7025,11 @@ var tableHeadController = (props) => {
|
|
|
7042
7025
|
};
|
|
7043
7026
|
|
|
7044
7027
|
// src/widget/advance/table/table-view/controller.ts
|
|
7045
|
-
import { useEffect as useEffect13, useState as
|
|
7028
|
+
import { useEffect as useEffect13, useState as useState12 } from "react";
|
|
7046
7029
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
7047
7030
|
var tableController = ({ data }) => {
|
|
7048
|
-
const [rows, setRows] =
|
|
7049
|
-
const [columns, setColumns] =
|
|
7031
|
+
const [rows, setRows] = useState12(null);
|
|
7032
|
+
const [columns, setColumns] = useState12(null);
|
|
7050
7033
|
const dataModelFields = data?.fields?.map((field) => {
|
|
7051
7034
|
return {
|
|
7052
7035
|
...data.dataModel?.[field?.name],
|
|
@@ -7131,7 +7114,7 @@ var tableController = ({ data }) => {
|
|
|
7131
7114
|
};
|
|
7132
7115
|
|
|
7133
7116
|
// src/widget/advance/table/table-group/controller.ts
|
|
7134
|
-
import { useEffect as useEffect14, useMemo as useMemo11, useState as
|
|
7117
|
+
import { useEffect as useEffect14, useMemo as useMemo11, useState as useState13 } from "react";
|
|
7135
7118
|
import { useAppSelector as useAppSelector2, selectList } from "@fctc/interface-logic/store";
|
|
7136
7119
|
var tableGroupController = (props) => {
|
|
7137
7120
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -7148,10 +7131,10 @@ var tableGroupController = (props) => {
|
|
|
7148
7131
|
groupByList,
|
|
7149
7132
|
setSelectedRowKeys
|
|
7150
7133
|
} = props;
|
|
7151
|
-
const [pageGroup, setPageGroup] =
|
|
7134
|
+
const [pageGroup, setPageGroup] = useState13(0);
|
|
7152
7135
|
const { selectedRowKeys } = useAppSelector2(selectList);
|
|
7153
|
-
const [isShowGroup, setIsShowGroup] =
|
|
7154
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
7136
|
+
const [isShowGroup, setIsShowGroup] = useState13(false);
|
|
7137
|
+
const [colEmptyGroup, setColEmptyGroup] = useState13({
|
|
7155
7138
|
fromStart: 1,
|
|
7156
7139
|
fromEnd: 1
|
|
7157
7140
|
});
|
|
@@ -7270,10 +7253,10 @@ import { SearchType } from "@fctc/interface-logic/constants";
|
|
|
7270
7253
|
import {
|
|
7271
7254
|
domainHelper as domainHelper2,
|
|
7272
7255
|
evalJSONContext as evalJSONContext8,
|
|
7273
|
-
evalJSONDomain as
|
|
7256
|
+
evalJSONDomain as evalJSONDomain6,
|
|
7274
7257
|
validateAndParseDate
|
|
7275
7258
|
} from "@fctc/interface-logic/utils";
|
|
7276
|
-
import { useCallback as useCallback5, useEffect as useEffect15, useState as
|
|
7259
|
+
import { useCallback as useCallback5, useEffect as useEffect15, useState as useState14 } from "react";
|
|
7277
7260
|
var searchController = ({
|
|
7278
7261
|
viewData,
|
|
7279
7262
|
model,
|
|
@@ -7282,15 +7265,15 @@ var searchController = ({
|
|
|
7282
7265
|
fieldsList
|
|
7283
7266
|
}) => {
|
|
7284
7267
|
const { env } = (0, provider_exports.useEnv)();
|
|
7285
|
-
const [filterBy, setFilterBy] =
|
|
7286
|
-
const [searchBy, setSearchBy] =
|
|
7287
|
-
const [groupBy, setGroupBy] =
|
|
7288
|
-
const [selectedTags, setSelectedTags] =
|
|
7289
|
-
const [searchString, setSearchString] =
|
|
7290
|
-
const [searchMap, setSearchMap] =
|
|
7268
|
+
const [filterBy, setFilterBy] = useState14(null);
|
|
7269
|
+
const [searchBy, setSearchBy] = useState14(null);
|
|
7270
|
+
const [groupBy, setGroupBy] = useState14(null);
|
|
7271
|
+
const [selectedTags, setSelectedTags] = useState14(null);
|
|
7272
|
+
const [searchString, setSearchString] = useState14("");
|
|
7273
|
+
const [searchMap, setSearchMap] = useState14({});
|
|
7291
7274
|
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
7292
7275
|
const contextSearch = { ...env.context, ...actionContext };
|
|
7293
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] :
|
|
7276
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain6(domain, contextSearch) : [];
|
|
7294
7277
|
const clearSearch = () => {
|
|
7295
7278
|
setFilterBy([]);
|
|
7296
7279
|
setGroupBy([]);
|
package/dist/widget.d.mts
CHANGED
|
@@ -61,30 +61,35 @@ declare const many2oneButtonController: (props: any) => {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
interface IMany2ManyControllerProps extends IInputFieldProps {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
options
|
|
68
|
-
enabled
|
|
69
|
-
|
|
64
|
+
relation: string;
|
|
65
|
+
domain?: any;
|
|
66
|
+
context?: any;
|
|
67
|
+
options?: any;
|
|
68
|
+
enabled?: boolean;
|
|
69
|
+
service?: string;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
|
|
73
|
-
handleCreateNewOnPage: () => Promise<void>;
|
|
74
|
-
optionsObject: any;
|
|
75
|
-
totalRows: any;
|
|
76
73
|
rows: any;
|
|
77
74
|
columns: any;
|
|
75
|
+
optionsObject: any;
|
|
76
|
+
viewData: any;
|
|
77
|
+
totalRows: any;
|
|
78
78
|
onToggleColumnOptional: (item: any) => void;
|
|
79
79
|
typeTable: "list" | "group" | "calendar" | undefined;
|
|
80
80
|
isLoading: boolean;
|
|
81
81
|
isFetched: boolean;
|
|
82
82
|
isPlaceholderData: boolean;
|
|
83
|
-
setPage: react.Dispatch<react.SetStateAction<number>>;
|
|
84
83
|
page: number;
|
|
85
|
-
|
|
84
|
+
pageLimit: number;
|
|
85
|
+
groupByList: any;
|
|
86
|
+
selectedRowKeys: number[];
|
|
86
87
|
domain: any;
|
|
88
|
+
setPage: react.Dispatch<react.SetStateAction<number>>;
|
|
87
89
|
setDomain: react.Dispatch<any>;
|
|
90
|
+
setPageLimit: react.Dispatch<react.SetStateAction<number>>;
|
|
91
|
+
setGroupByList: react.Dispatch<any>;
|
|
92
|
+
setSelectedRowKeys: react.Dispatch<react.SetStateAction<number[]>>;
|
|
88
93
|
searchController: {
|
|
89
94
|
groupBy: any[] | null;
|
|
90
95
|
searchBy: any[] | null;
|
|
@@ -102,6 +107,7 @@ declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
|
|
|
102
107
|
domain: any[] | undefined;
|
|
103
108
|
context: any;
|
|
104
109
|
};
|
|
110
|
+
handleCreateNewOnPage: () => Promise<void>;
|
|
105
111
|
};
|
|
106
112
|
|
|
107
113
|
interface IMany2ManyTagFieldProps extends IInputFieldProps {
|
package/dist/widget.d.ts
CHANGED
|
@@ -61,30 +61,35 @@ declare const many2oneButtonController: (props: any) => {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
interface IMany2ManyControllerProps extends IInputFieldProps {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
options
|
|
68
|
-
enabled
|
|
69
|
-
|
|
64
|
+
relation: string;
|
|
65
|
+
domain?: any;
|
|
66
|
+
context?: any;
|
|
67
|
+
options?: any;
|
|
68
|
+
enabled?: boolean;
|
|
69
|
+
service?: string;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
|
|
73
|
-
handleCreateNewOnPage: () => Promise<void>;
|
|
74
|
-
optionsObject: any;
|
|
75
|
-
totalRows: any;
|
|
76
73
|
rows: any;
|
|
77
74
|
columns: any;
|
|
75
|
+
optionsObject: any;
|
|
76
|
+
viewData: any;
|
|
77
|
+
totalRows: any;
|
|
78
78
|
onToggleColumnOptional: (item: any) => void;
|
|
79
79
|
typeTable: "list" | "group" | "calendar" | undefined;
|
|
80
80
|
isLoading: boolean;
|
|
81
81
|
isFetched: boolean;
|
|
82
82
|
isPlaceholderData: boolean;
|
|
83
|
-
setPage: react.Dispatch<react.SetStateAction<number>>;
|
|
84
83
|
page: number;
|
|
85
|
-
|
|
84
|
+
pageLimit: number;
|
|
85
|
+
groupByList: any;
|
|
86
|
+
selectedRowKeys: number[];
|
|
86
87
|
domain: any;
|
|
88
|
+
setPage: react.Dispatch<react.SetStateAction<number>>;
|
|
87
89
|
setDomain: react.Dispatch<any>;
|
|
90
|
+
setPageLimit: react.Dispatch<react.SetStateAction<number>>;
|
|
91
|
+
setGroupByList: react.Dispatch<any>;
|
|
92
|
+
setSelectedRowKeys: react.Dispatch<react.SetStateAction<number[]>>;
|
|
88
93
|
searchController: {
|
|
89
94
|
groupBy: any[] | null;
|
|
90
95
|
searchBy: any[] | null;
|
|
@@ -102,6 +107,7 @@ declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
|
|
|
102
107
|
domain: any[] | undefined;
|
|
103
108
|
context: any;
|
|
104
109
|
};
|
|
110
|
+
handleCreateNewOnPage: () => Promise<void>;
|
|
105
111
|
};
|
|
106
112
|
|
|
107
113
|
interface IMany2ManyTagFieldProps extends IInputFieldProps {
|
package/dist/widget.js
CHANGED
|
@@ -4335,6 +4335,13 @@ var AppProviderInitialValue = {
|
|
|
4335
4335
|
view: {}
|
|
4336
4336
|
};
|
|
4337
4337
|
var ReactContext = (0, import_react9.createContext)(AppProviderInitialValue);
|
|
4338
|
+
var useAppProvider = () => {
|
|
4339
|
+
const context = (0, import_react9.useContext)(ReactContext);
|
|
4340
|
+
if (!context) {
|
|
4341
|
+
return AppProviderInitialValue;
|
|
4342
|
+
}
|
|
4343
|
+
return context;
|
|
4344
|
+
};
|
|
4338
4345
|
|
|
4339
4346
|
// src/hooks/core/use-config.ts
|
|
4340
4347
|
var import_react10 = require("react");
|
|
@@ -4458,6 +4465,84 @@ var useGetRowIds = (tableRef) => {
|
|
|
4458
4465
|
return { rowIds, refresh: updateVisibleRowIds };
|
|
4459
4466
|
};
|
|
4460
4467
|
|
|
4468
|
+
// src/hooks/core/use-list-data.ts
|
|
4469
|
+
var useListData = ({
|
|
4470
|
+
action,
|
|
4471
|
+
context,
|
|
4472
|
+
viewData,
|
|
4473
|
+
model,
|
|
4474
|
+
service,
|
|
4475
|
+
xNode
|
|
4476
|
+
}) => {
|
|
4477
|
+
const { useGetListData: useGetListData2 } = (0, provider_exports.useService)();
|
|
4478
|
+
const [page, setPage] = (0, import_react15.useState)(0);
|
|
4479
|
+
const [pageLimit, setPageLimit] = (0, import_react15.useState)(10);
|
|
4480
|
+
const [groupByList, setGroupByList] = (0, import_react15.useState)(null);
|
|
4481
|
+
const [domain, setDomain] = (0, import_react15.useState)(null);
|
|
4482
|
+
const [order, setOrder] = (0, import_react15.useState)("");
|
|
4483
|
+
const [selectedRowKeys, setSelectedRowKeys] = (0, import_react15.useState)([]);
|
|
4484
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
4485
|
+
const [debouncedDomain] = useDebounce(domain, 500);
|
|
4486
|
+
const { specification } = useGetSpecification({
|
|
4487
|
+
model,
|
|
4488
|
+
viewData,
|
|
4489
|
+
fields: viewData?.views?.list?.fields
|
|
4490
|
+
});
|
|
4491
|
+
const listDataProps = (0, import_react15.useMemo)(() => {
|
|
4492
|
+
if (!viewData || !action || !context) {
|
|
4493
|
+
return null;
|
|
4494
|
+
}
|
|
4495
|
+
const domainParse = domain ? [...domain] : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils5.evalJSONDomain)(action?.domain, context) : [];
|
|
4496
|
+
const limit = pageLimit;
|
|
4497
|
+
const offset = debouncedPage * pageLimit;
|
|
4498
|
+
const fields = typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
4499
|
+
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
4500
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils5.formatSortingString)(viewData?.views?.list?.default_order) : "";
|
|
4501
|
+
return {
|
|
4502
|
+
model: action?.res_model,
|
|
4503
|
+
specification,
|
|
4504
|
+
domain: domainParse,
|
|
4505
|
+
limit,
|
|
4506
|
+
offset,
|
|
4507
|
+
fields,
|
|
4508
|
+
groupby,
|
|
4509
|
+
context,
|
|
4510
|
+
sort
|
|
4511
|
+
};
|
|
4512
|
+
}, [action, groupByList, order, debouncedPage, pageLimit, debouncedDomain]);
|
|
4513
|
+
const list = useGetListData2(
|
|
4514
|
+
{ ...listDataProps },
|
|
4515
|
+
[
|
|
4516
|
+
listDataProps?.domain,
|
|
4517
|
+
listDataProps?.groupby,
|
|
4518
|
+
listDataProps?.limit,
|
|
4519
|
+
listDataProps?.offset,
|
|
4520
|
+
listDataProps?.sort
|
|
4521
|
+
],
|
|
4522
|
+
!!listDataProps && !!specification && !(0, import_utils5.isObjectEmpty)(specification) && !!domain,
|
|
4523
|
+
service,
|
|
4524
|
+
xNode
|
|
4525
|
+
);
|
|
4526
|
+
return {
|
|
4527
|
+
...list,
|
|
4528
|
+
state: {
|
|
4529
|
+
specification,
|
|
4530
|
+
page,
|
|
4531
|
+
order,
|
|
4532
|
+
domain: listDataProps?.domain,
|
|
4533
|
+
pageLimit,
|
|
4534
|
+
groupByList,
|
|
4535
|
+
selectedRowKeys,
|
|
4536
|
+
setPage,
|
|
4537
|
+
setOrder,
|
|
4538
|
+
setDomain,
|
|
4539
|
+
setPageLimit,
|
|
4540
|
+
setGroupByList,
|
|
4541
|
+
setSelectedRowKeys
|
|
4542
|
+
}
|
|
4543
|
+
};
|
|
4544
|
+
};
|
|
4545
|
+
|
|
4461
4546
|
// src/store.ts
|
|
4462
4547
|
var store_exports = {};
|
|
4463
4548
|
__reExport(store_exports, require("@fctc/interface-logic/store"));
|
|
@@ -4677,17 +4762,13 @@ var many2manyFieldController = (props) => {
|
|
|
4677
4762
|
domain,
|
|
4678
4763
|
context,
|
|
4679
4764
|
options,
|
|
4680
|
-
|
|
4681
|
-
|
|
4682
|
-
groupByDomain,
|
|
4683
|
-
enabled: enabledCallAPI
|
|
4765
|
+
enabled: enabledCallAPI,
|
|
4766
|
+
service
|
|
4684
4767
|
} = props;
|
|
4685
4768
|
const { env } = (0, provider_exports.useEnv)();
|
|
4686
|
-
const {
|
|
4687
|
-
const
|
|
4688
|
-
const
|
|
4689
|
-
const [domainMany2Many, setDomainMany2Many] = (0, import_react17.useState)(null);
|
|
4690
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
4769
|
+
const { user } = useAppProvider();
|
|
4770
|
+
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4771
|
+
const dataUser = user?.userProfile?.data;
|
|
4691
4772
|
const contextObject = {
|
|
4692
4773
|
...env.context,
|
|
4693
4774
|
...context || {}
|
|
@@ -4704,61 +4785,46 @@ var many2manyFieldController = (props) => {
|
|
|
4704
4785
|
viewParams,
|
|
4705
4786
|
enabled: enabledCallAPI
|
|
4706
4787
|
});
|
|
4707
|
-
const { specification } = useGetSpecification({
|
|
4708
|
-
model: String(relation),
|
|
4709
|
-
viewData: viewResponse || {},
|
|
4710
|
-
fields: [
|
|
4711
|
-
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
4712
|
-
...tab?.fields ? tab.fields : []
|
|
4713
|
-
]
|
|
4714
|
-
});
|
|
4715
4788
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
4716
|
-
const optionsObject =
|
|
4717
|
-
const fetchData = async () => {
|
|
4718
|
-
try {
|
|
4719
|
-
const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
4720
|
-
setDomainMany2Many(domainParse);
|
|
4721
|
-
setPage(0);
|
|
4722
|
-
} catch (err) {
|
|
4723
|
-
console.log(err);
|
|
4724
|
-
}
|
|
4725
|
-
};
|
|
4726
|
-
const queryKey = [
|
|
4727
|
-
`view-${relation}`,
|
|
4728
|
-
specification,
|
|
4729
|
-
domainMany2Many,
|
|
4730
|
-
debouncedPage,
|
|
4731
|
-
groupByDomain,
|
|
4732
|
-
order
|
|
4733
|
-
];
|
|
4734
|
-
const data = {
|
|
4735
|
-
model: relation,
|
|
4736
|
-
specification,
|
|
4737
|
-
domain: domainMany2Many,
|
|
4738
|
-
offset: debouncedPage * 10,
|
|
4739
|
-
limit: 10,
|
|
4740
|
-
context: contextObject,
|
|
4741
|
-
fields: groupByDomain?.fields,
|
|
4742
|
-
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
4743
|
-
sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
|
|
4744
|
-
};
|
|
4745
|
-
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
4789
|
+
const optionsObject = (options && typeof options === "string" ? (0, import_utils9.evalJSONContext)(options) : options) || {};
|
|
4746
4790
|
const {
|
|
4747
4791
|
data: dataResponse,
|
|
4748
|
-
isLoading,
|
|
4749
4792
|
isFetched,
|
|
4793
|
+
isLoading,
|
|
4794
|
+
state,
|
|
4750
4795
|
isPlaceholderData
|
|
4751
|
-
} =
|
|
4796
|
+
} = useListData({
|
|
4797
|
+
action: {
|
|
4798
|
+
domain,
|
|
4799
|
+
res_model: relation
|
|
4800
|
+
},
|
|
4801
|
+
context: contextObject,
|
|
4802
|
+
model: relation ?? "",
|
|
4803
|
+
viewData: viewResponse,
|
|
4804
|
+
service,
|
|
4805
|
+
xNode: service == "wesap" && dataUser.x_node
|
|
4806
|
+
});
|
|
4807
|
+
const {
|
|
4808
|
+
selectedRowKeys,
|
|
4809
|
+
groupByList,
|
|
4810
|
+
domain: domainList,
|
|
4811
|
+
page,
|
|
4812
|
+
pageLimit,
|
|
4813
|
+
setDomain,
|
|
4814
|
+
setOrder,
|
|
4815
|
+
setPage,
|
|
4816
|
+
setSelectedRowKeys,
|
|
4817
|
+
setGroupByList,
|
|
4818
|
+
setPageLimit
|
|
4819
|
+
} = state;
|
|
4752
4820
|
(0, import_react17.useEffect)(() => {
|
|
4753
|
-
if (viewResponse) {
|
|
4754
|
-
fetchData();
|
|
4755
|
-
}
|
|
4756
4821
|
return () => {
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
|
|
4822
|
+
setDomain(null);
|
|
4823
|
+
setOrder("");
|
|
4824
|
+
setGroupByList(null);
|
|
4825
|
+
setPageLimit(10);
|
|
4760
4826
|
};
|
|
4761
|
-
}, [
|
|
4827
|
+
}, []);
|
|
4762
4828
|
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
4763
4829
|
data: {
|
|
4764
4830
|
fields: viewResponse?.views?.list?.fields,
|
|
@@ -4782,22 +4848,28 @@ var many2manyFieldController = (props) => {
|
|
|
4782
4848
|
const handleCreateNewOnPage = async () => {
|
|
4783
4849
|
};
|
|
4784
4850
|
return {
|
|
4785
|
-
handleCreateNewOnPage,
|
|
4786
|
-
optionsObject,
|
|
4787
|
-
totalRows: dataResponse?.length ?? 0,
|
|
4788
4851
|
rows,
|
|
4789
4852
|
columns,
|
|
4853
|
+
optionsObject,
|
|
4854
|
+
viewData: viewResponse,
|
|
4855
|
+
totalRows: dataResponse?.length ?? 0,
|
|
4790
4856
|
onToggleColumnOptional,
|
|
4791
4857
|
typeTable,
|
|
4792
4858
|
isLoading,
|
|
4793
4859
|
isFetched,
|
|
4794
4860
|
isPlaceholderData,
|
|
4795
|
-
setPage,
|
|
4796
4861
|
page,
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4862
|
+
pageLimit,
|
|
4863
|
+
groupByList,
|
|
4864
|
+
selectedRowKeys,
|
|
4865
|
+
domain: domainList,
|
|
4866
|
+
setPage,
|
|
4867
|
+
setDomain,
|
|
4868
|
+
setPageLimit,
|
|
4869
|
+
setGroupByList,
|
|
4870
|
+
setSelectedRowKeys,
|
|
4871
|
+
searchController: searchControllers,
|
|
4872
|
+
handleCreateNewOnPage
|
|
4801
4873
|
};
|
|
4802
4874
|
};
|
|
4803
4875
|
|
package/dist/widget.mjs
CHANGED
|
@@ -4388,6 +4388,13 @@ var AppProviderInitialValue = {
|
|
|
4388
4388
|
view: {}
|
|
4389
4389
|
};
|
|
4390
4390
|
var ReactContext = createContext(AppProviderInitialValue);
|
|
4391
|
+
var useAppProvider = () => {
|
|
4392
|
+
const context = useContext(ReactContext);
|
|
4393
|
+
if (!context) {
|
|
4394
|
+
return AppProviderInitialValue;
|
|
4395
|
+
}
|
|
4396
|
+
return context;
|
|
4397
|
+
};
|
|
4391
4398
|
|
|
4392
4399
|
// src/hooks/core/use-config.ts
|
|
4393
4400
|
import { useEffect as useEffect6 } from "react";
|
|
@@ -4515,6 +4522,84 @@ var useGetRowIds = (tableRef) => {
|
|
|
4515
4522
|
return { rowIds, refresh: updateVisibleRowIds };
|
|
4516
4523
|
};
|
|
4517
4524
|
|
|
4525
|
+
// src/hooks/core/use-list-data.ts
|
|
4526
|
+
var useListData = ({
|
|
4527
|
+
action,
|
|
4528
|
+
context,
|
|
4529
|
+
viewData,
|
|
4530
|
+
model,
|
|
4531
|
+
service,
|
|
4532
|
+
xNode
|
|
4533
|
+
}) => {
|
|
4534
|
+
const { useGetListData: useGetListData2 } = (0, provider_exports.useService)();
|
|
4535
|
+
const [page, setPage] = useState6(0);
|
|
4536
|
+
const [pageLimit, setPageLimit] = useState6(10);
|
|
4537
|
+
const [groupByList, setGroupByList] = useState6(null);
|
|
4538
|
+
const [domain, setDomain] = useState6(null);
|
|
4539
|
+
const [order, setOrder] = useState6("");
|
|
4540
|
+
const [selectedRowKeys, setSelectedRowKeys] = useState6([]);
|
|
4541
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
4542
|
+
const [debouncedDomain] = useDebounce(domain, 500);
|
|
4543
|
+
const { specification } = useGetSpecification({
|
|
4544
|
+
model,
|
|
4545
|
+
viewData,
|
|
4546
|
+
fields: viewData?.views?.list?.fields
|
|
4547
|
+
});
|
|
4548
|
+
const listDataProps = useMemo7(() => {
|
|
4549
|
+
if (!viewData || !action || !context) {
|
|
4550
|
+
return null;
|
|
4551
|
+
}
|
|
4552
|
+
const domainParse = domain ? [...domain] : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : evalJSONDomain(action?.domain, context) : [];
|
|
4553
|
+
const limit = pageLimit;
|
|
4554
|
+
const offset = debouncedPage * pageLimit;
|
|
4555
|
+
const fields = typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
4556
|
+
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
4557
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? formatSortingString(viewData?.views?.list?.default_order) : "";
|
|
4558
|
+
return {
|
|
4559
|
+
model: action?.res_model,
|
|
4560
|
+
specification,
|
|
4561
|
+
domain: domainParse,
|
|
4562
|
+
limit,
|
|
4563
|
+
offset,
|
|
4564
|
+
fields,
|
|
4565
|
+
groupby,
|
|
4566
|
+
context,
|
|
4567
|
+
sort
|
|
4568
|
+
};
|
|
4569
|
+
}, [action, groupByList, order, debouncedPage, pageLimit, debouncedDomain]);
|
|
4570
|
+
const list = useGetListData2(
|
|
4571
|
+
{ ...listDataProps },
|
|
4572
|
+
[
|
|
4573
|
+
listDataProps?.domain,
|
|
4574
|
+
listDataProps?.groupby,
|
|
4575
|
+
listDataProps?.limit,
|
|
4576
|
+
listDataProps?.offset,
|
|
4577
|
+
listDataProps?.sort
|
|
4578
|
+
],
|
|
4579
|
+
!!listDataProps && !!specification && !isObjectEmpty4(specification) && !!domain,
|
|
4580
|
+
service,
|
|
4581
|
+
xNode
|
|
4582
|
+
);
|
|
4583
|
+
return {
|
|
4584
|
+
...list,
|
|
4585
|
+
state: {
|
|
4586
|
+
specification,
|
|
4587
|
+
page,
|
|
4588
|
+
order,
|
|
4589
|
+
domain: listDataProps?.domain,
|
|
4590
|
+
pageLimit,
|
|
4591
|
+
groupByList,
|
|
4592
|
+
selectedRowKeys,
|
|
4593
|
+
setPage,
|
|
4594
|
+
setOrder,
|
|
4595
|
+
setDomain,
|
|
4596
|
+
setPageLimit,
|
|
4597
|
+
setGroupByList,
|
|
4598
|
+
setSelectedRowKeys
|
|
4599
|
+
}
|
|
4600
|
+
};
|
|
4601
|
+
};
|
|
4602
|
+
|
|
4518
4603
|
// src/store.ts
|
|
4519
4604
|
var store_exports = {};
|
|
4520
4605
|
__reExport(store_exports, store_star);
|
|
@@ -4727,29 +4812,21 @@ var many2oneButtonController = (props) => {
|
|
|
4727
4812
|
};
|
|
4728
4813
|
|
|
4729
4814
|
// src/widget/basic/many2many-field/controller.ts
|
|
4730
|
-
import { useEffect as useEffect11
|
|
4731
|
-
import {
|
|
4732
|
-
evalJSONContext as evalJSONContext4,
|
|
4733
|
-
evalJSONDomain as evalJSONDomain4,
|
|
4734
|
-
formatSortingString as formatSortingString2
|
|
4735
|
-
} from "@fctc/interface-logic/utils";
|
|
4815
|
+
import { useEffect as useEffect11 } from "react";
|
|
4816
|
+
import { evalJSONContext as evalJSONContext4 } from "@fctc/interface-logic/utils";
|
|
4736
4817
|
var many2manyFieldController = (props) => {
|
|
4737
4818
|
const {
|
|
4738
4819
|
relation,
|
|
4739
4820
|
domain,
|
|
4740
4821
|
context,
|
|
4741
4822
|
options,
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
groupByDomain,
|
|
4745
|
-
enabled: enabledCallAPI
|
|
4823
|
+
enabled: enabledCallAPI,
|
|
4824
|
+
service
|
|
4746
4825
|
} = props;
|
|
4747
4826
|
const { env } = (0, provider_exports.useEnv)();
|
|
4748
|
-
const {
|
|
4749
|
-
const
|
|
4750
|
-
const
|
|
4751
|
-
const [domainMany2Many, setDomainMany2Many] = useState8(null);
|
|
4752
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
4827
|
+
const { user } = useAppProvider();
|
|
4828
|
+
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4829
|
+
const dataUser = user?.userProfile?.data;
|
|
4753
4830
|
const contextObject = {
|
|
4754
4831
|
...env.context,
|
|
4755
4832
|
...context || {}
|
|
@@ -4766,61 +4843,46 @@ var many2manyFieldController = (props) => {
|
|
|
4766
4843
|
viewParams,
|
|
4767
4844
|
enabled: enabledCallAPI
|
|
4768
4845
|
});
|
|
4769
|
-
const { specification } = useGetSpecification({
|
|
4770
|
-
model: String(relation),
|
|
4771
|
-
viewData: viewResponse || {},
|
|
4772
|
-
fields: [
|
|
4773
|
-
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
4774
|
-
...tab?.fields ? tab.fields : []
|
|
4775
|
-
]
|
|
4776
|
-
});
|
|
4777
4846
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
4778
|
-
const optionsObject =
|
|
4779
|
-
const fetchData = async () => {
|
|
4780
|
-
try {
|
|
4781
|
-
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
4782
|
-
setDomainMany2Many(domainParse);
|
|
4783
|
-
setPage(0);
|
|
4784
|
-
} catch (err) {
|
|
4785
|
-
console.log(err);
|
|
4786
|
-
}
|
|
4787
|
-
};
|
|
4788
|
-
const queryKey = [
|
|
4789
|
-
`view-${relation}`,
|
|
4790
|
-
specification,
|
|
4791
|
-
domainMany2Many,
|
|
4792
|
-
debouncedPage,
|
|
4793
|
-
groupByDomain,
|
|
4794
|
-
order
|
|
4795
|
-
];
|
|
4796
|
-
const data = {
|
|
4797
|
-
model: relation,
|
|
4798
|
-
specification,
|
|
4799
|
-
domain: domainMany2Many,
|
|
4800
|
-
offset: debouncedPage * 10,
|
|
4801
|
-
limit: 10,
|
|
4802
|
-
context: contextObject,
|
|
4803
|
-
fields: groupByDomain?.fields,
|
|
4804
|
-
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
4805
|
-
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
4806
|
-
};
|
|
4807
|
-
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
4847
|
+
const optionsObject = (options && typeof options === "string" ? evalJSONContext4(options) : options) || {};
|
|
4808
4848
|
const {
|
|
4809
4849
|
data: dataResponse,
|
|
4810
|
-
isLoading,
|
|
4811
4850
|
isFetched,
|
|
4851
|
+
isLoading,
|
|
4852
|
+
state,
|
|
4812
4853
|
isPlaceholderData
|
|
4813
|
-
} =
|
|
4854
|
+
} = useListData({
|
|
4855
|
+
action: {
|
|
4856
|
+
domain,
|
|
4857
|
+
res_model: relation
|
|
4858
|
+
},
|
|
4859
|
+
context: contextObject,
|
|
4860
|
+
model: relation ?? "",
|
|
4861
|
+
viewData: viewResponse,
|
|
4862
|
+
service,
|
|
4863
|
+
xNode: service == "wesap" && dataUser.x_node
|
|
4864
|
+
});
|
|
4865
|
+
const {
|
|
4866
|
+
selectedRowKeys,
|
|
4867
|
+
groupByList,
|
|
4868
|
+
domain: domainList,
|
|
4869
|
+
page,
|
|
4870
|
+
pageLimit,
|
|
4871
|
+
setDomain,
|
|
4872
|
+
setOrder,
|
|
4873
|
+
setPage,
|
|
4874
|
+
setSelectedRowKeys,
|
|
4875
|
+
setGroupByList,
|
|
4876
|
+
setPageLimit
|
|
4877
|
+
} = state;
|
|
4814
4878
|
useEffect11(() => {
|
|
4815
|
-
if (viewResponse) {
|
|
4816
|
-
fetchData();
|
|
4817
|
-
}
|
|
4818
4879
|
return () => {
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4880
|
+
setDomain(null);
|
|
4881
|
+
setOrder("");
|
|
4882
|
+
setGroupByList(null);
|
|
4883
|
+
setPageLimit(10);
|
|
4822
4884
|
};
|
|
4823
|
-
}, [
|
|
4885
|
+
}, []);
|
|
4824
4886
|
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
4825
4887
|
data: {
|
|
4826
4888
|
fields: viewResponse?.views?.list?.fields,
|
|
@@ -4844,29 +4906,35 @@ var many2manyFieldController = (props) => {
|
|
|
4844
4906
|
const handleCreateNewOnPage = async () => {
|
|
4845
4907
|
};
|
|
4846
4908
|
return {
|
|
4847
|
-
handleCreateNewOnPage,
|
|
4848
|
-
optionsObject,
|
|
4849
|
-
totalRows: dataResponse?.length ?? 0,
|
|
4850
4909
|
rows,
|
|
4851
4910
|
columns,
|
|
4911
|
+
optionsObject,
|
|
4912
|
+
viewData: viewResponse,
|
|
4913
|
+
totalRows: dataResponse?.length ?? 0,
|
|
4852
4914
|
onToggleColumnOptional,
|
|
4853
4915
|
typeTable,
|
|
4854
4916
|
isLoading,
|
|
4855
4917
|
isFetched,
|
|
4856
4918
|
isPlaceholderData,
|
|
4857
|
-
setPage,
|
|
4858
4919
|
page,
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4920
|
+
pageLimit,
|
|
4921
|
+
groupByList,
|
|
4922
|
+
selectedRowKeys,
|
|
4923
|
+
domain: domainList,
|
|
4924
|
+
setPage,
|
|
4925
|
+
setDomain,
|
|
4926
|
+
setPageLimit,
|
|
4927
|
+
setGroupByList,
|
|
4928
|
+
setSelectedRowKeys,
|
|
4929
|
+
searchController: searchControllers,
|
|
4930
|
+
handleCreateNewOnPage
|
|
4863
4931
|
};
|
|
4864
4932
|
};
|
|
4865
4933
|
|
|
4866
4934
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
4867
4935
|
import { useMemo as useMemo9 } from "react";
|
|
4868
4936
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
4869
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as
|
|
4937
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
|
|
4870
4938
|
var many2manyTagsController = (props) => {
|
|
4871
4939
|
const {
|
|
4872
4940
|
relation,
|
|
@@ -4883,7 +4951,7 @@ var many2manyTagsController = (props) => {
|
|
|
4883
4951
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
4884
4952
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
4885
4953
|
const domainObject = useMemo9(
|
|
4886
|
-
() =>
|
|
4954
|
+
() => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
4887
4955
|
[domain, formValues]
|
|
4888
4956
|
);
|
|
4889
4957
|
const data = {
|
|
@@ -4926,8 +4994,8 @@ var many2manyTagsController = (props) => {
|
|
|
4926
4994
|
};
|
|
4927
4995
|
|
|
4928
4996
|
// src/widget/basic/status-bar-field/controller.ts
|
|
4929
|
-
import { useState as
|
|
4930
|
-
import { evalJSONDomain as
|
|
4997
|
+
import { useState as useState8 } from "react";
|
|
4998
|
+
import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
4931
4999
|
var durationController = (props) => {
|
|
4932
5000
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
4933
5001
|
const specification = {
|
|
@@ -4937,13 +5005,13 @@ var durationController = (props) => {
|
|
|
4937
5005
|
};
|
|
4938
5006
|
const { useGetListData: useGetListData2, useChangeStatus: useChangeStatus2 } = (0, provider_exports.useService)();
|
|
4939
5007
|
const { env } = (0, provider_exports.useEnv)();
|
|
4940
|
-
const [disabled, setDisabled] =
|
|
4941
|
-
const [modelStatus, setModalStatus] =
|
|
5008
|
+
const [disabled, setDisabled] = useState8(false);
|
|
5009
|
+
const [modelStatus, setModalStatus] = useState8(false);
|
|
4942
5010
|
const queryKey = [`data-status-duration`, specification];
|
|
4943
5011
|
const listDataProps = {
|
|
4944
5012
|
model: relation,
|
|
4945
5013
|
specification,
|
|
4946
|
-
domain:
|
|
5014
|
+
domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
|
|
4947
5015
|
limit: 10,
|
|
4948
5016
|
offset: 0,
|
|
4949
5017
|
fields: "",
|
|
@@ -5028,10 +5096,10 @@ var priorityFieldController = (props) => {
|
|
|
5028
5096
|
};
|
|
5029
5097
|
|
|
5030
5098
|
// src/widget/basic/download-file-field/controller.ts
|
|
5031
|
-
import { useId, useState as
|
|
5099
|
+
import { useId, useState as useState9 } from "react";
|
|
5032
5100
|
var downloadFileController = () => {
|
|
5033
5101
|
const inputId = useId();
|
|
5034
|
-
const [file, setFile] =
|
|
5102
|
+
const [file, setFile] = useState9(null);
|
|
5035
5103
|
const handleFileChange = (e) => {
|
|
5036
5104
|
setFile(e.target.files[0]);
|
|
5037
5105
|
};
|
|
@@ -5963,11 +6031,11 @@ var dateFieldController = (props) => {
|
|
|
5963
6031
|
};
|
|
5964
6032
|
|
|
5965
6033
|
// src/widget/basic/copy-link-button/controller.ts
|
|
5966
|
-
import { useState as
|
|
6034
|
+
import { useState as useState10 } from "react";
|
|
5967
6035
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
5968
6036
|
var copyLinkButtonController = (props) => {
|
|
5969
6037
|
const { value, defaultValue } = props;
|
|
5970
|
-
const [isCopied, setIsCopied] =
|
|
6038
|
+
const [isCopied, setIsCopied] = useState10(false);
|
|
5971
6039
|
const handleCopyToClipboard = async (value2) => {
|
|
5972
6040
|
await copyTextToClipboard(value2);
|
|
5973
6041
|
setIsCopied(true);
|
|
@@ -6015,14 +6083,14 @@ var colorFieldController = (props) => {
|
|
|
6015
6083
|
};
|
|
6016
6084
|
|
|
6017
6085
|
// src/widget/basic/binary-field/controller.ts
|
|
6018
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6086
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState11 } from "react";
|
|
6019
6087
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6020
6088
|
var binaryFieldController = (props) => {
|
|
6021
6089
|
const { name, methods, readonly = false, value } = props;
|
|
6022
6090
|
const inputId = useId2();
|
|
6023
|
-
const [selectedImage, setSelectedImage] =
|
|
6024
|
-
const [initialImage, setInitialImage] =
|
|
6025
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6091
|
+
const [selectedImage, setSelectedImage] = useState11(null);
|
|
6092
|
+
const [initialImage, setInitialImage] = useState11(value || null);
|
|
6093
|
+
const [isInsideTable, setIsInsideTable] = useState11(false);
|
|
6026
6094
|
const { setValue } = methods;
|
|
6027
6095
|
const binaryRef = useRef4(null);
|
|
6028
6096
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6179,11 +6247,11 @@ var tableHeadController = (props) => {
|
|
|
6179
6247
|
};
|
|
6180
6248
|
|
|
6181
6249
|
// src/widget/advance/table/table-view/controller.ts
|
|
6182
|
-
import { useEffect as useEffect13, useState as
|
|
6250
|
+
import { useEffect as useEffect13, useState as useState12 } from "react";
|
|
6183
6251
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6184
6252
|
var tableController = ({ data }) => {
|
|
6185
|
-
const [rows, setRows] =
|
|
6186
|
-
const [columns, setColumns] =
|
|
6253
|
+
const [rows, setRows] = useState12(null);
|
|
6254
|
+
const [columns, setColumns] = useState12(null);
|
|
6187
6255
|
const dataModelFields = data?.fields?.map((field) => {
|
|
6188
6256
|
return {
|
|
6189
6257
|
...data.dataModel?.[field?.name],
|
|
@@ -6268,7 +6336,7 @@ var tableController = ({ data }) => {
|
|
|
6268
6336
|
};
|
|
6269
6337
|
|
|
6270
6338
|
// src/widget/advance/table/table-group/controller.ts
|
|
6271
|
-
import { useEffect as useEffect14, useMemo as useMemo11, useState as
|
|
6339
|
+
import { useEffect as useEffect14, useMemo as useMemo11, useState as useState13 } from "react";
|
|
6272
6340
|
import { useAppSelector as useAppSelector2, selectList } from "@fctc/interface-logic/store";
|
|
6273
6341
|
var tableGroupController = (props) => {
|
|
6274
6342
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -6285,10 +6353,10 @@ var tableGroupController = (props) => {
|
|
|
6285
6353
|
groupByList,
|
|
6286
6354
|
setSelectedRowKeys
|
|
6287
6355
|
} = props;
|
|
6288
|
-
const [pageGroup, setPageGroup] =
|
|
6356
|
+
const [pageGroup, setPageGroup] = useState13(0);
|
|
6289
6357
|
const { selectedRowKeys } = useAppSelector2(selectList);
|
|
6290
|
-
const [isShowGroup, setIsShowGroup] =
|
|
6291
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
6358
|
+
const [isShowGroup, setIsShowGroup] = useState13(false);
|
|
6359
|
+
const [colEmptyGroup, setColEmptyGroup] = useState13({
|
|
6292
6360
|
fromStart: 1,
|
|
6293
6361
|
fromEnd: 1
|
|
6294
6362
|
});
|
|
@@ -6407,10 +6475,10 @@ import { SearchType } from "@fctc/interface-logic/constants";
|
|
|
6407
6475
|
import {
|
|
6408
6476
|
domainHelper as domainHelper2,
|
|
6409
6477
|
evalJSONContext as evalJSONContext8,
|
|
6410
|
-
evalJSONDomain as
|
|
6478
|
+
evalJSONDomain as evalJSONDomain6,
|
|
6411
6479
|
validateAndParseDate
|
|
6412
6480
|
} from "@fctc/interface-logic/utils";
|
|
6413
|
-
import { useCallback as useCallback5, useEffect as useEffect15, useState as
|
|
6481
|
+
import { useCallback as useCallback5, useEffect as useEffect15, useState as useState14 } from "react";
|
|
6414
6482
|
var searchController = ({
|
|
6415
6483
|
viewData,
|
|
6416
6484
|
model,
|
|
@@ -6419,15 +6487,15 @@ var searchController = ({
|
|
|
6419
6487
|
fieldsList
|
|
6420
6488
|
}) => {
|
|
6421
6489
|
const { env } = (0, provider_exports.useEnv)();
|
|
6422
|
-
const [filterBy, setFilterBy] =
|
|
6423
|
-
const [searchBy, setSearchBy] =
|
|
6424
|
-
const [groupBy, setGroupBy] =
|
|
6425
|
-
const [selectedTags, setSelectedTags] =
|
|
6426
|
-
const [searchString, setSearchString] =
|
|
6427
|
-
const [searchMap, setSearchMap] =
|
|
6490
|
+
const [filterBy, setFilterBy] = useState14(null);
|
|
6491
|
+
const [searchBy, setSearchBy] = useState14(null);
|
|
6492
|
+
const [groupBy, setGroupBy] = useState14(null);
|
|
6493
|
+
const [selectedTags, setSelectedTags] = useState14(null);
|
|
6494
|
+
const [searchString, setSearchString] = useState14("");
|
|
6495
|
+
const [searchMap, setSearchMap] = useState14({});
|
|
6428
6496
|
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
6429
6497
|
const contextSearch = { ...env.context, ...actionContext };
|
|
6430
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] :
|
|
6498
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain6(domain, contextSearch) : [];
|
|
6431
6499
|
const clearSearch = () => {
|
|
6432
6500
|
setFilterBy([]);
|
|
6433
6501
|
setGroupBy([]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fctc/widget-logic",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"test": "jest"
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@fctc/interface-logic": "^2.7.
|
|
77
|
+
"@fctc/interface-logic": "^2.7.2",
|
|
78
78
|
"@headlessui/react": "^2.2.6",
|
|
79
79
|
"@tanstack/react-query": "^5.84.0",
|
|
80
80
|
"i18next": "^25.3.2",
|