ui/app/stacks/index/controller.js

84 lines
2.5 KiB
JavaScript

import Ember from 'ember';
import Sortable from 'ui/mixins/sortable';
import C from 'ui/utils/constants';
import { tagsToArray } from 'ui/models/stack';
export default Ember.Controller.extend(Sortable, {
stacksController: Ember.inject.controller('stacks'),
projects: Ember.inject.service(),
prefs: Ember.inject.service(),
intl: Ember.inject.service(),
which: Ember.computed.alias('stacksController.which'),
tags: Ember.computed.alias('stacksController.tags'),
filteredStacks: function() {
var which = this.get('which');
var needTags = tagsToArray(this.get('tags'));
var out = this.get('model.stacks');
if ( !this.get('prefs.showSystemResources') ) {
out = out.filterBy('system', false);
}
if ( which === C.EXTERNAL_ID.KIND_NOT_ORCHESTRATION )
{
out = out.filter(function(obj) {
return C.EXTERNAL_ID.KIND_ORCHESTRATION.indexOf(obj.get('grouping')) === -1;
});
}
else if ( which !== C.EXTERNAL_ID.KIND_ALL )
{
out = out.filterBy('grouping', which);
}
if ( needTags.length ) {
out = out.filter((obj) => obj.hasTags(needTags));
}
out = out.filter((obj) => obj.get('type').toLowerCase() !== 'kubernetesstack');
return out;
// state isn't really a dependency here, but sortable won't recompute when it changes otherwise
}.property('model.stacks.@each.{state,grouping,system}','which','tags','prefs.showSystemResources'),
simpleMode: function() {
if ( this.get('which') !== C.EXTERNAL_ID.KIND_ALL ) {
return false;
}
let all = this.get('model.stacks');
if ( all.get('length') > 1 ) {
return false;
}
let stack = all.objectAt(0);
return (stack.get('name')||'').toLowerCase() === 'default';
}.property('which','model.stacks.@each.name'),
sortableContent: Ember.computed.alias('filteredStacks'),
sortBy: 'name',
sorts: {
state: ['stateSort','name','id'],
name: ['name','id']
},
pageHeader: function() {
let which = this.get('which');
let tags = this.get('tags');
if ( tags && tags.length ) {
return 'stacksPage.header.tags';
} else if ( which === C.EXTERNAL_ID.KIND_ALL ) {
return 'stacksPage.header.containers';
} else if ( C.EXTERNAL_ID.SHOW_AS_SYSTEM.indexOf(which) >= 0 ) {
return 'stacksPage.header.infra';
} else if ( which.toLowerCase() === 'user') {
return 'stacksPage.header.user';
} else {
return 'stacksPage.header.custom';
}
}.property('which','tags'),
});