Skip to content

Commit 4193c15

Browse files
Merge pull request #2354 from flanksource/fix-tables-crashing
Fix-tables-crashing
2 parents 6569c82 + 6f15e8e commit 4193c15

File tree

8 files changed

+43
-11
lines changed

8 files changed

+43
-11
lines changed

src/api/services/notifications.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ export function getPagingParams({
2626

2727
export const getNotificationsSummary = async ({
2828
pageIndex,
29-
pageSize
29+
pageSize,
30+
sortBy,
31+
sortOrder
3032
}: NotificationQueryFilterOptions) => {
3133
const pagingParams = getPagingParams({ pageIndex, pageSize });
3234

@@ -37,9 +39,13 @@ export const getNotificationsSummary = async ({
3739
`created_by(${AVATAR_INFO})`
3840
].join(",");
3941

42+
const sortParams = sortBy
43+
? `&order=${sortBy}.${sortOrder}`
44+
: "&order=created_at.desc";
45+
4046
return resolvePostGrestRequestWithPagination(
4147
IncidentCommander.get<NotificationRules[] | null>(
42-
`/notifications_summary?select=${selectColumns}&order=created_at.desc${pagingParams}`,
48+
`/notifications_summary?select=${selectColumns}${sortParams}${pagingParams}`,
4349
{
4450
headers: {
4551
Prefer: "count=exact"
@@ -131,11 +137,15 @@ export const getNotificationSendHistoryById = async (id: string) => {
131137
export type NotificationQueryFilterOptions = {
132138
pageIndex: number;
133139
pageSize: number;
140+
sortBy?: string;
141+
sortOrder?: "asc" | "desc";
134142
};
135143

136144
export const getNotificationSilences = async ({
137145
pageIndex,
138-
pageSize
146+
pageSize,
147+
sortBy,
148+
sortOrder
139149
}: NotificationQueryFilterOptions) => {
140150
const pagingParams = getPagingParams({ pageIndex, pageSize });
141151

@@ -147,9 +157,11 @@ export const getNotificationSilences = async ({
147157
`createdBy:created_by(${AVATAR_INFO})`
148158
].join(",");
149159

160+
const sortParams = sortBy ? `&order=${sortBy}.${sortOrder}` : "";
161+
150162
return resolvePostGrestRequestWithPagination(
151163
IncidentCommander.get<NotificationSilenceItemApiResponse[] | null>(
152-
`/notification_silences?select=${selectColumns}&order=created_at.desc${pagingParams}&deleted_at=is.null`,
164+
`/notification_silences?select=${selectColumns}&order=created_at.desc${pagingParams}&deleted_at=is.null&${sortParams}`,
153165
{
154166
headers: {
155167
Prefer: "count=exact"

src/components/Agents/List/AgentsTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export default function AgentsTable({
3535
searchParams.set("id", agent.id!);
3636
setSearchParams(searchParams);
3737
}}
38+
enableServerSideSorting
3839
/>
3940
{agentId && (
4041
<AgentForm

src/components/Notifications/Rules/NotificationsRulesTable.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,14 @@ export default function NotificationsRulesTable({
6060
</Modal>
6161
)}
6262
<MRTDataTable
63-
data={notifications}
63+
data={notifications ?? []}
6464
columns={notificationsRulesTableColumns}
6565
isLoading={isLoading}
6666
onRowClick={onSelectNotification}
6767
enableServerSidePagination
6868
manualPageCount={pageCount}
6969
totalRowCount={totalRecordCount}
70+
enableServerSideSorting
7071
/>
7172
{selectedNotificationId && (
7273
<EditNotificationRules

src/components/Notifications/SilenceNotificationsList.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,9 @@ export default function SilenceNotificationsList({
224224
}}
225225
isLoading={isLoading}
226226
manualPageCount={pageCount}
227-
enableServerSidePagination={true}
227+
enableServerSidePagination
228228
totalRowCount={recordCount}
229+
enableServerSideSorting
229230
/>
230231
{selectedNotificationSilence && (
231232
<EditNotificationSilenceModal

src/pages/Settings/notifications/NotificationsRulesPage.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { NotificationRules } from "@flanksource-ui/api/types/notifications";
22
import useReactTablePaginationState from "@flanksource-ui/ui/DataTable/Hooks/useReactTablePaginationState";
3+
import useReactTableSortState from "@flanksource-ui/ui/DataTable/Hooks/useReactTableSortState";
34
import { useState } from "react";
45
import {
56
useCreateNotification,
@@ -14,12 +15,15 @@ export default function NotificationRulesPage() {
1415
const [isOpen, setIsOpen] = useState(false);
1516

1617
const { pageIndex, pageSize } = useReactTablePaginationState();
18+
const [sortState] = useReactTableSortState();
1719

1820
const { data, isLoading, refetch, isRefetching } =
1921
useNotificationsSummaryQuery(
2022
{
2123
pageIndex,
22-
pageSize
24+
pageSize,
25+
sortBy: sortState[0]?.id,
26+
sortOrder: sortState[0]?.desc ? "desc" : "asc"
2327
},
2428
{
2529
keepPreviousData: true

src/pages/Settings/notifications/NotificationsSilencedPage.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
import { getNotificationSilences } from "@flanksource-ui/api/services/notifications";
22
import SilenceNotificationsList from "@flanksource-ui/components/Notifications/SilenceNotificationsList";
33
import useReactTablePaginationState from "@flanksource-ui/ui/DataTable/Hooks/useReactTablePaginationState";
4+
import useReactTableSortState from "@flanksource-ui/ui/DataTable/Hooks/useReactTableSortState";
45
import { useQuery } from "@tanstack/react-query";
56
import NotificationTabsLinks from "../../../components/Notifications/NotificationTabsLinks";
67

78
export default function NotificationsSilencedPage() {
89
const { pageIndex, pageSize } = useReactTablePaginationState();
10+
const [sortState] = useReactTableSortState();
911

1012
const { data, isLoading, refetch, isRefetching } = useQuery({
11-
queryKey: ["notification_silences", { pageIndex, pageSize }],
13+
queryKey: [
14+
"notification_silences",
15+
{
16+
pageIndex,
17+
pageSize,
18+
sortBy: sortState[0]?.id,
19+
sortOrder: sortState[0]?.desc ? "desc" : "asc"
20+
}
21+
],
1222
queryFn: () => getNotificationSilences({ pageIndex, pageSize }),
1323
keepPreviousData: true
1424
});

src/ui/DataTable/Hooks/useReactTableSortState.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ export default function useReactTableSortState(
3232

3333
const updateSortByFn = useCallback(
3434
(newSortBy: Updater<SortingState>) => {
35-
const sort = typeof newSortBy === "function" ? newSortBy([]) : newSortBy;
35+
const sort =
36+
typeof newSortBy === "function"
37+
? newSortBy([...tableSortByState])
38+
: newSortBy;
3639
if (sort.length === 0) {
3740
searchParams.delete(sortByKey);
3841
searchParams.delete(sortOrderKey);
@@ -42,7 +45,7 @@ export default function useReactTableSortState(
4245
}
4346
setSearchParams(searchParams);
4447
},
45-
[searchParams, setSearchParams, sortByKey, sortOrderKey]
48+
[searchParams, setSearchParams, sortByKey, sortOrderKey, tableSortByState]
4649
);
4750

4851
return [tableSortByState, updateSortByFn];

src/ui/MRTDataTable/MRTDataTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export default function MRTDataTable<T extends Record<string, any> = {}>({
9999
sx: {
100100
flex: "1 1 0",
101101
display: "flex",
102-
"flex-flow": "column"
102+
flexFlow: "column"
103103
}
104104
}),
105105
enablePagination: !disablePagination,

0 commit comments

Comments
 (0)