Skip to content

Commit 5b3d7d8

Browse files
authored
feat(6482): show graph subquery to user (#6506)
* feat(6482): show graph subquery to user * chore: make imports alphabetical.
1 parent d1f707f commit 5b3d7d8

File tree

4 files changed

+64
-7
lines changed

4 files changed

+64
-7
lines changed

src/dataExplorer/components/Results.tsx

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,17 @@ import React, {
77
useState,
88
} from 'react'
99
import {
10+
Button,
11+
ComponentColor,
12+
ComponentStatus,
1013
FlexBox,
1114
FlexDirection,
12-
SelectGroup,
13-
Button,
1415
IconFont,
15-
ComponentStatus,
16-
ComponentColor,
16+
Overlay,
17+
SelectGroup,
1718
SpinnerContainer,
1819
TechnoSpinner,
20+
TextArea,
1921
} from '@influxdata/clockface'
2022

2123
// Components
@@ -44,6 +46,7 @@ import {RemoteDataState, SimpleTableViewProperties} from 'src/types'
4446

4547
// Utils
4648
import {bytesFormatter} from 'src/shared/copy/notifications'
49+
import {sqlAsFlux} from 'src/shared/contexts/query/preprocessing'
4750

4851
import './Results.scss'
4952
import {LanguageType} from './resources'
@@ -165,6 +168,22 @@ const TableResults: FC<{search: string}> = ({search}) => {
165168
)
166169
}
167170

171+
const GraphSubQueryOverlay: FC<{text: string; onClose: () => void}> = ({
172+
text,
173+
onClose,
174+
}) => (
175+
<Overlay.Container maxWidth={600}>
176+
<Overlay.Header title="Subquery for graph data:" onDismiss={onClose} />
177+
<Overlay.Body>
178+
<TextArea
179+
testID="data-explorer-results--graph-subquery"
180+
value={text}
181+
readOnly
182+
/>
183+
</Overlay.Body>
184+
</Overlay.Container>
185+
)
186+
168187
const GraphResults: FC = () => {
169188
const {view} = useContext(ResultsViewContext)
170189
const {result, status} = useContext(ChildResultsContext)
@@ -186,14 +205,22 @@ const GraphResults: FC = () => {
186205
}
187206

188207
const WrappedOptions: FC = () => {
208+
const [showOverlay, setShowOverlay] = useState(false)
209+
189210
// use parent `results` so all metadata is present for the viz options
190211
const {result} = useContext(ResultsContext)
191-
const {setResult, setStatus} = useContext(ChildResultsContext)
212+
const {queryModifers, setResult, setStatus} = useContext(ChildResultsContext)
192213
const {view, setView, selectViewOptions, viewOptions, selectedViewOptions} =
193214
useContext(ResultsViewContext)
194-
const {resource} = useContext(PersistanceContext)
215+
const {resource, query: text, selection} = useContext(PersistanceContext)
195216
const dataExists = !!result?.parsed
196217

218+
const subquery = useMemo(
219+
() => sqlAsFlux(text, selection?.bucket, queryModifers),
220+
[text, selection?.bucket, queryModifers]
221+
)
222+
const seeGraphSubquery = () => setShowOverlay(true)
223+
197224
const updateChildResults = useCallback(
198225
update => {
199226
setView({
@@ -218,11 +245,18 @@ const WrappedOptions: FC = () => {
218245
selectViewOptions={selectViewOptions}
219246
allViewOptions={viewOptions}
220247
selectedViewOptions={selectedViewOptions}
248+
seeSubquery={selection?.bucket ? seeGraphSubquery : null}
221249
/>
222250
) : null
223251

224252
return (
225253
<>
254+
<Overlay visible={showOverlay}>
255+
<GraphSubQueryOverlay
256+
text={subquery}
257+
onClose={() => setShowOverlay(false)}
258+
/>
259+
</Overlay>
226260
{subQueryOptions}
227261
<ViewOptions
228262
properties={view.properties}

src/dataExplorer/components/SqlViewOptions.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,10 @@
88
height: $cf-form-xs-height;
99
}
1010
}
11+
.sql-view-options--see-query {
12+
padding-top: $cf-form-xs-height;
13+
display: flex;
14+
justify-content: center;
15+
overflow: hidden;
16+
}
1117
}

src/dataExplorer/components/SqlViewOptions.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, {FC} from 'react'
2-
import {Columns, Grid} from '@influxdata/clockface'
2+
import {Columns, Grid, Button, ComponentStatus} from '@influxdata/clockface'
33

44
import SelectorList from 'src/timeMachine/components/SelectorList'
55
import SelectorTitle from 'src/dataExplorer/components/SelectorTitle'
@@ -11,12 +11,14 @@ interface SqlViewOptionsT {
1111
selectViewOptions: (_: Partial<ViewOptions>) => void
1212
allViewOptions: ViewOptions
1313
selectedViewOptions: ViewOptions
14+
seeSubquery: () => void
1415
}
1516

1617
export const SqlViewOptions: FC<SqlViewOptionsT> = ({
1718
selectViewOptions,
1819
allViewOptions,
1920
selectedViewOptions,
21+
seeSubquery,
2022
}) => {
2123
const handleSelectedListItem = (propKey, value) => {
2224
if ((selectedViewOptions[propKey] ?? []).includes(value)) {
@@ -69,6 +71,18 @@ export const SqlViewOptions: FC<SqlViewOptionsT> = ({
6971
onSelectItem={tagKey => handleSelectedListItem('groupby', tagKey)}
7072
multiSelect={true}
7173
/>
74+
<div className="sql-view-options--see-query">
75+
<Button
76+
testID="sql-view-options--see-query"
77+
text="View graph subquery"
78+
status={
79+
!seeSubquery
80+
? ComponentStatus.Disabled
81+
: ComponentStatus.Valid
82+
}
83+
onClick={seeSubquery}
84+
/>
85+
</div>
7286
</Grid.Column>
7387
</Grid.Row>
7488
</Grid>

src/dataExplorer/context/results/childResults.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const modifiersToApply = (viewOptions: ViewOptions): SqlQueryModifiers => {
4949
interface ChildResultsContextType {
5050
status: RemoteDataState
5151
result: FluxResult
52+
readonly queryModifers: SqlQueryModifiers
5253

5354
setStatus: (status: RemoteDataState) => void
5455
setResult: (result: FluxResult) => void
@@ -57,6 +58,7 @@ interface ChildResultsContextType {
5758
const DEFAULT_STATE: ChildResultsContextType = {
5859
status: RemoteDataState.NotStarted,
5960
result: {} as FluxResult,
61+
queryModifers: {} as SqlQueryModifiers,
6062

6163
setStatus: _ => {},
6264
setResult: _ => {},
@@ -141,6 +143,7 @@ export const ChildResultsProvider: FC = ({children}) => {
141143
value={{
142144
status,
143145
result,
146+
queryModifers,
144147

145148
setStatus,
146149
setResult,

0 commit comments

Comments
 (0)