* Initial commit of telemetry table spec * Added example directory to linter paths. Fixed outstanding linting issues
		
			
				
	
	
		
			146 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*****************************************************************************
 | 
						|
 * 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.
 | 
						|
 *****************************************************************************/
 | 
						|
 | 
						|
define([
 | 
						|
 | 
						|
], 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",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18734.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18735.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18736.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18737.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18738.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18739.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18740.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18741.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18742.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18743.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18744.jpg",
 | 
						|
            "https://www.hq.nasa.gov/alsj/a16/AS16-117-18745.jpg",
 | 
						|
            "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"
 | 
						|
        ];
 | 
						|
 | 
						|
        function pointForTimestamp(timestamp, name) {
 | 
						|
            return {
 | 
						|
                name: name,
 | 
						|
                utc: Math.floor(timestamp / 5000) * 5000,
 | 
						|
                url: IMAGE_SAMPLES[Math.floor(timestamp / 5000) % IMAGE_SAMPLES.length]
 | 
						|
            };
 | 
						|
        }
 | 
						|
 | 
						|
        var realtimeProvider = {
 | 
						|
            supportsSubscribe: function (domainObject) {
 | 
						|
                return domainObject.type === 'example.imagery';
 | 
						|
            },
 | 
						|
            subscribe: function (domainObject, callback) {
 | 
						|
                var interval = setInterval(function () {
 | 
						|
                    callback(pointForTimestamp(Date.now(), domainObject.name));
 | 
						|
                }, 5000);
 | 
						|
 | 
						|
                return function () {
 | 
						|
                    clearInterval(interval);
 | 
						|
                };
 | 
						|
            }
 | 
						|
        };
 | 
						|
 | 
						|
        var historicalProvider = {
 | 
						|
            supportsRequest: function (domainObject, options) {
 | 
						|
                return domainObject.type === 'example.imagery'
 | 
						|
                    && options.strategy !== 'latest';
 | 
						|
            },
 | 
						|
            request: function (domainObject, options) {
 | 
						|
                var start = options.start;
 | 
						|
                var end = options.end;
 | 
						|
                var data = [];
 | 
						|
                while (start <= end && data.length < 5000) {
 | 
						|
                    data.push(pointForTimestamp(start, domainObject.name));
 | 
						|
                    start += 5000;
 | 
						|
                }
 | 
						|
                return Promise.resolve(data);
 | 
						|
            }
 | 
						|
        };
 | 
						|
 | 
						|
        var ladProvider = {
 | 
						|
            supportsRequest: function (domainObject, options) {
 | 
						|
                return domainObject.type === 'example.imagery' &&
 | 
						|
                    options.strategy === 'latest';
 | 
						|
            },
 | 
						|
            request: function (domainObject, options) {
 | 
						|
                return Promise.resolve([pointForTimestamp(Date.now(), domainObject.name)]);
 | 
						|
            }
 | 
						|
        };
 | 
						|
 | 
						|
 | 
						|
        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: 'Name',
 | 
						|
                                key: 'name'
 | 
						|
                            },
 | 
						|
                            {
 | 
						|
                                name: 'Time',
 | 
						|
                                key: 'utc',
 | 
						|
                                format: 'utc',
 | 
						|
                                hints: {
 | 
						|
                                    domain: 1
 | 
						|
                                }
 | 
						|
                            },
 | 
						|
                            {
 | 
						|
                                name: 'Image',
 | 
						|
                                key: 'url',
 | 
						|
                                format: 'image',
 | 
						|
                                hints: {
 | 
						|
                                    image: 1
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                        ]
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            });
 | 
						|
 | 
						|
            openmct.telemetry.addProvider(realtimeProvider);
 | 
						|
            openmct.telemetry.addProvider(historicalProvider);
 | 
						|
            openmct.telemetry.addProvider(ladProvider);
 | 
						|
        };
 | 
						|
    }
 | 
						|
 | 
						|
    return ImageryPlugin;
 | 
						|
});
 |