Skip to content

Commit 9b91080

Browse files
authored
fix(Settings): do not display balancer setting in embedded version (#990)
1 parent 1077e2e commit 9b91080

File tree

10 files changed

+35
-41
lines changed

10 files changed

+35
-41
lines changed

src/containers/App/App.tsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {ErrorBoundary} from '../../components/ErrorBoundary/ErrorBoundary';
99
import type {RootState} from '../../store';
1010
import {Navigation} from '../AsideNavigation/Navigation';
1111
import ReduxTooltip from '../ReduxTooltip/ReduxTooltip';
12-
import {settings} from '../UserSettings/settings';
12+
import {getUserSettings} from '../UserSettings/settings';
1313
import type {YDBEmbeddedUISettings} from '../UserSettings/settings';
1414

1515
import ContentWrapper, {Content} from './Content';
@@ -25,7 +25,13 @@ export interface AppProps {
2525
children?: React.ReactNode;
2626
}
2727

28-
function App({store, history, singleClusterMode, children, userSettings = settings}: AppProps) {
28+
function App({
29+
store,
30+
history,
31+
singleClusterMode,
32+
children,
33+
userSettings = getUserSettings({singleClusterMode}),
34+
}: AppProps) {
2935
return (
3036
<Providers store={store} history={history}>
3137
<Helmet defaultTitle="YDB Monitoring" titleTemplate="%s — YDB Monitoring" />

src/containers/AppWithClusters/AppWithClusters.tsx

+1-12
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,17 @@ import React from 'react';
33
import type {Store} from '@reduxjs/toolkit';
44
import type {History} from 'history';
55

6-
import {USE_CLUSTER_BALANCER_AS_BACKEND_KEY} from '../../utils/constants';
76
import type {GetMonitoringClusterLink, GetMonitoringLink} from '../../utils/monitoring';
87
import {
98
getMonitoringClusterLink as getMonitoringClusterLinkDefault,
109
getMonitoringLink as getMonitoringLinkDefault,
1110
} from '../../utils/monitoring';
1211
import {App, AppSlots} from '../App';
1312
import type {YDBEmbeddedUISettings} from '../UserSettings/settings';
14-
import {settings} from '../UserSettings/settings';
1513

1614
import {ExtendedCluster} from './ExtendedCluster/ExtendedCluster';
1715
import {ExtendedNode} from './ExtendedNode/ExtendedNode';
1816
import {ExtendedTenant} from './ExtendedTenant/ExtendedTenant';
19-
import i18n from './i18n';
2017

2118
export interface AppWithClustersProps {
2219
store: Store;
@@ -27,20 +24,12 @@ export interface AppWithClustersProps {
2724
children?: React.ReactNode;
2825
}
2926

30-
const defaultUserSettings = settings;
31-
32-
defaultUserSettings[2].sections[0].settings.push({
33-
title: i18n('settings.useClusterBalancerAsBackend.title'),
34-
description: i18n('settings.useClusterBalancerAsBackend.popover'),
35-
settingKey: USE_CLUSTER_BALANCER_AS_BACKEND_KEY,
36-
});
37-
3827
export function AppWithClusters({
3928
store,
4029
history,
4130
getMonitoringLink = getMonitoringLinkDefault,
4231
getMonitoringClusterLink = getMonitoringClusterLinkDefault,
43-
userSettings = defaultUserSettings,
32+
userSettings,
4433
children,
4534
}: AppWithClustersProps) {
4635
return (

src/containers/AppWithClusters/i18n/en.json

-4
This file was deleted.

src/containers/AppWithClusters/i18n/index.ts

-8
This file was deleted.

src/containers/AppWithClusters/i18n/ru.json

-4
This file was deleted.

src/containers/AsideNavigation/Navigation.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type {YDBEmbeddedUISettings} from '../UserSettings/settings';
55
import {YdbInternalUser} from './YdbInternalUser/YdbInternalUser';
66

77
interface NavigationProps {
8-
userSettings?: YDBEmbeddedUISettings;
8+
userSettings: YDBEmbeddedUISettings;
99
children: React.ReactNode;
1010
}
1111
export function Navigation({children, userSettings}: NavigationProps) {

src/containers/UserSettings/UserSettings.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ import {Settings} from '@gravity-ui/navigation';
22

33
import {Setting} from './Setting';
44
import type {YDBEmbeddedUISettings} from './settings';
5-
import {settings} from './settings';
65

76
interface UserSettingsProps {
8-
settings?: YDBEmbeddedUISettings;
7+
settings: YDBEmbeddedUISettings;
98
}
109

11-
export const UserSettings = ({settings: userSettings = settings}: UserSettingsProps) => {
10+
export const UserSettings = ({settings: userSettings}: UserSettingsProps) => {
1211
return (
1312
<Settings>
1413
{userSettings.map((page) => {

src/containers/UserSettings/i18n/en.json

+3
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,8 @@
4040
"settings.queryUseMultiSchema.title": "Allow queries with multiple result sets",
4141
"settings.queryUseMultiSchema.popover": "Use 'multi' schema for queries. It enables queries with multiple result sets. It returns nothing on versions 23-3 and older",
4242

43+
"settings.useClusterBalancerAsBackend.title": "Use cluster balancer as backend",
44+
"settings.useClusterBalancerAsBackend.popover": "By default random cluster node is used as backend. It causes saved links to become invalid after some time, when node is restarted. Using balancer as backend fixes it",
45+
4346
"settings.about.interfaceVersionInfoField.title": "Interface version"
4447
}

src/containers/UserSettings/settings.tsx

+19-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {CircleInfo, Flask, PencilToSquare, StarFill} from '@gravity-ui/icons';
22
import type {IconProps} from '@gravity-ui/uikit';
3+
import {createNextState} from '@reduxjs/toolkit';
34

45
import {
56
AUTOCOMPLETE_ON_ENTER,
@@ -10,6 +11,7 @@ import {
1011
QUERY_USE_MULTI_SCHEMA_KEY,
1112
THEME_KEY,
1213
USE_BACKEND_PARAMS_FOR_TABLES_KEY,
14+
USE_CLUSTER_BALANCER_AS_BACKEND_KEY,
1315
USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY,
1416
} from '../../utils/constants';
1517
import {Lang, defaultLang} from '../../utils/i18n';
@@ -109,6 +111,12 @@ export const queryUseMultiSchemaSetting: SettingProps = {
109111
description: i18n('settings.queryUseMultiSchema.popover'),
110112
};
111113

114+
export const useClusterBalancerAsBackendSetting: SettingProps = {
115+
settingKey: USE_CLUSTER_BALANCER_AS_BACKEND_KEY,
116+
title: i18n('settings.useClusterBalancerAsBackend.title'),
117+
description: i18n('settings.useClusterBalancerAsBackend.popover'),
118+
};
119+
112120
export const enableAutocompleteSetting: SettingProps = {
113121
settingKey: ENABLE_AUTOCOMPLETE,
114122
title: i18n('settings.editor.autocomplete.title'),
@@ -175,9 +183,14 @@ export const aboutPage: SettingsPage = {
175183
sections: [aboutSettingsSection],
176184
};
177185

178-
export const settings: YDBEmbeddedUISettings = [
179-
generalPage,
180-
editorPage,
181-
experimentsPage,
182-
aboutPage,
183-
];
186+
export function getUserSettings({singleClusterMode}: {singleClusterMode: boolean}) {
187+
const experiments = singleClusterMode
188+
? experimentsPage
189+
: createNextState(experimentsPage, (draft) => {
190+
draft.sections[0].settings.push(useClusterBalancerAsBackendSetting);
191+
});
192+
193+
const settings: YDBEmbeddedUISettings = [generalPage, editorPage, experiments, aboutPage];
194+
195+
return settings;
196+
}

src/lib.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export {default as appRoutes} from './routes';
1010

1111
export {createApi, YdbEmbeddedAPI, YdbWebVersionAPI} from './services/api';
1212
export {settingsManager} from './services/settings';
13-
export {settings as userSettings} from './containers/UserSettings/settings';
13+
export {getUserSettings} from './containers/UserSettings/settings';
1414
export {setSettingValue, getSettingValue} from './store/reducers/settings/settings';
1515

1616
export {componentsRegistry} from './components/ComponentsProvider/componentsRegistry';

0 commit comments

Comments
 (0)