mirror of https://github.com/rancher/ui.git
105 lines
2.5 KiB
JavaScript
105 lines
2.5 KiB
JavaScript
import Component from '@ember/component';
|
|
import { inject as service } from '@ember/service';
|
|
import layout from './template';
|
|
import { set, get, observer } from '@ember/object';
|
|
|
|
const NON_NAMESPACED_RESOURCES = ['PersistentVolume'];
|
|
|
|
export default Component.extend({
|
|
globalStore: service(),
|
|
scope: service(),
|
|
|
|
layout,
|
|
|
|
events: null,
|
|
|
|
sortBy: 'lastTimestamp',
|
|
descending: false,
|
|
name: null,
|
|
namespaceId: null,
|
|
resourceType: null,
|
|
expanded: false,
|
|
timeOutAnchor: null,
|
|
loading: false,
|
|
|
|
headers: [
|
|
{
|
|
name: 'type',
|
|
sort: ['type'],
|
|
translationKey: 'resourceEventList.table.type',
|
|
width: 100,
|
|
},
|
|
{
|
|
name: 'reason',
|
|
sort: ['reason'],
|
|
translationKey: 'resourceEventList.table.reason',
|
|
width: 200,
|
|
},
|
|
{
|
|
name: 'message',
|
|
sort: ['message'],
|
|
translationKey: 'resourceEventList.table.message',
|
|
},
|
|
{
|
|
name: 'lastTimestamp',
|
|
sort: ['lastTimestamp'],
|
|
translationKey: 'conditionSections.table.lastUpdate',
|
|
width: 200,
|
|
},
|
|
],
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
this.expanedDidChange();
|
|
},
|
|
|
|
willDestroyElement() {
|
|
this.clearTimeOut();
|
|
this._super();
|
|
},
|
|
expanedDidChange: observer('expanded', function() {
|
|
if ( get(this, 'expanded') ) {
|
|
set(this, 'loading', true);
|
|
this.fetchEvents();
|
|
} else {
|
|
this.clearTimeOut();
|
|
}
|
|
}),
|
|
|
|
fetchEvents() {
|
|
const query = `fieldSelector=involvedObject.name=${ get(this, 'name') },involvedObject.kind=${ get(this, 'kind').capitalize() }`;
|
|
|
|
let url = `/k8s/clusters/${ get(this, 'scope.currentCluster.id') }/api/v1/`;
|
|
|
|
if ( NON_NAMESPACED_RESOURCES.indexOf(get(this, 'kind')) === -1 ) {
|
|
url += `namespaces/${ get(this, 'namespaceId') }/`;
|
|
}
|
|
|
|
url += `events?${ query }`;
|
|
|
|
get(this, 'globalStore').rawRequest({
|
|
url,
|
|
method: 'GET',
|
|
})
|
|
.then((xhr) => {
|
|
set(this, 'events', xhr.body.items);
|
|
set(this, 'loading', false);
|
|
const timeOutAnchor = setTimeout(() => {
|
|
this.fetchEvents();
|
|
}, 10000);
|
|
|
|
set(this, 'timeOutAnchor', timeOutAnchor);
|
|
});
|
|
},
|
|
|
|
clearTimeOut() {
|
|
const timeOutAnchor = get(this, 'timeOutAnchor');
|
|
|
|
if (timeOutAnchor){
|
|
clearTimeout(timeOutAnchor);
|
|
set(this, 'timeOutAnchor', timeOutAnchor);
|
|
}
|
|
},
|
|
|
|
});
|