Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
6 changes: 4 additions & 2 deletions src/containers/PDiskPage/PDiskPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import {valueIsDefined} from '../../utils';
import {cn} from '../../utils/cn';
import {getPDiskId, getSeverityColor} from '../../utils/disks/helpers';
import {useAutoRefreshInterval, useTypedDispatch, useTypedSelector} from '../../utils/hooks';
import {Storage} from '../Storage/Storage';
import {StorageWrapper} from '../Storage/StorageWrapper';

import {DecommissionButton} from './DecommissionButton/DecommissionButton';
import {DecommissionLabel} from './DecommissionLabel/DecommissionLabel';
Expand Down Expand Up @@ -244,7 +244,9 @@ export function PDiskPage() {
) : null;
}
case 'storage': {
return pDiskParamsDefined ? <Storage nodeId={nodeId} pDiskId={pDiskId} /> : null;
return pDiskParamsDefined ? (
<StorageWrapper nodeId={nodeId} pDiskId={pDiskId} />
) : null;
}
default:
return null;
Expand Down
4 changes: 2 additions & 2 deletions src/containers/Storage/Disks/Disks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ import {stringifyVdiskId} from '../../../utils/dataFormatters/dataFormatters';
import {getPDiskId} from '../../../utils/disks/helpers';
import type {PreparedVDisk} from '../../../utils/disks/types';
import {PDisk} from '../PDisk';
import type {StorageViewContext} from '../types';
import {isVdiskActive} from '../utils';
import type {VDiskViewContext} from '../utils';

import './Disks.scss';

const b = cn('ydb-storage-disks');

interface DisksProps {
vDisks?: PreparedVDisk[];
viewContext?: VDiskViewContext;
viewContext?: StorageViewContext;
}

export function Disks({vDisks = [], viewContext}: DisksProps) {
Expand Down
4 changes: 2 additions & 2 deletions src/containers/Storage/PDisk/PDisk.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import {cn} from '../../../utils/cn';
import {stringifyVdiskId} from '../../../utils/dataFormatters/dataFormatters';
import type {PreparedPDisk, PreparedVDisk} from '../../../utils/disks/types';
import {STRUCTURE} from '../../Node/NodePages';
import type {StorageViewContext} from '../types';
import {isVdiskActive} from '../utils';
import type {VDiskViewContext} from '../utils';

import './PDisk.scss';

Expand All @@ -26,7 +26,7 @@ interface PDiskProps {
onHidePopup?: VoidFunction;
className?: string;
progressBarClassName?: string;
viewContext?: VDiskViewContext;
viewContext?: StorageViewContext;
}

export const PDisk = ({
Expand Down
3 changes: 3 additions & 0 deletions src/containers/Storage/PaginatedStorage.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {PaginatedStorageGroups} from './PaginatedStorageGroups';
import {PaginatedStorageNodes} from './PaginatedStorageNodes';
import type {StorageViewContext} from './types';
import {useStorageQueryParams} from './useStorageQueryParams';

export interface PaginatedStorageProps {
Expand All @@ -8,6 +9,8 @@ export interface PaginatedStorageProps {
groupId?: string | number;
pDiskId?: string | number;

viewContext: StorageViewContext;

parentContainer?: Element | null;
}

Expand Down
7 changes: 5 additions & 2 deletions src/containers/Storage/PaginatedStorageGroups.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,14 @@ function StorageGroupsComponent({
nodeId,
groupId,
pDiskId,
viewContext,
parentContainer,
}: PaginatedStorageProps) {
const {searchValue, visibleEntities, handleShowAllGroups} = useStorageQueryParams();

const {columnsToShow, columnsToSelect, setColumns} = useStorageGroupsSelectedColumns({
visibleEntities,
nodeId: nodeId?.toString(),
viewContext,
});

const renderControls: RenderControls = ({totalEntities, foundEntities, inited}) => {
Expand Down Expand Up @@ -99,14 +100,16 @@ function GroupedStorageGroupsComponent({
nodeId,
groupId,
pDiskId,

viewContext,
}: PaginatedStorageProps) {
const [autoRefreshInterval] = useAutoRefreshInterval();
const {searchValue, storageGroupsGroupByParam, visibleEntities, handleShowAllGroups} =
useStorageQueryParams();

const {columnsToShow, columnsToSelect, setColumns} = useStorageGroupsSelectedColumns({
visibleEntities,
nodeId: nodeId?.toString(),
viewContext,
});

const {currentData, isFetching, error} = storageApi.useGetStorageGroupsInfoQuery(
Expand Down
19 changes: 13 additions & 6 deletions src/containers/Storage/PaginatedStorageNodes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {TableGroup} from './TableGroup/TableGroup';
import {useExpandedGroups} from './TableGroup/useExpandedTableGroups';
import i18n from './i18n';
import {b, renderPaginatedTableErrorMessage} from './shared';
import type {StorageViewContext} from './types';
import {useStorageQueryParams} from './useStorageQueryParams';

import './Storage.scss';
Expand Down Expand Up @@ -60,14 +61,15 @@ function StorageNodesComponent({
database,
nodeId,
groupId,
viewContext,
parentContainer,
}: PaginatedStorageProps) {
const {searchValue, visibleEntities, nodesUptimeFilter, handleShowAllNodes} =
useStorageQueryParams();

const {columnsToShow, columnsToSelect, setColumns} = useStorageNodesColumnsToSelect({
database,
groupId: groupId?.toString(),
viewContext,
});

const renderControls: RenderControls = ({totalEntities, foundEntities, inited}) => {
Expand Down Expand Up @@ -101,14 +103,19 @@ function StorageNodesComponent({
);
}

function GroupedStorageNodesComponent({database, groupId, nodeId}: PaginatedStorageProps) {
function GroupedStorageNodesComponent({
database,
groupId,
nodeId,
viewContext,
}: PaginatedStorageProps) {
const [autoRefreshInterval] = useAutoRefreshInterval();

const {searchValue, storageNodesGroupByParam, handleShowAllNodes} = useStorageQueryParams();

const {columnsToShow, columnsToSelect, setColumns} = useStorageNodesColumnsToSelect({
database,
groupId: groupId?.toString(),
viewContext,
});

const {currentData, isFetching, error} = storageApi.useGetStorageNodesInfoQuery(
Expand Down Expand Up @@ -193,10 +200,10 @@ function GroupedStorageNodesComponent({database, groupId, nodeId}: PaginatedStor

function useStorageNodesColumnsToSelect({
database,
groupId,
viewContext,
}: {
database?: string;
groupId?: string;
viewContext: StorageViewContext;
}) {
const {balancer} = useClusterBaseInfo();
const {additionalNodesProps} = useAdditionalNodeProps({balancer});
Expand All @@ -206,6 +213,6 @@ function useStorageNodesColumnsToSelect({
additionalNodesProps,
visibleEntities,
database,
groupId,
viewContext,
});
}
9 changes: 6 additions & 3 deletions src/containers/Storage/Storage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {useStorageGroupsSelectedColumns} from './StorageGroups/columns/hooks';
import {StorageNodesTable} from './StorageNodes/StorageNodesTable';
import {useStorageNodesSelectedColumns} from './StorageNodes/columns/hooks';
import {b} from './shared';
import type {StorageViewContext} from './types';
import {useStorageQueryParams} from './useStorageQueryParams';
import {defaultSortNode, getDefaultSortGroup} from './utils';

Expand All @@ -32,9 +33,11 @@ interface StorageProps {
nodeId?: string | number;
groupId?: string | number;
pDiskId?: string | number;

viewContext: StorageViewContext;
}

export const Storage = ({database, nodeId, groupId, pDiskId}: StorageProps) => {
export const Storage = ({database, viewContext, nodeId, groupId, pDiskId}: StorageProps) => {
const {balancer} = useClusterBaseInfo();
const {additionalNodesProps} = useAdditionalNodeProps({balancer});

Expand Down Expand Up @@ -75,14 +78,14 @@ export const Storage = ({database, nodeId, groupId, pDiskId}: StorageProps) => {
additionalNodesProps,
visibleEntities,
database,
groupId: groupId?.toString(),
viewContext,
});

const {
columnsToShow: storageGroupsColumnsToShow,
columnsToSelect: storageGroupsColumnsToSelect,
setColumns: setStorageGroupsSelectedColumns,
} = useStorageGroupsSelectedColumns({visibleEntities, nodeId: nodeId?.toString()});
} = useStorageGroupsSelectedColumns({visibleEntities, viewContext});

const nodesQuery = storageApi.useGetStorageNodesInfoQuery(
{
Expand Down
4 changes: 2 additions & 2 deletions src/containers/Storage/StorageGroups/columns/columns.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ const getVDisksColumn = (data?: GetStorageColumnsData): StorageGroupsColumn => (
<VDiskWithDonorsStack
key={stringifyVdiskId(vDisk.VDiskId)}
data={vDisk}
inactive={!isVdiskActive(vDisk, data)}
inactive={!isVdiskActive(vDisk, data?.viewContext)}
className={b('vdisks-item')}
/>
))}
Expand All @@ -237,7 +237,7 @@ const getDisksColumn = (data?: GetStorageColumnsData): StorageGroupsColumn => ({
header: STORAGE_GROUPS_COLUMNS_TITLES.VDisksPDisks,
className: b('disks-column'),
render: ({row}) => {
return <Disks vDisks={row.VDisks} viewContext={data} />;
return <Disks vDisks={row.VDisks} viewContext={data?.viewContext} />;
},
align: DataTable.CENTER,
width: 900,
Expand Down
11 changes: 6 additions & 5 deletions src/containers/Storage/StorageGroups/columns/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React from 'react';

import {VISIBLE_ENTITIES} from '../../../../store/reducers/storage/constants';
import {useSelectedColumns} from '../../../../utils/hooks/useSelectedColumns';
import type {StorageViewContext} from '../../types';

import {getStorageGroupsColumns} from './columns';
import {
Expand All @@ -13,17 +14,17 @@ import {
} from './constants';
import type {GetStorageGroupsColumnsParams} from './types';

export function useGetStorageGroupsColumns(nodeId?: string) {
export function useGetStorageGroupsColumns(viewContext: StorageViewContext) {
return React.useMemo(() => {
return getStorageGroupsColumns({nodeId});
}, [nodeId]);
return getStorageGroupsColumns({viewContext});
}, [viewContext]);
}

export function useStorageGroupsSelectedColumns({
visibleEntities,
nodeId,
viewContext,
}: GetStorageGroupsColumnsParams) {
const columns = useGetStorageGroupsColumns(nodeId);
const columns = useGetStorageGroupsColumns(viewContext);

const requiredColumns = React.useMemo(() => {
if (visibleEntities === VISIBLE_ENTITIES.missing) {
Expand Down
5 changes: 3 additions & 2 deletions src/containers/Storage/StorageGroups/columns/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@ import type {Column as DataTableColumn} from '@gravity-ui/react-data-table';

import type {Column as PaginatedTableColumn} from '../../../../components/PaginatedTable';
import type {PreparedStorageGroup, VisibleEntities} from '../../../../store/reducers/storage/types';
import type {StorageViewContext} from '../../types';

export type StorageGroupsColumn = PaginatedTableColumn<PreparedStorageGroup> &
DataTableColumn<PreparedStorageGroup>;

export interface GetStorageColumnsData {
nodeId?: string;
viewContext: StorageViewContext;
}

export interface GetStorageGroupsColumnsParams {
visibleEntities?: VisibleEntities;
nodeId?: string;
viewContext: StorageViewContext;
}

export type StorageColumnsGetter = (data?: GetStorageColumnsData) => StorageGroupsColumn[];
4 changes: 2 additions & 2 deletions src/containers/Storage/StorageNodes/columns/columns.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const b = cn('ydb-storage-nodes-columns');
const getStorageNodesColumns = ({
additionalNodesProps,
database,
groupId,
viewContext,
}: GetStorageNodesColumnsParams) => {
const getNodeRef = additionalNodesProps?.getNodeRef;

Expand Down Expand Up @@ -81,7 +81,7 @@ const getStorageNodesColumns = ({

return (
<div className={b('pdisks-item')} key={pDisk.PDiskId}>
<PDisk data={pDisk} vDisks={vDisks} viewContext={{groupId}} />
<PDisk data={pDisk} vDisks={vDisks} viewContext={viewContext} />
</div>
);
})}
Expand Down
10 changes: 7 additions & 3 deletions src/containers/Storage/StorageNodes/columns/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,15 @@ export function useStorageNodesSelectedColumns({
visibleEntities,
database,
additionalNodesProps,
groupId,
viewContext,
}: GetStorageNodesColumnsParams) {
const columns = React.useMemo(() => {
return getPreparedStorageNodesColumns({database, additionalNodesProps, groupId});
}, [database, additionalNodesProps, groupId]);
return getPreparedStorageNodesColumns({
database,
additionalNodesProps,
viewContext,
});
}, [database, additionalNodesProps, viewContext]);

const requiredColumns = React.useMemo(() => {
if (visibleEntities === VISIBLE_ENTITIES.missing) {
Expand Down
3 changes: 2 additions & 1 deletion src/containers/Storage/StorageNodes/columns/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type {Column as DataTableColumn} from '@gravity-ui/react-data-table';
import type {Column as PaginatedTableColumn} from '../../../../components/PaginatedTable';
import type {PreparedStorageNode, VisibleEntities} from '../../../../store/reducers/storage/types';
import type {AdditionalNodesProps} from '../../../../types/additionalProps';
import type {StorageViewContext} from '../../types';

export type StorageNodesColumn = PaginatedTableColumn<PreparedStorageNode> &
DataTableColumn<PreparedStorageNode>;
Expand All @@ -11,5 +12,5 @@ export interface GetStorageNodesColumnsParams {
additionalNodesProps: AdditionalNodesProps | undefined;
visibleEntities?: VisibleEntities;
database?: string;
groupId?: string;
viewContext: StorageViewContext;
}
23 changes: 20 additions & 3 deletions src/containers/Storage/StorageWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,36 @@ import {useSetting} from '../../utils/hooks';

import {PaginatedStorage} from './PaginatedStorage';
import {Storage} from './Storage';
import type {StorageViewContext} from './types';

interface StorageWrapperProps {
database?: string;
nodeId?: string;
nodeId?: string | number;
pDiskId?: string | number;
groupId?: string | number;
vDiskSlotId?: string | number;
parentContainer?: Element | null;
}

export const StorageWrapper = ({parentContainer, ...props}: StorageWrapperProps) => {
const [usePaginatedTables] = useSetting<boolean>(USE_PAGINATED_TABLES_KEY);

const viewContext: StorageViewContext = {
nodeId: props.nodeId?.toString(),
pDiskId: props.pDiskId?.toString(),
groupId: props.groupId?.toString(),
vDiskSlotId: props.vDiskSlotId?.toString(),
};

if (usePaginatedTables) {
return <PaginatedStorage parentContainer={parentContainer} {...props} />;
return (
<PaginatedStorage
parentContainer={parentContainer}
viewContext={viewContext}
{...props}
/>
);
}

return <Storage {...props} />;
return <Storage viewContext={viewContext} {...props} />;
};
6 changes: 6 additions & 0 deletions src/containers/Storage/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export type StorageViewContext = {
groupId?: string;
nodeId?: string;
pDiskId?: string;
vDiskSlotId?: string;
};
Loading
Loading