Working on telemetry provider

This commit is contained in:
Henry 2016-04-07 09:47:00 -07:00
parent 88f46d0e42
commit b83773c531
5 changed files with 154 additions and 9 deletions

View File

@ -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"
}
]
}
}
]
}

View File

@ -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;
}
);

View File

@ -25,7 +25,7 @@ define(
[
"zepto",
"./ConductorPolicy",
"../../platform/features/conductor/src/ConductorRepresenter"
"../../../platform/features/conductor/src/ConductorRepresenter"
],
function ($, ConductorPolicy, ConductorRepresenter) {
"use strict";

View File

@ -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;
}
);

View File

@ -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,