@fleetbase/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
55 lines (45 loc) • 1.38 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
import { task } from 'ember-concurrency';
const SORTS = [
{ key: 'orders_completed', label: 'Orders' },
{ key: 'on_time', label: 'On-time' },
{ key: 'distance', label: 'Distance' },
];
export default class WidgetTopDriversComponent extends Component {
static widgetId = 'fleet-ops-top-drivers-widget';
fetch;
sortBy = 'orders_completed';
data = null;
error = null;
sorts = SORTS;
constructor() {
super(...arguments);
this.load.perform();
}
*load() {
try {
this.data = yield this.fetch.get('fleet-ops/analytics/top-drivers', {
period: '30d',
limit: 10,
sort_by: this.sortBy,
});
this.error = null;
} catch (e) {
this.error = e?.message ?? 'Failed to load top drivers';
}
}
setSort(key) {
this.sortBy = key;
this.load.perform();
}
onTimeStatus(pct) {
if (typeof pct !== 'number') return 'info';
if (pct >= 95) return 'success';
if (pct >= 85) return 'warning';
return 'danger';
}
}