@@ -18,7 +18,7 @@ import {
1818 ComponentStatus ,
1919} from '@influxdata/clockface'
2020import { ResultsPane } from 'src/dataExplorer/components/ResultsPane'
21- import Sidebar from 'src/dataExplorer/components/Sidebar'
21+ import { Sidebar } from 'src/dataExplorer/components/Sidebar'
2222import { Schema } from 'src/dataExplorer/components/Schema'
2323import SaveAsScript from 'src/dataExplorer/components/SaveAsScript'
2424
@@ -39,7 +39,7 @@ import {
3939import { QueryContext } from 'src/shared/contexts/query'
4040import { DBRPContext , DBRPProvider } from 'src/shared/contexts/dbrps'
4141
42- // Utilies
42+ // Utils
4343import { getOrg , isOrgIOx } from 'src/organizations/selectors'
4444import { SCRIPT_EDITOR_PARAMS } from 'src/dataExplorer/components/resources'
4545import { selectIsNewIOxOrg } from 'src/shared/selectors/app'
@@ -126,6 +126,91 @@ const ScriptQueryBuilder: FC = () => {
126126 const filterOutFluxInIOx = option =>
127127 isNewIOxOrg ? option !== LanguageType . FLUX : true
128128
129+ const menuIOx = ( onCollapse : ( ) => void ) => (
130+ < Dropdown . Menu onCollapse = { onCollapse } >
131+ { [ LanguageType . FLUX , LanguageType . SQL ]
132+ . filter ( filterOutFluxInIOx )
133+ . map ( option => (
134+ < Dropdown . Item
135+ className = { `script-dropdown__${ option } ` }
136+ key = { option }
137+ onClick = { ( ) => handleSelectDropdown ( option ) }
138+ selected = { resource ?. language === option }
139+ testID = { `script-dropdown__${ option } ` }
140+ >
141+ { option }
142+ </ Dropdown . Item >
143+ ) ) }
144+ { isFlagEnabled ( 'influxqlUI' ) && hasDBRPs ( ) ? (
145+ < Dropdown . Item
146+ className = { `script-dropdown__${ LanguageType . INFLUXQL } ` }
147+ key = { LanguageType . INFLUXQL }
148+ onClick = { ( ) => handleSelectDropdown ( LanguageType . INFLUXQL ) }
149+ selected = { resource ?. language === LanguageType . INFLUXQL }
150+ testID = { `script-dropdown__${ LanguageType . INFLUXQL } ` }
151+ >
152+ { LanguageType . INFLUXQL }
153+ </ Dropdown . Item >
154+ ) : null }
155+ </ Dropdown . Menu >
156+ )
157+
158+ const menuTSM = ( onCollapse : ( ) => void ) => (
159+ < Dropdown . Menu onCollapse = { onCollapse } >
160+ { [ LanguageType . FLUX ] . map ( option => (
161+ < Dropdown . Item
162+ className = { `script-dropdown__${ option } ` }
163+ key = { option }
164+ onClick = { ( ) => handleSelectDropdown ( option ) }
165+ selected = { resource ?. language === option }
166+ testID = { `script-dropdown__${ option } ` }
167+ >
168+ { option }
169+ </ Dropdown . Item >
170+ ) ) }
171+ { isFlagEnabled ( 'influxqlUI' ) && hasDBRPs ( ) ? (
172+ < Dropdown . Item
173+ className = { `script-dropdown__${ LanguageType . INFLUXQL } ` }
174+ key = { LanguageType . INFLUXQL }
175+ onClick = { ( ) => handleSelectDropdown ( LanguageType . INFLUXQL ) }
176+ selected = { resource ?. language === LanguageType . INFLUXQL }
177+ testID = { `script-dropdown__${ LanguageType . INFLUXQL } ` }
178+ >
179+ { LanguageType . INFLUXQL }
180+ </ Dropdown . Item >
181+ ) : null }
182+ </ Dropdown . Menu >
183+ )
184+
185+ const button = ( active : boolean , onClick ) => (
186+ < Dropdown . Button
187+ active = { active }
188+ onClick = { onClick }
189+ testID = "script-query-builder--new-script"
190+ >
191+ < >
192+ < Icon glyph = { IconFont . Plus_New } />
193+ New Script
194+ </ >
195+ </ Dropdown . Button >
196+ )
197+
198+ const tsmNewScriptDropDown =
199+ isFlagEnabled ( 'influxqlUI' ) && hasDBRPs ( ) ? (
200+ < Dropdown
201+ menu = { menuTSM }
202+ button = { button }
203+ testID = "select-option-dropdown"
204+ />
205+ ) : (
206+ < Button
207+ onClick = { handleNewScript }
208+ text = "New Script"
209+ icon = { IconFont . Plus_New }
210+ testID = "script-query-builder--new-script"
211+ />
212+ )
213+
129214 return (
130215 < EditorProvider >
131216 < SidebarProvider >
@@ -154,59 +239,12 @@ const ScriptQueryBuilder: FC = () => {
154239 < div style = { { display : 'flex' } } >
155240 { isIoxOrg ? (
156241 < Dropdown
157- menu = { onCollapse => (
158- < Dropdown . Menu onCollapse = { onCollapse } >
159- { [ LanguageType . FLUX , LanguageType . SQL ]
160- . filter ( filterOutFluxInIOx )
161- . map ( option => (
162- < Dropdown . Item
163- className = { `script-dropdown__${ option } ` }
164- key = { option }
165- onClick = { ( ) => handleSelectDropdown ( option ) }
166- selected = { resource ?. language === option }
167- testID = { `script-dropdown__${ option } ` }
168- >
169- { option }
170- </ Dropdown . Item >
171- ) ) }
172- { isFlagEnabled ( 'influxqlUI' ) && hasDBRPs ( ) ? (
173- < Dropdown . Item
174- className = { `script-dropdown__${ LanguageType . INFLUXQL } ` }
175- key = { LanguageType . INFLUXQL }
176- onClick = { ( ) =>
177- handleSelectDropdown ( LanguageType . INFLUXQL )
178- }
179- selected = {
180- resource ?. language === LanguageType . INFLUXQL
181- }
182- testID = { `script-dropdown__${ LanguageType . INFLUXQL } ` }
183- >
184- { LanguageType . INFLUXQL }
185- </ Dropdown . Item >
186- ) : null }
187- </ Dropdown . Menu >
188- ) }
189- button = { ( active , onClick ) => (
190- < Dropdown . Button
191- active = { active }
192- onClick = { onClick }
193- testID = "script-query-builder--new-script"
194- >
195- < >
196- < Icon glyph = { IconFont . Plus_New } />
197- New Script
198- </ >
199- </ Dropdown . Button >
200- ) }
242+ menu = { menuIOx }
243+ button = { button }
201244 testID = "select-option-dropdown"
202245 />
203246 ) : (
204- < Button
205- onClick = { handleNewScript }
206- text = "New Script"
207- icon = { IconFont . Plus_New }
208- testID = "script-query-builder--new-script"
209- />
247+ tsmNewScriptDropDown
210248 ) }
211249 { CLOUD && (
212250 < >
0 commit comments