Skip to content

Commit ec4a1b8

Browse files
authored
feat: create a unique search parameter to differentiate between the two data explorers (#6162)
* feat: create a unique search parameter to differentiate between the two data explorers * chore: remove the sidebar and update all URLs to contain the search parameter * chore: thanks clockface
1 parent e4f9087 commit ec4a1b8

File tree

7 files changed

+68
-19
lines changed

7 files changed

+68
-19
lines changed

src/dataExplorer/components/DataExplorerPage.tsx

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Libraries
22
import React, {FC, useContext, useEffect} from 'react'
3-
import {Switch, Route, Link} from 'react-router-dom'
3+
import {Switch, Route, Link, useHistory} from 'react-router-dom'
44

55
// Components
66
import DataExplorer from 'src/dataExplorer/components/DataExplorer'
@@ -40,13 +40,22 @@ import {
4040
PersistanceProvider,
4141
} from 'src/dataExplorer/context/persistance'
4242
import {PROJECT_NAME, PROJECT_NAME_PLURAL} from 'src/flows'
43+
import {SCRIPT_EDITOR_PARAMS} from 'src/dataExplorer/components/resources'
4344

4445
const DataExplorerPageHeader: FC = () => {
4546
const {fluxQueryBuilder, setFluxQueryBuilder} = useContext(AppSettingContext)
4647
const {resource, setResource} = useContext(PersistanceContext)
48+
const history = useHistory()
4749

4850
const toggleSlider = () => {
4951
event('toggled new query builder', {active: `${!fluxQueryBuilder}`})
52+
if (!fluxQueryBuilder) {
53+
history.push({
54+
search: SCRIPT_EDITOR_PARAMS,
55+
})
56+
} else {
57+
history.push({search: null})
58+
}
5059
setFluxQueryBuilder(!fluxQueryBuilder)
5160
}
5261

@@ -109,6 +118,7 @@ const DataExplorerPage: FC = () => {
109118
useContext(AppSettingContext)
110119
useLoadTimeReporting('DataExplorerPage load start')
111120
const showNewExplorer = fluxQueryBuilder && isFlagEnabled('newDataExplorer')
121+
const history = useHistory()
112122

113123
const hideFlowsCTA = () => {
114124
setFlowsCTA({explorer: false})
@@ -119,10 +129,19 @@ const DataExplorerPage: FC = () => {
119129
}
120130

121131
useEffect(() => {
132+
if (fluxQueryBuilder) {
133+
history.push({
134+
search: SCRIPT_EDITOR_PARAMS,
135+
})
136+
} else {
137+
history.push({
138+
search: null,
139+
})
140+
}
122141
return () => {
123142
event('Exited Data Explorer')
124143
}
125-
}, [])
144+
}, [fluxQueryBuilder, history])
126145

127146
return (
128147
<Page titleTag={pageTitleSuffixer(['Data Explorer'])}>

src/dataExplorer/components/DeleteScript.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {deleteScriptFail} from 'src/shared/copy/notifications/categories/scripts
1111
import {ResultsContext} from 'src/dataExplorer/components/ResultsContext'
1212
import {RemoteDataState} from 'src/types'
1313
import {QueryContext} from 'src/shared/contexts/query'
14+
import {SCRIPT_EDITOR_PARAMS} from 'src/dataExplorer/components/resources'
1415

1516
let deleteScript
1617

@@ -43,7 +44,9 @@ const DeleteScript: FC<Props> = ({onBack, onClose}) => {
4344
setStatus(RemoteDataState.NotStarted)
4445
setResult(null)
4546
cancel()
46-
history.replace(`/orgs/${org.id}/data-explorer/from/script/`)
47+
history.replace(
48+
`/orgs/${org.id}/data-explorer/from/script${SCRIPT_EDITOR_PARAMS}`
49+
)
4750
onClose()
4851
} catch (error) {
4952
dispatch(notify(deleteScriptFail(resource.data?.name)))

src/dataExplorer/components/FluxQueryBuilder.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ import SaveAsScript from 'src/dataExplorer/components/SaveAsScript'
3434
import {QueryContext} from 'src/shared/contexts/query'
3535
import {ResultsContext} from 'src/dataExplorer/components/ResultsContext'
3636
import {isFlagEnabled} from 'src/shared/utils/featureFlag'
37-
import {getOrg} from 'src/organizations/selectors'
37+
import {getOrg, isOrgIOx} from 'src/organizations/selectors'
3838
import {RemoteDataState} from 'src/types'
39+
import {SCRIPT_EDITOR_PARAMS} from 'src/dataExplorer/components/resources'
3940

4041
// Styles
4142
import './FluxQueryBuilder.scss'
@@ -56,6 +57,7 @@ const FluxQueryBuilder: FC = () => {
5657
const [selectedLanguage, setSelectedLanguage] = useState(
5758
resource?.language ?? LanguageType.FLUX
5859
)
60+
const isIoxOrg = useSelector(isOrgIOx)
5961
const [isOverlayVisible, setIsOverlayVisible] = useState(false)
6062
const {cancel} = useContext(QueryContext)
6163
const {setStatus, setResult} = useContext(ResultsContext)
@@ -66,12 +68,14 @@ const FluxQueryBuilder: FC = () => {
6668
setStatus(RemoteDataState.NotStarted)
6769
setResult(null)
6870

69-
if (isFlagEnabled('uiSqlSupport')) {
71+
if (isFlagEnabled('uiSqlSupport') && isIoxOrg) {
7072
history.replace(
71-
`/orgs/${org.id}/data-explorer/from/script?language=${selectedLanguage}`
73+
`/orgs/${org.id}/data-explorer/from/script?language=${selectedLanguage}&${SCRIPT_EDITOR_PARAMS}`
7274
)
7375
} else {
74-
history.replace(`/orgs/${org.id}/data-explorer/from/script`)
76+
history.replace(
77+
`/orgs/${org.id}/data-explorer/from/script${SCRIPT_EDITOR_PARAMS}`
78+
)
7579
}
7680

7781
if (!isFlagEnabled('saveAsScript')) {
@@ -158,7 +162,7 @@ const FluxQueryBuilder: FC = () => {
158162
justifyContent={JustifyContent.SpaceBetween}
159163
>
160164
<div style={{display: 'flex'}}>
161-
{isFlagEnabled('uiSqlSupport') ? (
165+
{isFlagEnabled('uiSqlSupport') && isIoxOrg ? (
162166
<Dropdown
163167
menu={onCollapse => (
164168
<Dropdown.Menu onCollapse={onCollapse}>
@@ -252,7 +256,10 @@ const FluxQueryBuilder: FC = () => {
252256
<ResultsPane />
253257
</DraggableResizer.Panel>
254258
<DraggableResizer.Panel isCollapsible={true}>
255-
<Sidebar />
259+
{isFlagEnabled('uiSqlSupport') &&
260+
resource?.language === LanguageType.SQL ? null : (
261+
<Sidebar />
262+
)}
256263
</DraggableResizer.Panel>
257264
</DraggableResizer>
258265
</FlexBox>

src/dataExplorer/components/SaveAsScript.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@ import {
2424
scriptSaveFail,
2525
scriptSaveSuccess,
2626
} from 'src/shared/copy/notifications/categories/scripts'
27-
import {getOrg} from 'src/organizations/selectors'
27+
import {getOrg, isOrgIOx} from 'src/organizations/selectors'
2828
import OpenScript from 'src/dataExplorer/components/OpenScript'
2929
import {DeleteScript} from 'src/dataExplorer/components/DeleteScript'
3030
import {LanguageType} from 'src/dataExplorer/components/resources'
3131
import {isFlagEnabled} from 'src/shared/utils/featureFlag'
32+
import {SCRIPT_EDITOR_PARAMS} from 'src/dataExplorer/components/resources'
3233

3334
interface Props {
3435
language: LanguageType
@@ -42,6 +43,7 @@ const SaveAsScript: FC<Props> = ({language, onClose, setOverlayType, type}) => {
4243
const history = useHistory()
4344
const {hasChanged, resource, setResource, save} =
4445
useContext(PersistanceContext)
46+
const isIoxOrg = useSelector(isOrgIOx)
4547
const {cancel} = useContext(QueryContext)
4648
const {setStatus, setResult} = useContext(ResultsContext)
4749
const [error, setError] = useState<string>()
@@ -92,12 +94,14 @@ const SaveAsScript: FC<Props> = ({language, onClose, setOverlayType, type}) => {
9294
setStatus(RemoteDataState.NotStarted)
9395
setResult(null)
9496

95-
if (isFlagEnabled('uiSqlSupport')) {
97+
if (isFlagEnabled('uiSqlSupport') && isIoxOrg) {
9698
history.replace(
97-
`/orgs/${org.id}/data-explorer/from/script?language=${language}`
99+
`/orgs/${org.id}/data-explorer/from/script?language=${language}&${SCRIPT_EDITOR_PARAMS}`
98100
)
99101
} else {
100-
history.replace(`/orgs/${org.id}/data-explorer/from/script`)
102+
history.replace(
103+
`/orgs/${org.id}/data-explorer/from/script${SCRIPT_EDITOR_PARAMS}`
104+
)
101105
}
102106
if (type !== OverlayType.OPEN) {
103107
onClose()

src/dataExplorer/components/resources/TemplatePage.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import {Switch, Route, useHistory, useParams} from 'react-router-dom'
44
import {RemoteDataState, ResourceType} from 'src/types'
55
import {getOrg} from 'src/organizations/selectors'
66

7-
import {RESOURCES} from 'src/dataExplorer/components/resources'
7+
import {
8+
RESOURCES,
9+
SCRIPT_EDITOR_PARAMS,
10+
} from 'src/dataExplorer/components/resources'
811
import {
912
PersistanceContext,
1013
PersistanceProvider,
@@ -56,7 +59,7 @@ const Template: FC = () => {
5659
RESOURCES[params[0]].init.apply(this, params.slice(1)).then(data => {
5760
setQuery(data.flux)
5861
setResource(data)
59-
history.replace(`/orgs/${org.id}/data-explorer`)
62+
history.replace(`/orgs/${org.id}/data-explorer${SCRIPT_EDITOR_PARAMS}`)
6063
setHasChanged(false)
6164
})
6265
}, [params])

src/dataExplorer/components/resources/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import {ReactNode} from 'react'
22
import {ResourceType} from 'src/types/resources'
33

4+
export const SCRIPT_EDITOR_PARAMS = '?fluxScriptEditor'
5+
46
export enum LanguageType {
57
FLUX = 'flux',
68
SQL = 'sql',

src/shared/components/FluxMonacoEditor.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import ConnectionManager from 'src/languageSupport/languages/flux/lsp/connection
2222
import {EditorContext} from 'src/shared/contexts/editor'
2323
import {PersistanceContext} from 'src/dataExplorer/context/persistance'
2424
import {fluxQueryBuilder} from 'src/shared/selectors/app'
25+
import {isOrgIOx} from 'src/organizations/selectors'
2526

2627
// Types
2728
import {OnChangeScript} from 'src/types/flux'
@@ -67,6 +68,7 @@ const FluxEditorMonaco: FC<Props> = ({
6768
const {editor, setEditor} = useContext(EditorContext)
6869
const isFluxQueryBuilder = useSelector(fluxQueryBuilder)
6970
const sessionStore = useContext(PersistanceContext)
71+
const isIoxOrg = useSelector(isOrgIOx)
7072
const {path} = useRouteMatch()
7173
const isInFluxQueryBuilder =
7274
isFluxQueryBuilder && path === '/orgs/:orgID/data-explorer'
@@ -165,13 +167,22 @@ const FluxEditorMonaco: FC<Props> = ({
165167
}}
166168
editorDidMount={editorDidMount}
167169
/>
168-
{isFlagEnabled('uiSqlSupport') && isInFluxQueryBuilder && (
169-
<div className="monaco-editor__language">{language}</div>
170-
)}
170+
{isFlagEnabled('uiSqlSupport') &&
171+
isIoxOrg &&
172+
isInFluxQueryBuilder && (
173+
<div className="monaco-editor__language">{language}</div>
174+
)}
171175
</div>
172176
</ErrorBoundary>
173177
),
174-
[language, onChangeScript, setEditor, useSchemaComposition, script]
178+
[
179+
isIoxOrg,
180+
language,
181+
onChangeScript,
182+
setEditor,
183+
useSchemaComposition,
184+
script,
185+
]
175186
)
176187
}
177188

0 commit comments

Comments
 (0)