From b83773c531e457761f6a91699d7af406c6855c71 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 7 Apr 2016 09:47:00 -0700 Subject: [PATCH] Working on telemetry provider --- demo/bundle.js | 59 +++++++++++++-- demo/src/DemoInitializer.js | 28 +++++++- .../src/conductor/DemoConductorRepresenter.js | 2 +- demo/src/telemetry/DemoTelemetryProvider.js | 72 +++++++++++++++++++ example/msl/src/RemsTelemetryModelProvider.js | 2 +- 5 files changed, 154 insertions(+), 9 deletions(-) create mode 100644 demo/src/telemetry/DemoTelemetryProvider.js diff --git a/demo/bundle.js b/demo/bundle.js index c7a3bd0f75..f502e983c9 100644 --- a/demo/bundle.js +++ b/demo/bundle.js @@ -22,14 +22,18 @@ /*global define*/ define([ - "./src/DemoConductorRepresenter", + "./src/conductor/DemoConductorRepresenter", "./src/DemoInitializer", - "./src/ConductorServiceDecorator", + "./src/conductor/ConductorServiceDecorator", + "./src/conductor/DemoTelemetryDecorator", + "./src/telemetry/DemoTelemetryProvider", 'legacyRegistry' ], function ( DemoConductorRepresenter, DemoInitializer, ConductorServiceDecorator, + DemoTelemetryDecorator, + DemoTelemetryProvider, legacyRegistry ) { "use strict"; @@ -41,8 +45,7 @@ define([ "representers": [ { "implementation": DemoConductorRepresenter, - "depends": ["$q", "views[]"], - "priority": "fallback" + "depends": ["$q", "$compile", "conductorService", "views[]", "throttle"] } ], "components": [ @@ -50,6 +53,54 @@ define([ "implementation": ConductorServiceDecorator, "provides": "conductorService", "type": "decorator" + }, + { + "implementation": DemoTelemetryDecorator, + "provides": "telemetryService", + "type": "decorator", + "priority": "mandatory" + }, + { + "implementation": DemoTelemetryProvider, + "type": "decorator", + "provides": "telemetryService" + } + ], + "runs": [ + { + "implementation": DemoInitializer, + "depends": [ + "representers[]" + ] + } + ], + "types": [ + { + "key": "demo-telemetry", + "name": "Spacecraft Telemetry Generator", + "glyph": "T", + "description": "Mock realtime spacecraft telemetry", + "features": "creation", + "model": { + "telemetry": { + "period": 1000 + } + }, + "telemetry": { + "source": "demo-telemetry", + "domains": [ + { + "key": "time", + "name": "Time" + } + ], + "ranges": [ + { + "key": "value", + "name": "value" + } + ] + } } ] } diff --git a/demo/src/DemoInitializer.js b/demo/src/DemoInitializer.js index 4cb2e97fe5..a53e4dc617 100644 --- a/demo/src/DemoInitializer.js +++ b/demo/src/DemoInitializer.js @@ -22,12 +22,34 @@ /*global define*/ define( - function (){ + ["../../platform/features/conductor/src/ConductorRepresenter"], + function (ConductorRepresenter){ "use strict"; - function DemoInitializer(conductorService) { - conductorService.getConductor().displayStart(Date.UTC(2012,8,7)); + function DemoInitializer(representers) { + + function indexOf(array, callback) { + return array.reduce(function(previous, element, index) { + if (previous=== -1 && callback(element)) { + return index; + } else { + return previous; + } + }, -1); + } + + function removeRepresenter(type){ + var index = indexOf(representers, function(representer) { + return representer.implementation === type; + }); + if (index !== -1) { + representers.splice(index, 1); + } + } + + removeRepresenter(ConductorRepresenter); } + return DemoInitializer; } ); diff --git a/demo/src/conductor/DemoConductorRepresenter.js b/demo/src/conductor/DemoConductorRepresenter.js index 9db16360a3..6515fab67e 100644 --- a/demo/src/conductor/DemoConductorRepresenter.js +++ b/demo/src/conductor/DemoConductorRepresenter.js @@ -25,7 +25,7 @@ define( [ "zepto", "./ConductorPolicy", - "../../platform/features/conductor/src/ConductorRepresenter" + "../../../platform/features/conductor/src/ConductorRepresenter" ], function ($, ConductorPolicy, ConductorRepresenter) { "use strict"; diff --git a/demo/src/telemetry/DemoTelemetryProvider.js b/demo/src/telemetry/DemoTelemetryProvider.js new file mode 100644 index 0000000000..89231eae83 --- /dev/null +++ b/demo/src/telemetry/DemoTelemetryProvider.js @@ -0,0 +1,72 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise*/ + +define( + [""], + function () { + "use strict"; + + var SOURCE = 'generator'; + + //TODO: Redo as class extension. + function DemoTelemetryProvider(telemetryProvider) { + + function requestTelemetry(requests) { + return telemetryProvider.requestTelemetry(requests); + } + + function wrapSeries(telemetrySeries) { + return { + getDomainValue: function (index, domain) { + return telemetrySeries.getDomainValue(index, domain); + }, + getRangeValue: function (index, range) { + return Math.random(1)/5 + telemetrySeries.getRangeValue(index, range); + }, + getPointCount: function () { + return telemetrySeries.getPointCount(); + } + } + } + + function subscribe(callback, requests) { + function randomize(telemetry){ + if (telemetry.generator) { + Object.keys(telemetry.generator).forEach(function(key) { + telemetry.generator[key] = wrapSeries(telemetry.generator[key]); + }); + } + callback(telemetry); + } + return telemetryProvider.subscribe(randomize, requests); + } + + return { + requestTelemetry: requestTelemetry, + subscribe: subscribe + } + } + + return DemoTelemetryProvider; + } +); \ No newline at end of file diff --git a/example/msl/src/RemsTelemetryModelProvider.js b/example/msl/src/RemsTelemetryModelProvider.js index 382b8931f5..4509ce9acd 100644 --- a/example/msl/src/RemsTelemetryModelProvider.js +++ b/example/msl/src/RemsTelemetryModelProvider.js @@ -50,9 +50,9 @@ define( models[makeId(measurement)] = { type: "msl.measurement", name: measurement.name, - showConductor: true, telemetry: { key: measurement.identifier, + historical: true, ranges: [{ key: "value", name: measurement.units,