From 865b99f44547ee6dbe14b68590fb4c99f8566c64 Mon Sep 17 00:00:00 2001 From: Pete Richards Date: Wed, 2 May 2018 11:42:42 -0700 Subject: [PATCH] Handle string states (#2019) * State generator realtime uses strings Change the state generator's realtime data to return string values instead of number values. This exercises an edge case where enumerations could be a string instead of a number. Exposes #2018. * [Telemetry] handle string enumeration value Don't treat all strings as properly formatted enumeration values. Instead, check any input value against known enumerations and if one matches, return it. Otherwise, return input. Fixes #2018 --- example/generator/StateGeneratorProvider.js | 4 +++- src/api/telemetry/TelemetryValueFormatter.js | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/example/generator/StateGeneratorProvider.js b/example/generator/StateGeneratorProvider.js index 7784bb10cc..255588b2f7 100644 --- a/example/generator/StateGeneratorProvider.js +++ b/example/generator/StateGeneratorProvider.js @@ -47,7 +47,9 @@ define([ var interval = setInterval(function () { var now = Date.now(); - callback(pointForTimestamp(now, duration, domainObject.name)); + var datum = pointForTimestamp(now, duration, domainObject.name); + datum.value += ""; + callback(datum); }, duration); return function () { diff --git a/src/api/telemetry/TelemetryValueFormatter.js b/src/api/telemetry/TelemetryValueFormatter.js index 2153b479c8..57d91dbdcc 100644 --- a/src/api/telemetry/TelemetryValueFormatter.js +++ b/src/api/telemetry/TelemetryValueFormatter.js @@ -57,8 +57,8 @@ define([ return vm; }, {byValue: {}, byString: {}}); this.formatter.format = function (value) { - if (typeof value === "number") { - return this.enumerations.byValue[value] || value; + if (this.enumerations.byValue.hasOwnProperty(value)) { + return this.enumerations.byValue[value]; } return value; }.bind(this);