@@ -33,11 +33,11 @@ import {
3333 ButtonStyleType ,
3434 MODES ,
3535 Icon ,
36+ GenericSectionErrorState ,
3637} from '@devtron-labs/devtron-fe-common-lib'
3738import { SERVER_MODE , ViewType } from '../../config'
38- import { BulkEditsProps , BulkEditsState } from './bulkEdits.type'
39+ import { BulkEditsProps , BulkEditsState , BulkEditVersion } from './bulkEdits.type'
3940import { ReactComponent as Close } from '../../assets/icons/ic-close.svg'
40- import { ReactComponent as PlayButton } from '../../assets/icons/ic-play.svg'
4141import { updateBulkList , getSeeExample , updateImpactedObjectsList } from './bulkedits.service'
4242import './bulkEdit.scss'
4343import {
@@ -48,6 +48,24 @@ import {
4848 renderSecretOutput ,
4949} from './bulkedit.utils'
5050import { 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+ ]
5169
5270export default class BulkEdits extends Component < BulkEditsProps , BulkEditsState > {
5371 constructor ( props : BulkEditsProps ) {
@@ -60,8 +78,12 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
6078 impactedObjects : undefined ,
6179 isReadmeLoading : true ,
6280 bulkConfig : [ ] ,
63- updatedTemplate : [ ] ,
64- readmeResult : [ ] ,
81+ readmeVersionOptions : ReadmeVersionOptions ,
82+ selectedReadmeVersionOption : ReadmeVersionOptions [ 0 ] ,
83+ readmeResult : {
84+ [ BulkEditVersion . v1 ] : null ,
85+ [ BulkEditVersion . v2 ] : null ,
86+ } ,
6587 showExamples : true ,
6688 activeOutputTab : 'output' ,
6789 codeEditorPayload : undefined ,
@@ -78,33 +100,26 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
78100 }
79101
80102 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
96114
97115 this . setState ( {
98- view : ViewType . FORM ,
99116 isReadmeLoading : false ,
100- bulkConfig,
101- updatedTemplate,
102- readmeResult,
117+ readmeResult : { [ BulkEditVersion . v1 ] : v1Readme , [ BulkEditVersion . v2 ] : v2Readme } ,
103118 } )
104119 } )
105120 . catch ( ( error ) => {
106121 showError ( error )
107- this . setState ( { view : ViewType . FORM , statusCode : error . code } )
122+ this . setState ( { isReadmeLoading : false , statusCode : error . code } )
108123 } )
109124 }
110125
@@ -187,7 +202,7 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
187202 renderCodeEditorHeader = ( ) => {
188203 return (
189204 < 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 >
191206
192207 < div className = "flexbox dc__gap-12" >
193208 < Button
@@ -201,7 +216,7 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
201216 text = "Run"
202217 onClick = { this . handleRunButton }
203218 dataTestId = "run-button"
204- startIcon = { < Icon name = ' ic-play-outline' color = { null } /> }
219+ startIcon = { < Icon name = " ic-play-outline" color = { null } /> }
205220 size = { ComponentSizeType . small }
206221 > </ Button >
207222 </ div >
@@ -233,7 +248,7 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
233248
234249 return (
235250 < div className = "dc__grid-rows-2 flex-grow-1 dc__overflow-hidden" >
236- < div className = ' dc__overflow-auto' >
251+ < div className = " dc__overflow-auto" >
237252 < CodeEditor
238253 mode = { MODES . YAML }
239254 height = "auto"
@@ -385,20 +400,8 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
385400 )
386401 }
387402
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 } )
402405 }
403406
404407 onClickHideExamples = ( ) => {
@@ -407,7 +410,7 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
407410
408411 renderSampleTemplateHeader = ( ) => {
409412 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" >
411414 < div className = "flex left dc__gap-16" >
412415 < div className = "fw-6 cn-9" data-testid = "sample-application" >
413416 Sample:
@@ -416,10 +419,10 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
416419 inputId = "sample-application"
417420 name = "sample-application"
418421 classNamePrefix = "sample-application-select"
419- value = { this . state . updatedTemplate [ 0 ] }
422+ value = { this . state . selectedReadmeVersionOption }
420423 placeholder = "Update Deployment Template"
421- options = { this . state . updatedTemplate }
422- onChange = { ( ) => this . handleUpdateTemplate ( ) }
424+ options = { this . state . readmeVersionOptions }
425+ onChange = { this . handleUpdateTemplate }
423426 variant = { SelectPickerVariantType . COMPACT }
424427 size = { ComponentSizeType . medium }
425428 menuSize = { ComponentSizeType . medium }
@@ -439,10 +442,17 @@ export default class BulkEdits extends Component<BulkEditsProps, BulkEditsState>
439442 }
440443
441444 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 (
446456 < div className = "deploy-chart__readme-column flexbox-col flex-grow-1 dc__overflow-auto" >
447457 < MarkDown markdown = { readmeJson } className = "flexbox-col flex-grow-1" />
448458 </ div >
0 commit comments