|
1 | 1 | import { ConfigSubSection } from 'components/experimental/ConfigSection'; |
2 | 2 | import allLabels from './labelsV2'; |
3 | | -import React, { ChangeEvent, useMemo, useState } from 'react'; |
| 3 | +import React, { ChangeEvent, useState } from 'react'; |
4 | 4 | import { |
5 | 5 | DataSourcePluginOptionsEditorProps, |
6 | 6 | onUpdateDatasourceJsonDataOption, |
@@ -52,6 +52,69 @@ export const AdditionalSettingsSection = (props: Props) => { |
52 | 52 | useConfigDefaults(options, onOptionsChange); |
53 | 53 |
|
54 | 54 | const [customSettings, setCustomSettings] = useState(jsonData.customSettings || []); |
| 55 | + const ADDITONAL_SETTINGS_DEFAULTS = { |
| 56 | + defaultDatabase: jsonData.defaultDatabase, |
| 57 | + defaultTable: jsonData.defaultTable, |
| 58 | + connMaxLifetime: jsonData.connMaxLifetime, |
| 59 | + dialTimeout: jsonData.dialTimeout, |
| 60 | + maxIdleConns: jsonData.maxIdleConns, |
| 61 | + maxOpenConns: jsonData.maxOpenConns, |
| 62 | + queryTimeout: jsonData.queryTimeout, |
| 63 | + validateSql: jsonData.validateSql, |
| 64 | + logs: { |
| 65 | + defaultDatabase: jsonData.logs?.defaultDatabase, |
| 66 | + defaultTable: jsonData.logs?.defaultTable !== 'otel_logs' ? jsonData.logs?.defaultTable : undefined, |
| 67 | + otelEnabled: jsonData.logs?.otelEnabled, |
| 68 | + otelVersion: jsonData.logs?.otelVersion !== 'latest' ? jsonData.logs?.otelVersion : undefined, |
| 69 | + timeColumn: jsonData.logs?.timeColumn, |
| 70 | + levelColumn: jsonData.logs?.levelColumn, |
| 71 | + messageColumn: jsonData.logs?.messageColumn, |
| 72 | + selectContextColumns: jsonData.logs?.selectContextColumns, |
| 73 | + contextColumns: |
| 74 | + jsonData.logs?.contextColumns && jsonData.logs?.contextColumns.length > 0 |
| 75 | + ? jsonData.logs?.contextColumns |
| 76 | + : undefined, |
| 77 | + }, |
| 78 | + traces: { |
| 79 | + defaultDatabase: jsonData.traces?.defaultDatabase, |
| 80 | + defaultTable: jsonData.traces?.defaultTable !== 'otel_traces' ? jsonData.logs?.defaultTable : undefined, |
| 81 | + otelEnabled: jsonData.traces?.otelEnabled, |
| 82 | + otelVersion: jsonData.traces?.otelVersion !== 'latest' ? jsonData.logs?.otelVersion : undefined, |
| 83 | + traceIdColumn: jsonData.traces?.traceIdColumn, |
| 84 | + spanIdColumn: jsonData.traces?.spanIdColumn, |
| 85 | + operationNameColumn: jsonData.traces?.operationNameColumn, |
| 86 | + parentSpanIdColumn: jsonData.traces?.parentSpanIdColumn, |
| 87 | + serviceNameColumn: jsonData.traces?.serviceNameColumn, |
| 88 | + durationColumn: jsonData.traces?.durationColumn, |
| 89 | + startTimeColumn: jsonData.traces?.startTimeColumn, |
| 90 | + tagsColumn: jsonData.traces?.tagsColumn, |
| 91 | + serviceTagsColumn: jsonData.traces?.serviceTagsColumn, |
| 92 | + kindColumn: jsonData.traces?.kindColumn, |
| 93 | + statusCodeColumn: jsonData.traces?.statusCodeColumn, |
| 94 | + statusMessageColumn: jsonData.traces?.statusMessageColumn, |
| 95 | + stateColumn: jsonData.traces?.stateColumn, |
| 96 | + instrumentationLibraryNameColumn: jsonData.traces?.instrumentationLibraryNameColumn, |
| 97 | + instrumentationLibraryVersionColumn: jsonData.traces?.instrumentationLibraryVersionColumn, |
| 98 | + flattenNested: jsonData.traces?.flattenNested, |
| 99 | + traceEventsColumnPrefix: jsonData.traces?.traceEventsColumnPrefix, |
| 100 | + traceLinksColumnPrefix: jsonData.traces?.traceLinksColumnPrefix, |
| 101 | + }, |
| 102 | + aliasTables: jsonData.aliasTables && jsonData.aliasTables.length > 0 ? jsonData.aliasTables : undefined, |
| 103 | + enableRowLimit: jsonData.enableRowLimit, |
| 104 | + enableSecureSocksProxy: jsonData.enableSecureSocksProxy, |
| 105 | + }; |
| 106 | + |
| 107 | + const hasDefinedValue = (obj: any): boolean => { |
| 108 | + if (obj == null) { |
| 109 | + return false; |
| 110 | + } |
| 111 | + if (typeof obj !== 'object') { |
| 112 | + return obj !== '' && obj !== undefined && obj !== null; |
| 113 | + } |
| 114 | + return Object.values(obj).some((v) => hasDefinedValue(v)); |
| 115 | + }; |
| 116 | + |
| 117 | + const shouldBeOpen = hasDefinedValue(ADDITONAL_SETTINGS_DEFAULTS); |
55 | 118 |
|
56 | 119 | const onLogsConfigChange = (key: keyof CHLogsConfig, value: string | boolean | string[]) => { |
57 | 120 | onOptionsChange({ |
@@ -110,72 +173,6 @@ export const AdditionalSettingsSection = (props: Props) => { |
110 | 173 | }); |
111 | 174 | }; |
112 | 175 |
|
113 | | - // if any of the settings in this section are set, open the section by default |
114 | | - const shouldBeOpen = useMemo(() => { |
115 | | - const anyDefaults = jsonData.defaultDatabase || jsonData.defaultTable; |
116 | | - |
117 | | - const anyQuerySettings = |
118 | | - jsonData.connMaxLifetime || |
119 | | - jsonData.dialTimeout || |
120 | | - jsonData.maxIdleConns || |
121 | | - jsonData.maxOpenConns || |
122 | | - jsonData.queryTimeout || |
123 | | - jsonData.validateSql; |
124 | | - |
125 | | - const logs = jsonData.logs || {}; |
126 | | - const anyLogs = |
127 | | - logs.defaultDatabase || |
128 | | - logs.defaultTable !== 'otel_logs' || |
129 | | - logs.otelEnabled || |
130 | | - logs.otelVersion !== 'latest' || |
131 | | - logs.timeColumn || |
132 | | - logs.levelColumn || |
133 | | - logs.messageColumn || |
134 | | - logs.selectContextColumns || |
135 | | - logs.contextColumns!.length > 0; |
136 | | - |
137 | | - const traces = jsonData.traces || {}; |
138 | | - const anyTraces = |
139 | | - traces.defaultDatabase || |
140 | | - traces.defaultTable !== 'otel_traces' || |
141 | | - traces.otelEnabled || |
142 | | - traces.otelVersion !== 'latest' || |
143 | | - traces.traceIdColumn || |
144 | | - traces.spanIdColumn || |
145 | | - traces.operationNameColumn || |
146 | | - traces.parentSpanIdColumn || |
147 | | - traces.serviceNameColumn || |
148 | | - traces.durationColumn || |
149 | | - traces.startTimeColumn || |
150 | | - traces.tagsColumn || |
151 | | - traces.serviceTagsColumn || |
152 | | - traces.kindColumn || |
153 | | - traces.statusCodeColumn || |
154 | | - traces.statusMessageColumn || |
155 | | - traces.stateColumn || |
156 | | - traces.instrumentationLibraryNameColumn || |
157 | | - traces.instrumentationLibraryVersionColumn || |
158 | | - traces.flattenNested || |
159 | | - traces.traceEventsColumnPrefix || |
160 | | - traces.traceLinksColumnPrefix; |
161 | | - |
162 | | - const anyAliasTables = Array.isArray(jsonData.aliasTables) && jsonData.aliasTables.length > 0; |
163 | | - |
164 | | - const anyRowLimit = jsonData.enableRowLimit; |
165 | | - const anySecureSocks = jsonData.enableSecureSocksProxy; |
166 | | - |
167 | | - return ( |
168 | | - anyDefaults || |
169 | | - anyQuerySettings || |
170 | | - anyLogs || |
171 | | - anyTraces || |
172 | | - anyAliasTables || |
173 | | - anyRowLimit || |
174 | | - anySecureSocks || |
175 | | - customSettings.length > 0 |
176 | | - ); |
177 | | - }, [jsonData, customSettings]); |
178 | | - |
179 | 176 | return ( |
180 | 177 | <Box |
181 | 178 | borderStyle="solid" |
|
0 commit comments