Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/components/ConnectToDB/ConnectToDBDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function ConnectToDBDialog({
// Since there is no ControlPlane data in this case
const shouldRequestTenantData = database && !endpointFromProps && !singleClusterMode;
const params = shouldRequestTenantData
? {path: database, clusterName, isMetaDatabasesAvailable}
? {database, clusterName, isMetaDatabasesAvailable}
: skipToken;
const {currentData: tenantData, isLoading: isTenantDataLoading} =
tenantApi.useGetTenantInfoQuery(params);
Expand Down
6 changes: 4 additions & 2 deletions src/components/NetworkTable/NetworkTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ import {

type NetworkWrapperProps = Pick<
NodesProps,
'path' | 'scrollContainerRef' | 'additionalNodesProps' | 'database'
'path' | 'scrollContainerRef' | 'additionalNodesProps' | 'database' | 'databaseFullPath'
>;

export function NetworkTable({
database,
databaseFullPath,
path,
scrollContainerRef,
additionalNodesProps,
Expand All @@ -24,11 +25,12 @@ export function NetworkTable({
<Nodes
path={path}
database={database}
databaseFullPath={databaseFullPath}
scrollContainerRef={scrollContainerRef}
withPeerRoleFilter={Boolean(database)}
additionalNodesProps={additionalNodesProps}
columns={getNetworkTableNodesColumns({
database: database,
database,
getNodeRef: additionalNodesProps?.getNodeRef,
})}
defaultColumnsIds={NETWORK_DEFAULT_NODES_COLUMNS}
Expand Down
8 changes: 4 additions & 4 deletions src/components/QueriesActivityBar/QueriesActivityBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import {useQueriesActivityData} from './useQueriesActivityData';
import './QueriesActivityBar.scss';

interface QueriesActivityBarProps {
tenantName: string;
database: string;
}

export function QueriesActivityBar({tenantName}: QueriesActivityBarProps) {
export function QueriesActivityBar({database}: QueriesActivityBarProps) {
const {runningQueriesCount, uniqueApplications, uniqueUsers, qps, latency, areChartsAvailable} =
useQueriesActivityData(tenantName);
useQueriesActivityData(database);

// Show skeleton while determining chart availability
if (areChartsAvailable === null) {
Expand All @@ -32,7 +32,7 @@ export function QueriesActivityBar({tenantName}: QueriesActivityBarProps) {
// Render expandable mode when charts are available
return (
<QueriesActivityExpandable
tenantName={tenantName}
database={database}
runningQueriesCount={runningQueriesCount}
uniqueApplications={uniqueApplications}
uniqueUsers={uniqueUsers}
Expand Down
8 changes: 4 additions & 4 deletions src/components/QueriesActivityBar/QueriesActivityCharts.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import type {ChartDataStatus} from '../MetricChart/types';
const b = cn('queries-activity-bar');

interface QueriesActivityChartsProps {
tenantName: string;
database: string;
expanded: boolean;
onChartDataStatusChange?: (status: ChartDataStatus) => void;
}
Expand All @@ -21,7 +21,7 @@ const QUERIES_PER_SECOND_CHART_HEIGHT = 292;
const QUERIES_LATENCIES_CHART_HEIGHT = 292 + LEGEND_HEIGHT;

export function QueriesActivityCharts({
tenantName,
database,
expanded,
onChartDataStatusChange,
}: QueriesActivityChartsProps) {
Expand Down Expand Up @@ -76,7 +76,7 @@ export function QueriesActivityCharts({
>
<Flex direction="column" gap={3} grow basis={0} minWidth={0}>
<MetricChart
database={tenantName}
database={database}
metrics={queriesChartConfig.metrics}
autorefresh={shouldRefresh}
height={QUERIES_PER_SECOND_CHART_HEIGHT}
Expand All @@ -89,7 +89,7 @@ export function QueriesActivityCharts({

<Flex direction="column" gap={3} grow basis={0} minWidth={0}>
<MetricChart
database={tenantName}
database={database}
metrics={latenciesChartConfig.metrics}
autorefresh={shouldRefresh}
height={QUERIES_LATENCIES_CHART_HEIGHT}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import './QueriesActivityBar.scss';
const b = cn('queries-activity-bar');

interface QueriesActivityExpandableProps {
tenantName: string;
database: string;
runningQueriesCount: number;
uniqueApplications: number;
uniqueUsers: number;
Expand All @@ -37,7 +37,7 @@ interface QueriesActivityExpandableProps {
}

export function QueriesActivityExpandable({
tenantName,
database,
runningQueriesCount,
uniqueApplications,
uniqueUsers,
Expand Down Expand Up @@ -155,7 +155,7 @@ export function QueriesActivityExpandable({
</Flex>
</Flex>
)}
<QueriesActivityCharts tenantName={tenantName} expanded={expanded} />
<QueriesActivityCharts database={database} expanded={expanded} />
</Card>
</div>
);
Expand Down
10 changes: 5 additions & 5 deletions src/components/QueriesActivityBar/useQueriesActivityData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@ interface UseQueriesActivityDataResult {
areChartsAvailable: boolean | null; // null = loading, boolean = result
}

export function useQueriesActivityData(tenantName: string): UseQueriesActivityDataResult {
export function useQueriesActivityData(database: string): UseQueriesActivityDataResult {
const [autoRefreshInterval] = useAutoRefreshInterval();

const shouldRefresh = autoRefreshInterval;

// Respect GraphShardExists if explicitly false for the specific tenant
const graphShardExists = useTypedSelector((state) => selectGraphShardExists(state, tenantName));
const graphShardExists = useTypedSelector((state) => selectGraphShardExists(state, database));
const skipCharts = graphShardExists === false;

const {data: runningQueriesData} = topQueriesApi.useGetRunningQueriesQuery(
{
database: tenantName,
database,
filters: {},
},
{pollingInterval: shouldRefresh},
Expand All @@ -46,7 +46,7 @@ export function useQueriesActivityData(tenantName: string): UseQueriesActivityDa
isError: queriesError,
} = chartApi.useGetChartDataQuery(
{
database: tenantName,
database,
metrics: [{target: 'queries.requests'}],
timeFrame: QUERIES_TIME_FRAME,
maxDataPoints: 30,
Expand All @@ -56,7 +56,7 @@ export function useQueriesActivityData(tenantName: string): UseQueriesActivityDa

const {data: latencyData} = chartApi.useGetChartDataQuery(
{
database: tenantName,
database,
metrics: [{target: 'queries.latencies.p99'}],
timeFrame: LATENCIES_TIME_FRAME,
maxDataPoints: 30,
Expand Down
8 changes: 4 additions & 4 deletions src/components/ShardsTable/ShardsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ export interface ShardsTableProps
extends Omit<ResizeableDataTableProps<KeyValueRow>, 'columnsWidthLSKey' | 'columns'> {
columnsIds: TopShardsColumnId[];
database: string;
databaseFullPath: string;
overrideColumns?: ShardsColumn[];
schemaPath?: string;
}

export function ShardsTable({
columnsIds,
schemaPath,
database,
databaseFullPath,
overrideColumns = [],
...props
}: ShardsTableProps) {
Expand All @@ -33,14 +33,14 @@ export function ShardsTable({
return overridedColumn;
}

const column = shardsColumnIdToGetColumn[id]({database, schemaPath});
const column = shardsColumnIdToGetColumn[id]({database, databaseFullPath});

return {
...column,
sortable: isSortableTopShardsColumn(column.name),
};
});
}, [columnsIds, database, overrideColumns, schemaPath]);
}, [columnsIds, database, overrideColumns, databaseFullPath]);

return (
<ResizeableDataTable
Expand Down
4 changes: 2 additions & 2 deletions src/components/ShardsTable/columns.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ import {TOP_SHARDS_COLUMNS_IDS, TOP_SHARDS_COLUMNS_TITLES} from './constants';
import type {GetShardsColumn} from './types';
import {prepareDateTimeValue} from './utils';

export const getPathColumn: GetShardsColumn = ({schemaPath = ''}) => {
export const getPathColumn: GetShardsColumn = ({databaseFullPath = ''}) => {
return {
name: TOP_SHARDS_COLUMNS_IDS.Path,
header: TOP_SHARDS_COLUMNS_TITLES.Path,
render: ({row}) => {
// row.RelativePath - relative schema path without start slash
return (
<LinkToSchemaObject path={`${schemaPath}/${row.RelativePath}`}>
<LinkToSchemaObject path={`${databaseFullPath}/${row.RelativePath}`}>
{row.RelativePath}
</LinkToSchemaObject>
);
Expand Down
5 changes: 4 additions & 1 deletion src/components/ShardsTable/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,7 @@ import type {KeyValueRow} from '../../types/api/query';

export type ShardsColumn = Column<KeyValueRow>;

export type GetShardsColumn = (params: {database: string; schemaPath?: string}) => ShardsColumn;
export type GetShardsColumn = (params: {
database: string;
databaseFullPath?: string;
}) => ShardsColumn;
2 changes: 1 addition & 1 deletion src/components/VDisk/VDisk.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export const VDisk = ({
}: VDiskProps) => {
const database = useDatabaseFromQuery();
const vDiskPath = getVDiskLink(data, {
database: database,
database,
});

return (
Expand Down
2 changes: 1 addition & 1 deletion src/containers/Header/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ function Header() {
database && isDatabasePage && (isEditDBAvailable || isDeleteDBAvailable);

const params = shouldRequestTenantData
? {path: database, clusterName, isMetaDatabasesAvailable}
? {database, clusterName, isMetaDatabasesAvailable}
: skipToken;

const {currentData: databaseData, isLoading: isDatabaseDataLoading} =
Expand Down
24 changes: 11 additions & 13 deletions src/containers/Header/breadcrumbs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,12 @@ const getClusterBreadcrumbs: GetBreadcrumbs<ClusterBreadcrumbsOptions> = (option
};

const getTenantBreadcrumbs: GetBreadcrumbs<TenantBreadcrumbsOptions> = (options, query = {}) => {
const {tenantName, database} = options;
const {databaseName, database} = options;

const breadcrumbs = getClusterBreadcrumbs(options, query);

const text = tenantName || headerKeyset('breadcrumbs.tenant');
const link = tenantName ? getTenantPath({...query, database}) : undefined;
const text = databaseName || headerKeyset('breadcrumbs.tenant');
const link = database ? getTenantPath({...query, database}) : undefined;

const lastItem = {text, link, icon: <DatabaseIcon />};
breadcrumbs.push(lastItem);
Expand All @@ -98,11 +98,11 @@ const getTenantBreadcrumbs: GetBreadcrumbs<TenantBreadcrumbsOptions> = (options,
};

const getNodeBreadcrumbs: GetBreadcrumbs<NodeBreadcrumbsOptions> = (options, query = {}) => {
const {nodeId, nodeRole, nodeActiveTab, tenantName} = options;
const {nodeId, nodeRole, nodeActiveTab, database} = options;

const tenantQuery = getQueryForTenant(nodeActiveTab === 'tablets' ? 'tablets' : 'nodes');

const breadcrumbs = tenantName
const breadcrumbs = database
? getTenantBreadcrumbs(options, {...query, ...tenantQuery})
: getClusterBreadcrumbs(options, query);

Expand All @@ -113,9 +113,7 @@ const getNodeBreadcrumbs: GetBreadcrumbs<NodeBreadcrumbsOptions> = (options, que

const lastItem = {
text,
link: nodeId
? getDefaultNodePath(nodeId, {database: tenantName, ...query}, nodeActiveTab)
: undefined,
link: nodeId ? getDefaultNodePath(nodeId, {database, ...query}, nodeActiveTab) : undefined,
icon: getNodeIcon(nodeRole),
};

Expand Down Expand Up @@ -167,9 +165,9 @@ const getStorageGroupBreadcrumbs: GetBreadcrumbs<StorageGroupBreadcrumbsOptions>
options,
query = {},
) => {
const {groupId, tenantName} = options;
const {groupId, database} = options;

const breadcrumbs = tenantName
const breadcrumbs = database
? getTenantBreadcrumbs(options, query)
: getClusterBreadcrumbs(options, query);

Expand All @@ -180,7 +178,7 @@ const getStorageGroupBreadcrumbs: GetBreadcrumbs<StorageGroupBreadcrumbsOptions>

const lastItem = {
text,
link: groupId ? getStorageGroupPath(groupId, {database: tenantName}) : undefined,
link: groupId ? getStorageGroupPath(groupId, {database}) : undefined,
};
breadcrumbs.push(lastItem);

Expand All @@ -206,9 +204,9 @@ const getVDiskBreadcrumbs: GetBreadcrumbs<VDiskBreadcrumbsOptions> = (options, q
};

const getTabletBreadcrumbs: GetBreadcrumbs<TabletBreadcrumbsOptions> = (options, query = {}) => {
const {tabletId, tabletType, tenantName} = options;
const {tabletId, tabletType, database} = options;

const breadcrumbs = tenantName
const breadcrumbs = database
? getTenantBreadcrumbs(options, query)
: getClusterBreadcrumbs(options, query);

Expand Down
5 changes: 3 additions & 2 deletions src/containers/Heatmap/Heatmap.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,19 @@ const COLORS_RANGE = getColorRange(COLORS_RANGE_SIZE);

interface HeatmapProps {
database: string;
databaseFullPath: string;
path: string;
}

export const Heatmap = ({path, database}: HeatmapProps) => {
export const Heatmap = ({path, database, databaseFullPath}: HeatmapProps) => {
const dispatch = useTypedDispatch();

const itemsContainer = React.createRef<HTMLDivElement>();

const [autoRefreshInterval] = useAutoRefreshInterval();

const {currentData, isFetching, error} = heatmapApi.useGetHeatmapTabletsInfoQuery(
{path, database},
{path, database, databaseFullPath},
{pollingInterval: autoRefreshInterval},
);

Expand Down
Loading
Loading