@fleetbase/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
79 lines (66 loc) • 2.1 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import formatCurrency from '../../utils/format-currency';
import formatMeters from '../../utils/format-meters';
import formatBytes from '../../utils/format-bytes';
import formatDuration from '../../utils/format-duration';
import formatDate from '../../utils/format-date';
export default class WidgetCountComponent extends Component {
/**
* The title of the metric count.
*
* @memberof WidgetCountComponent
*/
title;
/**
* The value to render
*
* @memberof WidgetCountComponent
*/
value = null;
/**
* Creates an instance of WidgetCountComponent.
* @param {EngineInstance} owner
* @param {Object} { options }
* @memberof WidgetCountComponent
*/
constructor(owner, { title, value = null, options = {} }) {
super(...arguments);
this.title = title;
this.createRenderValueFromOptions(options, value);
}
/**
* Creates the value to render using the options provided.
*
* @param {Object} [options={}]
* @param {String|Number} defaultValue
* @memberof WidgetCountComponent
*/
createRenderValueFromOptions(options = {}, defaultValue = null) {
if (defaultValue !== null) {
this.value = defaultValue;
return;
}
let { format, currency, dateFormat, value } = options;
switch (format) {
case 'money':
value = formatCurrency([value, currency]);
break;
case 'meters':
value = formatMeters([value]);
break;
case 'bytes':
value = formatBytes([value]);
break;
case 'duration':
value = formatDuration([value]);
break;
case 'date':
value = formatDate([value, dateFormat]);
break;
default:
break;
}
this.value = value;
}
}