9
9
WorkflowTemplateInstance ,
10
10
WorkflowTemplateRequest
11
11
} from '../../../model/workflow-template.model' ;
12
+ import { Workflow } from '../../../model/workflow.model' ;
12
13
import { RepoManagerService } from '../../../service/repomanager/project.repomanager.service' ;
13
14
import { WorkflowTemplateService } from '../../../service/workflow-template/workflow-template.service' ;
14
15
@@ -28,17 +29,21 @@ export class WorkflowTemplateApplyFormComponent {
28
29
}
29
30
get project ( ) { return this . _project ; }
30
31
32
+ @Input ( ) workflow : Workflow ;
33
+
31
34
_workflowTemplate : WorkflowTemplate ;
32
35
@Input ( ) set workflowTemplate ( wt : WorkflowTemplate ) {
33
36
this . _workflowTemplate = wt ;
34
37
35
38
this . parameterValues = { } ;
36
39
37
- this . _workflowTemplate . parameters . forEach ( parameter => {
38
- if ( parameter . type === 'boolean' ) {
39
- this . parameterValues [ parameter . key ] = new FormControl ( ) ;
40
- }
41
- } ) ;
40
+ if ( this . _workflowTemplate . parameters ) {
41
+ this . _workflowTemplate . parameters . forEach ( parameter => {
42
+ if ( parameter . type === 'boolean' ) {
43
+ this . parameterValues [ parameter . key ] = new FormControl ( ) ;
44
+ }
45
+ } ) ;
46
+ }
42
47
43
48
this . fillFormWithInstanceData ( ) ;
44
49
}
@@ -75,33 +80,42 @@ export class WorkflowTemplateApplyFormComponent {
75
80
req . workflow_name = this . parameterName ;
76
81
req . parameters = { } ;
77
82
78
- this . _workflowTemplate . parameters . forEach ( parameter => {
79
- if ( this . parameterValues [ parameter . key ] ) {
80
- switch ( parameter . type ) {
81
- case 'boolean' :
82
- req . parameters [ parameter . key ] = this . parameterValues [ parameter . key ] &&
83
- ! ! this . parameterValues [ parameter . key ] . value ? 'true' : 'false' ;
84
- break ;
85
- case 'repository' :
86
- if ( this . parameterValues [ parameter . key + '-repository' ] ) {
87
- req . parameters [ parameter . key ] = this . parameterValues [ parameter . key ] + '/' +
88
- this . parameterValues [ parameter . key + '-repository' ] ;
89
- }
90
- break ;
91
- default :
92
- req . parameters [ parameter . key ] = this . parameterValues [ parameter . key ] ;
93
- break ;
83
+ if ( this . _workflowTemplate . parameters ) {
84
+ this . _workflowTemplate . parameters . forEach ( parameter => {
85
+ if ( this . parameterValues [ parameter . key ] ) {
86
+ switch ( parameter . type ) {
87
+ case 'boolean' :
88
+ req . parameters [ parameter . key ] = this . parameterValues [ parameter . key ] &&
89
+ ! ! this . parameterValues [ parameter . key ] . value ? 'true' : 'false' ;
90
+ break ;
91
+ case 'repository' :
92
+ if ( this . parameterValues [ parameter . key + '-repository' ] ) {
93
+ req . parameters [ parameter . key ] = this . parameterValues [ parameter . key ] + '/' +
94
+ this . parameterValues [ parameter . key + '-repository' ] ;
95
+ }
96
+ break ;
97
+ default :
98
+ req . parameters [ parameter . key ] = this . parameterValues [ parameter . key ] ;
99
+ break ;
100
+ }
94
101
}
95
- }
96
- } ) ;
102
+ } ) ;
103
+ }
97
104
98
105
this . result = null ;
99
106
this . loading = true ;
100
107
this . _workflowTemplateService . applyWorkflowTemplate ( this . _workflowTemplate . group . name , this . _workflowTemplate . slug , req )
101
108
. pipe ( first ( ) , finalize ( ( ) => this . loading = false ) )
102
109
. subscribe ( res => {
110
+ // if the workflow name changed move to new workflow page
103
111
this . result = res ;
104
- this . apply . emit ( ) ;
112
+
113
+ // specific check for case where workflow name change in template
114
+ if ( res . workflow_name !== this . workflow . name ) {
115
+ this . _
6851
router . navigate ( [ '/project' , this . project . key , 'workflow' , res . workflow_name ] ) ;
116
+ } else {
117
+ this . apply . emit ( ) ;
118
+ }
105
119
} ) ;
106
120
}
107
121
@@ -143,30 +157,32 @@ export class WorkflowTemplateApplyFormComponent {
143
157
fillFormWithInstanceData ( ) : void {
144
158
if ( this . _workflowTemplate && this . _workflowTemplateInstance ) {
145
159
this . parameterName = this . _workflowTemplateInstance . request . workflow_name ;
146
- this . _workflowTemplate . parameters . forEach ( parameter => {
147
-
148
- let v = this . _workflowTemplateInstance . request . parameters [ parameter . key ] ;
149
- if ( v ) {
150
- switch ( parameter . type ) {
151
- case 'boolean' :
152
- this . parameterValues [ parameter . key ] . setValue ( v === 'true' ) ;
153
- break ;
154
- case 'repository' :
155
- let s = v . split ( '/' ) ;
156
- if ( s . length > 1 ) {
157
- let existingVcs = this . vcsNames . find ( vcs => vcs === s [ 0 ] ) ;
158
- if ( existingVcs ) {
159
- this . parameterValues [ parameter . key ] = existingVcs ;
160
- this . fetchRepos ( parameter . key , existingVcs ) ;
160
+ if ( this . _workflowTemplate . parameters ) {
161
+ this . _workflowTemplate . parameters . forEach ( parameter => {
162
+
163
+ let v = this . _workflowTemplateInstance . request . parameters [ parameter . key ] ;
164
+ if ( v ) {
165
+ switch ( parameter . type ) {
166
+ case 'boolean' :
167
+ this . parameterValues [ parameter . key ] . setValue ( v === 'true' ) ;
168
+ break ;
169
+ case 'repository' :
170
+ let s = v . split ( '/' ) ;
171
+ if ( s . length > 1 ) {
172
+ let existingVcs = this . vcsNames . find ( vcs => vcs === s [ 0 ] ) ;
173
+ if ( existingVcs ) {
174
+ this . parameterValues [ parameter . key ] = existingVcs ;
175
+ this . fetchRepos ( parameter . key , existingVcs ) ;
176
+ }
161
177
}
162
- }
163
- break ;
164
- default :
165
- this . parameterValues [ parameter . key ] = v ;
166
- break ;
178
+ break ;
179
+ default :
180
+ this . parameterValues [ parameter . key ] = v ;
181
+ break ;
182
+ }
167
183
}
168
- }
169
- } ) ;
184
+ } ) ;
185
+ }
170
186
}
171
187
}
172
188
0 commit comments