Skip to content

Commit a970b28

Browse files
authored
Merge branch 'main' into astandrik.add-rows-limit-to-query-settings-1253
2 parents 5469b74 + d115989 commit a970b28

File tree

34 files changed

+644
-335
lines changed

34 files changed

+644
-335
lines changed

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,29 @@
11
# Changelog
22

3+
## [6.19.0](https://github.com/ydb-platform/ydb-embedded-ui/compare/v6.18.0...v6.19.0) (2024-09-13)
4+
5+
6+
### Features
7+
8+
* add storage/groups endpoint ([#1273](https://github.com/ydb-platform/ydb-embedded-ui/issues/1273)) ([42ee9a4](https://github.com/ydb-platform/ydb-embedded-ui/commit/42ee9a470632807650cfc0dd934f5b0a3d30c909))
9+
* **Diagnostics:** display db feature flags ([#1229](https://github.com/ydb-platform/ydb-embedded-ui/issues/1229)) ([182d803](https://github.com/ydb-platform/ydb-embedded-ui/commit/182d803205667794f16811de1be5ea685b1478e8))
10+
* **Header:** use cluster domain if cluster name is undefined ([#1271](https://github.com/ydb-platform/ydb-embedded-ui/issues/1271)) ([125d556](https://github.com/ydb-platform/ydb-embedded-ui/commit/125d556810a4013aee9a97bfde3db27f3e4e0b5b))
11+
* **Node:** enable nodes switch in storage tab on node page ([#1277](https://github.com/ydb-platform/ydb-embedded-ui/issues/1277)) ([07560ed](https://github.com/ydb-platform/ydb-embedded-ui/commit/07560ed8fca8cedbd473f629267522596d1ecb35))
12+
* **package:** export AsideNavigation ([#1262](https://github.com/ydb-platform/ydb-embedded-ui/issues/1262)) ([bb647f5](https://github.com/ydb-platform/ydb-embedded-ui/commit/bb647f5588a7ddcf11b3efa45067b79462159e97))
13+
* paginated table fixes ([#1265](https://github.com/ydb-platform/ydb-embedded-ui/issues/1265)) ([d0ef412](https://github.com/ydb-platform/ydb-embedded-ui/commit/d0ef412197f84542faff019e524855bf81989315))
14+
* use /db_clusters to get base cluster info ([#1251](https://github.com/ydb-platform/ydb-embedded-ui/issues/1251)) ([cd8c7dc](https://github.com/ydb-platform/ydb-embedded-ui/commit/cd8c7dc69364eedfcb490060ca1cdd2d0b4e1e77))
15+
* use groups handler for storage ([#1225](https://github.com/ydb-platform/ydb-embedded-ui/issues/1225)) ([45c0a1e](https://github.com/ydb-platform/ydb-embedded-ui/commit/45c0a1e8dc15eb4a404177a6f02e3e947d9a27e2))
16+
17+
18+
### Bug Fixes
19+
20+
* **autocomplete:** do not lose folder if its name is equals to database ([#1290](https://github.com/ydb-platform/ydb-embedded-ui/issues/1290)) ([f22bdba](https://github.com/ydb-platform/ydb-embedded-ui/commit/f22bdbab6493a07c6150d7a6a52b4064f62f58ac))
21+
* better retry timeout for traces ([#1263](https://github.com/ydb-platform/ydb-embedded-ui/issues/1263)) ([400a526](https://github.com/ydb-platform/ydb-embedded-ui/commit/400a526d9b587563eb977c33e70d0134f41d861d))
22+
* gh-pages commit history ([#1275](https://github.com/ydb-platform/ydb-embedded-ui/issues/1275)) ([f09ccd3](https://github.com/ydb-platform/ydb-embedded-ui/commit/f09ccd3d8fe7fa87b1b162ef386c6dd01f69eb4f))
23+
* **PaginatedStorageNodes:** increase row height ([#1282](https://github.com/ydb-platform/ydb-embedded-ui/issues/1282)) ([08e4308](https://github.com/ydb-platform/ydb-embedded-ui/commit/08e43089fd99ad762d1d6c0300c9c07e5c07dc00))
24+
* unnecessary background refresh on query page ([#1256](https://github.com/ydb-platform/ydb-embedded-ui/issues/1256)) ([04b4313](https://github.com/ydb-platform/ydb-embedded-ui/commit/04b431377e143c002426c39ceca713dbe14cd23e))
25+
* update alter table query template ([#1284](https://github.com/ydb-platform/ydb-embedded-ui/issues/1284)) ([4bf43af](https://github.com/ydb-platform/ydb-embedded-ui/commit/4bf43aff05acd1ab20f670e77b3bdd42c9213d42))
26+
327
## [6.18.0](https://github.com/ydb-platform/ydb-embedded-ui/compare/v6.17.2...v6.18.0) (2024-09-04)
428

529

config-overrides.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const path = require('path');
22

3+
const MiniCSSExtractPlugin = require('mini-css-extract-plugin');
34
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
4-
55
const srcRoot = path.resolve(__dirname, 'src');
66
const uiKitRoot = path.resolve(__dirname, 'node_modules/@gravity-ui/uikit');
77
const uiKitIconsRoot = path.resolve(__dirname, 'node_modules/@gravity-ui/icons');
@@ -34,6 +34,11 @@ module.exports = {
3434
}),
3535
);
3636

37+
const cssExtractPlugin = config.plugins.find((p) => p instanceof MiniCSSExtractPlugin);
38+
if (cssExtractPlugin) {
39+
cssExtractPlugin.options.ignoreOrder = true;
40+
}
41+
3742
return config;
3843
},
3944
jest: (config) => {

package-lock.json

Lines changed: 11 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ydb-embedded-ui",
3-
"version": "6.18.0",
3+
"version": "6.19.0",
44
"files": [
55
"dist"
66
],
@@ -149,6 +149,7 @@
149149
"husky": "^9.0.11",
150150
"jest-transform-css": "^6.0.1",
151151
"lint-staged": "^15.2.7",
152+
"mini-css-extract-plugin": "^2.9.1",
152153
"monaco-editor-webpack-plugin": "^7.1.0",
153154
"monaco-yql-languages": "^1.0.6",
154155
"npm-run-all": "^4.1.5",

src/components/CriticalActionDialog/CriticalActionDialog.tsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react';
22

33
import {CircleXmarkFill, TriangleExclamationFill} from '@gravity-ui/icons';
4-
import {Dialog, Icon} from '@gravity-ui/uikit';
4+
import {Checkbox, Dialog, Icon} from '@gravity-ui/uikit';
55

66
import type {IResponseError} from '../../types/api/error';
77
import {cn} from '../../utils/cn';
@@ -29,6 +29,7 @@ interface CriticalActionDialogProps<T> {
2929
text?: string;
3030
withRetry?: boolean;
3131
retryButtonText?: string;
32+
withCheckBox?: boolean;
3233
onClose: VoidFunction;
3334
onConfirm: (isRetry?: boolean) => Promise<T>;
3435
onConfirmActionSuccess: VoidFunction;
@@ -41,13 +42,15 @@ export function CriticalActionDialog<T>({
4142
text,
4243
withRetry,
4344
retryButtonText,
45+
withCheckBox,
4446
onClose,
4547
onConfirm,
4648
onConfirmActionSuccess,
4749
onConfirmActionError,
4850
}: CriticalActionDialogProps<T>) {
4951
const [isLoading, setIsLoading] = React.useState(false);
5052
const [error, setError] = React.useState<IResponseError>();
53+
const [checkBoxChecked, setCheckBoxChecked] = React.useState<boolean>(false);
5154

5255
const onApply = async (isRetry?: boolean) => {
5356
setIsLoading(true);
@@ -68,6 +71,19 @@ export function CriticalActionDialog<T>({
6871

6972
const handleTransitionExited = () => {
7073
setError(undefined);
74+
setCheckBoxChecked(false);
75+
};
76+
77+
const renderCheckBox = () => {
78+
if (withCheckBox) {
79+
return (
80+
<Checkbox checked={checkBoxChecked} onUpdate={setCheckBoxChecked}>
81+
{criticalActionDialogKeyset('checkbox-text')}
82+
</Checkbox>
83+
);
84+
}
85+
86+
return null;
7187
};
7288

7389
const renderDialogContent = () => {
@@ -111,14 +127,16 @@ export function CriticalActionDialog<T>({
111127
</span>
112128
{text}
113129
</div>
130+
131+
{renderCheckBox()}
114132
</Dialog.Body>
115133

116134
<Dialog.Footer
117135
loading={isLoading}
118136
preset="default"
119137
textButtonApply={criticalActionDialogKeyset('button-confirm')}
120138
textButtonCancel={criticalActionDialogKeyset('button-cancel')}
121-
propsButtonApply={{type: 'submit'}}
139+
propsButtonApply={{type: 'submit', disabled: withCheckBox && !checkBoxChecked}}
122140
onClickButtonCancel={onClose}
123141
onClickButtonApply={() => onApply()}
124142
/>

src/components/CriticalActionDialog/i18n/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@
55
"button-confirm": "Confirm",
66
"button-retry": "Retry",
77
"button-cancel": "Cancel",
8-
"button-close": "Close"
8+
"button-close": "Close",
9+
10+
"checkbox-text": "I understand what I'm doing"
911
}

src/components/DiskStateProgressBar/DiskStateProgressBar.scss

Lines changed: 7 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1+
@import '../../styles/mixins';
2+
13
.storage-disk-progress-bar {
24
$block: &;
35

46
$border-width: 1px;
57
$outer-border-radius: 4px;
68
$inner-border-radius: $outer-border-radius - $border-width;
79

8-
--progress-bar-border-color: var(--g-color-base-misc-heavy);
9-
--progress-bar-background-color: var(--g-color-base-misc-light);
10-
--progress-bar-fill-color: var(--g-color-base-misc-medium);
1110
--progress-bar-full-height: var(--g-text-body-3-line-height);
1211
--progress-bar-compact-height: 12px;
1312

@@ -20,9 +19,10 @@
2019
text-align: center;
2120

2221
color: var(--g-color-text-primary);
23-
border: $border-width solid var(--progress-bar-border-color);
22+
border: $border-width solid var(--entity-state-border-color);
2423
border-radius: $outer-border-radius;
25-
background-color: var(--progress-bar-background-color);
24+
background-color: var(--entity-state-background-color);
25+
@include entity-state-colors();
2626

2727
&_compact {
2828
min-width: 0;
@@ -31,35 +31,6 @@
3131
border-radius: 2px;
3232
}
3333

34-
&_green {
35-
--progress-bar-border-color: var(--g-color-base-positive-heavy);
36-
--progress-bar-background-color: var(--g-color-base-positive-light);
37-
--progress-bar-fill-color: var(--g-color-base-positive-medium);
38-
}
39-
40-
&_blue {
41-
--progress-bar-border-color: var(--g-color-base-info-heavy);
42-
--progress-bar-background-color: var(--g-color-base-info-light);
43-
--progress-bar-fill-color: var(--g-color-base-info-medium);
44-
}
45-
46-
&_yellow {
47-
--progress-bar-border-color: var(--g-color-base-warning-heavy);
48-
--progress-bar-background-color: var(--g-color-base-yellow-light);
49-
--progress-bar-fill-color: var(--g-color-base-yellow-medium);
50-
}
51-
52-
&_orange {
53-
--progress-bar-border-color: var(--ydb-color-status-orange);
54-
--progress-bar-background-color: var(--g-color-base-warning-light);
55-
--progress-bar-fill-color: var(--g-color-base-warning-medium);
56-
}
57-
&_red {
58-
--progress-bar-border-color: var(--g-color-base-danger-heavy);
59-
--progress-bar-background-color: var(--g-color-base-danger-light);
60-
--progress-bar-fill-color: var(--g-color-base-danger-medium);
61-
}
62-
6334
&_faded {
6435
background-color: unset;
6536
}
@@ -78,11 +49,11 @@
7849
height: 100%;
7950

8051
border-radius: $inner-border-radius 0 0 $inner-border-radius;
81-
background-color: var(--progress-bar-fill-color);
52+
background-color: var(--entity-state-fill-color);
8253

8354
&_faded {
8455
// Bg color is light variant, use it to make bar less bright
85-
background-color: var(--progress-bar-background-color);
56+
background-color: var(--entity-state-background-color);
8657
}
8758

8859
&_compact {

src/components/Tag/Tag.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import React from 'react';
2+
13
import {cn} from '../../utils/cn';
24

35
import './Tag.scss';
@@ -7,7 +9,7 @@ const b = cn('tag');
79
export type TagType = 'blue';
810

911
interface TagProps {
10-
text: string;
12+
text: React.ReactNode;
1113
type?: TagType;
1214
}
1315

src/components/Tags/Tags.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import React from 'react';
2+
13
import {cn} from '../../utils/cn';
24
import type {TagType} from '../Tag';
35
import {Tag} from '../Tag';
@@ -7,7 +9,7 @@ import './Tags.scss';
79
const b = cn('tags');
810

911
interface TagsProps {
10-
tags: string[];
12+
tags: React.ReactNode[];
1113
tagsType?: TagType;
1214
className?: string;
1315
}

src/containers/Cluster/Cluster.tsx

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ import {AutoRefreshControl} from '../../components/AutoRefreshControl/AutoRefres
99
import {EntityStatus} from '../../components/EntityStatus/EntityStatus';
1010
import {InternalLink} from '../../components/InternalLink';
1111
import routes, {getLocationObjectFromHref} from '../../routes';
12-
import {clusterApi, updateDefaultClusterTab} from '../../store/reducers/cluster/cluster';
12+
import {
13+
clusterApi,
14+
selectClusterTitle,
15+
updateDefaultClusterTab,
16+
} from '../../store/reducers/cluster/cluster';
1317
import {setHeaderBreadcrumbs} from '../../store/reducers/header/header';
1418
import type {
1519
AdditionalClusterProps,
@@ -18,7 +22,6 @@ import type {
1822
AdditionalVersionsProps,
1923
} from '../../types/additionalProps';
2024
import {cn} from '../../utils/cn';
21-
import {CLUSTER_DEFAULT_TITLE} from '../../utils/constants';
2225
import {useTypedDispatch, useTypedSelector} from '../../utils/hooks';
2326
import {parseVersionsToVersionToColorMap} from '../../utils/versions';
2427
import {NodesWrapper} from '../Nodes/NodesWrapper';
@@ -58,6 +61,10 @@ export function Cluster({
5861
backend: StringParam,
5962
});
6063

64+
const clusterTitle = useTypedSelector((state) =>
65+
selectClusterTitle(state, clusterName ?? undefined),
66+
);
67+
6168
const {
6269
data: {clusterData: cluster = {}, groupsStats} = {},
6370
isLoading: infoLoading,
@@ -66,11 +73,9 @@ export function Cluster({
6673

6774
const clusterError = error && typeof error === 'object' ? error : undefined;
6875

69-
const {Name} = cluster;
70-
7176
React.useEffect(() => {
7277
dispatch(setHeaderBreadcrumbs('cluster', {}));
73-
}, [dispatch, Name]);
78+
}, [dispatch]);
7479

7580
const versionToColor = React.useMemo(() => {
7681
if (additionalVersionsProps?.getVersionToColorMap) {
@@ -88,13 +93,12 @@ export function Cluster({
8893
<EntityStatus
8994
size="m"
9095
status={cluster?.Overall}
91-
name={cluster?.Name ?? CLUSTER_DEFAULT_TITLE}
96+
name={clusterTitle}
9297
className={b('title')}
9398
/>
9499
);
95100
};
96101

97-
const clusterTitle = cluster?.Name ?? clusterName ?? CLUSTER_DEFAULT_TITLE;
98102
const activeTab = React.useMemo(
99103
() => clusterTabs.find(({id}) => id === activeTabId),
100104
[activeTabId],

0 commit comments

Comments
 (0)