Skip to content

feat(storage): update vdisk donor/replica visuals and tooltips#3110

Merged
DaryaVorontsova merged 22 commits into
mainfrom
feat/update-vdisk-ui
Nov 27, 2025
Merged

feat(storage): update vdisk donor/replica visuals and tooltips#3110
DaryaVorontsova merged 22 commits into
mainfrom
feat/update-vdisk-ui

Conversation

@DaryaVorontsova

@DaryaVorontsova DaryaVorontsova commented Nov 19, 2025

Copy link
Copy Markdown
Contributor

Stand with mocked data: https://nda.ya.ru/t/7XDsYG1w7NHyC8

CI Results

Test Status: ⚠️ FLAKY

📊 Full Report

Total Passed Failed Flaky Skipped
378 374 0 2 2
Test Changes Summary ⏭️2

⏭️ Skipped Tests (2)

  1. Scroll to row, get shareable link, navigate to URL and verify row is scrolled into view (tenant/diagnostics/tabs/queries.test.ts)
  2. Copy result button copies to clipboard (tenant/queryEditor/queryEditor.test.ts)

Bundle Size: 🔽

Current: 66.02 MB | Main: 66.10 MB
Diff: 0.07 MB (-0.11%)

✅ Bundle size decreased.

ℹ️ CI Information
  • Test recordings for failed tests are available in the full report.
  • Bundle size is measured for the entire 'dist' directory.
  • 📊 indicates links to detailed reports.
  • 🔺 indicates increase, 🔽 decrease, and ✅ no change in bundle size.

@DaryaVorontsova

Copy link
Copy Markdown
Contributor Author

#2910

background-image: repeating-linear-gradient(
135deg,
transparent 0,
transparent 4px,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lest use variables like
--stripe-width: 4px;
--stripe-step: 8px;

const color = severity !== undefined && getSeverityColor(severity);
if (color) {
mods[color.toLocaleLowerCase()] = true;
mods[color.toLowerCase()] = true;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why did you decide to change it?

}

&_striped {
overflow: hidden;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does we really need this prop?

[EFlag.Grey]: 'unknown',
[EFlag.Orange]: 'orange',
[EFlag.Yellow]: 'warning',
[EFlag.DarkGrey]: 'unknown',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{headerLabels.map((label, index) => (
<Label key={index} theme={label.theme}>
<Flex gap="1" alignItems="center">
{label.icon && <Icon data={label.icon} size={12} />}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need to do this layout. You may put icon as a property of Label component (take a look at its api https://preview.gravity-ui.com/uikit/?path=/docs/components-data-display-label--docs&globals=theme:dark)

{vDiskPopupKeyset('label_vdisk')} {Recipient.StringifiedId}
</InternalLink>
) : (
<div>{Recipient.StringifiedId}</div>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we really need this dummy wrapper?

}

const stateTheme =
stateSeverity !== undefined ? NUMERIC_SEVERITY_LABEL_THEME[stateSeverity] : undefined;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isNil seems to fit here and farther is such situations


const {VDiskState, DonorMode, Replicated} = data;

if (!VDiskState) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are we sure we want to render stub? maybe show no labels at all? (discuss it with Alina pls)

Orange: 2,
Red: 1,
Grey: 0,
DarkGrey: -1,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no darkgray from api

Comment thread src/store/reducers/storage/utils.ts Outdated
} from '../../../types/api/storage';
import {EVDiskState} from '../../../types/api/vdisk';
import type {TVDiskStateInfo} from '../../../types/api/vdisk';
import {valueIsDefined} from '../../../utils';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please use isNil from lodash instead

name: vDiskPopupKeyset('label_donor'),
content: (
<Flex direction="column">
{Donors.map((donor) => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's move this representaion into separate component (in the same file VDiskPopup). It seems it has same logic for donor and for recipient

margin-bottom: var(--g-spacing-3);
}

.ydb-definition-list__properties-list {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

}

&_compact {
.ydb-definition-list__title {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you may use here variable for ydb-definition-list. Search for $block in scss files!

Comment thread src/containers/Storage/Disks/Disks.tsx Outdated
inactive,
setHighlightedVDisk,
unavailableVDiskWidth,
withIcon = false,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here and other places for default for withIcon. It seems it is redundant, cause undefined is falthy value

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

28 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

28 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment thread src/components/PDiskPopup/i18n/en.json Outdated
@@ -0,0 +1,14 @@
{
"context_not-available": "not available",
"label_vdisk": "PDisk",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

syntax: incorrect label key - should be label_pdisk not label_vdisk

Suggested change
"label_vdisk": "PDisk",
"label_pdisk": "PDisk",
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/components/PDiskPopup/i18n/en.json
Line: 3:3

Comment:
**syntax:** incorrect label key - should be `label_pdisk` not `label_vdisk`

```suggestion
  "label_pdisk": "PDisk",
```

How can I resolve this? If you propose a fix, please make it concise.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

28 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

name: pDiskPopupKeyset('label_available'),
content: (
<React.Fragment>
<Progress

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

discussed to remove progress here

Comment thread src/components/VDisk/VDisk.scss Outdated
border-radius: 4px; // to match interactive area with disk shape
}

&__vdisk-icon {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it seems this class is not used

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

28 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment thread src/components/VDiskPopup/VDiskPopup.tsx

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

27 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment thread src/components/VDiskPopup/VDiskPopup.tsx
@DaryaVorontsova
DaryaVorontsova added this pull request to the merge queue Nov 27, 2025
Merged via the queue into main with commit fa0abe3 Nov 27, 2025
9 checks passed
@DaryaVorontsova
DaryaVorontsova deleted the feat/update-vdisk-ui branch November 27, 2025 13:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants