11import { ConfigSubSection } from 'components/experimental/ConfigSection' ;
22import allLabels from './labelsV2' ;
3- import React , { ChangeEvent , useState } from 'react' ;
3+ import React , { ChangeEvent , useMemo , useState } from 'react' ;
44import {
55 DataSourcePluginOptionsEditorProps ,
66 onUpdateDatasourceJsonDataOption ,
@@ -110,6 +110,72 @@ export const AdditionalSettingsSection = (props: Props) => {
110110 } ) ;
111111 } ;
112112
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+
113179 return (
114180 < Box
115181 borderStyle = "solid"
@@ -126,7 +192,7 @@ export const AdditionalSettingsSection = (props: Props) => {
126192 < Badge text = "optional" color = "darkgrey" className = { styles . badge } />
127193 </ >
128194 }
129- isOpen = { ! ! CONFIG_SECTION_HEADERS [ 3 ] . isOpen }
195+ isOpen = { ! ! shouldBeOpen }
130196 >
131197 < DefaultDatabaseTableConfig
132198 defaultDatabase = { jsonData . defaultDatabase }
0 commit comments