Skip to content

Commit 8540156

Browse files
committed
fix: add btn loading state during api call
1 parent 260c55b commit 8540156

File tree

2 files changed

+31
-35
lines changed

2 files changed

+31
-35
lines changed

src/components/bulkEdits/BulkEdits.tsx

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import {
2828
ButtonVariantType,
2929
CodeEditor,
3030
ComponentSizeType,
31-
ErrorScreenManager,
3231
GenericSectionErrorState,
3332
Icon,
3433
MarkDown,
@@ -49,7 +48,7 @@ import {
4948

5049
import { importComponentFromFELibrary } from '@Components/common'
5150

52-
import { SERVER_MODE, ViewType } from '../../config'
51+
import { SERVER_MODE } from '../../config'
5352
import {
5453
OutputTabs,
5554
renderCMAndSecretImpObj,
@@ -58,7 +57,7 @@ import {
5857
renderSecretOutput,
5958
} from './bulkedit.utils'
6059
import { getSeeExample, updateBulkList, updateImpactedObjectsList } from './bulkedits.service'
61-
import { BulkEditsProps, BulkEditsState } from './bulkEdits.type'
60+
import { BulkEditsProps, BulkEditsState, BulkEditViewType } from './bulkEdits.type'
6261
import {
6362
BULK_EDIT_RESIZE_HANDLE_CLASS,
6463
INITIAL_OUTPUT_PANEL_HEIGHT_PERCENTAGE,
@@ -80,7 +79,7 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
8079
super(props)
8180

8281
this.state = {
83-
view: ViewType.LOADING,
82+
view: BulkEditViewType.FORM,
8483
statusCode: 0,
8584
outputResult: undefined,
8685
impactedObjects: undefined,
@@ -103,9 +102,6 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
103102
const { serverMode } = this.props
104103

105104
if (serverMode === SERVER_MODE.FULL) {
106-
this.setState({
107-
view: ViewType.LOADING,
108-
})
109105
this.getInitialized()
110106
}
111107
}
@@ -127,7 +123,7 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
127123

128124
this.setState({
129125
isReadmeLoading: false,
130-
view: ViewType.FORM,
126+
view: BulkEditViewType.FORM,
131127
readmeResult: { [BulkEditVersion.v1]: v1Readme, [BulkEditVersion.v2]: v2Readme },
132128
})
133129
})
@@ -138,7 +134,7 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
138134
const { codeEditorPayload } = this.state
139135

140136
this.setState({
141-
view: ViewType.LOADING,
137+
view: BulkEditViewType.LOADING_OUTPUT,
142138
})
143139

144140
let configJson: any = {}
@@ -150,7 +146,7 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
150146
variant: ToastVariantType.error,
151147
description: 'Invalid Yaml',
152148
})
153-
this.setState({ view: ViewType.FORM })
149+
this.setState({ view: BulkEditViewType.FORM })
154150
return
155151
}
156152
const errorMessage = []
@@ -163,23 +159,23 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
163159
const outputResult = response.result
164160
this.setState({
165161
statusCode: 0,
166-
view: ViewType.FORM,
162+
view: BulkEditViewType.FORM,
167163
activeOutputTab: 'output',
168164
outputResult,
169165
impactedObjects: undefined,
170166
})
171167
})
172168
.catch((error) => {
173169
showError(error)
174-
this.setState({ view: ViewType.FORM, statusCode: error.code })
170+
this.setState({ view: BulkEditViewType.FORM, statusCode: error.code })
175171
})
176172
}
177173

178174
handleShowImpactedObjectButton = () => {
179175
const { codeEditorPayload } = this.state
180176

181177
this.setState({
182-
view: ViewType.LOADING,
178+
view: BulkEditViewType.LOADING_IMPACTED_OUTPUT,
183179
})
184180

185181
let configJson: any = {}
@@ -191,7 +187,7 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
191187
variant: ToastVariantType.error,
192188
description: 'Invalid Yaml',
193189
})
194-
this.setState({ view: ViewType.FORM })
190+
this.setState({ view: BulkEditViewType.FORM })
195191
return
196192
}
197193

@@ -202,31 +198,31 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
202198
const impactedObjects = response.result
203199
this.setState({
204200
statusCode: 0,
205-
view: ViewType.FORM,
201+
view: BulkEditViewType.FORM,
206202
impactedObjects,
207203
outputResult: undefined,
208204
activeOutputTab: 'impacted',
209205
})
210206
})
211207
.catch((error) => {
212208
showError(error)
213-
this.setState({ view: ViewType.FORM, statusCode: error.code })
209+
this.setState({ view: BulkEditViewType.FORM, statusCode: error.code })
214210
})
215211
}
216212

217213
handleReferSampleScriptClick = () => this.setState({ showExamples: true })
218214

219215
renderCodeEditorHeader = () => {
220-
const { showExamples } = this.state
216+
const { showExamples, view } = this.state
221217

222218
return (
223219
<div className="flex bg__primary px-16 py-8 border__secondary--bottom dc__content-space">
224220
<div className="flexbox dc__gap-12">
225-
<h1 className="m-0 fs-13 cn-9 fw-6 lh-20 dc__open-sans">Script</h1>
221+
<h1 className="m-0 fs-13 cn-9 fw-6 lh-20 dc__open-sans">Payload</h1>
226222
{!showExamples && (
227223
<Button
228224
dataTestId="refer-sample-script-button"
229-
text="Refer Sample Script"
225+
text="Refer Sample Payload"
230226
variant={ButtonVariantType.text}
231227
size={ComponentSizeType.medium}
232228
onClick={this.handleReferSampleScriptClick}
@@ -241,13 +237,15 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
241237
dataTestId="show-impacted-objects-button"
242238
size={ComponentSizeType.small}
243239
variant={ButtonVariantType.secondary}
240+
isLoading={view === BulkEditViewType.LOADING_IMPACTED_OUTPUT}
244241
/>
245242
<Button
246243
text="Run"
247244
onClick={this.handleRunButton}
248245
dataTestId="run-button"
249246
startIcon={<Icon name="ic-play-outline" color={null} />}
250247
size={ComponentSizeType.small}
248+
isLoading={view === BulkEditViewType.LOADING_OUTPUT}
251249
/>
252250
</div>
253251
</div>
@@ -367,8 +365,8 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
367365
renderOutputs = () => {
368366
const { view, outputResult } = this.state
369367

370-
if (view === ViewType.LOADING) {
371-
return <Progressing pageLoader />
368+
if (view === BulkEditViewType.LOADING_OUTPUT) {
369+
return <Progressing size={32} />
372370
}
373371

374372
if (!outputResult) {
@@ -475,8 +473,8 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
475473
renderImpactedObjects = () => {
476474
const { view, impactedObjects } = this.state
477475

478-
if (view === ViewType.LOADING) {
479-
return <Progressing pageLoader />
476+
if (view === BulkEditViewType.LOADING_IMPACTED_OUTPUT) {
477+
return <Progressing size={32} />
480478
}
481479

482480
if (!impactedObjects) {
@@ -549,7 +547,7 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
549547
const readmeJson = readmeResult[selectedReadmeVersionOption.value]
550548

551549
if (isReadmeLoading) {
552-
return <Progressing pageLoader />
550+
return <Progressing size={32} />
553551
}
554552

555553
if (!readmeJson) {
@@ -590,22 +588,14 @@ class BulkEdits extends Component<BulkEditsProps, BulkEditsState> {
590588
}
591589

592590
render() {
593-
const { view, statusCode } = this.state
594-
if (view === ViewType.ERROR) {
595-
return (
596-
<div className="dc__align-reload-center">
597-
<ErrorScreenManager code={statusCode} />
598-
</div>
599-
)
600-
}
601-
602591
return (
603592
<div className="fs-13 flexbox-col flex-grow-1 h-100 dc__overflow-hidden">
604593
<PageHeader
605594
headerName="Bulk Edit"
606595
tippyProps={{
607596
isTippyCustomized: true,
608-
tippyMessage: 'Run scripts to bulk edit configurations for multiple devtron components.',
597+
tippyMessage:
598+
'Execute payloads to perform bulk configuration changes across multiple Devtron components.',
609599
tippyRedirectLink: 'BULK_UPDATE',
610600
}}
611601
/>

src/components/bulkEdits/bulkEdits.type.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,14 @@ export interface BulkOutput {
6464
secret: CMandSecretBulkOutput
6565
}
6666

67+
export enum BulkEditViewType {
68+
FORM = 'FORM',
69+
LOADING_IMPACTED_OUTPUT = 'LOADING_IMPACTED_OUTPUT',
70+
LOADING_OUTPUT = 'LOADING_OUTPUT',
71+
}
72+
6773
export interface BulkEditsState {
68-
view: string
74+
view: BulkEditViewType
6975
statusCode: number
7076
isReadmeLoading: boolean
7177
impactedObjects: ImpactedObjects

0 commit comments

Comments
 (0)