Skip to content

Commit bb1bca5

Browse files
feat(firstMile): add first structure for nodejs (#4284)
* chore: rename JavascriptNodeJsIcon => NodejsIcon
1 parent c160b63 commit bb1bca5

File tree

5 files changed

+176
-8
lines changed

5 files changed

+176
-8
lines changed

src/homepageExperience/components/HomepageIcons.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export const PythonIcon = (
4444
</svg>
4545
)
4646

47-
export const JavascriptNodeJsIcon = (
47+
export const NodejsIcon = (
4848
<svg
4949
width="108"
5050
height="66"

src/homepageExperience/containers/HomepageContainer.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {getOrg} from 'src/organizations/selectors'
2424
import {
2525
CLIIcon,
2626
GoIcon,
27-
JavascriptNodeJsIcon,
27+
NodejsIcon,
2828
PythonIcon,
2929
TelegrafIcon,
3030
} from 'src/homepageExperience/components/HomepageIcons'
@@ -99,7 +99,7 @@ export const HomepageContainer: FC = () => {
9999
<Link to={javaScriptNodeLink} style={linkStyle}>
100100
<div className="homepage-wizard-language-tile">
101101
<h5>JavaScript/Node.js</h5>
102-
{JavascriptNodeJsIcon}
102+
{NodejsIcon}
103103
</div>
104104
</Link>
105105
</ResourceCard>
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
import React, {PureComponent} from 'react'
2+
import classnames from 'classnames'
3+
4+
import {
5+
Button,
6+
ComponentColor,
7+
ComponentSize,
8+
ComponentStatus,
9+
SubwayNav,
10+
} from '@influxdata/clockface'
11+
12+
import {InstallDependencies} from 'src/homepageExperience/components/steps/InstallDependencies'
13+
import {Overview} from 'src/homepageExperience/components/steps/Overview'
14+
import {CreateToken} from 'src/homepageExperience/components/steps/CreateToken'
15+
import {InitalizeClient} from 'src/homepageExperience/components/steps/InitalizeClient'
16+
import {WriteData} from 'src/homepageExperience/components/steps/WriteData'
17+
import {ExecuteQuery} from 'src/homepageExperience/components/steps/ExecuteQuery'
18+
import {Finish} from 'src/homepageExperience/components/steps/Finish'
19+
import {ExecuteAggregateQuery} from 'src/homepageExperience/components/steps/ExecuteAggregateQuery'
20+
21+
import {NodejsIcon} from 'src/homepageExperience/components/HomepageIcons'
22+
23+
import {HOMEPAGE_NAVIGATION_STEPS} from 'src/homepageExperience/utils'
24+
25+
// Utils
26+
import {event} from 'src/cloud/utils/reporting'
27+
28+
interface State {
29+
currentStep: number
30+
selectedBucket: string
31+
}
32+
33+
export class HomepageNodejsWizard extends PureComponent<null, State> {
34+
state = {
35+
currentStep: 1,
36+
selectedBucket: 'my-bucket',
37+
}
38+
39+
private handleSelectBucket = (bucketName: string) => {
40+
this.setState({selectedBucket: bucketName})
41+
}
42+
43+
handleNextClick = () => {
44+
this.setState(
45+
{
46+
currentStep: Math.min(
47+
this.state.currentStep + 1,
48+
HOMEPAGE_NAVIGATION_STEPS.length
49+
),
50+
},
51+
() => {
52+
event('firstMile.nodejsWizard.next.clicked')
53+
}
54+
)
55+
}
56+
57+
handlePreviousClick = () => {
58+
this.setState(
59+
{currentStep: Math.max(this.state.currentStep - 1, 1)},
60+
() => {
61+
event('firstMile.nodejsWizard.previous.clicked')
62+
}
63+
)
64+
}
65+
66+
handleNavClick = (clickedStep: number) => {
67+
this.setState({currentStep: clickedStep})
68+
}
69+
70+
renderStep = () => {
71+
switch (this.state.currentStep) {
72+
case 1: {
73+
return <Overview />
74+
}
75+
case 2: {
76+
return <InstallDependencies />
77+
}
78+
case 3: {
79+
return <CreateToken />
80+
}
81+
case 4: {
82+
return <InitalizeClient />
83+
}
84+
case 5: {
85+
return <WriteData onSelectBucket={this.handleSelectBucket} />
86+
}
87+
case 6: {
88+
return <ExecuteQuery bucket={this.state.selectedBucket} />
89+
}
90+
case 7: {
91+
return <ExecuteAggregateQuery bucket={this.state.selectedBucket} />
92+
}
93+
case 8: {
94+
return <Finish />
95+
}
96+
default: {
97+
return <Overview />
98+
}
99+
}
100+
}
101+
102+
render() {
103+
return (
104+
<div className="homepage-wizard-container">
105+
<aside className="homepage-wizard-container--subway">
106+
<div style={{width: '100%'}}>
107+
<SubwayNav
108+
currentStep={this.state.currentStep}
109+
onStepClick={this.handleNavClick}
110+
navigationSteps={HOMEPAGE_NAVIGATION_STEPS}
111+
settingUpIcon={NodejsIcon}
112+
settingUpText="Nodejs"
113+
setupTime="5 minutes"
114+
/>
115+
</div>
116+
</aside>
117+
<div className="homepage-wizard-container--main">
118+
<div
119+
className={classnames('homepage-wizard-container--main-wrapper', {
120+
overviewSection: this.state.currentStep === 1,
121+
})}
122+
>
123+
{this.renderStep()}
124+
</div>
125+
126+
<div className="homepage-wizard-container-footer">
127+
<Button
128+
onClick={this.handlePreviousClick}
129+
text="Previous"
130+
size={ComponentSize.Large}
131+
color={ComponentColor.Tertiary}
132+
status={
133+
this.state.currentStep > 1
134+
? ComponentStatus.Default
135+
: ComponentStatus.Disabled
136+
}
137+
/>
138+
<Button
139+
onClick={this.handleNextClick}
140+
text="Next"
141+
size={ComponentSize.Large}
142+
color={ComponentColor.Primary}
143+
status={
144+
this.state.currentStep < 8
145+
? ComponentStatus.Default
146+
: ComponentStatus.Disabled
147+
}
148+
/>
149+
</div>
150+
</div>
151+
</div>
152+
)
153+
}
154+
}

src/shared/containers/SetOrg.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
FlowPage,
2222
FlowsIndex,
2323
HomepageContainer,
24+
HomepageNodejsWizard,
2425
HomepagePythonWizard,
2526
LabelsIndex,
2627
MembersIndex,
@@ -295,11 +296,18 @@ const SetOrg: FC = () => {
295296
)}
296297

297298
{isFlagEnabled('firstMile') && (
298-
<Route
299-
exact
300-
path="/orgs/:orgID/new-user-wizard/python"
301-
component={HomepagePythonWizard}
302-
/>
299+
<>
300+
<Route
301+
exact
302+
path="/orgs/:orgID/new-user-wizard/python"
303+
component={HomepagePythonWizard}
304+
/>
305+
<Route
306+
exact
307+
path="/orgs/:orgID/new-user-wizard/nodejs"
308+
component={HomepageNodejsWizard}
309+
/>
310+
</>
303311
)}
304312

305313
<Route component={NotFound} />

src/shared/containers/index.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,9 @@ export const HomepagePythonWizard = lazy(() =>
114114
'src/homepageExperience/containers/HomepagePythonWizard'
115115
).then(module => ({default: module.HomepagePythonWizard}))
116116
)
117+
118+
export const HomepageNodejsWizard = lazy(() =>
119+
import(
120+
'src/homepageExperience/containers/HomepageNodejsWizard'
121+
).then(module => ({default: module.HomepageNodejsWizard}))
122+
)

0 commit comments

Comments
 (0)