@fleetbase/dev-engine
Version:
Fleetbase Developers extension provides a module for managing developer resources such as API keys, webhooks, sockets, events and logs.
152 lines (135 loc) • 3.47 kB
JavaScript
import BaseController from '../base-controller';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import { isBlank } from '@ember/utils';
import { timeout } from 'ember-concurrency';
import { task } from 'ember-concurrency-decorators';
import fetchFrom from '@fleetbase/ember-core/decorators/legacy-fetch-from';
export default class EventsIndexController extends BaseController {
filters;
intl;
hostRouter;
abilities;
/**
* All api versions
*
* @memberof LogsIndexController
* @var {Array}
*/
webhookEvents;
/**
* Queryable parameters for this controller's model
*
* @var {Array}
*/
queryParams = ['query', 'page', 'limit', 'sort', 'event', 'created_at'];
/**
* The current page of data being viewed
*
* @var {Integer}
*/
page = 1;
/**
* The maximum number of items to show per page
*
* @var {Integer}
*/
limit = 40;
/**
* The param to sort the data on, the param with prepended `-` is descending
*
* @var {String}
*/
sort = '-id';
/**
* The param to query the data by
*
* @var {String}
*/
query;
/**
* The filterable param `created_at`
*
* @var {String}
*/
created_at;
/**
* The filterable `event`
*
* @var {String}
*/
event;
/**
* Columns for table component.
*
* @var {Array}
*/
columns = [
{
sticky: true,
label: this.intl.t('developers.common.event'),
valuePath: 'description',
sortable: false,
},
{
label: this.intl.t('developers.common.code'),
valuePath: 'event',
sortable: false,
filterable: true,
filterComponent: 'filter/select',
filterOptions: this.webhookEvents,
},
{
label: this.intl.t('developers.common.id'),
valuePath: 'public_id',
cellComponent: 'click-to-copy',
align: 'right',
sortable: false,
},
{
label: this.intl.t('developers.common.date'),
valuePath: 'createdAt',
filterParam: 'created_at',
sortParam: 'created_at',
sortable: false,
align: 'right',
filterable: true,
filterComponent: 'filter/date',
},
];
/**
* The search task.
*
* @void
*/
*search({ target: { value } }) {
// if no query don't search
if (isBlank(value)) {
this.query = null;
return;
}
// timeout for typing
yield timeout(250);
// reset page for results
if (this.page > 1) {
this.page = 1;
}
// update the query param
this.query = value;
}
/**
* Link user to full request log view
*
* @void
*/
onRowClick(log) {
return this.hostRouter.transitionTo('console.developers.events.view', log);
}
/**
* Reload data.
*/
reload() {
return this.hostRouter.refresh();
}
}