mirror of https://github.com/rancher/ui.git
95 lines
2.9 KiB
JavaScript
95 lines
2.9 KiB
JavaScript
import Component from '@ember/component';
|
|
import { alias } from '@ember/object/computed';
|
|
import { environmentTypes , environmentTypeObject } from 'pipeline/utils/pipelineStep';
|
|
import layout from './template';
|
|
|
|
export default Component.extend({
|
|
layout,
|
|
languageToLabel: {
|
|
JavaScript: 'NodeJs',
|
|
Go: 'Go',
|
|
C: 'C'
|
|
},
|
|
environmentTypes,
|
|
selectedType: 'Go',
|
|
customImage: {
|
|
selectableTags: [],
|
|
repo: '',
|
|
tag: ''
|
|
},
|
|
routeState: alias('modalOpts.routeState'),
|
|
runScriptConfig: alias('selectedModel.runScriptConfig'),
|
|
init(){
|
|
this._super(...arguments);
|
|
this.stepInitial();
|
|
},
|
|
stepInitial(){
|
|
let runScriptConfig = this.get('runScriptConfig');
|
|
let routeState = this.get('routeState');
|
|
if(runScriptConfig.image){
|
|
this.setLanguageEnvironment(runScriptConfig);
|
|
}else{
|
|
let label = this.get('languageToLabel')[routeState.language]|| 'Custom';
|
|
this.set('selectedType', label);
|
|
if(label!=='Custom'){
|
|
this.selectedTypeObserve();
|
|
this.enviromentImageObserve();
|
|
}
|
|
}
|
|
},
|
|
setLanguageEnvironment(runScriptConfig){
|
|
let image = runScriptConfig.image;
|
|
let selectedType = 'Custom';
|
|
if(runScriptConfig.isShell){
|
|
let splitedImage = image.split(':');
|
|
let imageName = splitedImage[0];
|
|
let imageTag = 'latest';
|
|
if(splitedImage[1]){
|
|
imageTag = splitedImage[1];
|
|
}
|
|
let environmentTypes = this.get('environmentTypes');
|
|
let shouldSelectedType = environmentTypes.find((ele)=>{
|
|
let eleImageName = ele.value.split(':')[0];
|
|
if(eleImageName === imageName){
|
|
return true
|
|
}
|
|
});
|
|
if(shouldSelectedType){
|
|
selectedType = shouldSelectedType.label;
|
|
let selectedImage = shouldSelectedType.value.split(':');
|
|
this.set('customImage',{
|
|
selectableTags: shouldSelectedType.version,
|
|
repo: selectedImage[0],
|
|
tag: selectedImage[1]
|
|
});
|
|
}
|
|
}
|
|
this.set('selectedType', selectedType);
|
|
},
|
|
selectedTypeObserve: function(){
|
|
let selectedType = this.get('selectedType');
|
|
if(selectedType !== 'Custom'){
|
|
let selectedEnvironmentTypes = environmentTypeObject(selectedType, this.get('pipeline').stages[0].steps[0].sourceCodeConfig.url);
|
|
this.set('runScriptConfig.shellScript', selectedEnvironmentTypes.shell);
|
|
let selectedImage = selectedEnvironmentTypes.value.split(':');
|
|
this.set('customImage',{
|
|
selectableTags: selectedEnvironmentTypes.version,
|
|
repo: selectedImage[0],
|
|
tag: selectedImage[1]
|
|
});
|
|
}
|
|
else{
|
|
this.set('runScriptConfig.isShell', true);
|
|
}
|
|
}.observes('selectedType'),
|
|
enviromentImageObserve: function(){
|
|
let customImage = this.get('customImage');
|
|
this.set('runScriptConfig.image', `${customImage.repo}:${customImage.tag}`);
|
|
}.observes('customImage.{repo,tag}'),
|
|
actions: {
|
|
changeTaskModel(state){
|
|
this.set('runScriptConfig.isShell',state);
|
|
}
|
|
}
|
|
});
|