Skip to content

Commit 5402c86

Browse files
authored
feat: show vdisks of selected group in a special color (#1336)
1 parent 73642db commit 5402c86

File tree

10 files changed

+43
-12
lines changed

10 files changed

+43
-12
lines changed

src/components/DiskStateProgressBar/DiskStateProgressBar.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535
background-color: unset;
3636
}
3737

38+
&_inactive {
39+
opacity: 0.5;
40+
}
41+
3842
&_empty {
3943
color: var(--g-color-text-hint);
4044
border-style: dashed;

src/components/DiskStateProgressBar/DiskStateProgressBar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ interface DiskStateProgressBarProps {
1414
severity?: number;
1515
compact?: boolean;
1616
faded?: boolean;
17+
inactive?: boolean;
1718
empty?: boolean;
1819
content?: React.ReactNode;
1920
className?: string;
@@ -24,13 +25,14 @@ export function DiskStateProgressBar({
2425
severity,
2526
compact,
2627
faded,
28+
inactive,
2729
empty,
2830
content,
2931
className,
3032
}: DiskStateProgressBarProps) {
3133
const [inverted] = useSetting<boolean | undefined>(INVERTED_DISKS_KEY);
3234

33-
const mods: Record<string, boolean | undefined> = {inverted, compact, faded, empty};
35+
const mods: Record<string, boolean | undefined> = {inverted, compact, faded, empty, inactive};
3436

3537
const color = severity !== undefined && getSeverityColor(severity);
3638
if (color) {

src/components/VDisk/VDisk.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export interface VDiskProps {
2121
data?: PreparedVDisk;
2222
nodes?: NodesMap;
2323
compact?: boolean;
24+
inactive?: boolean;
2425
showPopup?: boolean;
2526
onShowPopup?: VoidFunction;
2627
onHidePopup?: VoidFunction;
@@ -31,6 +32,7 @@ export const VDisk = ({
3132
data = {},
3233
nodes,
3334
compact,
35+
inactive,
3436
showPopup,
3537
onShowPopup,
3638
onHidePopup,
@@ -87,6 +89,7 @@ export const VDisk = ({
8789
diskAllocatedPercent={data.AllocatedPercent}
8890
severity={data.Severity}
8991
compact={compact}
92+
inactive={inactive}
9093
className={progressBarClassName}
9194
/>
9295
</InternalLink>

src/containers/Storage/PDisk/PDisk.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ import {PDiskPopup} from '../../../components/PDiskPopup/PDiskPopup';
66
import {VDiskWithDonorsStack} from '../../../components/VDisk/VDiskWithDonorsStack';
77
import routes, {createHref, getPDiskPagePath} from '../../../routes';
88
import {useDiskPagesAvailable} from '../../../store/reducers/capabilities/hooks';
9-
import type {TVDiskStateInfo} from '../../../types/api/vdisk';
109
import {valueIsDefined} from '../../../utils';
1110
import {cn} from '../../../utils/cn';
1211
import {stringifyVdiskId} from '../../../utils/dataFormatters/dataFormatters';
13-
import type {PreparedPDisk} from '../../../utils/disks/types';
12+
import type {PreparedPDisk, PreparedVDisk} from '../../../utils/disks/types';
1413
import {STRUCTURE} from '../../Node/NodePages';
1514

1615
import './PDisk.scss';
@@ -19,7 +18,8 @@ const b = cn('pdisk-storage');
1918

2019
interface PDiskProps {
2120
data?: PreparedPDisk;
22-
vDisks?: TVDiskStateInfo[];
21+
vDisks?: PreparedVDisk[];
22+
inactiveVdisks?: PreparedVDisk[];
2323
showPopup?: boolean;
2424
onShowPopup?: VoidFunction;
2525
onHidePopup?: VoidFunction;
@@ -30,6 +30,7 @@ interface PDiskProps {
3030
export const PDisk = ({
3131
data = {},
3232
vDisks,
33+
inactiveVdisks,
3334
showPopup,
3435
onShowPopup,
3536
onHidePopup,
@@ -75,8 +76,9 @@ export const PDisk = ({
7576
>
7677
<VDiskWithDonorsStack
7778
data={vdisk}
78-
compact={true}
79+
inactive={inactiveVdisks?.includes(vdisk)}
7980
stackClassName={b('donors-stack')}
81+
compact
8082
/>
8183
</div>
8284
);

src/containers/Storage/PaginatedStorage.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,16 @@ import {useStorageNodesSelectedColumns} from './StorageNodes/columns/hooks';
1919
interface PaginatedStorageProps {
2020
database?: string;
2121
nodeId?: string;
22+
groupId?: string;
2223
parentContainer?: Element | null;
2324
}
2425

25-
export const PaginatedStorage = ({database, nodeId, parentContainer}: PaginatedStorageProps) => {
26+
export const PaginatedStorage = ({
27+
database,
28+
nodeId,
29+
groupId,
30+
parentContainer,
31+
}: PaginatedStorageProps) => {
2632
const {balancer} = useClusterBaseInfo();
2733
const {additionalNodesProps} = useAdditionalNodeProps({balancer});
2834

@@ -48,6 +54,7 @@ export const PaginatedStorage = ({database, nodeId, parentContainer}: PaginatedS
4854
additionalNodesProps,
4955
visibleEntities,
5056
database,
57+
groupId,
5158
});
5259

5360
const {

src/containers/Storage/Storage.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ export const Storage = ({database, nodeId, groupId, pDiskId}: StorageProps) => {
109109
additionalNodesProps,
110110
visibleEntities,
111111
database,
112+
groupId: groupId?.toString(),
112113
});
113114

114115
const {

src/containers/Storage/StorageNodes/StorageNodes.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ interface StorageNodesProps {
1818
tableSettings: Settings;
1919
visibleEntities: VisibleEntities;
2020
nodesUptimeFilter: NodesUptimeFilterValues;
21-
onShowAll?: VoidFunction;
2221
sort?: SortOrder;
22+
onShowAll?: VoidFunction;
2323
handleSort?: HandleSort;
2424
}
2525

@@ -28,9 +28,9 @@ export function StorageNodes({
2828
columns,
2929
tableSettings,
3030
visibleEntities,
31-
onShowAll,
3231
nodesUptimeFilter,
3332
sort,
33+
onShowAll,
3434
handleSort,
3535
}: StorageNodesProps) {
3636
if (

src/containers/Storage/StorageNodes/columns/columns.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const b = cn('ydb-storage-nodes-columns');
1717
const getStorageNodesColumns = (
1818
additionalNodesProps: AdditionalNodesProps | undefined,
1919
database?: string,
20+
groupId?: string,
2021
) => {
2122
const getNodeRef = additionalNodesProps?.getNodeRef;
2223

@@ -79,9 +80,17 @@ const getStorageNodesColumns = (
7980
(vdisk) => vdisk.PDiskId === pDisk.PDiskId,
8081
);
8182

83+
const inactiveVdisks = vDisks?.filter(
84+
(vdisk) => groupId && vdisk.VDiskId?.GroupID !== Number(groupId),
85+
);
86+
8287
return (
8388
<div className={b('pdisks-item')} key={pDisk.PDiskId}>
84-
<PDisk data={pDisk} vDisks={vDisks} />
89+
<PDisk
90+
data={pDisk}
91+
vDisks={vDisks}
92+
inactiveVdisks={inactiveVdisks}
93+
/>
8594
</div>
8695
);
8796
})}
@@ -101,8 +110,9 @@ const getStorageNodesColumns = (
101110
export const getPreparedStorageNodesColumns = ({
102111
additionalNodesProps,
103112
database,
113+
groupId,
104114
}: GetStorageNodesColumnsParams) => {
105-
const rawColumns = getStorageNodesColumns(additionalNodesProps, database);
115+
const rawColumns = getStorageNodesColumns(additionalNodesProps, database, groupId);
106116

107117
const sortableColumns = rawColumns.map((column) => ({
108118
...column,

src/containers/Storage/StorageNodes/columns/hooks.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ export function useStorageNodesSelectedColumns({
1717
visibleEntities,
1818
database,
1919
additionalNodesProps,
20+
groupId,
2021
}: GetStorageNodesColumnsParams) {
2122
const columns = React.useMemo(() => {
22-
return getPreparedStorageNodesColumns({database, additionalNodesProps});
23-
}, [database, additionalNodesProps]);
23+
return getPreparedStorageNodesColumns({database, additionalNodesProps, groupId});
24+
}, [database, additionalNodesProps, groupId]);
2425

2526
const requiredColumns = React.useMemo(() => {
2627
if (visibleEntities === VISIBLE_ENTITIES.missing) {

src/containers/Storage/StorageNodes/columns/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ export interface GetStorageNodesColumnsParams {
1111
additionalNodesProps: AdditionalNodesProps | undefined;
1212
visibleEntities?: VisibleEntities;
1313
database?: string;
14+
groupId?: string;
1415
}

0 commit comments

Comments
 (0)