import {ResizeableDataTable} from '../../../../../components/ResizeableDataTable/ResizeableDataTable'; import { getHostColumn, getLoadColumn, getNodeIdColumn, getVersionColumn, } from '../../../../../components/nodesColumns/columns'; import { NODES_COLUMNS_TO_DATA_FIELDS, NODES_COLUMNS_WIDTH_LS_KEY, } from '../../../../../components/nodesColumns/constants'; import type { GetNodesColumnsParams, NodesColumn, } from '../../../../../components/nodesColumns/types'; import {nodesApi} from '../../../../../store/reducers/nodes/nodes'; import type {NodesRequiredField} from '../../../../../types/api/nodes'; import { TENANT_OVERVIEW_TABLES_LIMIT, TENANT_OVERVIEW_TABLES_SETTINGS, } from '../../../../../utils/constants'; import {useAutoRefreshInterval} from '../../../../../utils/hooks'; import {getRequiredDataFields} from '../../../../../utils/tableUtils/getRequiredDataFields'; import {TenantOverviewTableLayout} from '../TenantOverviewTableLayout'; import i18n from '../i18n'; function getTopNodesByLoadColumns( params: GetNodesColumnsParams, ): [NodesColumn[], NodesRequiredField[]] { const hostColumn: NodesColumn = { ...getHostColumn(params), width: undefined, }; const columns: NodesColumn[] = [ getLoadColumn(), getNodeIdColumn(), hostColumn, getVersionColumn(), ]; const columnsIds = columns.map((column) => column.name); const dataFieldsRequired = getRequiredDataFields(columnsIds, NODES_COLUMNS_TO_DATA_FIELDS); return [columns, dataFieldsRequired]; } interface TopNodesByLoadProps { database: string; } export function TopNodesByLoad({database}: TopNodesByLoadProps) { const [autoRefreshInterval] = useAutoRefreshInterval(); const [columns, fieldsRequired] = getTopNodesByLoadColumns({database}); const {currentData, isFetching, error} = nodesApi.useGetNodesQuery( { tenant: database, type: 'any', sort: '-LoadAverage', limit: TENANT_OVERVIEW_TABLES_LIMIT, tablets: false, fieldsRequired, }, {pollingInterval: autoRefreshInterval}, ); const loading = isFetching && currentData === undefined; const topNodes = currentData?.nodes || []; return ( ); }