mirror of https://github.com/rancher/ui.git
parent
a009bc543e
commit
c81aa67ca4
|
|
@ -1,7 +1,9 @@
|
||||||
import { get, set } from '@ember/object';
|
import { get, set } from '@ember/object';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import { hash } from 'rsvp';
|
import { hash, hashSettled/* , all */ } from 'rsvp';
|
||||||
|
import { loadScript, loadStylesheet, proxifyUrl } from 'shared/utils/load-script';
|
||||||
|
import { isEmpty } from '@ember/utils';
|
||||||
|
|
||||||
export default Route.extend({
|
export default Route.extend({
|
||||||
access: service(),
|
access: service(),
|
||||||
|
|
@ -26,15 +28,59 @@ export default Route.extend({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
afterModel(model) {
|
||||||
|
// load the css/js url here, if the url loads fail we should error the driver out
|
||||||
|
// show the driver in the ui, greyed out, and possibly add error text "can not load comonent from url [put url here]"
|
||||||
|
|
||||||
|
let { kontainerDrivers } = model;
|
||||||
|
let externalDrivers = kontainerDrivers.filter( (d) => d.uiUrl !== '');
|
||||||
|
let promises = {};
|
||||||
|
|
||||||
|
externalDrivers.forEach( (d) => {
|
||||||
|
if (get(d, 'hasUi')) {
|
||||||
|
const jsUrl = proxifyUrl(d.uiUrl, this.get('app.proxyEndpoint'));
|
||||||
|
const cssUrl = proxifyUrl(d.uiUrl.replace(/\.js$/, '.css'), get(this, 'app.proxyEndpoint'));
|
||||||
|
|
||||||
|
// skip setProperties cause of weird names
|
||||||
|
set(promises, `${ d.name }Js`, loadScript(jsUrl, `driver-ui-js-${ d.name }`));
|
||||||
|
set(promises, `${ d.name }Css`, loadStylesheet(cssUrl, `driver-ui-css-${ d.name }`));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (isEmpty(promises)) {
|
||||||
|
return model;
|
||||||
|
} else {
|
||||||
|
return hashSettled(promises).then( (settled) => {
|
||||||
|
let allkeys = Object.keys(settled);
|
||||||
|
|
||||||
|
allkeys.forEach( (key) => {
|
||||||
|
if (get(settled, `${ key }.state`) === 'rejected') {
|
||||||
|
let tmp = key.indexOf('Js') > -1 ? key.replace(/\Js$/, '') : key.replace(/\Css$/, '');
|
||||||
|
let match = kontainerDrivers.findBy('id', tmp);
|
||||||
|
|
||||||
|
console.log('Error Loading External Component for: ', match);
|
||||||
|
if (match && get(match, 'scriptError') !== true) {
|
||||||
|
set(match, 'scriptError', get(this, 'intl').t('clusterNew.externalError'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}).finally(() => {
|
||||||
|
return model;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
setupController(controller/* , model*/) {
|
setupController(controller/* , model*/) {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
set(controller, 'step', 1);
|
set(controller, 'step', 1);
|
||||||
},
|
},
|
||||||
|
|
||||||
resetController(controller, isExisting /* , transition*/ ) {
|
resetController(controller, isExiting /* , transition*/ ) {
|
||||||
if (isExisting) {
|
if (isExiting) {
|
||||||
controller.set('errors', null);
|
controller.set('errors', null);
|
||||||
controller.set('provider', null);
|
controller.set('provider', null);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
|
||||||
|
queryParams: { provider: { refreshModel: true } },
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{{cru-cluster
|
{{cru-cluster
|
||||||
model=model
|
model=model
|
||||||
initialProvider=cluster.provider
|
initialProvider=cluster.provider
|
||||||
provider=provider
|
|
||||||
mode="edit"
|
mode="edit"
|
||||||
close=(action "close")
|
close=(action "close")
|
||||||
}}
|
}}
|
||||||
|
|
|
||||||
|
|
@ -113,8 +113,12 @@ export default Resource.extend(Grafana, ResourceUsage, {
|
||||||
return 'custom';
|
return 'custom';
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
if (get(this, 'driver') && get(this, 'configName')) {
|
||||||
|
return get(this, 'driver');
|
||||||
|
} else {
|
||||||
return 'import';
|
return 'import';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
displayProvider: computed('configName', 'nodePools.@each.displayProvider', 'intl.locale', function() {
|
displayProvider: computed('configName', 'nodePools.@each.displayProvider', 'intl.locale', function() {
|
||||||
|
|
@ -146,8 +150,12 @@ export default Resource.extend(Grafana, ResourceUsage, {
|
||||||
return intl.t('clusterNew.custom.shortLabel');
|
return intl.t('clusterNew.custom.shortLabel');
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
if (get(this, 'driver') && get(this, 'configName')) {
|
||||||
|
return get(this, 'driver').capitalize();
|
||||||
|
} else {
|
||||||
return intl.t('clusterNew.import.shortLabel');
|
return intl.t('clusterNew.import.shortLabel');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
systemProject: computed('projects.@each.isSystemProject', function() {
|
systemProject: computed('projects.@each.isSystemProject', function() {
|
||||||
|
|
@ -245,7 +253,7 @@ export default Resource.extend(Grafana, ResourceUsage, {
|
||||||
},
|
},
|
||||||
|
|
||||||
edit() {
|
edit() {
|
||||||
get(this, 'router').transitionTo('authenticated.cluster.edit', get(this, 'id'));
|
get(this, 'router').transitionTo('authenticated.cluster.edit', get(this, 'id'), { queryParams: { provider: get(this, 'driver') } });
|
||||||
},
|
},
|
||||||
|
|
||||||
scaleDownPool(id) {
|
scaleDownPool(id) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue