diff --git a/example/imagery/bundle.js b/example/imagery/bundle.js deleted file mode 100644 index 7dba959bf5..0000000000 --- a/example/imagery/bundle.js +++ /dev/null @@ -1,80 +0,0 @@ -/***************************************************************************** - * Open MCT, Copyright (c) 2014-2017, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT 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 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*/ - -define([ - "./src/ImageTelemetryProvider", - 'legacyRegistry' -], function ( - ImageTelemetryProvider, - legacyRegistry -) { - "use strict"; - - legacyRegistry.register("example/imagery", { - "name": "Imagery", - "description": "Example of a component that produces image telemetry.", - "extensions": { - "components": [ - { - "implementation": ImageTelemetryProvider, - "type": "provider", - "provides": "telemetryService", - "depends": [ - "$q", - "$timeout" - ] - } - ], - "types": [ - { - "key": "imagery", - "name": "Example Imagery", - "cssClass": "icon-image", - "features": "creation", - "description": "For development use. Creates example imagery data that mimics a live imagery stream.", - "priority": 10, - "model": { - "telemetry": {} - }, - "telemetry": { - "source": "imagery", - "domains": [ - { - "name": "Time", - "key": "time", - "format": "utc" - } - ], - "ranges": [ - { - "name": "Image", - "key": "url", - "format": "imageUrl" - } - ] - } - } - ] - } - }); -}); diff --git a/example/imagery/src/ImageTelemetry.js b/example/imagery/plugin.js similarity index 53% rename from example/imagery/src/ImageTelemetry.js rename to example/imagery/plugin.js index c854e66bf6..4c4f41d75b 100644 --- a/example/imagery/src/ImageTelemetry.js +++ b/example/imagery/plugin.js @@ -19,18 +19,15 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/*global define,Promise*/ -/** - * Module defining ImageTelemetry. Created by vwoeltje on 06/22/15. - */ -define( - [], - function () { - "use strict"; +define([ - var firstObservedTime = Date.now(), - images = [ +], function( + +) { + function ImageryPlugin() { + + var IMAGE_SAMPLES = [ "https://www.hq.nasa.gov/alsj/a16/AS16-117-18731.jpg", "https://www.hq.nasa.gov/alsj/a16/AS16-117-18732.jpg", "https://www.hq.nasa.gov/alsj/a16/AS16-117-18733.jpg", @@ -49,33 +46,65 @@ define( "https://www.hq.nasa.gov/alsj/a16/AS16-117-18746.jpg", "https://www.hq.nasa.gov/alsj/a16/AS16-117-18747.jpg", "https://www.hq.nasa.gov/alsj/a16/AS16-117-18748.jpg" + ]; - ].map(function (url, index) { - return { - timestamp: firstObservedTime + 1000 * index, - url: url - }; + return function install(openmct) { + openmct.types.addType('example.imagery', { + key: 'example.imagery', + name: 'Example Imagery', + cssClass: 'icon-image', + description: 'For development use. Creates example imagery ' + + 'data that mimics a live imagery stream.', + creatable: true, + initialize: function (object) { + object.telemetry = { + values: [ + { + name: 'Time', + key: 'time', + format: 'utc', + hints: { + domain: 1 + } + }, + { + name: 'Image', + key: 'url', + format: 'image', + hints: {} + } + ] + } + } }); + openmct.telemetry.addProvider({ + supportsSubscribe: function (domainObject) { + return domainObject.type === 'example.imagery'; + }, + subscribe: function (domainObject, callback) { + var index = 0, + end = IMAGE_SAMPLES.length, + interval; - /** - * - * @constructor - */ - function ImageTelemetry() { - return { - getPointCount: function () { - return Math.floor((Date.now() - firstObservedTime) / 1000); - }, - getDomainValue: function (i, domain) { - return images[i % images.length].timestamp; - }, - getRangeValue: function (i, range) { - return images[i % images.length].url; + interval = setInterval(function () { + if (index >= end) { + index = 0; + } + callback({ + time: Date.now(), + url: IMAGE_SAMPLES[index] + }); + index += 1; + }, 1000); + + return function (interval) { + clearInterval(interval); + }; } - }; - } - - return ImageTelemetry; + }); + }; } -); + + return ImageryPlugin; +}); diff --git a/example/imagery/src/ImageTelemetryProvider.js b/example/imagery/src/ImageTelemetryProvider.js deleted file mode 100644 index 3232441ef7..0000000000 --- a/example/imagery/src/ImageTelemetryProvider.js +++ /dev/null @@ -1,115 +0,0 @@ -/***************************************************************************** - * Open MCT, Copyright (c) 2014-2017, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT 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 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*/ - -/** - * Module defining ImageTelemetryProvider. Created by vwoeltje on 06/22/15. - */ -define( - ["./ImageTelemetry"], - function (ImageTelemetry) { - "use strict"; - - /** - * - * @constructor - */ - function ImageTelemetryProvider($q, $timeout) { - var subscriptions = []; - - // - function matchesSource(request) { - return request.source === "imagery"; - } - - // Used internally; this will be repacked by doPackage - function generateData(request) { - return { - key: request.key, - telemetry: new ImageTelemetry() - }; - } - - // - function doPackage(results) { - var packaged = {}; - results.forEach(function (result) { - packaged[result.key] = result.telemetry; - }); - // Format as expected (sources -> keys -> telemetry) - return { imagery: packaged }; - } - - function requestTelemetry(requests) { - return $timeout(function () { - return doPackage(requests.filter(matchesSource).map(generateData)); - }, 0); - } - - function handleSubscriptions() { - subscriptions.forEach(function (subscription) { - var requests = subscription.requests; - subscription.callback(doPackage( - requests.filter(matchesSource).map(generateData) - )); - }); - } - - function startGenerating() { - $timeout(function () { - handleSubscriptions(); - if (subscriptions.length > 0) { - startGenerating(); - } - }, 1000); - } - - function subscribe(callback, requests) { - var subscription = { - callback: callback, - requests: requests - }; - - function unsubscribe() { - subscriptions = subscriptions.filter(function (s) { - return s !== subscription; - }); - } - - subscriptions.push(subscription); - - if (subscriptions.length === 1) { - startGenerating(); - } - - return unsubscribe; - } - - return { - requestTelemetry: requestTelemetry, - subscribe: subscribe - }; - } - - return ImageTelemetryProvider; - } -); diff --git a/index.html b/index.html index 9b6f732346..71a5f8df18 100644 --- a/index.html +++ b/index.html @@ -32,7 +32,6 @@ require(['openmct'], function (openmct) { [ - 'example/imagery', 'example/eventGenerator', 'example/styleguide' ].forEach( @@ -42,6 +41,7 @@ openmct.install(openmct.plugins.LocalStorage()); openmct.install(openmct.plugins.Espresso()); openmct.install(openmct.plugins.Generator()); + openmct.install(openmct.plugins.ExampleImagery()); openmct.install(openmct.plugins.UTCTimeSystem()); openmct.time.clock('local', {start: -THIRTY_MINUTES, end: 0}); openmct.time.timeSystem('utc'); diff --git a/src/defaultRegistry.js b/src/defaultRegistry.js index 1259efe17e..c2808fad0d 100644 --- a/src/defaultRegistry.js +++ b/src/defaultRegistry.js @@ -34,7 +34,6 @@ define([ '../example/extensions/bundle', '../example/forms/bundle', '../example/identity/bundle', - '../example/imagery/bundle', '../example/mobile/bundle', '../example/msl/bundle', '../example/notifications/bundle', diff --git a/src/plugins/plugins.js b/src/plugins/plugins.js index 5c671fa79c..ee3cbe42c7 100644 --- a/src/plugins/plugins.js +++ b/src/plugins/plugins.js @@ -25,13 +25,15 @@ define([ './utcTimeSystem/plugin', '../../example/generator/plugin', '../../platform/features/autoflow/plugin', - './timeConductor/plugin' + './timeConductor/plugin', + '../../example/imagery/plugin' ], function ( _, UTCTimeSystem, GeneratorPlugin, AutoflowPlugin, - TimeConductorPlugin + TimeConductorPlugin, + ExampleImagery ) { var bundleMap = { CouchDB: 'platform/persistence/couch', @@ -113,5 +115,7 @@ define([ return GeneratorPlugin; }; + plugins.ExampleImagery = ExampleImagery; + return plugins; });