@@ -33,11 +33,11 @@ import {
33
33
ButtonStyleType ,
34
34
MODES ,
35
35
Icon ,
36
+ GenericSectionErrorState ,
36
37
} from '@devtron-labs/devtron-fe-common-lib'
37
38
import { SERVER_MODE , ViewType } from '../../config'
38
- import { BulkEditsProps , BulkEditsState } from './bulkEdits.type'
39
+ import { BulkEditsProps , BulkEditsState , BulkEditVersion } from './bulkEdits.type'
39
40
import { ReactComponent as Close } from '../../assets/icons/ic-close.svg'
40
- import { ReactComponent as PlayButton } from '../../assets/icons/ic-play.svg'
41
41
import { updateBulkList , getSeeExample , updateImpactedObjectsList } from './bulkedits.service'
42
42
import './bulkEdit.scss'
43
43
import {
@@ -48,6 +48,24 @@ import {
48
48
renderSecretOutput ,
49
49
} from './bulkedit.utils'
50
50
import { OutputDivider , OutputObjectTabs , STATUS } from './constants'
51
+ import { importComponentFromFELibrary } from '@Components/common'
52
+
53
+ const getBulkEditConfig = importComponentFromFELibrary ( 'getBulkEditConfig' , null , 'function' )
54
+
55
+ const ReadmeVersionOptions = [
56
+ {
57
+ label : 'v1beta1/application' ,
58
+ value : BulkEditVersion . v1 ,
59
+ } ,
60
+ ...( getBulkEditConfig
61
+ ? [
62
+ {
63
+ label : 'v1beta2/application' ,
64
+ value : BulkEditVersion . v2 ,
65
+ } ,
66
+ ]
67
+ : [ ] ) ,
68
+ ]
51
69
52
70
export default class BulkEdits extends Component < BulkEditsProps , BulkEditsState > {
53
71
constructor ( props : BulkEditsProps ) {
@@ -60,8 +78,12 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
60
78
impactedObjects : undefined ,
61
79
isReadmeLoading : true ,
62
80
bulkConfig : [ ] ,
63
- updatedTemplate : [ ] ,
64
- readmeResult : [ ] ,
81
+ readmeVersionOptions : ReadmeVersionOptions ,
82
+ selectedReadmeVersionOption : ReadmeVersionOptions [ 0 ] ,
83
+ readmeResult : {
84
+ [ BulkEditVersion . v1 ] : null ,
85
+ [ BulkEditVersion . v2 ] : null ,
86
+ } ,
65
87
showExamples : true ,
66
88
activeOutputTab : 'output' ,
67
89
codeEditorPayload : undefined ,
@@ -78,33 +100,26 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
78
100
}
79
101
80
102
getInitialized ( ) {
81
- getSeeExample ( )
82
- . then ( ( res ) => {
83
- this . setState ( { view : ViewType . LOADING } )
84
- const bulkConfig = res . result
85
- let kind = bulkConfig . map ( ( elm ) => elm . script . kind )
86
- kind = kind . toString ( ) . toLocaleLowerCase ( )
87
- let apiVersion = bulkConfig . map ( ( elm ) => elm . script . apiVersion )
88
- apiVersion = apiVersion . toString ( )
89
- const readmeResult = bulkConfig . map ( ( elm ) => elm . readme )
90
- const updatedTemplate = bulkConfig . map ( ( elm ) => {
91
- return {
92
- value : elm . operation ,
93
- label : elm . operation ,
94
- }
95
- } )
103
+ Promise . allSettled ( [
104
+ getBulkEditConfig ?.( ) . then ( ( { result : { readme } } ) => {
105
+ return readme
106
+ } ) ,
107
+ getSeeExample ( ) . then ( ( { result } ) => {
108
+ return result [ 0 ] . readme
109
+ } ) ,
110
+ ] )
111
+ . then ( ( [ v2ReadmeResult , v1ReadmeResult ] ) => {
112
+ const v2Readme = v2ReadmeResult . status === 'fulfilled' ? v2ReadmeResult . value : null
113
+ const v1Readme = v1ReadmeResult . status === 'fulfilled' ? v1ReadmeResult . value : null
96
114
97
115
this . setState ( {
98
- view : ViewType . FORM ,
99
116
isReadmeLoading : false ,
100
- bulkConfig,
101
- updatedTemplate,
102
- readmeResult,
117
+ readmeResult : { [ BulkEditVersion . v1 ] : v1Readme , [ BulkEditVersion . v2 ] : v2Readme } ,
103
118
} )
104
119
} )
105
120
. catch ( ( error ) => {
106
121
showError ( error )
107
- this . setState ( { view : ViewType . FORM , statusCode : error . code } )
122
+ this . setState ( { isReadmeLoading : false , statusCode : error . code } )
108
123
} )
109
124
}
110
125
@@ -187,7 +202,7 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
187
202
renderCodeEditorHeader = ( ) => {
188
203
return (
189
204
< div className = "flex bg__primary px-20 py-8 dc__border-bottom dc__content-space" >
190
- < h1 className = ' m-0 fs-13 cn-9 fw-6 lh-20 dc__open-sans' > Script</ h1 >
205
+ < h1 className = " m-0 fs-13 cn-9 fw-6 lh-20 dc__open-sans" > Script</ h1 >
191
206
192
207
< div className = "flexbox dc__gap-12" >
193
208
< Button
@@ -201,7 +216,7 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
201
216
text = "Run"
202
217
onClick = { this . handleRunButton }
203
218
dataTestId = "run-button"
204
- startIcon = { < Icon name = ' ic-play-outline' color = { null } /> }
219
+ startIcon = { < Icon name = " ic-play-outline" color = { null } /> }
205
220
size = { ComponentSizeType . small }
206
221
> </ Button >
207
222
</ div >
@@ -233,7 +248,7 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
233
248
234
249
return (
235
250
< div className = "dc__grid-rows-2 flex-grow-1 dc__overflow-hidden" >
236
- < div className = ' dc__overflow-auto' >
251
+ < div className = " dc__overflow-auto" >
237
252
< CodeEditor
238
253
mode = { MODES . YAML }
239
254
height = "auto"
@@ -385,20 +400,8 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
385
400
)
386
401
}
387
402
388
- handleUpdateTemplate = ( ) => {
389
- this . setState ( { isReadmeLoading : true } )
390
- getSeeExample ( )
391
- . then ( ( res ) => {
392
- const readmeResult = res . result . map ( ( elm ) => elm . readme )
393
- this . setState ( {
394
- isReadmeLoading : false ,
395
- readmeResult,
396
- } )
397
- } )
398
- . catch ( ( error ) => {
399
- showError ( error )
400
- this . setState ( { isReadmeLoading : false , statusCode : error . code } )
401
- } )
403
+ handleUpdateTemplate = ( option : BulkEditsState [ 'selectedReadmeVersionOption' ] ) => {
404
+ this . setState ( { selectedReadmeVersionOption : option } )
402
405
}
403
406
404
407
onClickHideExamples = ( ) => {
@@ -407,7 +410,7 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
407
410
408
411
renderSampleTemplateHeader = ( ) => {
409
412
return (
410
- < div className = "dc__border-bottom bg__primary py-8 px-20 flex h-48 dc__content-space" >
413
+ < div className = "dc__border-bottom bg__primary py-8 px-20 flex dc__content-space" >
411
414
< div className = "flex left dc__gap-16" >
412
415
< div className = "fw-6 cn-9" data-testid = "sample-application" >
413
416
Sample:
@@ -416,10 +419,10 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
416
419
inputId = "sample-application"
417
420
name = "sample-application"
418
421
classNamePrefix = "sample-application-select"
419
- value = { this . state . updatedTemplate [ 0 ] }
422
+ value = { this . state . selectedReadmeVersionOption }
420
423
placeholder = "Update Deployment Template"
421
- options = { this . state . updatedTemplate }
422
- onChange = { ( ) => this . handleUpdateTemplate ( ) }
424
+ options = { this . state . readmeVersionOptions }
425
+ onChange = { this . handleUpdateTemplate }
423
426
variant = { SelectPickerVariantType . COMPACT }
424
427
size = { ComponentSizeType . medium }
425
428
menuSize = { ComponentSizeType . medium }
@@ -439,10 +442,17 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
439
442
}
440
443
441
444
renderSampleTemplateBody = ( ) => {
442
- const readmeJson = this . state . readmeResult . toString ( )
443
- return this . state . isReadmeLoading ? (
444
- < Progressing pageLoader />
445
- ) : (
445
+ const readmeJson = this . state . readmeResult [ this . state . selectedReadmeVersionOption . value ]
446
+
447
+ if ( this . state . isReadmeLoading ) {
448
+ return < Progressing pageLoader />
449
+ }
450
+
451
+ if ( ! readmeJson ) {
452
+ return < GenericSectionErrorState rootClassName = 'flex-grow-1' />
453
+ }
454
+
455
+ return (
446
456
< div className = "deploy-chart__readme-column flexbox-col flex-grow-1 dc__overflow-auto" >
447
457
< MarkDown markdown = { readmeJson } className = "flexbox-col flex-grow-1" />
448
458
</ div >
0 commit comments