@fleetbase/fleetops-data
Version:
Fleetbase Fleet-Ops based models, serializers, transforms, adapters and GeoJson utility functions.
87 lines (74 loc) • 2.46 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 PositionModel extends Model {
/** @ids */
public_id;
company_uuid;
order_uuid;
destination_uuid;
subject_uuid;
subject_type;
/** @relationships */
order;
destination;
/** @attributes */
coordinates;
heading;
bearing;
speed;
altitude;
latitude;
longitude;
/** @dates */
created_at;
updated_at;
/** @computed */
get location() {
return this.coordinates;
}
get latLng() {
if (this.latitude && this.longitude) {
return [this.latitude, this.longitude];
}
return null;
}
get timestamp() {
if (this.created_at && isValidDate(new Date(this.created_at))) {
return formatDate(new Date(this.created_at), 'yyyy-MM-dd HH:mm:ss');
}
return null;
}
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 speedKmh() {
// Convert m/s to km/h
if (this.speed !== null && this.speed !== undefined) {
return (this.speed * 3.6).toFixed(2);
}
return 0;
}
get speedMph() {
// Convert m/s to mph
if (this.speed !== null && this.speed !== undefined) {
return (this.speed * 2.23694).toFixed(2);
}
return 0;
}
}