diff --git a/app/components/view-edit-project/component.js b/app/components/view-edit-project/component.js index 6c07f9d3a..6502c335b 100644 --- a/app/components/view-edit-project/component.js +++ b/app/components/view-edit-project/component.js @@ -94,7 +94,7 @@ export default Ember.Component.extend(NewOrEdit, Sortable, { ]; this.get('projectTemplates').forEach((tpl) => { - choices.push({id: tpl.id, name: tpl.name, image: tpl.links.icon}); + choices.push({id: tpl.id, name: tpl.name, image: tpl.get('orchestrationIcon')}); }); choices.forEach(function(driver) { diff --git a/app/models/catalogtemplate.js b/app/models/catalogtemplate.js index bc601a756..3de652d1b 100644 --- a/app/models/catalogtemplate.js +++ b/app/models/catalogtemplate.js @@ -1,8 +1,11 @@ +import Ember from 'ember'; import Resource from 'ember-api-store/models/resource'; import { parseExternalId } from 'ui/utils/parse-externalid'; import C from 'ui/utils/constants'; export default Resource.extend({ + catalog: Ember.inject.service(), + type: 'catalogTemplate', externalId: function() { @@ -15,4 +18,23 @@ export default Resource.extend({ externalIdInfo: function() { return parseExternalId(this.get('externalId')); }.property('externalId'), + + // These only works if the templates have already been loaded elsewhere... + catalogTemplate: function() { + return this.get('catalog').getTemplateFromCache(this.get('externalIdInfo.templateId')); + }.property('externalIdInfo.templateId'), + + icon: function() { + let tpl = this.get('catalogTemplate'); + if ( tpl ) { + return tpl.linkFor('icon'); + } + }.property('catalogTemplate'), + + category: function() { + let tpl = this.get('catalogTemplate'); + if ( tpl ) { + return tpl.get('category'); + } + }.property('catalogTemplate'), }); diff --git a/app/models/projecttemplate.js b/app/models/projecttemplate.js index 8a5a7b2b6..9bc241e91 100644 --- a/app/models/projecttemplate.js +++ b/app/models/projecttemplate.js @@ -33,6 +33,32 @@ var ProjectTemplate = Resource.extend(PolledResource, { }.property('canEdit'), icon: 'icon icon-file', + + summary: function() { + let map = { + 'Orchestration': [], + }; + + this.get('stacks').forEach((stack) => { + let category = stack.get('category'); + if ( !map[category] ) { + map[category] = []; + } + + map[category].push(stack.get('catalogTemplate.name')); + }); + + return map; + }.property('stacks.[]'), + + orchestrationIcon: function() { + let orch = this.get('stacks').findBy('catalogTemplate.category','Orchestration'); + if ( orch ) { + return orch.get('icon'); + } else { + return `${this.get('app.baseAssets')}assets/images/logos/provider-orchestration.svg`; + } + }.property('stacks.[]'), }); // Projects don't get pushed by /subscribe WS, so refresh more often diff --git a/app/services/catalog.js b/app/services/catalog.js index 78bf41ad7..950374276 100644 --- a/app/services/catalog.js +++ b/app/services/catalog.js @@ -32,6 +32,10 @@ export default Ember.Service.extend({ return this.get('store').request({url: `${this.get('app.catalogEndpoint')}/catalogs`}); }, + getTemplateFromCache(id) { + return this.get('store').getById('template', id); + }, + fetchTemplate(id, upgrade=false) { let type = 'templates'; if ( upgrade === true ) { diff --git a/app/settings/projects/new/route.js b/app/settings/projects/new/route.js index 2ec1ca22d..fdfe33b1e 100644 --- a/app/settings/projects/new/route.js +++ b/app/settings/projects/new/route.js @@ -3,12 +3,14 @@ import C from 'ui/utils/constants'; export default Ember.Route.extend({ access: Ember.inject.service(), + catalog: Ember.inject.service(), model: function(/*params, transition*/) { var userStore = this.get('userStore'); return Ember.RSVP.hash({ all: userStore.findAllUnremoved('project'), projectTemplates: userStore.findAll('projectTemplate'), + catalogTemplates: this.get('catalog').fetchTemplates({templateBase: C.EXTERNAL_ID.KIND_INFRA}), }).then((hash) => { var project = userStore.createRecord({ type: 'project', diff --git a/public/crossdomain.xml b/public/crossdomain.xml deleted file mode 100644 index 0c16a7a07..000000000 --- a/public/crossdomain.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - -