Skip to content

Commit a66f145

Browse files
committed
fix: use table sort
1 parent 03c3a7d commit a66f145

File tree

4 files changed

+28
-9
lines changed

4 files changed

+28
-9
lines changed

src/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
TOP_QUERIES_SELECTED_COLUMNS_LS_KEY,
3030
} from './columns/constants';
3131
import {DEFAULT_TIME_FILTER_VALUE, TIME_FRAME_OPTIONS} from './constants';
32+
import {useGetSelectedRowTableSort} from './hooks/useGetSelectedRowTableSort';
3233
import {useSetSelectedTopQueryRowFromParams} from './hooks/useSetSelectedTopQueryRowFromParams';
3334
import i18n from './i18n';
3435
import {TOP_QUERIES_TABLE_SETTINGS, useTopQueriesSort} from './utils';
@@ -73,7 +74,8 @@ export const TopQueriesData = ({
7374
REQUIRED_TOP_QUERIES_COLUMNS,
7475
);
7576

76-
const {tableSort, handleTableSort, backendSort} = useTopQueriesSort();
77+
const initialTableSort = useGetSelectedRowTableSort();
78+
const {tableSort, handleTableSort, backendSort} = useTopQueriesSort(initialTableSort);
7779
const {currentData, isFetching, isLoading, error} = topQueriesApi.useGetTopQueriesQuery(
7880
{
7981
database: tenantName,
@@ -95,10 +97,10 @@ export const TopQueriesData = ({
9597

9698
const onCopyLink = React.useCallback(() => {
9799
if (selectedRow) {
98-
const shareableUrl = generateShareableUrl(selectedRow);
100+
const shareableUrl = generateShareableUrl(selectedRow, tableSort);
99101
navigator.clipboard.writeText(shareableUrl);
100102
}
101-
}, [selectedRow]);
103+
}, [selectedRow, tableSort]);
102104

103105
const renderDrawerContent = React.useCallback(() => {
104106
if (!isDrawerVisible) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import type {SortOrder} from '@gravity-ui/react-data-table';
2+
import {StringParam, useQueryParams} from 'use-query-params';
3+
4+
export function useGetSelectedRowTableSort(): SortOrder[] | undefined {
5+
const [queryParams] = useQueryParams({
6+
selectedRow: StringParam,
7+
});
8+
const searchParamsQuery: {tableSort?: SortOrder[]} = queryParams.selectedRow
9+
? JSON.parse(queryParams.selectedRow)
10+
: {};
11+
12+
return searchParamsQuery.tableSort;
13+
}

src/containers/Tenant/Diagnostics/TopQueries/utils.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22

3-
import type {Settings} from '@gravity-ui/react-data-table';
3+
import type {Settings, SortOrder} from '@gravity-ui/react-data-table';
44
import DataTable from '@gravity-ui/react-data-table';
55

66
import type {InfoViewerItem} from '../../../../components/InfoViewer';
@@ -23,10 +23,10 @@ export const TOP_QUERIES_TABLE_SETTINGS: Settings = {
2323
disableSortReset: true,
2424
};
2525

26-
export function useTopQueriesSort() {
26+
export function useTopQueriesSort(initialSort?: SortOrder[]) {
2727
const [tableSort, handleTableSort] = useTableSort({
28-
initialSortColumn: QUERIES_COLUMNS_IDS.CPUTime,
29-
initialSortOrder: DataTable.DESCENDING,
28+
initialSortColumn: initialSort?.[0]?.columnId || QUERIES_COLUMNS_IDS.CPUTime,
29+
initialSortOrder: initialSort?.[0]?.order || DataTable.DESCENDING,
3030
multiple: true,
3131
fixedOrderType: DataTable.DESCENDING,
3232
});

src/containers/Tenant/Diagnostics/TopQueries/utils/generateShareableUrl.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1+
import type {SortOrder} from '@gravity-ui/react-data-table';
2+
13
import type {KeyValueRow} from '../../../../../types/api/query';
24

35
import {getTopQueryRowQueryParams} from './getTopQueryRowQueryParams';
46

57
/**
68
* Generates a shareable URL with query parameters for a top query row
79
* @param row The top query row data
8-
* @returns A shareable URL string with the row's parameters encoded in the URL
10+
* @param tableSort Optional sort configuration to include in the URL
11+
* @returns A shareable URL string with the row's parameters and sort order encoded in the URL
912
*/
10-
export function generateShareableUrl(row: KeyValueRow): string {
13+
export function generateShareableUrl(row: KeyValueRow, tableSort?: SortOrder[]): string {
1114
const params = getTopQueryRowQueryParams(row);
1215

1316
// Get current URL without query parameters
@@ -25,6 +28,7 @@ export function generateShareableUrl(row: KeyValueRow): string {
2528
intervalEnd: params.intervalEnd || undefined,
2629
endTime: params.endTime || undefined,
2730
queryHash: params.queryHash || undefined,
31+
tableSort: tableSort || undefined, // Include the table sort order
2832
}),
2933
);
3034

0 commit comments

Comments
 (0)