diff --git a/demo/bundle.js b/demo/bundle.js index f502e983c9..911fe84b46 100644 --- a/demo/bundle.js +++ b/demo/bundle.js @@ -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" } ] diff --git a/demo/src/telemetry/DemoTelemetryProvider.js b/demo/src/telemetry/DemoTelemetryProvider.js index 89231eae83..0095711e3a 100644 --- a/demo/src/telemetry/DemoTelemetryProvider.js +++ b/demo/src/telemetry/DemoTelemetryProvider.js @@ -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; } diff --git a/example/generator/src/SinewaveTelemetryProvider.js b/example/generator/src/SinewaveTelemetryProvider.js index 1c6afe78b8..65c0ccf657 100644 --- a/example/generator/src/SinewaveTelemetryProvider.js +++ b/example/generator/src/SinewaveTelemetryProvider.js @@ -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; }); }