@fleetbase/fleetops-data
Version:
Fleetbase Fleet-Ops based models, serializers, transforms, adapters and GeoJson utility functions.
177 lines (153 loc) • 5.04 kB
JavaScript
import Model, { attr, belongsTo } from '@ember-data/model';
import { computed } from '@ember/object';
import { format as formatDate, isValid as isValidDate, formatDistanceToNow } from 'date-fns';
export default class WorkOrderModel extends Model {
/** @ids */
uuid;
public_id;
company_uuid;
schedule_uuid;
/** @polymorphic relationships */
target;
assignee;
/** @computed names — server-side convenience fields (read-only) */
target_name;
assignee_name;
/** @attributes */
code;
subject;
category;
status;
priority;
instructions;
checklist;
estimated_cost;
approved_budget;
actual_cost;
currency;
cost_breakdown;
cost_center;
budget_code;
meta;
/** @server-computed (read-only appended attributes) */
is_overdue;
days_until_due;
completion_percentage;
estimated_duration;
/** @dates */
opened_at;
due_at;
closed_at;
deleted_at;
created_at;
updated_at;
/** @computed */
get updatedAgo() {
if (!isValidDate(this.updated_at)) {
return null;
}
return formatDistanceToNow(this.updated_at);
}
get updatedAt() {
if (!isValidDate(this.updated_at)) {
return null;
}
return formatDate(this.updated_at, 'yyyy-MM-dd HH:mm');
}
get updatedAtShort() {
if (!isValidDate(this.updated_at)) {
return null;
}
return formatDate(this.updated_at, 'dd, MMM');
}
get createdAgo() {
if (!isValidDate(this.created_at)) {
return null;
}
return formatDistanceToNow(this.created_at);
}
get createdAt() {
if (!isValidDate(this.created_at)) {
return null;
}
return formatDate(this.created_at, 'yyyy-MM-dd HH:mm');
}
get createdAtShort() {
if (!isValidDate(this.created_at)) {
return null;
}
return formatDate(this.created_at, 'dd, MMM');
}
get deletedAgo() {
if (!isValidDate(this.deleted_at)) {
return null;
}
return formatDistanceToNow(this.deleted_at);
}
get deletedAt() {
if (!isValidDate(this.deleted_at)) {
return null;
}
return formatDate(this.deleted_at, 'yyyy-MM-dd HH:mm');
}
get deletedAtShort() {
if (!isValidDate(this.deleted_at)) {
return null;
}
return formatDate(this.deleted_at, 'dd, MMM');
}
get openedAgo() {
if (!isValidDate(this.opened_at)) {
return null;
}
return formatDistanceToNow(this.opened_at);
}
get openedAt() {
if (!isValidDate(this.opened_at)) {
return null;
}
return formatDate(this.opened_at, 'yyyy-MM-dd HH:mm');
}
get openedAtShort() {
if (!isValidDate(this.opened_at)) {
return null;
}
return formatDate(this.opened_at, 'dd, MMM');
}
get dueAgo() {
if (!isValidDate(this.due_at)) {
return null;
}
return formatDistanceToNow(this.due_at);
}
get dueAt() {
if (!isValidDate(this.due_at)) {
return null;
}
return formatDate(this.due_at, 'yyyy-MM-dd HH:mm');
}
get dueAtShort() {
if (!isValidDate(this.due_at)) {
return null;
}
return formatDate(this.due_at, 'dd, MMM');
}
get closedAgo() {
if (!isValidDate(this.closed_at)) {
return null;
}
return formatDistanceToNow(this.closed_at);
}
get closedAt() {
if (!isValidDate(this.closed_at)) {
return null;
}
return formatDate(this.closed_at, 'yyyy-MM-dd HH:mm');
}
get closedAtShort() {
if (!isValidDate(this.closed_at)) {
return null;
}
return formatDate(this.closed_at, 'dd, MMM');
}
}