mirror of
https://github.com/nasa/openmct.git
synced 2025-03-18 10:05:22 +00:00
Something
This commit is contained in:
parent
41a5a49d86
commit
54bf57d0e2
@ -62,8 +62,9 @@ define([
|
||||
},
|
||||
{
|
||||
"implementation": DemoTelemetryProvider,
|
||||
"type": "decorator",
|
||||
"provides": "telemetryService"
|
||||
"type": "provider",
|
||||
"provides": "telemetryService",
|
||||
"depends": ["$q", "$timeout"]
|
||||
}
|
||||
],
|
||||
"runs": [
|
||||
@ -83,7 +84,8 @@ define([
|
||||
"features": "creation",
|
||||
"model": {
|
||||
"telemetry": {
|
||||
"period": 1000
|
||||
"period": 10000,
|
||||
"multiplier": 10
|
||||
}
|
||||
},
|
||||
"telemetry": {
|
||||
@ -96,7 +98,7 @@ define([
|
||||
],
|
||||
"ranges": [
|
||||
{
|
||||
"key": "value",
|
||||
"key": "sin",
|
||||
"name": "value"
|
||||
}
|
||||
]
|
||||
|
@ -22,26 +22,41 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
define(
|
||||
[""],
|
||||
function () {
|
||||
["../../../example/generator/src/SinewaveTelemetryProvider"],
|
||||
function (SinewaveTelemetryProvider) {
|
||||
"use strict";
|
||||
|
||||
var SOURCE = 'generator';
|
||||
var SOURCE = 'demo-telemetry';
|
||||
|
||||
//TODO: Redo as class extension.
|
||||
function DemoTelemetryProvider(telemetryProvider) {
|
||||
function DemoTelemetryProvider($q, $timeout) {
|
||||
SinewaveTelemetryProvider.call(this, $q, $timeout);
|
||||
}
|
||||
|
||||
function requestTelemetry(requests) {
|
||||
return telemetryProvider.requestTelemetry(requests);
|
||||
}
|
||||
DemoTelemetryProvider.prototype = Object.create(SinewaveTelemetryProvider.prototype);
|
||||
|
||||
function wrapSeries(telemetrySeries) {
|
||||
DemoTelemetryProvider.prototype.doPackage = function (results) {
|
||||
var packaged = {};
|
||||
results.forEach(function (result) {
|
||||
packaged[result.key] = result.telemetry;
|
||||
});
|
||||
// Format as expected (sources -> keys -> telemetry)
|
||||
return { "demo-telemetry": packaged };
|
||||
}
|
||||
|
||||
DemoTelemetryProvider.prototype.matchesSource = function (request) {
|
||||
return request.source === SOURCE;
|
||||
}
|
||||
|
||||
DemoTelemetryProvider.prototype.subscribe = function (callback, requests) {
|
||||
var offsets = {};
|
||||
|
||||
function wrapSeries(telemetrySeries, offset) {
|
||||
return {
|
||||
getDomainValue: function (index, domain) {
|
||||
return telemetrySeries.getDomainValue(index, domain);
|
||||
},
|
||||
getRangeValue: function (index, range) {
|
||||
return Math.random(1)/5 + telemetrySeries.getRangeValue(index, range);
|
||||
return Math.random(1)/50 + telemetrySeries.getRangeValue(index, range) + offset;
|
||||
},
|
||||
getPointCount: function () {
|
||||
return telemetrySeries.getPointCount();
|
||||
@ -49,23 +64,17 @@ define(
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
function randomize(telemetry){
|
||||
Object.keys(telemetry[SOURCE]).forEach(function(key) {
|
||||
if (!offsets[key])
|
||||
offsets[key] = 1 + Math.random(10);
|
||||
telemetry[SOURCE][key] = wrapSeries(telemetry[SOURCE][key], offsets[key]);
|
||||
});
|
||||
callback(telemetry);
|
||||
}
|
||||
|
||||
return {
|
||||
requestTelemetry: requestTelemetry,
|
||||
subscribe: subscribe
|
||||
}
|
||||
}
|
||||
return SinewaveTelemetryProvider.prototype.subscribe.call(this, randomize, requests);
|
||||
};
|
||||
|
||||
return DemoTelemetryProvider;
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ define(
|
||||
this.generating = false;
|
||||
}
|
||||
|
||||
function doPackage(results) {
|
||||
SinewaveTelemetryProvider.prototype.doPackage = function (results) {
|
||||
var packaged = {};
|
||||
results.forEach(function (result) {
|
||||
packaged[result.key] = result.telemetry;
|
||||
@ -77,7 +77,7 @@ define(
|
||||
var self = this;
|
||||
self.subscriptions.forEach(function (subscription) {
|
||||
var requests = subscription.requests;
|
||||
subscription.callback(doPackage(
|
||||
subscription.callback(self.doPackage(
|
||||
requests.filter(self.matchesSource).map(self.generateData)
|
||||
));
|
||||
});
|
||||
@ -108,7 +108,7 @@ define(
|
||||
SinewaveTelemetryProvider.prototype.requestTelemetry = function (requests) {
|
||||
var self = this;
|
||||
return this.$timeout(function () {
|
||||
return doPackage(requests.filter(self.matchesSource).map(self.generateData));
|
||||
return self.doPackage(requests.filter(self.matchesSource).map(self.generateData));
|
||||
}, 0);
|
||||
};
|
||||
|
||||
@ -128,7 +128,7 @@ define(
|
||||
};
|
||||
|
||||
function unsubscribe() {
|
||||
self.subscriptions = subscriptions.filter(function (s) {
|
||||
self.subscriptions = self.subscriptions.filter(function (s) {
|
||||
return s !== subscription;
|
||||
});
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user