Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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