ui/app/apps-tab/detail/controller.js

218 lines
5.5 KiB
JavaScript

import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { computed } from '@ember/object';
import { searchFields as containerSearchFields } from 'ui/components/pod-dots/component';
import { headers as configMapsHeaders } from 'ui/authenticated/project/config-maps/index/controller';
const podsHeaders = [
{
name: 'expand',
sort: false,
searchField: null,
width: 30
},
{
name: 'state',
sort: ['sortState', 'displayName'],
searchField: 'displayState',
translationKey: 'generic.state',
width: 120
},
{
name: 'name',
sort: ['sortName', 'id'],
searchField: 'displayName',
translationKey: 'generic.name',
},
{
name: 'image',
sort: ['image', 'displayName'],
searchField: 'image',
translationKey: 'generic.image',
},
{
name: 'scale',
sort: ['scale:desc', 'isGlobalScale:desc', 'displayName'],
searchField: null,
translationKey: 'stacksPage.table.scale',
classNames: 'text-center',
width: 100
},
]
const ingressHeaders = [
{
name: 'state',
sort: ['sortState', 'displayName'],
searchField: 'displayState',
translationKey: 'generic.state',
width: 120
},
{
name: 'name',
sort: ['sortName', 'id'],
searchField: 'displayName',
translationKey: 'generic.name',
},
{
name: 'created',
sort: ['created', 'id'],
classNames: 'text-right pr-20',
searchField: false,
translationKey: 'generic.created',
},
]
const servicesHeaders = [
{
name: 'state',
sort: ['stack.isDefault:desc', 'stack.displayName', 'sortState', 'displayName'],
searchField: 'displayState',
translationKey: 'generic.state',
width: 120
},
{
name: 'name',
sort: ['stack.isDefault:desc', 'stack.displayName', 'displayName', 'id'],
searchField: 'displayName',
translationKey: 'generic.name',
},
{
name: 'displayType',
sort: ['displayType', 'displayName', 'id'],
searchField: 'displayType',
translationKey: 'generic.type',
width: 150,
},
{
name: 'target',
sort: false,
searchField: 'displayTargets',
translationKey: 'dnsPage.table.target',
},
]
const volumesHeaders = [
// {
// name: 'expand',
// sort: false,
// searchField: null,
// width: 30
// },
{
name: 'state',
sort: ['sortState', 'displayName'],
searchField: 'displayState',
translationKey: 'generic.state',
width: 120
},
{
name: 'name',
sort: ['displayName', 'id'],
searchField: 'displayName',
translationKey: 'volumesPage.claimName.label',
},
{
name: 'size',
sort: ['sizeBytes'],
search: ['sizeBytes', 'displaySize'],
translationKey: 'generic.size',
width: 120
},
{
name: 'volume',
sort: ['volume.displayName', 'displayName', 'id'],
translationKey: 'volumesPage.volume.label',
searchField: null,
},
{
name: 'storageClass',
sort: ['storageClass.displayName', 'displayName', 'id'],
translationKey: 'volumesPage.storageClass.label',
searchField: null,
},
]
const secretsHeaders = [
{
name: 'state',
sort: ['sortState', 'name', 'id'],
type: 'string',
searchField: 'displayState',
translationKey: 'generic.state',
width: 125,
},
{
name: 'name',
sort: ['name', 'id'],
translationKey: 'generic.name',
},
{
name: 'namespace',
translationKey: 'generic.namespace',
searchField: 'namespace.displayName',
sort: ['namespace.displayName', 'name', 'id'],
},
{
name: 'keys',
translationKey: 'secretsPage.table.keys',
searchField: 'keys',
sort: ['firstKey', 'name', 'id'],
},
{
name: 'created',
translationKey: 'generic.created',
sort: ['created:desc', 'name', 'id'],
searchField: false,
type: 'string',
width: 150,
},
]
export default Controller.extend({
scope: service(),
ingressHeaders,
servicesHeaders,
volumesHeaders,
secretsHeaders,
configMapsHeaders,
ingressSearchText: '',
secretsSearchText: '',
configMapsSearchText: '',
podsHeaders,
podsSearchText: '',
servicesSearchText: '',
volumesSearchText: '',
sortBy: 'name',
extraSearchFields: ['id:prefix', 'displayIp:ip'],
extraSearchSubFields: containerSearchFields,
expandedInstances: null,
init() {
this._super(...arguments);
this.set('expandedInstances', []);
},
actions: {
toggleExpand(instId) {
let list = this.get('expandedInstances');
if ( list.includes(instId) ) {
list.removeObject(instId);
} else {
list.addObject(instId);
}
},
},
workloadsAndPods: computed('model.app.workloads', 'model.app.pods', function() {
let out = [];
out = this.get('model.app.pods').filter((obj) => !obj.get('workloadId'));
out.pushObjects(this.get('model.app.workloads').slice());
return out;
}),
});