11import React from 'react' ;
22
33import { VDiskWithDonorsStack } from '../../../components/VDisk/VDiskWithDonorsStack' ;
4- import type { NodesMap } from '../../../types/store/nodesList' ;
54import { cn } from '../../../utils/cn' ;
65import { stringifyVdiskId } from '../../../utils/dataFormatters/dataFormatters' ;
76import { getPDiskId } from '../../../utils/disks/helpers' ;
87import type { PreparedVDisk } from '../../../utils/disks/types' ;
98import { PDisk } from '../PDisk' ;
9+ import { isVdiskActive } from '../utils' ;
10+ import type { VDiskViewContext } from '../utils' ;
1011
1112import './Disks.scss' ;
1213
1314const b = cn ( 'ydb-storage-disks' ) ;
1415
1516interface DisksProps {
1617 vDisks ?: PreparedVDisk [ ] ;
17- nodes ?: NodesMap ;
18+ viewContext ?: VDiskViewContext ;
1819}
1920
20- export function Disks ( { vDisks = [ ] , nodes } : DisksProps ) {
21+ export function Disks ( { vDisks = [ ] , viewContext } : DisksProps ) {
2122 const [ highlightedVDisk , setHighlightedVDisk ] = React . useState < string | undefined > ( ) ;
2223
2324 if ( ! vDisks . length ) {
@@ -27,44 +28,39 @@ export function Disks({vDisks = [], nodes}: DisksProps) {
2728 return (
2829 < div className = { b ( null ) } >
2930 < div className = { b ( 'vdisks-wrapper' ) } >
30- { vDisks ?. map ( ( vDisk ) => {
31- return (
32- < VDiskItem
33- key = { stringifyVdiskId ( vDisk . VDiskId ) }
34- vDisk = { vDisk }
35- nodes = { nodes }
36- highlightedVDisk = { highlightedVDisk }
37- setHighlightedVDisk = { setHighlightedVDisk }
38- />
39- ) ;
40- } ) }
31+ { vDisks ?. map ( ( vDisk ) => (
32+ < VDiskItem
33+ key = { stringifyVdiskId ( vDisk . VDiskId ) }
34+ vDisk = { vDisk }
35+ inactive = { ! isVdiskActive ( vDisk , viewContext ) }
36+ highlightedVDisk = { highlightedVDisk }
37+ setHighlightedVDisk = { setHighlightedVDisk }
38+ />
39+ ) ) }
4140 </ div >
4241
4342 < div className = { b ( 'pdisks-wrapper' ) } >
44- { vDisks ?. map ( ( vDisk ) => {
45- return (
46- < PDiskItem
47- key = { getPDiskId ( vDisk . NodeId , vDisk ?. PDisk ?. PDiskId ) }
48- vDisk = { vDisk }
49- nodes = { nodes }
50- highlightedVDisk = { highlightedVDisk }
51- setHighlightedVDisk = { setHighlightedVDisk }
52- />
53- ) ;
54- } ) }
43+ { vDisks ?. map ( ( vDisk ) => (
44+ < PDiskItem
45+ key = { getPDiskId ( vDisk . NodeId , vDisk ?. PDisk ?. PDiskId ) }
46+ vDisk = { vDisk }
47+ highlightedVDisk = { highlightedVDisk }
48+ setHighlightedVDisk = { setHighlightedVDisk }
49+ />
50+ ) ) }
5551 </ div >
5652 </ div >
5753 ) ;
5854}
5955
6056interface DisksItemProps {
61- nodes ?: NodesMap ;
6257 vDisk : PreparedVDisk ;
58+ inactive ?: boolean ;
6359 highlightedVDisk : string | undefined ;
6460 setHighlightedVDisk : ( id : string | undefined ) => void ;
6561}
6662
67- function VDiskItem ( { nodes , vDisk, highlightedVDisk, setHighlightedVDisk} : DisksItemProps ) {
63+ function VDiskItem ( { vDisk, highlightedVDisk, inactive , setHighlightedVDisk} : DisksItemProps ) {
6864 // Do not show PDisk popup for VDisk
6965 const vDiskToShow = { ...vDisk , PDisk : undefined } ;
7066
@@ -79,8 +75,8 @@ function VDiskItem({nodes, vDisk, highlightedVDisk, setHighlightedVDisk}: DisksI
7975 >
8076 < VDiskWithDonorsStack
8177 data = { vDiskToShow }
82- nodes = { nodes }
8378 compact
79+ inactive = { inactive }
8480 showPopup = { highlightedVDisk === vDiskId }
8581 onShowPopup = { ( ) => setHighlightedVDisk ( vDiskId ) }
8682 onHidePopup = { ( ) => setHighlightedVDisk ( undefined ) }
0 commit comments