Skip to content

Commit f08fcf1

Browse files
fix: simplify nodes pdisks svg rendering
1 parent 363d5da commit f08fcf1

13 files changed

Lines changed: 31 additions & 358 deletions

File tree

‎src/containers/Configs/components/Startup/Startup.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {useThemeValue} from '@gravity-ui/uikit';
2+
import MonacoEditor from 'react-monaco-editor';
23

34
import {ResponseError} from '../../../../components/Errors/ResponseError';
45
import {LoaderWrapper} from '../../../../components/LoaderWrapper/LoaderWrapper';
5-
import {MonacoEditor} from '../../../../components/MonacoEditor/MonacoEditor';
66
import {configsApi} from '../../../../store/reducers/configs';
77
import {useAutoRefreshInterval} from '../../../../utils/hooks/useAutoRefreshInterval';
88

‎src/containers/Storage/PDisk/PDiskSvg.tsx‎

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,8 @@ interface PDiskSvgProps {
9090
viewContext?: StorageViewContext;
9191
width: number;
9292
inactive?: boolean;
93-
delayClose?: number;
9493
activeDiskKey?: string;
95-
setActiveDiskKey?: (id?: string) => void;
94+
setActiveDiskKey: (id?: string) => void;
9695
inverted?: boolean;
9796
}
9897

@@ -403,7 +402,6 @@ export function PDiskSvg({
403402
viewContext,
404403
width,
405404
inactive,
406-
delayClose = DISKS_POPUP_DEBOUNCE_TIMEOUT,
407405
activeDiskKey,
408406
setActiveDiskKey,
409407
inverted,
@@ -413,9 +411,7 @@ export function PDiskSvg({
413411
const anchorRef = React.useRef<HTMLDivElement>(null);
414412
const popupContentRef = React.useRef<HTMLDivElement>(null);
415413
const patternIdPrefix = React.useId().replace(/:/g, '');
416-
const [innerActiveDiskKey, setInnerActiveDiskKey] = React.useState<string | undefined>();
417414
const [isPopupPositionReady, setIsPopupPositionReady] = React.useState(false);
418-
const resolvedActiveDiskKey = setActiveDiskKey ? activeDiskKey : innerActiveDiskKey;
419415

420416
const vDiskAreas = React.useMemo(
421417
() => getVDiskAreas({vDisks, viewContext, width}),
@@ -427,16 +423,16 @@ export function PDiskSvg({
427423
);
428424
const vDiskPaths = React.useMemo(() => getVDiskPaths(vDiskAreas), [vDiskAreas]);
429425
const activeArea = React.useMemo<DiskArea | undefined>(() => {
430-
if (!resolvedActiveDiskKey) {
426+
if (!activeDiskKey) {
431427
return undefined;
432428
}
433429

434-
if (pDiskArea.key === resolvedActiveDiskKey) {
430+
if (pDiskArea.key === activeDiskKey) {
435431
return pDiskArea;
436432
}
437433

438-
return vDiskAreas.find((area) => area.key === resolvedActiveDiskKey);
439-
}, [pDiskArea, resolvedActiveDiskKey, vDiskAreas]);
434+
return vDiskAreas.find((area) => area.key === activeDiskKey);
435+
}, [activeDiskKey, pDiskArea, vDiskAreas]);
440436
const hasActiveArea = Boolean(activeArea);
441437
const activePath = React.useMemo(() => {
442438
if (!activeArea) {
@@ -453,24 +449,13 @@ export function PDiskSvg({
453449
});
454450
}, [activeArea, getVDiskLink]);
455451

456-
const setActiveDisk = React.useCallback(
457-
(key?: string) => {
458-
if (setActiveDiskKey) {
459-
setActiveDiskKey(key);
460-
} else {
461-
setInnerActiveDiskKey(key);
462-
}
463-
},
464-
[setActiveDiskKey],
465-
);
466-
467452
const closePopup = React.useCallback(() => {
468-
setActiveDisk(undefined);
469-
}, [setActiveDisk]);
453+
setActiveDiskKey(undefined);
454+
}, [setActiveDiskKey]);
470455

471456
const debouncedClosePopup = React.useMemo(
472-
() => debounce(closePopup, delayClose),
473-
[closePopup, delayClose],
457+
() => debounce(closePopup, DISKS_POPUP_DEBOUNCE_TIMEOUT),
458+
[closePopup],
474459
);
475460

476461
React.useEffect(() => {
@@ -539,14 +524,14 @@ export function PDiskSvg({
539524
}
540525

541526
debouncedClosePopup.cancel();
542-
if (area.key === resolvedActiveDiskKey) {
527+
if (area.key === activeDiskKey) {
543528
return;
544529
}
545530

546531
closeOtherPopups(patternIdPrefix);
547-
setActiveDisk(area.key);
532+
setActiveDiskKey(area.key);
548533
},
549-
[debouncedClosePopup, patternIdPrefix, resolvedActiveDiskKey, setActiveDisk],
534+
[activeDiskKey, debouncedClosePopup, patternIdPrefix, setActiveDiskKey],
550535
);
551536

552537
const handleMouseMove = React.useCallback(

‎src/containers/Storage/PDisks/PDisks.tsx‎

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,25 @@ import React from 'react';
22

33
import {cn} from '../../../utils/cn';
44
import type {PreparedPDisk, PreparedVDisk} from '../../../utils/disks/types';
5-
import {PDisk} from '../PDisk/';
5+
import {PDiskSvg} from '../PDisk/PDiskSvg';
66
import type {StorageViewContext} from '../types';
77
import {isPdiskActive} from '../utils';
88

99
import './PDisks.scss';
1010

1111
const b = cn('ydb-storage-pdisks');
12+
const PDISK_MIN_WIDTH = 165;
1213

1314
interface PDisksProps {
1415
pDisks?: PreparedPDisk[];
1516
vDisks?: PreparedVDisk[];
1617
viewContext?: StorageViewContext;
1718
pDiskWidth?: number;
19+
inverted?: boolean;
1820
}
1921

20-
export function PDisks({pDisks = [], vDisks = [], viewContext, pDiskWidth}: PDisksProps) {
21-
const [highlightedDisk, setHighlightedDisk] = React.useState<string | undefined>();
22+
export function PDisks({pDisks = [], vDisks = [], viewContext, pDiskWidth, inverted}: PDisksProps) {
23+
const [activeDiskKey, setActiveDiskKey] = React.useState<string | undefined>();
2224

2325
if (!pDisks.length) {
2426
return null;
@@ -31,22 +33,17 @@ export function PDisks({pDisks = [], vDisks = [], viewContext, pDiskWidth}: PDis
3133

3234
const relatedVDisks = vDisks.filter((vdisk) => vdisk.PDiskId === pDisk.PDiskId);
3335

34-
const highlighted = highlightedDisk === id;
35-
3636
return (
3737
<div className={b('pdisks-item')} key={id}>
38-
<PDisk
38+
<PDiskSvg
3939
data={pDisk}
4040
inactive={!isPdiskActive(pDisk, viewContext)}
4141
vDisks={relatedVDisks}
4242
viewContext={viewContext}
43-
width={pDiskWidth}
44-
showPopup={highlighted}
45-
onShowPopup={() => setHighlightedDisk(id)}
46-
onHidePopup={() => setHighlightedDisk(undefined)}
47-
highlighted={highlighted}
48-
highlightedDisk={highlightedDisk}
49-
setHighlightedDisk={setHighlightedDisk}
43+
width={pDiskWidth ?? PDISK_MIN_WIDTH}
44+
inverted={inverted}
45+
activeDiskKey={activeDiskKey}
46+
setActiveDiskKey={setActiveDiskKey}
5047
/>
5148
</div>
5249
);

‎src/containers/Storage/PDisks/PDisksCompact.scss‎

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)