@gisce/react-ooui 2.0.0-alpha.62 → 2.0.0-alpha.64

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.
Files changed (245) hide show
  1. package/dist/react-ooui.es.js +1 -1
  2. package/dist/react-ooui.es.js.map +1 -1
  3. package/package.json +7 -9
  4. package/src/ConnectionProvider.ts +0 -16
  5. package/src/__tests__/iconMapper.test.ts +0 -30
  6. package/src/__tests__/searchFilterHelper.spec.ts +0 -386
  7. package/src/actionbar/ActionButton.tsx +0 -40
  8. package/src/actionbar/AttachmentsButton.tsx +0 -132
  9. package/src/actionbar/AttachmentsButtonWrapper.tsx +0 -157
  10. package/src/actionbar/ButtonWithBadge.tsx +0 -44
  11. package/src/actionbar/ChangeViewButton.tsx +0 -137
  12. package/src/actionbar/DashboardActionBar.tsx +0 -63
  13. package/src/actionbar/DropdownButton.tsx +0 -124
  14. package/src/actionbar/FormActionBar.tsx +0 -491
  15. package/src/actionbar/GraphActionBar.tsx +0 -67
  16. package/src/actionbar/NewButton.tsx +0 -46
  17. package/src/actionbar/SearchBar.tsx +0 -73
  18. package/src/actionbar/TreeActionBar.tsx +0 -383
  19. package/src/common/ButtonWithTooltip.tsx +0 -18
  20. package/src/common/DatePicker.tsx +0 -98
  21. package/src/common/Field.tsx +0 -93
  22. package/src/common/SelectAllRecordsRow.tsx +0 -94
  23. package/src/common/TimePicker.tsx +0 -38
  24. package/src/context/ActionViewContext.tsx +0 -213
  25. package/src/context/ConfigContext.tsx +0 -28
  26. package/src/context/ContentRootContext.tsx +0 -461
  27. package/src/context/DashboardActionContext.tsx +0 -44
  28. package/src/context/FormContext.tsx +0 -79
  29. package/src/context/FormModalContext.tsx +0 -28
  30. package/src/context/LocaleContext.tsx +0 -50
  31. package/src/context/One2manyContext.tsx +0 -45
  32. package/src/context/TabManagerContext.tsx +0 -117
  33. package/src/helpers/containerHelper.ts +0 -145
  34. package/src/helpers/dayjs.ts +0 -21
  35. package/src/helpers/dynamicColumnsHelper.ts +0 -73
  36. package/src/helpers/errorHelper.ts +0 -27
  37. package/src/helpers/filesHelper.ts +0 -41
  38. package/src/helpers/formHelper.ts +0 -301
  39. package/src/helpers/iconMapper.ts +0 -164
  40. package/src/helpers/logInfoHelper.tsx +0 -30
  41. package/src/helpers/one2manyHelper.ts +0 -194
  42. package/src/helpers/searchHelper.ts +0 -196
  43. package/src/helpers/timeHelper.ts +0 -58
  44. package/src/helpers/treeHelper.tsx +0 -226
  45. package/src/helpers/viewHelper.ts +0 -23
  46. package/src/hooks/useEffectDebugger.ts +0 -43
  47. package/src/hooks/useExport.ts +0 -439
  48. package/src/hooks/useFetchViews.ts +0 -0
  49. package/src/hooks/useSearch.ts +0 -434
  50. package/src/hooks/useWindowDimensions.ts +0 -33
  51. package/src/index.ts +0 -168
  52. package/src/locales/ca_ES.tsx +0 -99
  53. package/src/locales/en_US.tsx +0 -96
  54. package/src/locales/es_ES.tsx +0 -101
  55. package/src/stories/Binary.stories.tsx +0 -23
  56. package/src/stories/Boolean.stories.tsx +0 -22
  57. package/src/stories/Button.stories.tsx +0 -130
  58. package/src/stories/Char.stories.tsx +0 -76
  59. package/src/stories/FiberGrid.stories.tsx +0 -109
  60. package/src/stories/Float.stories.tsx +0 -22
  61. package/src/stories/FloatTime.stories.tsx +0 -32
  62. package/src/stories/Image.stories.tsx +0 -25
  63. package/src/stories/Integer.stories.tsx +0 -22
  64. package/src/stories/Label.stories.tsx +0 -100
  65. package/src/stories/Many2one.stories.tsx +0 -31
  66. package/src/stories/One2many.stories.tsx +0 -288
  67. package/src/stories/ProgressBar.stories.tsx +0 -22
  68. package/src/stories/Reference.stories.tsx +0 -43
  69. package/src/stories/Selection.stories.tsx +0 -34
  70. package/src/stories/Separator.stories.tsx +0 -53
  71. package/src/stories/Text.stories.tsx +0 -35
  72. package/src/stories/Time.stories.tsx +0 -31
  73. package/src/stories/Utils.stories.tsx +0 -14
  74. package/src/stories/containers/Group.stories.tsx +0 -84
  75. package/src/stories/containers/NewLine.stories.tsx +0 -52
  76. package/src/stories/containers/Notebook.stories.tsx +0 -188
  77. package/src/stories/custom/Avatar.stories.tsx +0 -22
  78. package/src/stories/custom/ButtonGroup.stories.tsx +0 -74
  79. package/src/stories/custom/CodeEditor.stories.tsx +0 -25
  80. package/src/stories/custom/Comments.stories.tsx +0 -197
  81. package/src/stories/custom/Indicator.stories.tsx +0 -36
  82. package/src/stories/custom/Markdown.stories.tsx +0 -38
  83. package/src/stories/custom/MultiCheckbox.stories.tsx +0 -60
  84. package/src/stories/custom/Radio.stories.tsx +0 -68
  85. package/src/stories/custom/Steps.stories.tsx +0 -43
  86. package/src/stories/custom/Switch.stories.tsx +0 -23
  87. package/src/stories/custom/Tag.stories.tsx +0 -66
  88. package/src/stories/custom/Tags.stories.tsx +0 -74
  89. package/src/stories/dashboard/Dashboard.stories.tsx +0 -23
  90. package/src/stories/dashboard/DashboardGrid.stories.tsx +0 -43
  91. package/src/stories/forms/ActivacioContracteForm.stories.tsx +0 -25
  92. package/src/stories/forms/Attachment.stories.tsx +0 -24
  93. package/src/stories/forms/CUPSForm.stories.tsx +0 -25
  94. package/src/stories/forms/Company.stories.tsx +0 -25
  95. package/src/stories/forms/CrmCaseForm.stories.tsx +0 -25
  96. package/src/stories/forms/Documents.stories.tsx +0 -25
  97. package/src/stories/forms/FormWithGridFiber.stories.tsx +0 -25
  98. package/src/stories/forms/FormWithLinks.stories.tsx +0 -30
  99. package/src/stories/forms/Lead.stories.tsx +0 -25
  100. package/src/stories/forms/ModContractForm.stories.tsx +0 -26
  101. package/src/stories/forms/PartnersForm.stories.tsx +0 -25
  102. package/src/stories/forms/PolissaForm.stories.tsx +0 -25
  103. package/src/stories/forms/PreferencesForm.stories.tsx +0 -691
  104. package/src/stories/forms/Signatures.stories.tsx +0 -25
  105. package/src/stories/forms/Switching.stories.tsx +0 -25
  106. package/src/stories/graphs/GraphIndicator.stories.tsx +0 -20
  107. package/src/stories/graphs/PieGraph.stories.tsx +0 -78
  108. package/src/stories/mocks/index.ts +0 -46
  109. package/src/stories/mocks/mockProvider.ts +0 -189
  110. package/src/stories/mocks/models/activacioContracte.ts +0 -112
  111. package/src/stories/mocks/models/attachment.ts +0 -1326
  112. package/src/stories/mocks/models/butlleti.ts +0 -296
  113. package/src/stories/mocks/models/company.ts +0 -135
  114. package/src/stories/mocks/models/crm_case.ts +0 -595
  115. package/src/stories/mocks/models/cups.ts +0 -937
  116. package/src/stories/mocks/models/document.ts +0 -223
  117. package/src/stories/mocks/models/factura.ts +0 -2713
  118. package/src/stories/mocks/models/form_with_gridfiber.ts +0 -141
  119. package/src/stories/mocks/models/hist_autoconsum.ts +0 -146
  120. package/src/stories/mocks/models/lead.ts +0 -2101
  121. package/src/stories/mocks/models/modcontractual.ts +0 -952
  122. package/src/stories/mocks/models/partner.ts +0 -1340
  123. package/src/stories/mocks/models/polissa.ts +0 -3127
  124. package/src/stories/mocks/models/res_partner_category.ts +0 -15
  125. package/src/stories/mocks/models/signatura.ts +0 -558
  126. package/src/stories/mocks/models/switching.ts +0 -767
  127. package/src/stories/modals/FormModal.stories.tsx +0 -36
  128. package/src/stories/modals/SearchModal.stories.tsx +0 -37
  129. package/src/stories/trees/FacturesTree.stories.tsx +0 -16
  130. package/src/stories/ui/ActionBar.stories.tsx +0 -21
  131. package/src/stories/ui/FavouriteButton.stories.tsx +0 -16
  132. package/src/stories/ui/GoToResourceModal.stories.tsx +0 -25
  133. package/src/stories/views/ActionView.stories.tsx +0 -28
  134. package/src/stories/views/SearchTree.stories.tsx +0 -1064
  135. package/src/stories/views/Tab.stories.tsx +0 -93
  136. package/src/stories/views/TabsAndContent.stories.tsx +0 -88
  137. package/src/stories/views/Tree.stories.jsx +0 -178
  138. package/src/stories/views/searchFilter/DateRangePicker.stories.tsx +0 -22
  139. package/src/stories/views/searchFilter/DateTimeRangePicker.stories.tsx +0 -23
  140. package/src/stories/views/searchFilter/PairFields.stories.tsx +0 -23
  141. package/src/stories/views/searchFilter/SearchFilter.stories.tsx +0 -165
  142. package/src/stories/views/searchFilter/examples/PartnersSearchFilter.stories.tsx +0 -409
  143. package/src/types/index.ts +0 -392
  144. package/src/ui/ActionErrorDialog.tsx +0 -24
  145. package/src/ui/ConfirmDialog.tsx +0 -28
  146. package/src/ui/ErrorAlert.tsx +0 -37
  147. package/src/ui/FavouriteButton.tsx +0 -271
  148. package/src/ui/FormErrorsDialog.tsx +0 -17
  149. package/src/ui/GenericErrorDialog.tsx +0 -16
  150. package/src/ui/GoToResourceModal.tsx +0 -76
  151. package/src/ui/InfoDialog.tsx +0 -13
  152. package/src/ui/RefreshItemDialog.tsx +0 -29
  153. package/src/ui/RemoveItemDialog.tsx +0 -20
  154. package/src/ui/TitleHeader.tsx +0 -117
  155. package/src/ui/UnlinkItemDialog.tsx +0 -20
  156. package/src/ui/UnsavedChangesDialog.tsx +0 -29
  157. package/src/ui/WarningDialog.tsx +0 -17
  158. package/src/views/ActionView.tsx +0 -526
  159. package/src/views/CurrentTabContent.tsx +0 -21
  160. package/src/views/RootView.tsx +0 -509
  161. package/src/views/TabContent.tsx +0 -31
  162. package/src/views/TabSelector.tsx +0 -31
  163. package/src/views/Welcome.tsx +0 -18
  164. package/src/views/actionViews/DashboardActionView.tsx +0 -52
  165. package/src/views/actionViews/FormActionView.tsx +0 -70
  166. package/src/views/actionViews/GraphActionView.tsx +0 -152
  167. package/src/views/actionViews/TreeActionView.tsx +0 -87
  168. package/src/views/tabs/Tab.tsx +0 -82
  169. package/src/widgets/WidgetFactory.tsx +0 -142
  170. package/src/widgets/base/Binary.tsx +0 -145
  171. package/src/widgets/base/Boolean.tsx +0 -44
  172. package/src/widgets/base/Button.tsx +0 -77
  173. package/src/widgets/base/Char.tsx +0 -157
  174. package/src/widgets/base/Date.tsx +0 -12
  175. package/src/widgets/base/DateTime.tsx +0 -12
  176. package/src/widgets/base/Email.tsx +0 -27
  177. package/src/widgets/base/Float.tsx +0 -38
  178. package/src/widgets/base/FloatTime.tsx +0 -73
  179. package/src/widgets/base/Image.tsx +0 -120
  180. package/src/widgets/base/Integer.tsx +0 -55
  181. package/src/widgets/base/Label.tsx +0 -56
  182. package/src/widgets/base/LinkInput.tsx +0 -106
  183. package/src/widgets/base/MultiSelection.tsx +0 -90
  184. package/src/widgets/base/ProgressBar.tsx +0 -38
  185. package/src/widgets/base/Reference.tsx +0 -115
  186. package/src/widgets/base/ReferenceTree.tsx +0 -62
  187. package/src/widgets/base/Selection.tsx +0 -71
  188. package/src/widgets/base/Separator.tsx +0 -25
  189. package/src/widgets/base/Text.tsx +0 -162
  190. package/src/widgets/base/Time.tsx +0 -40
  191. package/src/widgets/base/Url.tsx +0 -26
  192. package/src/widgets/base/many2one/Many2one.tsx +0 -322
  193. package/src/widgets/base/many2one/Many2oneSuffix.tsx +0 -232
  194. package/src/widgets/base/many2one/Many2oneSuffixModal.tsx +0 -42
  195. package/src/widgets/base/many2one/Many2oneTree.tsx +0 -18
  196. package/src/widgets/base/one2many/One2many.tsx +0 -100
  197. package/src/widgets/base/one2many/One2manyInput.tsx +0 -724
  198. package/src/widgets/base/one2many/One2manyTopBar.tsx +0 -158
  199. package/src/widgets/containers/Container.tsx +0 -99
  200. package/src/widgets/containers/Group.tsx +0 -37
  201. package/src/widgets/containers/Notebook.tsx +0 -52
  202. package/src/widgets/custom/Avatar.tsx +0 -40
  203. package/src/widgets/custom/ButtonGroup.tsx +0 -169
  204. package/src/widgets/custom/CodeEditor.tsx +0 -32
  205. package/src/widgets/custom/Comments.tsx +0 -147
  206. package/src/widgets/custom/FiberGrid.tsx +0 -48
  207. package/src/widgets/custom/Indicator.tsx +0 -66
  208. package/src/widgets/custom/Markdown.tsx +0 -32
  209. package/src/widgets/custom/MultiCheckbox.tsx +0 -165
  210. package/src/widgets/custom/Radio.tsx +0 -47
  211. package/src/widgets/custom/Steps.tsx +0 -56
  212. package/src/widgets/custom/Switch.tsx +0 -26
  213. package/src/widgets/custom/Tag.tsx +0 -53
  214. package/src/widgets/custom/Tags.tsx +0 -164
  215. package/src/widgets/custom/Timeline.tsx +0 -196
  216. package/src/widgets/modals/ExportModal.tsx +0 -75
  217. package/src/widgets/modals/FormModal.tsx +0 -125
  218. package/src/widgets/modals/SearchModal.tsx +0 -130
  219. package/src/widgets/modals/TranslationModal.tsx +0 -202
  220. package/src/widgets/views/Dashboard/Dashboard.tsx +0 -381
  221. package/src/widgets/views/Dashboard/DashboardForm.tsx +0 -30
  222. package/src/widgets/views/Dashboard/DashboardTree.tsx +0 -238
  223. package/src/widgets/views/Dashboard/dashboardHelper.ts +0 -79
  224. package/src/widgets/views/DashboardGrid/DashboardGrid.tsx +0 -53
  225. package/src/widgets/views/DashboardGrid/DashboardGrid.types.ts +0 -4
  226. package/src/widgets/views/DashboardGrid/DashboardGridItem.tsx +0 -62
  227. package/src/widgets/views/DashboardGrid/DashboardGridItem.types.ts +0 -10
  228. package/src/widgets/views/DashboardGrid/index.ts +0 -4
  229. package/src/widgets/views/Form.tsx +0 -1152
  230. package/src/widgets/views/Graph/Graph.tsx +0 -145
  231. package/src/widgets/views/Graph/GraphChart.tsx +0 -113
  232. package/src/widgets/views/Graph/GraphDefaults.ts +0 -170
  233. package/src/widgets/views/Graph/GraphIndicator.tsx +0 -421
  234. package/src/widgets/views/Graph/useGraphData.tsx +0 -176
  235. package/src/widgets/views/SearchTree.tsx +0 -367
  236. package/src/widgets/views/Tree/Tree.tsx +0 -295
  237. package/src/widgets/views/Tree/index.ts +0 -1
  238. package/src/widgets/views/Tree/treeComponents.tsx +0 -283
  239. package/src/widgets/views/searchFilter/DateRangePicker.tsx +0 -16
  240. package/src/widgets/views/searchFilter/DateTimeRangePicker.tsx +0 -87
  241. package/src/widgets/views/searchFilter/PairFields.tsx +0 -56
  242. package/src/widgets/views/searchFilter/SearchBottomBar.tsx +0 -54
  243. package/src/widgets/views/searchFilter/SearchField.tsx +0 -63
  244. package/src/widgets/views/searchFilter/SearchFilter.tsx +0 -160
  245. package/src/widgets/views/searchFilter/SearchParams.tsx +0 -35
@@ -1,367 +0,0 @@
1
- import React, {
2
- useEffect,
3
- useState,
4
- useRef,
5
- useContext,
6
- forwardRef,
7
- useImperativeHandle,
8
- useMemo,
9
- useCallback,
10
- } from "react";
11
- import { Alert, Spin } from "antd";
12
-
13
- import SearchFilter from "@/widgets/views/searchFilter/SearchFilter";
14
- import { Tree } from "@/widgets/views/Tree";
15
- import { FormView, TreeView } from "@/types/index";
16
- import ConnectionProvider from "@/ConnectionProvider";
17
-
18
- import {
19
- ActionViewContext,
20
- ActionViewContextType,
21
- } from "@/context/ActionViewContext";
22
- import useWindowDimensions from "@/hooks/useWindowDimensions";
23
- import { mergeSearchFields } from "@/helpers/formHelper";
24
- import {
25
- ContentRootContext,
26
- ContentRootContextType,
27
- } from "@/context/ContentRootContext";
28
- import showErrorDialog from "@/ui/ActionErrorDialog";
29
- import { DEFAULT_SEARCH_LIMIT, useSearch } from "@/hooks/useSearch";
30
-
31
- type OnRowClickedData = {
32
- id: number;
33
- model: string;
34
- formView: FormView;
35
- treeView: TreeView;
36
- };
37
-
38
- type Props = {
39
- model?: string;
40
- formView?: FormView;
41
- treeView?: TreeView;
42
- onRowClicked: (data: OnRowClickedData) => void;
43
- nameSearch?: string;
44
- treeScrollY?: number;
45
- domain?: any;
46
- visible?: boolean;
47
- rootTree?: boolean;
48
- parentContext?: any;
49
- onChangeSelectedRowKeys?: (selectedRowKeys: any) => void;
50
- };
51
-
52
- function SearchTree(props: Props, ref: any) {
53
- const {
54
- model,
55
- formView: formViewProps,
56
- treeView: treeViewProps,
57
- onRowClicked,
58
- nameSearch,
59
- treeScrollY,
60
- domain = [],
61
- visible = true,
62
- rootTree = false,
63
- parentContext = {},
64
- onChangeSelectedRowKeys,
65
- } = props;
66
-
67
- const [isLoading, setIsLoading] = useState<boolean>(false);
68
- const [initialFetchDone, setInitialFetchDone] = useState<boolean>(false);
69
-
70
- const searchNameGetDoneRef = useRef(false);
71
-
72
- const [currentModel, setCurrentModel] = useState<string>();
73
- const [treeView, setTreeView] = useState<TreeView>();
74
- const [formView, setFormView] = useState<FormView>();
75
-
76
- const [initialError, setInitialError] = useState<string>();
77
-
78
- const [searchFilterHeight, setSearchFilterHeight] = useState<number>(200);
79
-
80
- const expandableClickActionData = useRef<any>();
81
-
82
- const { height } = useWindowDimensions();
83
-
84
- const contentRootContext = useContext(
85
- ContentRootContext,
86
- ) as ContentRootContextType;
87
- const { processAction } = contentRootContext || {};
88
-
89
- const actionViewContext = useContext(
90
- ActionViewContext,
91
- ) as ActionViewContextType;
92
- const {
93
- setResults: setResultsActionView = undefined,
94
- setCurrentItemIndex = undefined,
95
- currentId = undefined,
96
- results: resultsActionView = undefined,
97
- selectedRowItems = undefined,
98
- setSelectedRowItems = undefined,
99
- searchParams = [],
100
- setSearchParams = undefined,
101
- searchVisible = true,
102
- setSearchVisible = undefined,
103
- sorter = undefined,
104
- setSorter = undefined,
105
- setTotalItems: setActionViewTotalItems = undefined,
106
- setSearchTreeNameSearch = undefined,
107
- setTreeIsLoading = undefined,
108
- searchValues = {},
109
- setSearchValues = undefined,
110
- limit = DEFAULT_SEARCH_LIMIT,
111
- setLimit = undefined,
112
- } = (rootTree ? actionViewContext : {}) || {};
113
-
114
- const changeSelectedRowKeys = useCallback(
115
- (newSelectedRowKeys: any[]) => {
116
- setSelectedRowItems?.(newSelectedRowKeys.map((id: number) => ({ id })));
117
- onChangeSelectedRowKeys?.(newSelectedRowKeys);
118
- },
119
- [onChangeSelectedRowKeys, setSelectedRowItems],
120
- );
121
-
122
- const {
123
- submit,
124
- clear,
125
- fetchResults,
126
- tableRefreshing,
127
- searchFilterLoading,
128
- searchError,
129
- page,
130
- offset,
131
- getResults,
132
- requestPageChange,
133
- changeSort,
134
- fetchChildrenForRecord,
135
- colorsForResults,
136
- statusForResults,
137
- totalItems,
138
- getAllIds,
139
- } = useSearch({
140
- model: currentModel!,
141
- setSearchTreeNameSearch,
142
- setSelectedRowItems: changeSelectedRowKeys,
143
- setSearchParams,
144
- setSearchValues,
145
- searchParams,
146
- setSearchVisible,
147
- setTreeIsLoading,
148
- nameSearch,
149
- searchNameGetDoneRef,
150
- context: parentContext,
151
- formView: formView!,
152
- treeView: treeView!,
153
- sorter,
154
- setSorter,
155
- setCurrentItemIndex,
156
- setResultsActionView,
157
- resultsActionView,
158
- domain,
159
- currentId,
160
- setActionViewTotalItems,
161
- limit,
162
- setLimit,
163
- });
164
-
165
- useImperativeHandle(ref, () => ({
166
- refreshResults: () => {
167
- searchNameGetDoneRef.current = false;
168
- fetchResults();
169
- },
170
- getFields: () => treeView?.fields,
171
- getDomain: () => domain,
172
- }));
173
-
174
- useEffect(() => {
175
- if (!initialFetchDone) {
176
- return;
177
- }
178
-
179
- if (visible && treeView) {
180
- searchNameGetDoneRef.current = false;
181
- fetchResults();
182
- }
183
- // eslint-disable-next-line react-hooks/exhaustive-deps
184
- }, [page, offset, initialFetchDone, visible, nameSearch, treeView]);
185
-
186
- const fetchData = async () => {
187
- setInitialFetchDone(false);
188
- setIsLoading(true);
189
- setInitialError(undefined);
190
- setTreeIsLoading?.(true);
191
-
192
- try {
193
- await fetchModelData();
194
- setInitialFetchDone(true);
195
- } catch (error) {
196
- setInitialError(error);
197
- setTreeIsLoading?.(false);
198
- } finally {
199
- setIsLoading(false);
200
- }
201
- };
202
-
203
- const fetchModelData = async () => {
204
- setCurrentModel(model);
205
-
206
- let _formView = formViewProps;
207
-
208
- if (!formViewProps) {
209
- _formView = (await ConnectionProvider.getHandler().getView({
210
- model: model!,
211
- type: "form",
212
- context: parentContext,
213
- })) as FormView;
214
- }
215
-
216
- let _treeView = treeViewProps;
217
-
218
- if (!treeViewProps) {
219
- _treeView = (await ConnectionProvider.getHandler().getView({
220
- model: model!,
221
- type: "tree",
222
- context: parentContext,
223
- })) as TreeView;
224
- }
225
-
226
- setFormView(_formView as FormView);
227
- setTreeView(_treeView as TreeView);
228
- };
229
-
230
- useEffect(() => {
231
- fetchData();
232
- // eslint-disable-next-line react-hooks/exhaustive-deps
233
- }, [model]);
234
-
235
- const onSearchTreeLimitChange = (newLimit: number) => {
236
- setLimit?.(newLimit);
237
- };
238
-
239
- const treeButOpen = async (record: any) => {
240
- const { id } = record;
241
-
242
- if (!expandableClickActionData.current) {
243
- expandableClickActionData.current =
244
- await ConnectionProvider.getHandler().treeButOpen({
245
- id: treeView!.view_id,
246
- model: currentModel!,
247
- context: parentContext,
248
- });
249
- }
250
-
251
- const actionData: any = expandableClickActionData.current[0][2];
252
-
253
- await processAction?.({
254
- actionData,
255
- fields: treeView!.fields,
256
- values: {
257
- active_id: id,
258
- ...record,
259
- },
260
- context: parentContext,
261
- });
262
- };
263
-
264
- const onRowClickedHandler = async (record: any) => {
265
- const { id } = record;
266
-
267
- if (treeView?.isExpandable) {
268
- try {
269
- await treeButOpen(record);
270
- } catch (err) {
271
- showErrorDialog(err);
272
- }
273
- return;
274
- }
275
-
276
- onRowClicked({
277
- id,
278
- model: currentModel!,
279
- formView: formView!,
280
- treeView: treeView!,
281
- });
282
- };
283
-
284
- async function selectAllRecords() {
285
- const allIds = await getAllIds();
286
- setSelectedRowItems?.(allIds.map((id: number) => ({ id })));
287
- onChangeSelectedRowKeys?.(allIds);
288
- }
289
-
290
- function calculateTableHeight() {
291
- if (treeView?.isExpandable) {
292
- return height - 160;
293
- }
294
- return height - (searchFilterHeight + 240);
295
- }
296
-
297
- const selectedRowKeys = useMemo(
298
- () => selectedRowItems?.map((item) => item.id),
299
- [selectedRowItems],
300
- );
301
-
302
- const content = () => {
303
- if (!treeView || !formView) {
304
- return null;
305
- }
306
-
307
- return (
308
- <>
309
- <SearchFilter
310
- fields={{ ...formView.fields, ...treeView.fields }}
311
- searchFields={mergeSearchFields([
312
- formView.search_fields,
313
- treeView.search_fields,
314
- ])}
315
- onClear={clear}
316
- limit={limit}
317
- offset={offset}
318
- isSearching={searchFilterLoading}
319
- onSubmit={submit}
320
- onLimitChange={onSearchTreeLimitChange}
321
- setSearchFilterHeight={setSearchFilterHeight}
322
- searchError={searchError}
323
- searchVisible={searchVisible}
324
- searchValues={searchValues}
325
- />
326
- <Tree
327
- context={parentContext}
328
- total={totalItems}
329
- limit={limit}
330
- page={page}
331
- treeView={treeView}
332
- results={getResults()}
333
- onRequestPageChange={requestPageChange}
334
- loading={tableRefreshing}
335
- onRowClicked={onRowClickedHandler}
336
- scrollY={treeScrollY || calculateTableHeight()}
337
- colorsForResults={colorsForResults}
338
- statusForResults={statusForResults}
339
- selectedRowKeys={selectedRowKeys}
340
- onRowSelectionChange={changeSelectedRowKeys}
341
- sorter={sorter}
342
- onChangeSort={changeSort}
343
- onFetchChildrenForRecord={
344
- treeView.isExpandable ? fetchChildrenForRecord : undefined
345
- }
346
- childField={treeView.field_parent}
347
- rootTree={rootTree}
348
- onSelectAllRecords={selectAllRecords}
349
- />
350
- </>
351
- );
352
- };
353
-
354
- const error = initialError || searchError;
355
-
356
- if (error) {
357
- return <Alert className="mt-10" message={error} type="error" banner />;
358
- }
359
-
360
- return (
361
- <div style={!visible ? { display: "none" } : {}}>
362
- {isLoading ? <Spin /> : content()}
363
- </div>
364
- );
365
- }
366
-
367
- export default forwardRef(SearchTree);
@@ -1,295 +0,0 @@
1
- import { memo, useContext, useEffect, useMemo, useRef, useState } from "react";
2
- import { Pagination as AntPagination, Row, Col, Spin, Badge } from "antd";
3
- import {
4
- getTree,
5
- getTableColumns,
6
- getTableItems,
7
- hasActualValues,
8
- } from "@/helpers/treeHelper";
9
- import { Tree as TreeOoui } from "@gisce/ooui";
10
- import { TreeView } from "@/types";
11
- import { LocaleContext, LocaleContextType } from "@/context/LocaleContext";
12
- import { calculateColumnsWidth } from "@/helpers/dynamicColumnsHelper";
13
- import { Table as GisceTable } from "@gisce/react-formiga-table";
14
- import {
15
- PlusSquareOutlined,
16
- MinusSquareOutlined,
17
- LoadingOutlined,
18
- } from "@ant-design/icons";
19
- import {
20
- ActionViewContext,
21
- ActionViewContextType,
22
- } from "@/context/ActionViewContext";
23
- import { SelectAllRecordsRow } from "@/common/SelectAllRecordsRow";
24
- import { COLUMN_COMPONENTS } from "./treeComponents";
25
- import ErrorBoundary from "antd/es/alert/ErrorBoundary";
26
-
27
- type Props = {
28
- total?: number;
29
- limit: number;
30
- page?: number;
31
- loading: boolean;
32
- treeView: TreeView;
33
- results: any[];
34
- showPagination?: boolean;
35
- onRequestPageChange?: (page: number, pageSize?: number) => void;
36
- onRowClicked?: (record: any) => void;
37
- onRowSelectionChange?: (selectedRowKeys: any[]) => void;
38
- selectedRowKeys?: number[];
39
- scrollY?: number;
40
- colorsForResults?: { [key: number]: string };
41
- statusForResults?: { [key: number]: string };
42
- onChangeSort?: (results: any) => void;
43
- sorter?: any;
44
- onFetchChildrenForRecord?: (item: any) => Promise<any[]>;
45
- childField?: string;
46
- rootTree?: boolean;
47
- context?: any;
48
- readonly?: boolean;
49
- onSelectAllRecords?: () => Promise<void>;
50
- };
51
- export const Tree = memo((props: Props) => {
52
- const {
53
- page = 1,
54
- limit,
55
- total,
56
- treeView,
57
- results,
58
- onRequestPageChange,
59
- loading,
60
- onRowClicked,
61
- showPagination = true,
62
- selectedRowKeys = [],
63
- onRowSelectionChange,
64
- scrollY,
65
- colorsForResults = {},
66
- statusForResults = {},
67
- onChangeSort,
68
- sorter,
69
- onFetchChildrenForRecord,
70
- childField,
71
- rootTree = false,
72
- context,
73
- readonly,
74
- onSelectAllRecords,
75
- } = props;
76
-
77
- const [items, setItems] = useState<any[]>([]);
78
-
79
- const errorInParseColors = useRef<boolean>(false);
80
-
81
- const [treeOoui, setTreeOoui] = useState<TreeOoui>();
82
-
83
- const { t } = useContext(LocaleContext) as LocaleContextType;
84
- const internalLimit = useRef(limit);
85
-
86
- const actionViewContext = useContext(
87
- ActionViewContext,
88
- ) as ActionViewContextType;
89
- const { title = undefined, setTitle = undefined } =
90
- (rootTree ? actionViewContext : {}) || {};
91
-
92
- const columns = useMemo(() => {
93
- if (!treeOoui) {
94
- return undefined;
95
- }
96
-
97
- return getTableColumns(
98
- treeOoui,
99
- {
100
- ...COLUMN_COMPONENTS,
101
- },
102
- context,
103
- );
104
- }, [context, treeOoui]);
105
-
106
- useEffect(() => {
107
- const treeOoui = getTree(treeView);
108
- setTreeOoui(treeOoui);
109
- if (treeOoui.string && title !== treeOoui.string) {
110
- setTitle?.(treeOoui.string);
111
- }
112
- // eslint-disable-next-line react-hooks/exhaustive-deps
113
- }, [treeView, title]);
114
-
115
- useEffect(() => {
116
- if (!treeOoui) {
117
- return;
118
- }
119
- errorInParseColors.current = false;
120
- const items = getTableItems(treeOoui, results);
121
- setItems(items);
122
- // eslint-disable-next-line react-hooks/exhaustive-deps
123
- }, [results]);
124
-
125
- useEffect(() => {
126
- internalLimit.current = limit;
127
- }, [limit]);
128
-
129
- const from = (page - 1) * internalLimit.current + 1;
130
- const to = from - 1 + items.length;
131
- const summary =
132
- total === undefined
133
- ? null
134
- : total === 0
135
- ? t("no_results")
136
- : t("summary")
137
- .replace("{from}", from?.toString())
138
- .replace("{to}", to?.toString())
139
- .replace("{total}", total?.toString());
140
-
141
- const pagination = useMemo(() => {
142
- if (!showPagination || treeView.isExpandable) {
143
- return null;
144
- }
145
-
146
- const numberOfVisibleSelectedRows = items?.filter(
147
- (entry) => selectedRowKeys && selectedRowKeys.includes(entry.id),
148
- ).length;
149
-
150
- return loading ? null : total === undefined ? (
151
- <Spin className="pb-4" />
152
- ) : (
153
- <Row align="bottom" className="pb-4">
154
- <Col span={onSelectAllRecords ? 8 : 12}>
155
- <AntPagination
156
- total={total}
157
- pageSize={
158
- internalLimit.current === 0 ? total : internalLimit.current
159
- }
160
- current={page}
161
- showSizeChanger={false}
162
- onChange={onRequestPageChange}
163
- />
164
- </Col>
165
- {onSelectAllRecords && (
166
- <Col span={8} className="text-center">
167
- <SelectAllRecordsRow
168
- numberOfVisibleSelectedRows={numberOfVisibleSelectedRows}
169
- numberOfRealSelectedRows={selectedRowKeys?.length || 0}
170
- numberOfTotalRows={items.length}
171
- totalRecords={total || 0}
172
- onSelectAllRecords={onSelectAllRecords}
173
- />
174
- </Col>
175
- )}
176
- <Col span={onSelectAllRecords ? 8 : 12} className="text-right">
177
- {summary}
178
- </Col>
179
- </Row>
180
- );
181
- }, [
182
- items,
183
- loading,
184
- onRequestPageChange,
185
- onSelectAllRecords,
186
- page,
187
- selectedRowKeys,
188
- showPagination,
189
- summary,
190
- total,
191
- treeView.isExpandable,
192
- ]);
193
-
194
- const sums = useMemo(() => {
195
- if (!treeOoui) {
196
- return null;
197
- }
198
- const sumFields = treeOoui.columns
199
- .filter((it) => it.sum !== undefined)
200
- .map((it) => {
201
- return { label: it.sum, field: it.id };
202
- });
203
-
204
- if (!sumFields || sumFields.length === 0) {
205
- return null;
206
- }
207
-
208
- const summary: string[] = [];
209
- const sumItems =
210
- selectedRowKeys?.length > 0
211
- ? items.filter((result: any) => {
212
- return selectedRowKeys.includes(result.id);
213
- })
214
- : items;
215
-
216
- sumFields.forEach((sumField) => {
217
- const total = sumItems.reduce((prev, current) => {
218
- if (current[sumField.field] && !isNaN(current[sumField.field]))
219
- return prev + current[sumField.field];
220
- else return prev;
221
- }, 0);
222
-
223
- summary.push(`${sumField.label}: ${Math.round(total * 100) / 100}`);
224
- });
225
-
226
- return <div className="p-1 pb-0 pl-2 mt-2 ">{summary.join(", ")}</div>;
227
- }, [items, selectedRowKeys, treeOoui]);
228
-
229
- const dataTable = useMemo(() => {
230
- if (treeOoui !== null && columns && columns.length > 0) {
231
- const maxWidthPerCell = 600;
232
- return calculateColumnsWidth(columns, items, maxWidthPerCell);
233
- }
234
- return undefined;
235
- }, [columns, items, treeOoui]);
236
-
237
- const adjustedHeight = useMemo(() => {
238
- if (scrollY && treeOoui?.columns.some((it: any) => it.sum !== undefined)) {
239
- return scrollY - 30;
240
- }
241
- return scrollY;
242
- }, [scrollY, treeOoui?.columns]);
243
-
244
- if (treeOoui === null || !dataTable || dataTable?.columns?.length === 0) {
245
- return <Spin style={{ padding: "2rem" }} />;
246
- }
247
-
248
- return (
249
- <ErrorBoundary>
250
- {pagination}
251
- <GisceTable
252
- height={adjustedHeight!}
253
- columns={dataTable.columns}
254
- dataSource={items}
255
- loading={loading}
256
- loadingComponent={<Spin />}
257
- onRowStyle={(record: any) => {
258
- if (colorsForResults![record.id]) {
259
- return { color: colorsForResults![record.id] };
260
- }
261
- return undefined;
262
- }}
263
- onRowStatus={
264
- hasActualValues(statusForResults)
265
- ? (record: any) => {
266
- if (statusForResults![record.id]) {
267
- return <Badge color={statusForResults[record.id]} />;
268
- }
269
- return undefined;
270
- }
271
- : undefined
272
- }
273
- onRowDoubleClick={onRowClicked}
274
- onRowSelectionChange={onRowSelectionChange}
275
- onChangeSort={onChangeSort}
276
- sorter={sorter}
277
- readonly={readonly}
278
- expandableOpts={
279
- onFetchChildrenForRecord
280
- ? {
281
- expandIcon: PlusSquareOutlined,
282
- collapseIcon: MinusSquareOutlined,
283
- loadingIcon: LoadingOutlined,
284
- onFetchChildrenForRecord,
285
- childField: childField!,
286
- }
287
- : undefined
288
- }
289
- />
290
- {sums}
291
- </ErrorBoundary>
292
- );
293
- });
294
-
295
- Tree.displayName = "Tree";
@@ -1 +0,0 @@
1
- export * from "./Tree";