Skip to content

Commit c9c4da1

Browse files
committed
Dont sort on filter change
Signed-off-by: yaacov <[email protected]>
1 parent d9fdf5a commit c9c4da1

File tree

2 files changed

+18
-20
lines changed

2 files changed

+18
-20
lines changed

packages/forklift-console-plugin/src/components/page/StandardPage.tsx

+17-20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { FC, ReactNode, useCallback, useEffect, useMemo, useState } from 'react';
1+
import React, { FC, ReactNode, useEffect, useMemo, useState } from 'react';
22
import { useForkliftTranslation } from 'src/utils/i18n';
33

44
import {
@@ -294,8 +294,9 @@ export function StandardPage<T>({
294294
t,
295295
i18n: { resolvedLanguage },
296296
} = useForkliftTranslation();
297-
const [page, setPage] = useState(initialPage);
297+
const [sortedData, setSortedData] = useState([]);
298298
const [filteredData, setFilteredData] = useState([]);
299+
const [page, setPage] = useState(initialPage);
299300

300301
const [selectedFilters, setSelectedFilters] = useUrlFilters({
301302
fields: fieldsMetadata,
@@ -312,26 +313,22 @@ export function StandardPage<T>({
312313
? { ...defaultSupportedFilters, ...extraSupportedFilters }
313314
: defaultSupportedFilters;
314315

315-
const performFilterAndSort = useCallback(async () => {
316-
const result: T[] = await new Promise((resolve) => {
317-
const filtered = flatData
318-
.filter(createMetaMatcher(selectedFilters, fields, supportedMatchers))
319-
.sort(compareFn);
320-
resolve(filtered);
321-
});
322-
323-
setFilteredData(result);
324-
}, [flatData, selectedFilters, fields, compareFn]);
316+
useEffect(() => {
317+
if (flatData) {
318+
setSortedData([...flatData].sort(compareFn));
319+
}
320+
}, [flatData, compareFn, loaded]);
325321

326322
useEffect(() => {
327-
if (!loaded) {
328-
return; // Prevent filter and sort if loaded is false
323+
if (sortedData) {
324+
setFilteredData(
325+
sortedData.filter(createMetaMatcher(selectedFilters, fields, supportedMatchers)),
326+
);
329327
}
330-
performFilterAndSort();
331-
}, [flatData, selectedFilters, fields, compareFn, loaded]);
328+
}, [sortedData, selectedFilters, fields]);
332329

333330
const showPagination =
334-
pagination === 'on' || (typeof pagination === 'number' && flatData.length > pagination);
331+
pagination === 'on' || (typeof pagination === 'number' && sortedData.length > pagination);
335332

336333
const { itemsPerPage, lastPage, setPerPage } = usePagination({
337334
filteredDataLength: filteredData.length,
@@ -346,12 +343,12 @@ export function StandardPage<T>({
346343
);
347344

348345
const errorFetchingData = loaded && error;
349-
const noResults = loaded && !error && flatData.length == 0;
350-
const noMatchingResults = loaded && !error && filteredData.length === 0 && flatData.length > 0;
346+
const noResults = loaded && !error && sortedData.length == 0;
347+
const noMatchingResults = loaded && !error && filteredData.length === 0 && sortedData.length > 0;
351348

352349
const primaryFilters = fields
353350
.filter((field) => field.filter?.primary)
354-
.map(toFieldFilter(flatData));
351+
.map(toFieldFilter(sortedData));
355352

356353
return (
357354
<span className={className}>

packages/forklift-console-plugin/src/modules/Providers/views/details/tabs/VirtualMachines/utils/useInventoryVms.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export const useInventoryVms = (
2525
const inventoryOptions: UseProviderInventoryParams = {
2626
provider: validProvider,
2727
subPath: 'vms?detail=4',
28+
interval: 180000,
2829
};
2930

3031
const {

0 commit comments

Comments
 (0)