@@ -24,6 +24,7 @@ import ViewTypeDropdown from 'src/timeMachine/components/ViewTypeDropdown'
2424import { AddAnnotationDEOverlay } from 'src/overlays/components/index'
2525import { EditAnnotationDEOverlay } from 'src/overlays/components/index'
2626import TemplatePage from 'src/dataExplorer/components/resources/TemplatePage'
27+ import RenamablePageTitle from 'src/pageLayout/components/RenamablePageTitle'
2728
2829// Utils
2930import { pageTitleSuffixer } from 'src/shared/utils/pageTitles'
@@ -35,15 +36,73 @@ import {ResourceType} from 'src/types'
3536
3637import 'src/shared/components/cta.scss'
3738import { AppSettingContext } from 'src/shared/contexts/app'
39+ import {
40+ PersistanceContext ,
41+ PersistanceProvider ,
42+ } from 'src/dataExplorer/context/persistance'
3843import { PROJECT_NAME , PROJECT_NAME_PLURAL } from 'src/flows'
3944
45+ const DataExplorerPageHeader : FC = ( ) => {
46+ const { fluxQueryBuilder, setFluxQueryBuilder} = useContext ( AppSettingContext )
47+ const { resource, setResource} = useContext ( PersistanceContext )
48+
49+ const toggleSlider = ( ) => {
50+ event ( 'toggled new query builder' , { active : `${ ! fluxQueryBuilder } ` } )
51+ setFluxQueryBuilder ( ! fluxQueryBuilder )
52+ }
53+
54+ const handleRename = ( name : string ) => {
55+ setResource ( {
56+ ...resource ,
57+ data : {
58+ ...resource . data ,
59+ name,
60+ } ,
61+ } )
62+ }
63+
64+ let pageTitle = < Page . Title title = "Data Explorer" />
65+ if ( fluxQueryBuilder && resource ?. data ?. hasOwnProperty ( 'name' ) ) {
66+ pageTitle = (
67+ < RenamablePageTitle
68+ onRename = { handleRename }
69+ name = { resource ?. data ?. name || '' }
70+ placeholder = "Untitled Script"
71+ maxLength = { 100 }
72+ />
73+ )
74+ }
75+
76+ return (
77+ < Page . Header
78+ fullWidth = { true }
79+ className = { `${
80+ fluxQueryBuilder ? 'flux-query-builder' : 'data-explorer'
81+ } --header`}
82+ testID = "data-explorer--header"
83+ >
84+ { pageTitle }
85+ < FlexBox margin = { ComponentSize . Large } >
86+ < FeatureFlag name = "newDataExplorer" >
87+ < FlexBox margin = { ComponentSize . Medium } >
88+ < InputLabel > ✨ Try new Data Explorer</ InputLabel >
89+ < SlideToggle
90+ active = { fluxQueryBuilder }
91+ onChange = { toggleSlider }
92+ testID = "flux-query-builder-toggle"
93+ />
94+ </ FlexBox >
95+ </ FeatureFlag >
96+ < RateLimitAlert location = "data explorer" />
97+ </ FlexBox >
98+ </ Page . Header >
99+ )
100+ }
101+
40102const DataExplorerPage : FC = ( ) => {
41- const {
42- flowsCTA,
43- fluxQueryBuilder,
44- setFlowsCTA,
45- setFluxQueryBuilder,
46- } = useContext ( AppSettingContext )
103+ const { flowsCTA, fluxQueryBuilder, setFlowsCTA} = useContext (
104+ AppSettingContext
105+ )
47106 useLoadTimeReporting ( 'DataExplorerPage load start' )
48107
49108 const hideFlowsCTA = ( ) => {
@@ -60,11 +119,6 @@ const DataExplorerPage: FC = () => {
60119 }
61120 } , [ ] )
62121
63- const toggleSlider = ( ) => {
64- event ( 'toggled new query builder' , { active : `${ ! fluxQueryBuilder } ` } )
65- setFluxQueryBuilder ( ! fluxQueryBuilder )
66- }
67-
68122 return (
69123 < Page titleTag = { pageTitleSuffixer ( [ 'Data Explorer' ] ) } >
70124 < Switch >
@@ -86,28 +140,9 @@ const DataExplorerPage: FC = () => {
86140 />
87141 </ Switch >
88142 < GetResources resources = { [ ResourceType . Variables ] } >
89- < Page . Header
90- fullWidth = { true }
91- className = { `${
92- fluxQueryBuilder ? 'flux-query-builder' : 'data-explorer'
93- } --header`}
94- testID = "data-explorer--header"
95- >
96- < Page . Title title = "Data Explorer" />
97- < FlexBox margin = { ComponentSize . Large } >
98- < FeatureFlag name = "newDataExplorer" >
99- < FlexBox margin = { ComponentSize . Medium } >
100- < InputLabel > ✨ Try new Data Explorer</ InputLabel >
101- < SlideToggle
102- active = { fluxQueryBuilder }
103- onChange = { toggleSlider }
104- testID = "flux-query-builder-toggle"
105- />
106- </ FlexBox >
107- </ FeatureFlag >
108- < RateLimitAlert location = "data explorer" />
109- </ FlexBox >
110- </ Page . Header >
143+ < PersistanceProvider >
144+ < DataExplorerPageHeader />
145+ </ PersistanceProvider >
111146 { flowsCTA . explorer && (
112147 < FeatureFlag name = "flowsCTA" >
113148 < div className = "header-cta--de" >
0 commit comments