rez-table-listing-mui 1.3.5 → 1.3.7
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.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/listing/components/filter/components/forms/components/Filter-criteria.tsx +5 -5
- package/src/listing/components/filter/components/forms/components/Multi-Select.tsx +1 -1
- package/src/listing/libs/hooks/useEntityTableAPI.tsx +39 -4
- package/src/listing/types/filter.ts +1 -0
- package/src/view/ListingView.tsx +5 -92
package/package.json
CHANGED
|
@@ -54,15 +54,14 @@ const FilterCriteria = ({
|
|
|
54
54
|
const handleAddFilter = (
|
|
55
55
|
attribute: FilterDataMainFilterEntityWiseCriteriaProps
|
|
56
56
|
) => {
|
|
57
|
-
const dropdownOptions =
|
|
58
|
-
columnsData?.operation_list[attribute?.element_type];
|
|
57
|
+
const dropdownOptions = columnsData?.operation_list[attribute?.data_type];
|
|
59
58
|
|
|
60
|
-
const defaultValue = attribute.
|
|
59
|
+
const defaultValue = attribute.data_type === "multiselect" ? [] : "";
|
|
61
60
|
|
|
62
61
|
const defaultOperator = dropdownOptions?.[0]?.value || "";
|
|
63
62
|
|
|
64
63
|
const matchingDropdownList =
|
|
65
|
-
columnsData?.operation_list[attribute.
|
|
64
|
+
columnsData?.operation_list[attribute.data_type] || [];
|
|
66
65
|
|
|
67
66
|
const newFilter = {
|
|
68
67
|
filter_attribute: attribute.attribute_key,
|
|
@@ -75,7 +74,8 @@ const FilterCriteria = ({
|
|
|
75
74
|
...newFilter,
|
|
76
75
|
id: attribute?.id,
|
|
77
76
|
filter_attribute_name: attribute?.name,
|
|
78
|
-
filter_attribute_data_type:
|
|
77
|
+
filter_attribute_data_type:
|
|
78
|
+
attribute?.data_type || attribute?.element_type,
|
|
79
79
|
datasource_list: attribute?.datasource_list,
|
|
80
80
|
dropdown_list: matchingDropdownList,
|
|
81
81
|
filter_entity_name: selectedFilterEntity?.label,
|
|
@@ -23,12 +23,13 @@ import {
|
|
|
23
23
|
viewSettingsDropDown,
|
|
24
24
|
} from "../utils/apiColumn";
|
|
25
25
|
import {
|
|
26
|
-
FilterColumnsDataProps,
|
|
27
26
|
FilterDataMainFilterEntityListProps,
|
|
28
27
|
FilterMasterStateProps,
|
|
28
|
+
FilterStateProps,
|
|
29
29
|
} from "../../types/filter";
|
|
30
30
|
import { CraftTableOptionsProps } from "../../types/table-options";
|
|
31
31
|
import { saveLayoutAPI } from "../services/saveLayoutAPI";
|
|
32
|
+
import { useMemo } from "react";
|
|
32
33
|
|
|
33
34
|
const entityListingCall = async ({
|
|
34
35
|
page,
|
|
@@ -214,8 +215,8 @@ export const useUpdateFilterAPI = () => {
|
|
|
214
215
|
export const useCommonDropdownAPI = (column_list?: any, value?: string) => {
|
|
215
216
|
// Step 1: Extract all keys and query types
|
|
216
217
|
const dropdownConfigs = (column_list || [])
|
|
217
|
-
|
|
218
|
-
|
|
218
|
+
?.filter((col) => col?.datasource_list)
|
|
219
|
+
?.map((col) => ({
|
|
219
220
|
key: col.attribute_key,
|
|
220
221
|
dataSourceType: value ?? col.datasource_list ?? "STS",
|
|
221
222
|
}));
|
|
@@ -233,13 +234,47 @@ export const useCommonDropdownAPI = (column_list?: any, value?: string) => {
|
|
|
233
234
|
|
|
234
235
|
// Step 3: Map results to keys
|
|
235
236
|
const dropdownData: Record<string, any> = {};
|
|
236
|
-
dropdownConfigs
|
|
237
|
+
dropdownConfigs?.forEach((cfg, idx) => {
|
|
237
238
|
dropdownData[cfg.key] = dropdownResults[idx].data;
|
|
238
239
|
});
|
|
239
240
|
|
|
240
241
|
return { dropdownData };
|
|
241
242
|
};
|
|
242
243
|
|
|
244
|
+
export const useCommonFilterDropdownAPI = (
|
|
245
|
+
filters: FilterStateProps[],
|
|
246
|
+
value?: string
|
|
247
|
+
) => {
|
|
248
|
+
// Step 1: Extract all keys and query types
|
|
249
|
+
const dropdownConfigs = useMemo(() => {
|
|
250
|
+
return filters
|
|
251
|
+
?.filter((col) => col?.filter_attribute_data_type === "select")
|
|
252
|
+
?.map((col) => ({
|
|
253
|
+
key: col?.filter_attribute,
|
|
254
|
+
dataSourceType: value ?? col?.datasource_list ?? "STS",
|
|
255
|
+
}));
|
|
256
|
+
}, [filters]);
|
|
257
|
+
|
|
258
|
+
// Step 2: Use useQueries to fetch them all in parallel
|
|
259
|
+
const dropdownResults = useQueries({
|
|
260
|
+
queries: dropdownConfigs.map((cfg) => {
|
|
261
|
+
return {
|
|
262
|
+
queryKey: ["commonDropdown", cfg?.dataSourceType],
|
|
263
|
+
queryFn: () => commonGetDropdownDataAPI(cfg?.dataSourceType, null),
|
|
264
|
+
enabled: !!cfg?.dataSourceType,
|
|
265
|
+
};
|
|
266
|
+
}),
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
// Step 3: Map results to keys
|
|
270
|
+
const dropdownFilterData: Record<string, any> = {};
|
|
271
|
+
dropdownConfigs?.forEach((cfg, idx) => {
|
|
272
|
+
dropdownFilterData[cfg.key] = dropdownResults[idx].data;
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
return { dropdownFilterData };
|
|
276
|
+
};
|
|
277
|
+
|
|
243
278
|
//ALL VIEW SETTINGS API
|
|
244
279
|
|
|
245
280
|
export const useSettingsDropDownAPI = ({
|
package/src/view/ListingView.tsx
CHANGED
|
@@ -8,18 +8,14 @@ import {
|
|
|
8
8
|
} from "../listing/libs/hooks/useEntityTableHooks";
|
|
9
9
|
import { ENTITY_TYPE, MAPPED_ENTITY_TYPE } from "../listing/libs/utils/common";
|
|
10
10
|
import {
|
|
11
|
-
|
|
12
|
-
useDeleteFilterAPI,
|
|
11
|
+
useCommonFilterDropdownAPI,
|
|
13
12
|
useEntityTableAPI,
|
|
14
13
|
useGetSettingsDataAPI,
|
|
15
|
-
useSavedFilterAPI,
|
|
16
14
|
useSaveSettingsDataAPI,
|
|
17
15
|
useSettingsDropDownAPI,
|
|
18
|
-
useUpdateFilterAPI,
|
|
19
16
|
} from "../listing/libs/hooks/useEntityTableAPI";
|
|
20
17
|
import { entityTableMetaMaster } from "../listing/libs/utils/apiColumn";
|
|
21
18
|
import { ColumnDef } from "@tanstack/react-table";
|
|
22
|
-
import { FilterMasterStateProps } from "../listing/types/filter";
|
|
23
19
|
import { SettingsDataProps } from "../listing/types/filter-settings";
|
|
24
20
|
import TableWrapper from "../listing/components/index-table";
|
|
25
21
|
import { TableTabs } from "../listing/components/tabs";
|
|
@@ -39,8 +35,7 @@ function ListingView() {
|
|
|
39
35
|
const tableStates = useCraftTable();
|
|
40
36
|
const filterSettingStates = useCraftTableFilterSettings();
|
|
41
37
|
|
|
42
|
-
const { filters, setFilters, filterMaster
|
|
43
|
-
tableStates;
|
|
38
|
+
const { filters, setFilters, filterMaster } = tableStates;
|
|
44
39
|
|
|
45
40
|
const { showListViewSettings, setShowListViewSettings, setSettingsData } =
|
|
46
41
|
filterSettingStates;
|
|
@@ -53,17 +48,13 @@ function ListingView() {
|
|
|
53
48
|
? filterMaster?.saved_filters?.selectedId
|
|
54
49
|
: metaQuery?.data?.default_filter?.value
|
|
55
50
|
);
|
|
56
|
-
|
|
57
|
-
const { savedMutation } = useSavedFilterAPI(); //API CALL FOR SAVED FILTER
|
|
58
|
-
const { deleteMutation } = useDeleteFilterAPI(tableStates); //API FOR DELETING FILTER
|
|
59
|
-
const { updateMutation } = useUpdateFilterAPI(); //API FOR UPDATE FILTER
|
|
60
51
|
const { saveSettingsDataMutation } = useSaveSettingsDataAPI(ENTITY_TYPE);
|
|
61
|
-
const memoizedFilters = useMemo(() => filters, [filters]);
|
|
62
52
|
|
|
63
53
|
// const { dropdownData } = useCommonDropdownAPI(
|
|
64
54
|
// dropdownColumnList || metaQuery.data.column_list
|
|
65
55
|
// );
|
|
66
|
-
const { dropdownData } = useCommonDropdownAPI(
|
|
56
|
+
// const { dropdownData } = useCommonDropdownAPI(filters);
|
|
57
|
+
const { dropdownFilterData } = useCommonFilterDropdownAPI(filters);
|
|
67
58
|
const { settingsTabDropdownData, settingsTabDropdownPending } =
|
|
68
59
|
useSettingsDropDownAPI({
|
|
69
60
|
entity_type: ENTITY_TYPE,
|
|
@@ -253,47 +244,6 @@ function ListingView() {
|
|
|
253
244
|
);
|
|
254
245
|
}, [newData, searchTerm]);
|
|
255
246
|
|
|
256
|
-
// API to handle saving a filter
|
|
257
|
-
const handleSaveFilter = (name: string) => {
|
|
258
|
-
const quickFilter = filters.map((f) => ({
|
|
259
|
-
filter_attribute: f.filter_attribute,
|
|
260
|
-
filter_operator: f.filter_operator,
|
|
261
|
-
filter_value: f.filter_value,
|
|
262
|
-
}));
|
|
263
|
-
|
|
264
|
-
const payload = {
|
|
265
|
-
name,
|
|
266
|
-
is_default: false,
|
|
267
|
-
mapped_entity_type: ENTITY_TYPE, // For that entity type
|
|
268
|
-
status: "ACTIVE",
|
|
269
|
-
entity_type: "SFM", // FIXED entity type
|
|
270
|
-
filterDetails: quickFilter,
|
|
271
|
-
};
|
|
272
|
-
const entity_type = "SFM";
|
|
273
|
-
savedMutation.mutate(
|
|
274
|
-
{ entity_type, payload },
|
|
275
|
-
{
|
|
276
|
-
onSuccess: (response) => {
|
|
277
|
-
const newFilterId = response?.id;
|
|
278
|
-
if (newFilterId) {
|
|
279
|
-
setFilterMaster(
|
|
280
|
-
(prev) =>
|
|
281
|
-
({
|
|
282
|
-
...prev,
|
|
283
|
-
saved_filters: {
|
|
284
|
-
...prev?.saved_filters,
|
|
285
|
-
selectedId: newFilterId.toString(),
|
|
286
|
-
selectedName: name,
|
|
287
|
-
},
|
|
288
|
-
activeFilterTabIndex: 1,
|
|
289
|
-
} as FilterMasterStateProps)
|
|
290
|
-
);
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
|
-
}
|
|
294
|
-
);
|
|
295
|
-
};
|
|
296
|
-
|
|
297
247
|
const handleChangeFunction = async (data: any) => {
|
|
298
248
|
const payload = {
|
|
299
249
|
entity_type: MAPPED_ENTITY_TYPE,
|
|
@@ -305,43 +255,6 @@ function ListingView() {
|
|
|
305
255
|
await saveLayoutAPI(payload);
|
|
306
256
|
};
|
|
307
257
|
|
|
308
|
-
// API to handle removing or deleting a filter
|
|
309
|
-
const handleRemoveFilter = () => {
|
|
310
|
-
const payload = {
|
|
311
|
-
name: filterToDelete?.label,
|
|
312
|
-
id: filterToDelete?.value,
|
|
313
|
-
is_default: false,
|
|
314
|
-
mapped_entity_type: ENTITY_TYPE,
|
|
315
|
-
status: "INACTIVE",
|
|
316
|
-
entity_type: "SFM",
|
|
317
|
-
};
|
|
318
|
-
const entity_type = "SFM";
|
|
319
|
-
deleteMutation.mutate({ entity_type, payload });
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
//API to update the filter
|
|
323
|
-
const handleUpdateFilter = () => {
|
|
324
|
-
console.log("handleUpdateFilter");
|
|
325
|
-
|
|
326
|
-
const quickFilter = filters.map((f) => ({
|
|
327
|
-
filter_attribute: f.filter_attribute,
|
|
328
|
-
filter_operator: f.filter_operator,
|
|
329
|
-
filter_value: f.filter_value,
|
|
330
|
-
}));
|
|
331
|
-
|
|
332
|
-
const payload = {
|
|
333
|
-
name: filterMaster?.saved_filters?.selectedName, // Name of the filter
|
|
334
|
-
is_default: false,
|
|
335
|
-
id: filterMaster?.saved_filters?.selectedId,
|
|
336
|
-
mapped_entity_type: ENTITY_TYPE,
|
|
337
|
-
status: "ACTIVE",
|
|
338
|
-
entity_type: "SFM",
|
|
339
|
-
filterDetails: quickFilter,
|
|
340
|
-
};
|
|
341
|
-
const entity_type = "SFM";
|
|
342
|
-
updateMutation.mutate({ entity_type, payload });
|
|
343
|
-
};
|
|
344
|
-
|
|
345
258
|
const handleSaveSettingsData = (settingsData: SettingsDataProps) => {
|
|
346
259
|
const payload = {
|
|
347
260
|
entity_type: MAPPED_ENTITY_TYPE,
|
|
@@ -387,7 +300,7 @@ function ListingView() {
|
|
|
387
300
|
<CraftTableFilterWrapper
|
|
388
301
|
tableStates={tableStates}
|
|
389
302
|
columnsData={metaQuery.data || {}}
|
|
390
|
-
dropdownData={
|
|
303
|
+
dropdownData={dropdownFilterData || []}
|
|
391
304
|
// onUpdateFilter={handleUpdateFilter}
|
|
392
305
|
// onDeleteFilter={handleRemoveFilter}
|
|
393
306
|
// onSaveFilter={handleSaveFilter}
|