@fleetbase/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
70 lines (63 loc) • 2.71 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { task } from 'ember-concurrency';
export default class OrderDetailsActivityComponent extends Component {
orderActions;
appCache;
intl;
layout = this.appCache.get('fleetops:order:activity:layout', 'timeline');
get parentOrderActivity() {
const orderTrackingNumberUuid = this.args.resource?.tracking_number_uuid;
const activity = this.args.resource?.tracking_statuses ?? [];
if (!orderTrackingNumberUuid) {
return activity;
}
return activity.filter((trackingStatus) => trackingStatus.tracking_number_uuid === orderTrackingNumberUuid);
}
/* eslint-disable ember/no-side-effects */
get actionButtons() {
return [
{
items: [
{
text: this.intl.t('order.actions.update-activity'),
icon: 'signal',
disabled: this.args.resource.status === 'canceled',
onClick: () => {
this.orderActions.updateActivity(this.args.resource, {
onFinish: (options) => {
if (typeof this.args.onChange === 'function') {
this.args.onChange(options);
}
},
});
},
},
{
text: this.intl.t('order.actions.reload-activity'),
icon: 'refresh',
onClick: () => {
this.loadActivity.perform();
},
},
{
text: this.layout === 'timeline' ? this.intl.t('order.actions.view-activity-as-list') : this.intl.t('order.actions.view-activity-as-timeline'),
icon: this.layout === 'timeline' ? 'list' : 'timeline',
onClick: () => {
this.layout = this.layout === 'timeline' ? 'list' : 'timeline';
this.appCache.set('fleetops:order:activity:layout', this.layout);
},
},
],
},
];
}
*loadActivity() {
try {
yield this.args.resource.loadTrackingActivity();
} catch (err) {
this.notifications.serverError(err);
}
}
}