Something

This commit is contained in:
Henry 2016-04-08 12:56:04 -07:00
parent 41a5a49d86
commit 54bf57d0e2
3 changed files with 44 additions and 33 deletions

View File

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

View File

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

View File

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