Skip to content

Commit cfeb98f

Browse files
Anton StandrikAnton Standrik
authored andcommitted
fix: add setting
1 parent 23e096d commit cfeb98f

File tree

6 files changed

+31
-3
lines changed

6 files changed

+31
-3
lines changed

src/containers/Tenant/Query/ExecuteResult/ExecuteResult.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import type {ExecuteQueryResult} from '../../../../types/store/executeQuery';
1919
import {getArray} from '../../../../utils';
2020
import {cn} from '../../../../utils/cn';
2121
import {getStringifiedData} from '../../../../utils/dataFormatters/dataFormatters';
22-
import {useTypedDispatch} from '../../../../utils/hooks';
22+
import {useQueryExecutionSettings, useTypedDispatch} from '../../../../utils/hooks';
2323
import {parseQueryError} from '../../../../utils/query';
2424
import {PaneVisibilityToggleButtons} from '../../utils/paneVisibilityToggleHelpers';
2525
import {CancelQueryButton} from '../CancelQueryButton/CancelQueryButton';
@@ -68,6 +68,7 @@ export function ExecuteResult({
6868
const [selectedResultSet, setSelectedResultSet] = React.useState(0);
6969
const [activeSection, setActiveSection] = React.useState<SectionID>(resultOptionsIds.result);
7070
const dispatch = useTypedDispatch();
71+
const [{showPlanToSvg}] = useQueryExecutionSettings();
7172

7273
const {error, isLoading, queryId, data} = result;
7374

@@ -274,7 +275,7 @@ export function ExecuteResult({
274275
{data?.traceId ? (
275276
<TraceButton traceId={data.traceId} isTraceReady={result.isTraceReady} />
276277
) : null}
277-
{data?.plan ? (
278+
{data?.plan && showPlanToSvg ? (
278279
<PlanToSvgButton plan={data?.plan} database={tenantName} />
279280
) : null}
280281
</div>

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

Lines changed: 20 additions & 1 deletion
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 {Checkbox, Dialog, Link as ExternalLink, Flex, TextInput} from '@gravity-ui/uikit';
44
import {zodResolver} from '@hookform/resolvers/zod';
55
import {Controller, useForm} from 'react-hook-form';
66

@@ -219,6 +219,25 @@ function QuerySettingsForm({initialValues, onSubmit, onClose}: QuerySettingsForm
219219
/>
220220
</div>
221221
</Flex>
222+
<Flex direction="row" alignItems="flex-start" className={b('dialog-row')}>
223+
<label htmlFor="showPlanToSvg" className={b('field-title')}>
224+
{QUERY_SETTINGS_FIELD_SETTINGS.showPlanToSvg.title}
225+
</label>
226+
<div className={b('control-wrapper')}>
227+
<Controller
228+
name="showPlanToSvg"
229+
control={control}
230+
render={({field: {value, onChange, ...field}}) => (
231+
<Checkbox
232+
id="showPlanToSvg"
233+
checked={Boolean(value)}
234+
onUpdate={onChange}
235+
{...field}
236+
/>
237+
)}
238+
/>
239+
</div>
240+
</Flex>
222241
</Dialog.Body>
223242
<Dialog.Footer
224243
textButtonApply={i18n('button-done')}

src/containers/Tenant/Query/QuerySettingsDialog/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,4 +151,7 @@ export const QUERY_SETTINGS_FIELD_SETTINGS = {
151151
limitRows: {
152152
title: formI18n('form.limit-rows'),
153153
},
154+
showPlanToSvg: {
155+
title: formI18n('form.show-plan-to-svg'),
156+
},
154157
} as const;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"form.statistics-mode": "Statistics collection mode",
77
"form.tracing-level": "Tracing level",
88
"form.limit-rows": "Limit rows",
9+
"form.show-plan-to-svg": "Plan to svg",
910
"button-done": "Save",
1011
"button-cancel": "Cancel",
1112
"form.timeout.seconds": "sec",

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+
"form.show-plan-to-svg": "План в svg",
910
"button-done": "Готово",
1011
"button-cancel": "Отменить",
1112
"form.timeout.seconds": "сек",

src/utils/query.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ export const DEFAULT_QUERY_SETTINGS = {
318318
limitRows: 10000,
319319
statisticsMode: STATISTICS_MODES.none,
320320
tracingLevel: TRACING_LEVELS.off,
321+
showPlanToSvg: false,
321322
};
322323

323324
export const queryModeSchema = z.nativeEnum(QUERY_MODES);
@@ -337,6 +338,7 @@ export const querySettingsValidationSchema = z.object({
337338
transactionMode: transactionModeSchema,
338339
statisticsMode: statisticsModeSchema,
339340
tracingLevel: tracingLevelSchema,
341+
showPlanToSvg: z.boolean().optional(),
340342
});
341343

342344
export const querySettingsRestoreSchema = z
@@ -353,5 +355,6 @@ export const querySettingsRestoreSchema = z
353355
transactionMode: transactionModeSchema.catch(DEFAULT_QUERY_SETTINGS.transactionMode),
354356
statisticsMode: statisticsModeSchema.catch(DEFAULT_QUERY_SETTINGS.statisticsMode),
355357
tracingLevel: tracingLevelSchema.catch(DEFAULT_QUERY_SETTINGS.tracingLevel),
358+
showPlanToSvg: z.boolean().optional().catch(false),
356359
})
357360
.catch(DEFAULT_QUERY_SETTINGS);

0 commit comments

Comments
 (0)