Skip to content

Commit 11e02e0

Browse files
feat: auto-populate variables for first mile python (#4170)
1 parent a486d9f commit 11e02e0

File tree

5 files changed

+66
-34
lines changed

5 files changed

+66
-34
lines changed

src/homepageExperience/components/steps/ExecuteAggregateQuery.tsx

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,13 @@ import CodeSnippet from 'src/shared/components/CodeSnippet'
33

44
import {SafeBlankLink} from 'src/utils/SafeBlankLink'
55
import {event} from 'src/cloud/utils/reporting'
6+
import {useSelector} from 'react-redux'
7+
import {getOrg} from 'src/organizations/selectors'
68

79
const fromBucketSnippet = `from(bucket: “my-bucket”)
810
|> range(start: -10m) # find data points in last 10 minutes
911
|> mean()`
1012

11-
const codeSnippet = `query_api = client.query_api()
12-
13-
query = "from(bucket: \\"bucket1\\") |> range(start: -10m) |> filter(fn: (r) => r._measurement == "measurement1") |> mean()"
14-
tables = query_api.query(query, org=org)
15-
16-
for table in tables:
17-
for record in table.records:
18-
print(record)`
19-
2013
const logCopyCodeSnippet = () => {
2114
event('firstMile.pythonWizard.executeAggregateQuery.code.copied')
2215
}
@@ -25,7 +18,23 @@ const logDocsOpened = () => {
2518
event('firstMile.pythonWizard.executeAggregateQuery.docs.opened')
2619
}
2720

28-
export const ExecuteAggregateQuery = () => {
21+
type ExecuteAggregateQueryProps = {
22+
bucket: string
23+
}
24+
25+
export const ExecuteAggregateQuery = (props: ExecuteAggregateQueryProps) => {
26+
const org = useSelector(getOrg)
27+
const {bucket} = props
28+
29+
const codeSnippet = `query_api = client.query_api()
30+
31+
query = "from(bucket: \\"${bucket}\\") |> range(start: -10m) |> filter(fn: (r) => r._measurement == "measurement1") |> mean()"
32+
tables = query_api.query(query, org="${org.name}")
33+
34+
for table in tables:
35+
for record in table.records:
36+
print(record)`
37+
2938
return (
3039
<>
3140
<h1>Execute an Aggregate Query</h1>

src/homepageExperience/components/steps/ExecuteQuery.tsx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,32 @@
11
import React from 'react'
22
import CodeSnippet from 'src/shared/components/CodeSnippet'
33
import {event} from 'src/cloud/utils/reporting'
4+
import {useSelector} from 'react-redux'
5+
import {getOrg} from 'src/organizations/selectors'
46

57
const fromBucketSnippet = `from(bucket: “my-bucket”)
68
|> range(start: -10m)`
79

8-
const query = `query_api = client.query_api()
10+
const logCopyCodeSnippet = () => {
11+
event('firstMile.pythonWizard.executeQuery.code.copied')
12+
}
13+
14+
type ExecuteQueryProps = {
15+
bucket: string
16+
}
917

10-
query = "from(bucket: \\"bucket1\\") |> range(start: -10m) |> filter(fn: (r) => r._measurement == "measurement1")"
11-
tables = query_api.query(query, org=org)
18+
export const ExecuteQuery = (props: ExecuteQueryProps) => {
19+
const org = useSelector(getOrg)
20+
const {bucket} = props
21+
const query = `query_api = client.query_api()
22+
23+
query = "from(bucket: \\"${bucket}\\") |> range(start: -10m) |> filter(fn: (r) => r._measurement == "measurement1")"
24+
tables = query_api.query(query, org="${org.name}")
1225
1326
for table in tables:
1427
for record in table.records:
1528
print(record)`
1629

17-
const logCopyCodeSnippet = () => {
18-
event('firstMile.pythonWizard.executeQuery.code.copied')
19-
}
20-
21-
export const ExecuteQuery = () => {
2230
return (
2331
<>
2432
<h1>Execute a Flux Query</h1>

src/homepageExperience/components/steps/InitalizeClient.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
import React from 'react'
22
import CodeSnippet from 'src/shared/components/CodeSnippet'
33
import {event} from 'src/cloud/utils/reporting'
4+
import {useSelector} from 'react-redux'
5+
import {getOrg} from 'src/organizations/selectors'
46

57
const logCopyCodeSnippet = () => {
68
event('firstMile.pythonWizard.initializeClient.code.copied')
79
}
810

911
export const InitalizeClient = () => {
12+
const org = useSelector(getOrg)
13+
1014
const pythonCode = `import os
1115
from datetime import datetime
1216
1317
from influxdb_client import InfluxDBClient, Point, WritePrecision
1418
from influxdb_client.client import SYNCHRONOUS
1519
1620
token = os.environ.get("INFLUXDB_TOKEN")
17-
org = "<user>@influxdata.com"
21+
org = "${org.name}"
1822
url = "https://us-west-2-1.aws.cloud2.influxdata.com/"
1923
2024
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)

src/homepageExperience/components/steps/WriteData.tsx

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,6 @@ import DataListening from 'src/homepageExperience/components/DataListening'
2020
import {getBuckets} from 'src/buckets/actions/thunks'
2121
import {event} from 'src/cloud/utils/reporting'
2222

23-
const codeSnippet = `for value in range(5):
24-
point = (
25-
Point("measurement1")
26-
.tag("tagname1", "tagvalue1")
27-
.field("field1", value)
28-
)
29-
write_api.write(bucket=bucket, org=org, record=point)
30-
time.sleep(1)`
31-
3223
const logCopyCodeSnippet = () => {
3324
event('firstMile.pythonWizard.writeData.code.copied')
3425
}
@@ -37,9 +28,14 @@ const logDocsOpened = () => {
3728
event('firstMile.pythonWizard.writeData.docs.opened')
3829
}
3930

40-
export const WriteDataComponent = () => {
31+
type WriteDataProps = {
32+
onSelectBucket: (bucketName: string) => void
33+
}
34+
35+
export const WriteDataComponent = (props: WriteDataProps) => {
4136
const org = useSelector(getOrg)
4237
const dispatch = useDispatch()
38+
const {onSelectBucket} = props
4339

4440
useEffect(() => {
4541
dispatch(getBuckets())
@@ -51,8 +47,18 @@ export const WriteDataComponent = () => {
5147

5248
useEffect(() => {
5349
setSelectedBucket(bucket)
50+
onSelectBucket(bucket.name)
5451
}, [bucket])
5552

53+
const codeSnippet = `for value in range(5):
54+
point = (
55+
Point("measurement1")
56+
.tag("tagname1", "tagvalue1")
57+
.field("field1", value)
58+
)
59+
write_api.write(bucket="${bucket.name}", org="${org.name}", record=point)
60+
time.sleep(1)`
61+
5662
return (
5763
<>
5864
<h1>Write Data</h1>
@@ -114,10 +120,10 @@ export const WriteDataComponent = () => {
114120
)
115121
}
116122

117-
export const WriteData = () => {
123+
export const WriteData = props => {
118124
return (
119125
<WriteDataDetailsContextProvider>
120-
<WriteDataComponent />
126+
<WriteDataComponent onSelectBucket={props.onSelectBucket} />
121127
</WriteDataDetailsContextProvider>
122128
)
123129
}

src/homepageExperience/containers/HomepagePythonWizard.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ import {event} from 'src/cloud/utils/reporting'
2525

2626
interface State {
2727
currentStep: number
28+
selectedBucket: string
2829
}
2930

3031
export class HomepagePythonWizard extends PureComponent<null, State> {
3132
state = {
3233
currentStep: 1,
34+
selectedBucket: '',
3335
}
3436

3537
handleNextClick = () => {
@@ -55,6 +57,9 @@ export class HomepagePythonWizard extends PureComponent<null, State> {
5557
)
5658
}
5759

60+
private handleSelectBucket = (bucketName: string) => {
61+
this.setState({selectedBucket: bucketName})
62+
}
5863
renderStep = () => {
5964
switch (this.state.currentStep) {
6065
case 1: {
@@ -70,13 +75,13 @@ export class HomepagePythonWizard extends PureComponent<null, State> {
7075
return <InitalizeClient />
7176
}
7277
case 5: {
73-
return <WriteData />
78+
return <WriteData onSelectBucket={this.handleSelectBucket} />
7479
}
7580
case 6: {
76-
return <ExecuteQuery />
81+
return <ExecuteQuery bucket={this.state.selectedBucket} />
7782
}
7883
case 7: {
79-
return <ExecuteAggregateQuery />
84+
return <ExecuteAggregateQuery bucket={this.state.selectedBucket} />
8085
}
8186
case 8: {
8287
return <Finish />

0 commit comments

Comments
 (0)