diff --git a/example/generator/plugin.js b/example/generator/plugin.js index 417f1f113c..fd71a98b43 100644 --- a/example/generator/plugin.js +++ b/example/generator/plugin.js @@ -74,7 +74,7 @@ define([ openmct.legacyExtension(type, extension) }) }); - openmct.types.register("generator", { + openmct.types.addType("generator", { label: "Sine Wave Generator", description: "For development use. Generates example streaming telemetry data using a simple sine wave algorithm.", cssClass: "icon-telemetry", diff --git a/index.html b/index.html index 9526465548..4d891eb707 100644 --- a/index.html +++ b/index.html @@ -31,14 +31,14 @@ require(['openmct'], function (openmct) { [ 'example/imagery', - 'example/eventGenerator', - 'example/generator' + 'example/eventGenerator' ].forEach( openmct.legacyRegistry.enable.bind(openmct.legacyRegistry) ); openmct.install(openmct.plugins.myItems); openmct.install(openmct.plugins.localStorage); openmct.install(openmct.plugins.espresso); + openmct.install(openmct.plugins.Generator()); openmct.start(); }); diff --git a/platform/commonUI/edit/src/creation/CreateWizard.js b/platform/commonUI/edit/src/creation/CreateWizard.js index a58e471d8a..79416ac4b4 100644 --- a/platform/commonUI/edit/src/creation/CreateWizard.js +++ b/platform/commonUI/edit/src/creation/CreateWizard.js @@ -118,7 +118,7 @@ define( formModel = this.createModel(formValue); formModel.location = parent.getId(); - this.domainObject.useCapability("mutation", function (model) { + this.domainObject.useCapability("mutation", function () { return formModel; }); return this.domainObject; diff --git a/platform/telemetry/src/TelemetryCapability.js b/platform/telemetry/src/TelemetryCapability.js index bc36cd2865..4112b5740b 100644 --- a/platform/telemetry/src/TelemetryCapability.js +++ b/platform/telemetry/src/TelemetryCapability.js @@ -215,7 +215,6 @@ define( return telemetryService.requestTelemetry([fullRequest]); } - // TODO: Adapt request / options? if (isLegacyProvider) { // If a telemetryService is not available, // getTelemetryService() should reject, and this should @@ -263,7 +262,7 @@ define( var defaultDomain = (metadata.valuesForHints(['domain'])[0] || {}).key; var defaultRange = (metadata.valuesForHints(['range'])[0] || {}).key; - var isLegacyProvider = telemetryAPI.findRequestProvider(domainObject) === + var isLegacyProvider = telemetryAPI.findSubscriptionProvider(domainObject) === telemetryAPI.legacyProvider; function update(telemetry) { diff --git a/platform/telemetry/test/TelemetryCapabilitySpec.js b/platform/telemetry/test/TelemetryCapabilitySpec.js index 0e435ac4d0..04d603d0a2 100644 --- a/platform/telemetry/test/TelemetryCapabilitySpec.js +++ b/platform/telemetry/test/TelemetryCapabilitySpec.js @@ -33,9 +33,8 @@ define( mockReject, mockUnsubscribe, telemetry, - mockAPI, - legacyTelemetryProvider; - + mockTelemetryAPI, + mockAPI; function mockPromise(value) { return { @@ -45,6 +44,9 @@ define( }; } + function noop() { + } + beforeEach(function () { mockInjector = jasmine.createSpyObj("$injector", ["get"]); mockQ = jasmine.createSpyObj("$q", ["when", "reject"]); @@ -81,22 +83,21 @@ define( // Bubble up... mockReject.then.andReturn(mockReject); - legacyTelemetryProvider = {}; + mockTelemetryAPI = jasmine.createSpyObj("telemetryAPI", [ + "getMetadata", + "subscribe", + "request", + "findRequestProvider", + "findSubscriptionProvider" + ]); + mockTelemetryAPI.getMetadata.andReturn({ + valuesForHints: function () { + return []; + } + }); mockAPI = { - telemetry: { - getMetadata: function () { - return { - valuesForHints: function () { - return []; - } - }; - }, - findRequestProvider: function () { - return legacyTelemetryProvider; - }, - legacyProvider: legacyTelemetryProvider - } + telemetry: mockTelemetryAPI }; telemetry = new TelemetryCapability( @@ -134,7 +135,6 @@ define( key: "testKey", // from model start: 42 // from argument }]); - }); it("provides an empty series when telemetry is missing", function () { @@ -182,6 +182,57 @@ define( expect(mockLog.warn).toHaveBeenCalled(); }); + it("if a new style telemetry source is available, use it", function () { + var mockProvider = {}; + mockTelemetryAPI.findSubscriptionProvider.andReturn(mockProvider); + telemetry.subscribe(noop, {}); + expect(mockTelemetryService.subscribe).not.toHaveBeenCalled(); + expect(mockTelemetryAPI.subscribe).toHaveBeenCalled(); + }); + + it("if a new style telemetry source is not available, revert to old API", function () { + mockTelemetryAPI.findSubscriptionProvider.andReturn(undefined); + telemetry.subscribe(noop, {}); + expect(mockTelemetryAPI.subscribe).not.toHaveBeenCalled(); + expect(mockTelemetryService.subscribe).toHaveBeenCalled(); + }); + + it("Wraps telemetry returned from the new API as a telemetry series", function () { + var returnedTelemetry; + var mockTelemetry = [{ + prop1: "val1", + prop2: "val2", + prop3: "val3" + }, + { + prop1: "val4", + prop2: "val5", + prop3: "val6" + }]; + var mockProvider = {}; + var dunzo = false; + + mockTelemetryAPI.findRequestProvider.andReturn(mockProvider); + mockTelemetryAPI.request.andReturn(Promise.resolve(mockTelemetry)); + + telemetry.requestData({}).then(function (data) { + returnedTelemetry = data; + dunzo = true; + }); + + waitsFor(function () { + return dunzo; + }); + + runs(function () { + expect(returnedTelemetry.getPointCount).toBeDefined(); + expect(returnedTelemetry.getDomainValue).toBeDefined(); + expect(returnedTelemetry.getRangeValue).toBeDefined(); + expect(returnedTelemetry.getPointCount()).toBe(2); + }); + + }); + it("allows subscriptions to updates", function () { var mockCallback = jasmine.createSpy("callback"), subscription = telemetry.subscribe(mockCallback);