[Telemetry] Move formatter implementation

Move implementation of formatter used for display
of domain values out of plot, and into the telemetry
bundle, from which it can be exposed as a general-use
service. WTD-599.
This commit is contained in:
Victor Woeltjen 2014-12-24 10:34:43 -08:00
parent 453b853a75
commit b080f90f64
2 changed files with 34 additions and 53 deletions

View File

@ -1,48 +0,0 @@
/*global define,moment*/
define(
["../../lib/moment.min"],
function () {
"use strict";
// Date format to use for domain values; in particular,
// use day-of-year instead of month/day
var DATE_FORMAT = "YYYY-DDD HH:mm:ss";
/**
* The PlotFormatter is responsible for formatting (as text
* for display) values along either the domain or range of a
* plot.
*/
function PlotFormatter() {
function formatDomainValue(v) {
return isNaN(v) ? "" : moment.utc(v).format(DATE_FORMAT);
}
function formatRangeValue(v) {
return isNaN(v) ? "" : v.toFixed(1);
}
return {
/**
* Format a domain value.
* @param {number} v the domain value; a timestamp
* in milliseconds since start of 1970
* @returns {string} a textual representation of the
* data and time, suitable for display.
*/
formatDomainValue: formatDomainValue,
/**
* Format a range value.
* @param {number} v the range value; a numeric value
* @returns {string} a textual representation of the
* value, suitable for display.
*/
formatRangeValue: formatRangeValue
};
}
return PlotFormatter;
}
);

View File

@ -5,18 +5,47 @@ define(
function () {
"use strict";
// Date format to use for domain values; in particular,
// use day-of-year instead of month/day
var DATE_FORMAT = "YYYY-DDD HH:mm:ss",
VALUE_FORMAT_DIGITS = 3;
/**
* The TelemetryFormatter is responsible for formatting (as text
* for display) values along either the domain (usually time) or
* the range (usually value) of a data series.
* @constructor
*/
function TelemetryFormatter() {
function formatDomainValue(key, value) {
function formatDomainValue(v, key) {
return isNaN(v) ? "" : moment.utc(v).format(DATE_FORMAT);
}
function formatRangeValue(key, value) {
function formatRangeValue(v, key) {
return isNaN(v) ? "" : v.toFixed(3);
}
return {
/**
* Format a domain value.
* @param {number} v the domain value; a timestamp
* in milliseconds since start of 1970
* @param {string} [key] the key which identifies the
* domain; if unspecified or unknown, this will
* be treated as a standard timestamp.
* @returns {string} a textual representation of the
* data and time, suitable for display.
*/
formatDomainValue: formatDomainValue,
/**
* Format a range value.
* @param {number} v the range value; a numeric value
* @param {string} [key] the key which identifies the
* range; if unspecified or unknown, this will
* be treated as a numeric value.
* @returns {string} a textual representation of the
* value, suitable for display.
*/
formatRangeValue: formatRangeValue
};
}