Skip to content

Commit 8e1587b

Browse files
Anton StandrikAnton Standrik
authored andcommitted
fix: make plan to svg more comprehensive
1 parent fd60b9d commit 8e1587b

File tree

6 files changed

+37
-21
lines changed

6 files changed

+37
-21
lines changed

src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.tsx

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

3-
import {Dialog, Link as ExternalLink, Flex, TextInput} from '@gravity-ui/uikit';
3+
import {Dialog, Link as ExternalLink, Flex, TextInput, Tooltip} from '@gravity-ui/uikit';
44
import {zodResolver} from '@hookform/resolvers/zod';
55
import {Controller, useForm} from 'react-hook-form';
66

@@ -11,8 +11,10 @@ import {
1111
} from '../../../../store/reducers/queryActions/queryActions';
1212
import type {QuerySettings} from '../../../../types/store/query';
1313
import {cn} from '../../../../utils/cn';
14+
import {USE_SHOW_PLAN_SVG_KEY} from '../../../../utils/constants';
1415
import {
1516
useQueryExecutionSettings,
17+
useSetting,
1618
useTypedDispatch,
1719
useTypedSelector,
1820
} from '../../../../utils/hooks';
@@ -77,6 +79,7 @@ function QuerySettingsForm({initialValues, onSubmit, onClose}: QuerySettingsForm
7779
resolver: zodResolver(querySettingsValidationSchema),
7880
});
7981

82+
const [useShowPlanToSvg] = useSetting<boolean>(USE_SHOW_PLAN_SVG_KEY);
8083
const enableTracingLevel = useTracingLevelOptionAvailable();
8184

8285
return (
@@ -178,22 +181,29 @@ function QuerySettingsForm({initialValues, onSubmit, onClose}: QuerySettingsForm
178181
<label htmlFor="statisticsMode" className={b('field-title')}>
179182
{QUERY_SETTINGS_FIELD_SETTINGS.statisticsMode.title}
180183
</label>
181-
<div className={b('control-wrapper', {statisticsMode: true})}>
182-
<Controller
183-
name="statisticsMode"
184-
control={control}
185-
render={({field}) => (
186-
<QuerySettingsSelect
187-
id="statisticsMode"
188-
setting={field.value}
189-
onUpdateSetting={field.onChange}
190-
settingOptions={
191-
QUERY_SETTINGS_FIELD_SETTINGS.statisticsMode.options
192-
}
193-
/>
194-
)}
195-
/>
196-
</div>
184+
<Tooltip
185+
disabled={!useShowPlanToSvg}
186+
openDelay={0}
187+
content={i18n('tooltip_plan-to-svg-statistics')}
188+
>
189+
<div className={b('control-wrapper', {statisticsMode: true})}>
190+
<Controller
191+
name="statisticsMode"
192+
control={control}
193+
render={({field}) => (
194+
<QuerySettingsSelect
195+
id="statisticsMode"
196+
disabled={useShowPlanToSvg}
197+
setting={field.value}
198+
onUpdateSetting={field.onChange}
199+
settingOptions={
200+
QUERY_SETTINGS_FIELD_SETTINGS.statisticsMode.options
201+
}
202+
/>
203+
)}
204+
/>
205+
</div>
206+
</Tooltip>
197207
</Flex>
198208
<Flex direction="row" alignItems="flex-start" className={b('dialog-row')}>
199209
<label htmlFor="limitRows" className={b('field-title')}>

src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsSelect.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ interface QuerySettingsSelectProps<T extends SelectType> {
2626
id?: string;
2727
setting: T;
2828
settingOptions: QuerySettingSelectOption<T>[];
29+
disabled?: boolean;
2930
onUpdateSetting: (mode: T) => void;
3031
}
3132

@@ -34,6 +35,7 @@ export function QuerySettingsSelect<T extends SelectType>(props: QuerySettingsSe
3435
<div className={b('selector')}>
3536
<Select<T>
3637
id={props.id}
38+
disabled={props.disabled}
3739
options={props.settingOptions}
3840
value={[props.setting]}
3941
onUpdate={(value) => {

src/containers/Tenant/Query/QuerySettingsDialog/i18n/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"form.tracing-level": "Tracing level",
88
"form.limit-rows": "Limit rows",
99
"button-done": "Save",
10+
"tooltip_plan-to-svg-statistics": "Statistics option is set to \"Full\" due to the enabled \"Execution plan\" experiment.\n To disable it, go to the \"Experiments\" section in the user settings.",
1011
"button-cancel": "Cancel",
1112
"form.timeout.seconds": "sec",
1213
"form.validation.timeout": "Must be positive",

src/containers/Tenant/Query/QuerySettingsDialog/i18n/ru.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"form.statistics-mode": "Режим сбора статистики",
77
"form.tracing-level": "Tracing level",
88
"form.limit-rows": "Лимит строк",
9+
"tooltip_plan-to-svg-statistics": "Опция статистики установлена в значение \"Full\" из-за включенного эксперимента \"Execution plan\".\n Чтобы отключить его, перейдите в раздел \"Experiments\" в настройках пользователя.",
910
"button-done": "Готово",
1011
"button-cancel": "Отменить",
1112
"form.timeout.seconds": "сек",

src/containers/UserSettings/i18n/en.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535

3636
"settings.enableNetworkTable.title": "Enable network table",
3737

38-
"settings.useShowPlanToSvg.title": "Plan to svg",
39-
"settings.useShowPlanToSvg.description": " Show \"Plan to svg\" button in query result widow (if query was executed with full stats option).",
38+
"settings.useShowPlanToSvg.title": "Execution plan",
39+
"settings.useShowPlanToSvg.description": " Show \"Execution plan\" button in query result widow. Opens svg with execution plan in a new window.",
4040

4141
"settings.showDomainDatabase.title": "Show domain database",
4242

src/utils/hooks/useQueryExecutionSettings.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {useTracingLevelOptionAvailable} from '../../store/reducers/capabilities/hooks';
22
import type {QuerySettings} from '../../types/store/query';
3-
import {QUERY_EXECUTION_SETTINGS_KEY} from '../constants';
4-
import {DEFAULT_QUERY_SETTINGS, querySettingsRestoreSchema} from '../query';
3+
import {QUERY_EXECUTION_SETTINGS_KEY, USE_SHOW_PLAN_SVG_KEY} from '../constants';
4+
import {DEFAULT_QUERY_SETTINGS, STATISTICS_MODES, querySettingsRestoreSchema} from '../query';
55

66
import {useSetting} from './useSetting';
77

@@ -10,9 +10,11 @@ export const useQueryExecutionSettings = () => {
1010
const [storageSettings, setSettings] = useSetting<QuerySettings>(QUERY_EXECUTION_SETTINGS_KEY);
1111

1212
const validatedSettings = querySettingsRestoreSchema.parse(storageSettings);
13+
const [useShowPlanToSvg] = useSetting<boolean>(USE_SHOW_PLAN_SVG_KEY);
1314

1415
const settings: QuerySettings = {
1516
...validatedSettings,
17+
statisticsMode: useShowPlanToSvg ? STATISTICS_MODES.full : validatedSettings.statisticsMode,
1618
tracingLevel: enableTracingLevel
1719
? validatedSettings.tracingLevel
1820
: DEFAULT_QUERY_SETTINGS.tracingLevel,

0 commit comments

Comments
 (0)