ui/app/ingresses/index/controller.js

60 lines
1.7 KiB
JavaScript

import { alias } from '@ember/object/computed';
import { get, computed } from '@ember/object';
import { inject as service } from '@ember/service';
import Controller, { inject as controller } from '@ember/controller';
export default Controller.extend({
scope: service(),
projectController: controller('authenticated.project'),
queryParams: ['sortBy'],
sortBy: 'name',
headers: [
{
name: 'state',
sort: ['sortState', 'displayName'],
searchField: 'displayState',
translationKey: 'generic.state',
width: 120,
},
{
name: 'name',
sort: ['sortName', 'id'],
searchField: 'displayName',
translationKey: 'generic.name',
width: 200,
},
{
name: 'targets',
sort: false,
search: false,
translationKey: 'ingressPage.table.targets.label',
},
{
classNames: 'text-right pr-20',
name: 'created',
sort: ['created', 'id'],
searchField: 'created',
translationKey: 'generic.created',
width: 200,
},
],
group: alias('projectController.group'),
groupTableBy: alias('projectController.groupTableBy'),
balancerServices: computed('model.services.@each.kind', function() {
return get(this, 'model.services').filterBy('kind', 'LoadBalancer');
}),
rows: computed('model.ingresses.[]', 'balancerServices.[]', function() {
const out = (get(this, 'balancerServices') || []).slice();
out.addObjects(get(this, 'model.ingresses') || []);
return out;
}),
});