@fleetbase/dev-engine
Version:
Fleetbase Developers extension provides a module for managing developer resources such as API keys, webhooks, sockets, events and logs.
201 lines (181 loc) • 5.18 kB
JavaScript
import BaseController from '../base-controller';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { action, computed } from '@ember/object';
import { isBlank } from '@ember/utils';
import { timeout } from 'ember-concurrency';
import { task } from 'ember-concurrency-decorators';
import fromStore from '@fleetbase/ember-core/decorators/legacy-from-store';
import fetchFrom from '@fleetbase/ember-core/decorators/legacy-fetch-from';
export default class LogsIndexController extends BaseController {
filters;
intl;
hostRouter;
abilities;
/**
* All api versions
*
* @memberof WebhooksIndexController
* @var {Array}
*/
apiVersions;
/**
* All api credentials.
*
* @memberof WebhooksIndexController
*/
apiCredentials;
/**
* Queryable parameters for this controller's model
*
* @var {Array}
*/
queryParams = ['query', 'page', 'limit', 'sort', 'version', 'key', 'method', '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 param `version`
*
* @var {String}
*/
version;
/**
* The filterable param `method`
*
* @var {String}
*/
method;
/**
* The filterable param `key`
*
* @var {String}
*/
key;
/**
* Columns for table component.
*
* @var {Array}
*/
get columns() {
return [
{
sticky: true,
label: this.intl.t('developers.common.description'),
valuePath: 'description',
sortable: false,
},
{
label: this.intl.t('developers.common.status'),
valuePath: 'status',
sortable: false,
cellComponent: 'table/cell/status',
cellClassNames: 'uppercase',
},
{
label: this.intl.t('developers.common.id'),
valuePath: 'public_id',
cellComponent: 'click-to-copy',
align: 'right',
sortable: false,
},
{
label: this.intl.t('developers.logs.index.api-credential'),
valuePath: 'api_credential_name',
cellComponent: 'click-to-copy',
filterParam: 'key',
sortable: false,
filterable: true,
filterComponent: 'filter/select',
filterOptionLabel: 'fullName',
filterOptionValue: 'id',
filterOptions: this.apiCredentials,
},
{
label: this.intl.t('developers.logs.index.http-method'),
valuePath: 'method',
filterable: true,
filterComponent: 'filter/multi-option',
filterOptions: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
},
{
label: this.intl.t('developers.common.version'),
valuePath: 'version',
filterable: true,
filterComponent: 'filter/select',
filterOptions: this.apiVersions,
},
{
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.logs.view', log);
}
/**
* Reload data.
*/
reload() {
return this.hostRouter.refresh();
}
}