Compare commits
	
		
			18 Commits
		
	
	
		
			table-tele
			...
			mutation-o
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					f8884cef62 | ||
| 
						 | 
					3262b810b3 | ||
| 
						 | 
					790a929d66 | ||
| 
						 | 
					2920e58b07 | ||
| 
						 | 
					1613975048 | ||
| 
						 | 
					dae58e0ad9 | ||
| 
						 | 
					a5826f5d45 | ||
| 
						 | 
					e58e9d3a26 | ||
| 
						 | 
					527c5ec7dd | ||
| 
						 | 
					4480956bab | ||
| 
						 | 
					dd4d55b422 | ||
| 
						 | 
					705ec5b753 | ||
| 
						 | 
					48177082f1 | ||
| 
						 | 
					4c65062ce9 | ||
| 
						 | 
					c4d9b1cf41 | ||
| 
						 | 
					56dbbd894a | ||
| 
						 | 
					f3d14be034 | ||
| 
						 | 
					018f3e7749 | 
@@ -22,60 +22,59 @@
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/EventTelemetryProvider"
 | 
			
		||||
    "./src/EventTelemetryProvider",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    EventTelemetryProvider
 | 
			
		||||
    EventTelemetryProvider,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/eventGenerator",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Event Message Generator",
 | 
			
		||||
            "description": "For development use. Creates sample event message data that mimics a live data stream.",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": EventTelemetryProvider,
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "provides": "telemetryService",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$timeout"
 | 
			
		||||
    legacyRegistry.register("example/eventGenerator", {
 | 
			
		||||
        "name": "Event Message Generator",
 | 
			
		||||
        "description": "For development use. Creates sample event message data that mimics a live data stream.",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": EventTelemetryProvider,
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "provides": "telemetryService",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$timeout"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "types": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "eventGenerator",
 | 
			
		||||
                    "name": "Event Message Generator",
 | 
			
		||||
                    "cssClass": "icon-generator-events",
 | 
			
		||||
                    "description": "For development use. Creates sample event message data that mimics a live data stream.",
 | 
			
		||||
                    "priority": 10,
 | 
			
		||||
                    "features": "creation",
 | 
			
		||||
                    "model": {
 | 
			
		||||
                        "telemetry": {}
 | 
			
		||||
                    },
 | 
			
		||||
                    "telemetry": {
 | 
			
		||||
                        "source": "eventGenerator",
 | 
			
		||||
                        "domains": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "utc",
 | 
			
		||||
                                "name": "Timestamp",
 | 
			
		||||
                                "format": "utc"
 | 
			
		||||
                            }
 | 
			
		||||
                        ],
 | 
			
		||||
                        "ranges": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "message",
 | 
			
		||||
                                "name": "Message",
 | 
			
		||||
                                "format": "string"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "types": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "eventGenerator",
 | 
			
		||||
                        "name": "Event Message Generator",
 | 
			
		||||
                        "cssClass": "icon-generator-events",
 | 
			
		||||
                        "description": "For development use. Creates sample event message data that mimics a live data stream.",
 | 
			
		||||
                        "priority": 10,
 | 
			
		||||
                        "features": "creation",
 | 
			
		||||
                        "model": {
 | 
			
		||||
                            "telemetry": {}
 | 
			
		||||
                        },
 | 
			
		||||
                        "telemetry": {
 | 
			
		||||
                            "source": "eventGenerator",
 | 
			
		||||
                            "domains": [
 | 
			
		||||
                                {
 | 
			
		||||
                                    "key": "utc",
 | 
			
		||||
                                    "name": "Timestamp",
 | 
			
		||||
                                    "format": "utc"
 | 
			
		||||
                                }
 | 
			
		||||
                            ],
 | 
			
		||||
                            "ranges": [
 | 
			
		||||
                                {
 | 
			
		||||
                                    "key": "message",
 | 
			
		||||
                                    "name": "Message",
 | 
			
		||||
                                    "format": "string"
 | 
			
		||||
                                }
 | 
			
		||||
                            ]
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -48,11 +48,11 @@ define(
 | 
			
		||||
                        (domain !== 'delta' ? firstObservedTime : 0);
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            generatorData.getRangeValue = function (i, range) {
 | 
			
		||||
                var domainDelta = this.getDomainValue(i) - firstObservedTime,
 | 
			
		||||
	        generatorData.getRangeValue = function (i, range) {
 | 
			
		||||
		        var domainDelta = this.getDomainValue(i) - firstObservedTime,
 | 
			
		||||
                    ind = i % messages.length;
 | 
			
		||||
                return messages[ind] + " - [" + domainDelta.toString() + "]";
 | 
			
		||||
            };
 | 
			
		||||
	        };
 | 
			
		||||
 | 
			
		||||
            return generatorData;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -34,9 +34,11 @@ define(
 | 
			
		||||
         * @constructor
 | 
			
		||||
         */
 | 
			
		||||
        function EventTelemetryProvider($q, $timeout) {
 | 
			
		||||
            var subscriptions = [],
 | 
			
		||||
                genInterval = 1000,
 | 
			
		||||
                generating = false;
 | 
			
		||||
            var
 | 
			
		||||
	            subscriptions = [],
 | 
			
		||||
	            genInterval = 1000,
 | 
			
		||||
                generating = false,
 | 
			
		||||
                id = Math.random() * 100000;
 | 
			
		||||
 | 
			
		||||
            //
 | 
			
		||||
            function matchesSource(request) {
 | 
			
		||||
@@ -45,6 +47,7 @@ define(
 | 
			
		||||
 | 
			
		||||
            // Used internally; this will be repacked by doPackage
 | 
			
		||||
            function generateData(request) {
 | 
			
		||||
	            //console.log("generateData " + (Date.now() - startTime).toString());
 | 
			
		||||
                return {
 | 
			
		||||
                    key: request.key,
 | 
			
		||||
                    telemetry: new EventTelemetry(request, genInterval)
 | 
			
		||||
 
 | 
			
		||||
@@ -58,15 +58,15 @@ define([], function () {
 | 
			
		||||
                row,
 | 
			
		||||
                i;
 | 
			
		||||
 | 
			
		||||
            function copyDomainsToRow(telemetryRow, index) {
 | 
			
		||||
            function copyDomainsToRow(row, index) {
 | 
			
		||||
                domains.forEach(function (domain) {
 | 
			
		||||
                    telemetryRow[domain.name] = series.getDomainValue(index, domain.key);
 | 
			
		||||
                    row[domain.name] = series.getDomainValue(index, domain.key);
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function copyRangesToRow(telemetryRow, index) {
 | 
			
		||||
            function copyRangesToRow(row, index) {
 | 
			
		||||
                ranges.forEach(function (range) {
 | 
			
		||||
                    telemetryRow[range.name] = series.getRangeValue(index, range.key);
 | 
			
		||||
                    row[range.name] = series.getRangeValue(index, range.key);
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,26 +22,24 @@
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    'legacyRegistry',
 | 
			
		||||
    './ExportTelemetryAsCSVAction'
 | 
			
		||||
], function (ExportTelemetryAsCSVAction) {
 | 
			
		||||
], function (legacyRegistry, ExportTelemetryAsCSVAction) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/export",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Example of using CSV Export",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "actions": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "example.export",
 | 
			
		||||
                        "name": "Export Telemetry as CSV",
 | 
			
		||||
                        "implementation": ExportTelemetryAsCSVAction,
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "cssClass": "icon-download",
 | 
			
		||||
                        "depends": ["exportService"]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/export", {
 | 
			
		||||
        "name": "Example of using CSV Export",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "actions": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "example.export",
 | 
			
		||||
                    "name": "Export Telemetry as CSV",
 | 
			
		||||
                    "implementation": ExportTelemetryAsCSVAction,
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "cssClass": "icon-download",
 | 
			
		||||
                    "depends": [ "exportService" ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,33 +22,32 @@
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/ExampleFormController"
 | 
			
		||||
    "./src/ExampleFormController",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    ExampleFormController
 | 
			
		||||
    ExampleFormController,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/forms",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Declarative Forms example",
 | 
			
		||||
            "sources": "src",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ExampleFormController",
 | 
			
		||||
                        "implementation": ExampleFormController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "routes": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "templateUrl": "templates/exampleForm.html"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/forms", {
 | 
			
		||||
        "name": "Declarative Forms example",
 | 
			
		||||
        "sources": "src",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ExampleFormController",
 | 
			
		||||
                    "implementation": ExampleFormController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "routes": [
 | 
			
		||||
                {
 | 
			
		||||
                    "templateUrl": "templates/exampleForm.html"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,7 @@ define([
 | 
			
		||||
            'period',
 | 
			
		||||
            'offset',
 | 
			
		||||
            'dataRateInHz',
 | 
			
		||||
            'phase'
 | 
			
		||||
            'phase',
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        request = request || {};
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ define([
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    var RED = {
 | 
			
		||||
            sin: 0.9,
 | 
			
		||||
            sin: 0.9, 
 | 
			
		||||
            cos: 0.9
 | 
			
		||||
        },
 | 
			
		||||
        YELLOW = {
 | 
			
		||||
@@ -74,7 +74,7 @@ define([
 | 
			
		||||
        return {
 | 
			
		||||
            evaluate: function (datum, valueMetadata) {
 | 
			
		||||
                var range = valueMetadata && valueMetadata.key;
 | 
			
		||||
 | 
			
		||||
                
 | 
			
		||||
                if (datum[range] > RED[range]) {
 | 
			
		||||
                    return LIMITS.rh;
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
@@ -89,7 +89,7 @@ define([
 | 
			
		||||
    WorkerInterface.prototype.subscribe = function (request, cb) {
 | 
			
		||||
        function callback(message) {
 | 
			
		||||
            cb(message.data);
 | 
			
		||||
        }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        var messageId = this.dispatch('subscribe', request, callback);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -84,10 +84,10 @@
 | 
			
		||||
 | 
			
		||||
    function onRequest(message) {
 | 
			
		||||
        var request = message.data;
 | 
			
		||||
        if (request.end === undefined) {
 | 
			
		||||
        if (request.end == undefined) {
 | 
			
		||||
            request.end = Date.now();
 | 
			
		||||
        }
 | 
			
		||||
        if (request.start === undefined) {
 | 
			
		||||
        if (request.start == undefined){
 | 
			
		||||
            request.start = request.end - FIFTEEN_MINUTES;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ define([
 | 
			
		||||
    GeneratorMetadataProvider
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return function (openmct) {
 | 
			
		||||
    return function(openmct){
 | 
			
		||||
 | 
			
		||||
        openmct.types.addType("example.state-generator", {
 | 
			
		||||
            name: "State Generator",
 | 
			
		||||
 
 | 
			
		||||
@@ -22,28 +22,27 @@
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/ExampleIdentityService"
 | 
			
		||||
    "./src/ExampleIdentityService",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    ExampleIdentityService
 | 
			
		||||
    ExampleIdentityService,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/identity",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": ExampleIdentityService,
 | 
			
		||||
                        "provides": "identityService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "dialogService",
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/identity", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": ExampleIdentityService,
 | 
			
		||||
                    "provides": "identityService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "dialogService",
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,31 +22,31 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
 | 
			
		||||
], function (
 | 
			
		||||
], 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"
 | 
			
		||||
        ];
 | 
			
		||||
                "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 {
 | 
			
		||||
@@ -65,7 +65,7 @@ define([
 | 
			
		||||
                    callback(pointForTimestamp(Date.now(), domainObject.name));
 | 
			
		||||
                }, 5000);
 | 
			
		||||
 | 
			
		||||
                return function () {
 | 
			
		||||
                return function (interval) {
 | 
			
		||||
                    clearInterval(interval);
 | 
			
		||||
                };
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -21,22 +21,25 @@
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define([], function () {
 | 
			
		||||
define([
 | 
			
		||||
    
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/mobile",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Mobile",
 | 
			
		||||
            "description": "Allows elements with pertinence to mobile usage and development",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "stylesheets": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "stylesheetUrl": "css/mobile-example.css",
 | 
			
		||||
                        "priority": "mandatory"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/mobile", {
 | 
			
		||||
        "name": "Mobile",
 | 
			
		||||
        "description": "Allows elements with pertinence to mobile usage and development",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "stylesheets": [
 | 
			
		||||
                {
 | 
			
		||||
                    "stylesheetUrl": "css/mobile-example.css",
 | 
			
		||||
                    "priority": "mandatory"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -24,92 +24,92 @@
 | 
			
		||||
define([
 | 
			
		||||
    "./src/RemsTelemetryServerAdapter",
 | 
			
		||||
    "./src/RemsTelemetryModelProvider",
 | 
			
		||||
    "./src/RemsTelemetryProvider"
 | 
			
		||||
    "./src/RemsTelemetryProvider",
 | 
			
		||||
    'legacyRegistry',
 | 
			
		||||
    "module"
 | 
			
		||||
], function (
 | 
			
		||||
    RemsTelemetryServerAdapter,
 | 
			
		||||
    RemsTelemetryModelProvider,
 | 
			
		||||
    RemsTelemetryProvider
 | 
			
		||||
    RemsTelemetryProvider,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/msl",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name" : "Mars Science Laboratory Data Adapter",
 | 
			
		||||
            "extensions" : {
 | 
			
		||||
                "types": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name":"Mars Science Laboratory",
 | 
			
		||||
                        "key": "msl.curiosity",
 | 
			
		||||
                        "cssClass": "icon-object"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Instrument",
 | 
			
		||||
                        "key": "msl.instrument",
 | 
			
		||||
                        "cssClass": "icon-object",
 | 
			
		||||
                        "model": {"composition": []}
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Measurement",
 | 
			
		||||
                        "key": "msl.measurement",
 | 
			
		||||
                        "cssClass": "icon-telemetry",
 | 
			
		||||
                        "model": {"telemetry": {}},
 | 
			
		||||
                        "telemetry": {
 | 
			
		||||
                            "source": "rems.source",
 | 
			
		||||
                            "domains": [
 | 
			
		||||
                                {
 | 
			
		||||
                                    "name": "Time",
 | 
			
		||||
                                    "key": "utc",
 | 
			
		||||
                                    "format": "utc"
 | 
			
		||||
                                }
 | 
			
		||||
                            ]
 | 
			
		||||
                        }
 | 
			
		||||
    legacyRegistry.register("example/msl", {
 | 
			
		||||
        "name" : "Mars Science Laboratory Data Adapter",
 | 
			
		||||
        "extensions" : {
 | 
			
		||||
            "types": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name":"Mars Science Laboratory",
 | 
			
		||||
                    "key": "msl.curiosity",
 | 
			
		||||
                    "cssClass": "icon-object"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Instrument",
 | 
			
		||||
                    "key": "msl.instrument",
 | 
			
		||||
                    "cssClass": "icon-object",
 | 
			
		||||
                    "model": {"composition": []}
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Measurement",
 | 
			
		||||
                    "key": "msl.measurement",
 | 
			
		||||
                    "cssClass": "icon-telemetry",
 | 
			
		||||
                    "model": {"telemetry": {}},
 | 
			
		||||
                    "telemetry": {
 | 
			
		||||
                        "source": "rems.source",
 | 
			
		||||
                        "domains": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "name": "Time",
 | 
			
		||||
                                "key": "utc",
 | 
			
		||||
                                "format": "utc"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "REMS_WS_URL",
 | 
			
		||||
                        "value": "/proxyUrl?url=http://cab.inta-csic.es/rems/wp-content/plugins/marsweather-widget/api.php"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "REMS_WS_URL",
 | 
			
		||||
                    "value": "/proxyUrl?url=http://cab.inta-csic.es/rems/wp-content/plugins/marsweather-widget/api.php"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "roots": [
 | 
			
		||||
                {
 | 
			
		||||
                    "id": "msl:curiosity"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "models": [
 | 
			
		||||
                {
 | 
			
		||||
                    "id": "msl:curiosity",
 | 
			
		||||
                    "priority": "preferred",
 | 
			
		||||
                    "model": {
 | 
			
		||||
                        "type": "msl.curiosity",
 | 
			
		||||
                        "name": "Mars Science Laboratory",
 | 
			
		||||
                        "composition": ["msl_tlm:rems"]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "roots": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "id": "msl:curiosity"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "models": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "id": "msl:curiosity",
 | 
			
		||||
                        "priority": "preferred",
 | 
			
		||||
                        "model": {
 | 
			
		||||
                            "type": "msl.curiosity",
 | 
			
		||||
                            "name": "Mars Science Laboratory",
 | 
			
		||||
                            "composition": ["msl_tlm:rems"]
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key":"rems.adapter",
 | 
			
		||||
                        "implementation": RemsTelemetryServerAdapter,
 | 
			
		||||
                        "depends": ["$http", "$log", "REMS_WS_URL"]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "modelService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": RemsTelemetryModelProvider,
 | 
			
		||||
                        "depends": ["rems.adapter"]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "telemetryService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": RemsTelemetryProvider,
 | 
			
		||||
                        "depends": ["rems.adapter", "$q"]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key":"rems.adapter",
 | 
			
		||||
                    "implementation": RemsTelemetryServerAdapter,
 | 
			
		||||
                    "depends": ["$http", "$log", "REMS_WS_URL"]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "modelService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": RemsTelemetryModelProvider,
 | 
			
		||||
                    "depends": ["rems.adapter"]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "telemetryService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": RemsTelemetryProvider,
 | 
			
		||||
                    "depends": ["rems.adapter", "$q"]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -76,4 +76,4 @@ define(
 | 
			
		||||
            ]
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define(
 | 
			
		||||
    function () {
 | 
			
		||||
    function (){
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        var PREFIX = "msl_tlm:",
 | 
			
		||||
@@ -32,20 +32,20 @@ define(
 | 
			
		||||
                string: "string"
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
        function RemsTelemetryModelProvider(adapter) {
 | 
			
		||||
        function RemsTelemetryModelProvider(adapter){
 | 
			
		||||
 | 
			
		||||
            function isRelevant(id) {
 | 
			
		||||
                return id.indexOf(PREFIX) === 0;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function makeId(element) {
 | 
			
		||||
            function makeId(element){
 | 
			
		||||
                return PREFIX + element.identifier;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function buildTaxonomy(dictionary) {
 | 
			
		||||
            function buildTaxonomy(dictionary){
 | 
			
		||||
                var models = {};
 | 
			
		||||
 | 
			
		||||
                function addMeasurement(measurement, parent) {
 | 
			
		||||
                function addMeasurement(measurement, parent){
 | 
			
		||||
                    var format = FORMAT_MAPPINGS[measurement.type];
 | 
			
		||||
                    models[makeId(measurement)] = {
 | 
			
		||||
                        type: "msl.measurement",
 | 
			
		||||
@@ -73,12 +73,12 @@ define(
 | 
			
		||||
                        location: spacecraftId,
 | 
			
		||||
                        composition: measurements.map(makeId)
 | 
			
		||||
                    };
 | 
			
		||||
                    measurements.forEach(function (measurement) {
 | 
			
		||||
                    measurements.forEach(function(measurement) {
 | 
			
		||||
                        addMeasurement(measurement, instrumentId);
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                (dictionary.instruments || []).forEach(function (instrument) {
 | 
			
		||||
                (dictionary.instruments || []).forEach(function(instrument) {
 | 
			
		||||
                    addInstrument(instrument, "msl:curiosity");
 | 
			
		||||
                });
 | 
			
		||||
                return models;
 | 
			
		||||
 
 | 
			
		||||
@@ -72,10 +72,10 @@ define (
 | 
			
		||||
         * This data source does not support real-time subscriptions
 | 
			
		||||
         */
 | 
			
		||||
        RemsTelemetryProvider.prototype.subscribe = function (callback, requests) {
 | 
			
		||||
            return function () {};
 | 
			
		||||
            return function() {};
 | 
			
		||||
        };
 | 
			
		||||
        RemsTelemetryProvider.prototype.unsubscribe = function (callback, requests) {
 | 
			
		||||
            return function () {};
 | 
			
		||||
            return function() {};
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return RemsTelemetryProvider;
 | 
			
		||||
 
 | 
			
		||||
@@ -54,8 +54,8 @@ define(
 | 
			
		||||
         * @returns {number} A count of the number of data values available in
 | 
			
		||||
         * this series
 | 
			
		||||
         */
 | 
			
		||||
        RemsTelemetrySeries.prototype.getPointCount = function () {
 | 
			
		||||
            return this.data.length;
 | 
			
		||||
        RemsTelemetrySeries.prototype.getPointCount = function() {
 | 
			
		||||
                    return this.data.length;
 | 
			
		||||
        };
 | 
			
		||||
        /**
 | 
			
		||||
         * The domain value at the given index. The Rems telemetry data is
 | 
			
		||||
@@ -64,8 +64,8 @@ define(
 | 
			
		||||
         * @param index
 | 
			
		||||
         * @returns {number} the time value in ms since 1 January 1970
 | 
			
		||||
         */
 | 
			
		||||
        RemsTelemetrySeries.prototype.getDomainValue = function (index) {
 | 
			
		||||
            return this.data[index].date;
 | 
			
		||||
        RemsTelemetrySeries.prototype.getDomainValue = function(index) {
 | 
			
		||||
                    return this.data[index].date;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
@@ -75,8 +75,8 @@ define(
 | 
			
		||||
         * value of.
 | 
			
		||||
         * @returns {number} A floating point number
 | 
			
		||||
         */
 | 
			
		||||
        RemsTelemetrySeries.prototype.getRangeValue = function (index) {
 | 
			
		||||
            return this.data[index].value;
 | 
			
		||||
        RemsTelemetrySeries.prototype.getRangeValue = function(index) {
 | 
			
		||||
                    return this.data[index].value;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return RemsTelemetrySeries;
 | 
			
		||||
 
 | 
			
		||||
@@ -68,18 +68,18 @@ define(
 | 
			
		||||
         * given request ID.
 | 
			
		||||
         * @private
 | 
			
		||||
         */
 | 
			
		||||
        RemsTelemetryServerAdapter.prototype.requestHistory = function (request) {
 | 
			
		||||
        RemsTelemetryServerAdapter.prototype.requestHistory = function(request) {
 | 
			
		||||
            var self = this,
 | 
			
		||||
                id = request.key;
 | 
			
		||||
 | 
			
		||||
            var dataTransforms = this.dataTransforms;
 | 
			
		||||
 | 
			
		||||
            function processResponse(response) {
 | 
			
		||||
            function processResponse(response){
 | 
			
		||||
                var data = [];
 | 
			
		||||
                /*
 | 
			
		||||
                 * History data is organised by Sol. Iterate over sols...
 | 
			
		||||
                 */
 | 
			
		||||
                response.data.soles.forEach(function (solData) {
 | 
			
		||||
                response.data.soles.forEach(function(solData){
 | 
			
		||||
                    /*
 | 
			
		||||
                     * Check that valid data exists
 | 
			
		||||
                     */
 | 
			
		||||
@@ -106,13 +106,13 @@ define(
 | 
			
		||||
 | 
			
		||||
            //Filter results to match request parameters
 | 
			
		||||
            function filterResults(results) {
 | 
			
		||||
                return results.filter(function (result) {
 | 
			
		||||
                return results.filter(function(result){
 | 
			
		||||
                    return result.date >= (request.start || Number.MIN_VALUE) &&
 | 
			
		||||
                        result.date <= (request.end || Number.MAX_VALUE);
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function packageAndResolve(results) {
 | 
			
		||||
            function packageAndResolve(results){
 | 
			
		||||
                return {id: id, values: results};
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -132,7 +132,7 @@ define(
 | 
			
		||||
         * @param id The telemetry data point key to be queried.
 | 
			
		||||
         * @returns {Promise | Array<RemsTelemetryValue>} that resolves with an Array of {@link RemsTelemetryValue} objects for the request data key.
 | 
			
		||||
         */
 | 
			
		||||
        RemsTelemetryServerAdapter.prototype.history = function (request) {
 | 
			
		||||
        RemsTelemetryServerAdapter.prototype.history = function(request) {
 | 
			
		||||
            return this.requestHistory(request);
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,65 +27,64 @@ define([
 | 
			
		||||
    "./src/DialogLaunchIndicator",
 | 
			
		||||
    "./src/NotificationLaunchIndicator",
 | 
			
		||||
    "./res/dialog-launch.html",
 | 
			
		||||
    "./res/notification-launch.html"
 | 
			
		||||
    "./res/notification-launch.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    DialogLaunchController,
 | 
			
		||||
    NotificationLaunchController,
 | 
			
		||||
    DialogLaunchIndicator,
 | 
			
		||||
    NotificationLaunchIndicator,
 | 
			
		||||
    DialogLaunch,
 | 
			
		||||
    NotificationLaunch
 | 
			
		||||
    NotificationLaunch,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/notifications",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "dialogLaunchTemplate",
 | 
			
		||||
                        "template": DialogLaunch
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "notificationLaunchTemplate",
 | 
			
		||||
                        "template": NotificationLaunch
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "DialogLaunchController",
 | 
			
		||||
                        "implementation": DialogLaunchController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "$log",
 | 
			
		||||
                            "dialogService",
 | 
			
		||||
                            "notificationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "NotificationLaunchController",
 | 
			
		||||
                        "implementation": NotificationLaunchController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "$log",
 | 
			
		||||
                            "notificationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "indicators": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": DialogLaunchIndicator,
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": NotificationLaunchIndicator,
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/notifications", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "dialogLaunchTemplate",
 | 
			
		||||
                    "template": DialogLaunch
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "notificationLaunchTemplate",
 | 
			
		||||
                    "template": NotificationLaunch
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "DialogLaunchController",
 | 
			
		||||
                    "implementation": DialogLaunchController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "$log",
 | 
			
		||||
                        "dialogService",
 | 
			
		||||
                        "notificationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "NotificationLaunchController",
 | 
			
		||||
                    "implementation": NotificationLaunchController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "$log",
 | 
			
		||||
                        "notificationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "indicators": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": DialogLaunchIndicator,
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": NotificationLaunchIndicator,
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -137,12 +137,12 @@ define(
 | 
			
		||||
                        " attention to an event.",
 | 
			
		||||
                        severity: "info",
 | 
			
		||||
                        primaryOption: {
 | 
			
		||||
                            label: "OK",
 | 
			
		||||
                            callback: function () {
 | 
			
		||||
                                $log.debug("OK Pressed");
 | 
			
		||||
                                dialog.dismiss();
 | 
			
		||||
                                label: "OK",
 | 
			
		||||
                                callback: function () {
 | 
			
		||||
                                    $log.debug("OK Pressed");
 | 
			
		||||
                                    dialog.dismiss();
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    };
 | 
			
		||||
 | 
			
		||||
                dialog = dialogService.showBlockingMessage(model);
 | 
			
		||||
 
 | 
			
		||||
@@ -22,34 +22,33 @@
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/BrowserPersistenceProvider"
 | 
			
		||||
    "./src/BrowserPersistenceProvider",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    BrowserPersistenceProvider
 | 
			
		||||
    BrowserPersistenceProvider,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/persistence",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "persistenceService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": BrowserPersistenceProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "PERSISTENCE_SPACE"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                        "value": "mct"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/persistence", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "persistenceService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": BrowserPersistenceProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "PERSISTENCE_SPACE"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                    "value": "mct"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,25 +22,24 @@
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/ExamplePolicy"
 | 
			
		||||
    "./src/ExamplePolicy",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    ExamplePolicy
 | 
			
		||||
    ExamplePolicy,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/policy",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Example Policy",
 | 
			
		||||
            "description": "Provides an example of using policies to prohibit actions.",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "policies": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": ExamplePolicy,
 | 
			
		||||
                        "category": "action"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/policy", {
 | 
			
		||||
        "name": "Example Policy",
 | 
			
		||||
        "description": "Provides an example of using policies to prohibit actions.",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "policies": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": ExamplePolicy,
 | 
			
		||||
                    "category": "action"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -23,34 +23,33 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/WatchIndicator",
 | 
			
		||||
    "./src/DigestIndicator"
 | 
			
		||||
    "./src/DigestIndicator",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    WatchIndicator,
 | 
			
		||||
    DigestIndicator
 | 
			
		||||
    DigestIndicator,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/profiling",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "indicators": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": WatchIndicator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$interval",
 | 
			
		||||
                            "$rootScope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": DigestIndicator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$interval",
 | 
			
		||||
                            "$rootScope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/profiling", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "indicators": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": WatchIndicator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$interval",
 | 
			
		||||
                        "$rootScope"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": DigestIndicator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$interval",
 | 
			
		||||
                        "$rootScope"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,43 +22,42 @@
 | 
			
		||||
/*global define*/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/ScratchPersistenceProvider"
 | 
			
		||||
    "./src/ScratchPersistenceProvider",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    ScratchPersistenceProvider
 | 
			
		||||
    ScratchPersistenceProvider,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/scratchpad",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "roots": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "id": "scratch:root"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "models": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "id": "scratch:root",
 | 
			
		||||
                        "model": {
 | 
			
		||||
                            "type": "folder",
 | 
			
		||||
                            "composition": [],
 | 
			
		||||
                            "name": "Scratchpad"
 | 
			
		||||
                        },
 | 
			
		||||
                        "priority": "preferred"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "persistenceService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": ScratchPersistenceProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("example/scratchpad", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "roots": [
 | 
			
		||||
                {
 | 
			
		||||
                    "id": "scratch:root"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "models": [
 | 
			
		||||
                {
 | 
			
		||||
                    "id": "scratch:root",
 | 
			
		||||
                    "model": {
 | 
			
		||||
                        "type": "folder",
 | 
			
		||||
                        "composition": [],
 | 
			
		||||
                        "name": "Scratchpad"
 | 
			
		||||
                    },
 | 
			
		||||
                    "priority": "preferred"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "persistenceService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": ScratchPersistenceProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -60,7 +60,7 @@ define(
 | 
			
		||||
        ScratchPersistenceProvider.prototype.readObject = function (space, key) {
 | 
			
		||||
            return this.$q.when(
 | 
			
		||||
                (space === 'scratch' && this.table[key]) ?
 | 
			
		||||
                    JSON.parse(this.table[key]) : undefined
 | 
			
		||||
                        JSON.parse(this.table[key]) : undefined
 | 
			
		||||
            );
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,10 @@
 | 
			
		||||
import Vue from 'Vue';
 | 
			
		||||
import HelloWorld from './HelloWorld.vue';
 | 
			
		||||
 | 
			
		||||
function SimpleVuePlugin() {
 | 
			
		||||
function SimpleVuePlugin () {
 | 
			
		||||
    return function install(openmct) {
 | 
			
		||||
        var views = (openmct.mainViews || openmct.objectViews);
 | 
			
		||||
 | 
			
		||||
        openmct.types.addType('hello-world', {
 | 
			
		||||
            name: 'Hello World',
 | 
			
		||||
            description: 'An introduction object',
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,8 @@ define([
 | 
			
		||||
    "./res/templates/glyphs.html",
 | 
			
		||||
    "./res/templates/controls.html",
 | 
			
		||||
    "./res/templates/input.html",
 | 
			
		||||
    "./res/templates/menus.html"
 | 
			
		||||
    "./res/templates/menus.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    ExampleStyleGuideModelProvider,
 | 
			
		||||
    MCTExample,
 | 
			
		||||
@@ -19,14 +20,13 @@ define([
 | 
			
		||||
    glyphsTemplate,
 | 
			
		||||
    controlsTemplate,
 | 
			
		||||
    inputTemplate,
 | 
			
		||||
    menusTemplate
 | 
			
		||||
    menusTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    return {
 | 
			
		||||
        name:"example/styleguide",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Open MCT Style Guide",
 | 
			
		||||
            "description": "Examples and documentation illustrating UI styles in use in Open MCT.",
 | 
			
		||||
            "extensions":
 | 
			
		||||
    legacyRegistry.register("example/styleguide", {
 | 
			
		||||
        "name": "Open MCT Style Guide",
 | 
			
		||||
        "description": "Examples and documentation illustrating UI styles in use in Open MCT.",
 | 
			
		||||
        "extensions":
 | 
			
		||||
        {
 | 
			
		||||
            "types": [
 | 
			
		||||
                { "key": "styleguide.intro", "name": "Introduction", "cssClass": "icon-page", "description": "Introduction and overview to the style guide" },
 | 
			
		||||
@@ -103,6 +103,5 @@ define([
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -30,14 +30,14 @@ define(
 | 
			
		||||
            var pages = {};
 | 
			
		||||
 | 
			
		||||
            // Add pages
 | 
			
		||||
            pages.intro = { name: "Introduction", type: "styleguide.intro", location: "styleguide:home" };
 | 
			
		||||
            pages.standards = { name: "Standards", type: "styleguide.standards", location: "styleguide:home" };
 | 
			
		||||
            pages.colors = { name: "Colors", type: "styleguide.colors", location: "styleguide:home" };
 | 
			
		||||
            pages.glyphs = { name: "Glyphs", type: "styleguide.glyphs", location: "styleguide:home" };
 | 
			
		||||
            pages.status = { name: "Status Indication", type: "styleguide.status", location: "styleguide:home" };
 | 
			
		||||
            pages.controls = { name: "Controls", type: "styleguide.controls", location: "styleguide:ui-elements" };
 | 
			
		||||
            pages.input = { name: "Text Inputs", type: "styleguide.input", location: "styleguide:ui-elements" };
 | 
			
		||||
            pages.menus = { name: "Menus", type: "styleguide.menus", location: "styleguide:ui-elements" };
 | 
			
		||||
            pages['intro'] = { name: "Introduction", type: "styleguide.intro", location: "styleguide:home" };
 | 
			
		||||
            pages['standards'] = { name: "Standards", type: "styleguide.standards", location: "styleguide:home" };
 | 
			
		||||
            pages['colors'] = { name: "Colors", type: "styleguide.colors", location: "styleguide:home" };
 | 
			
		||||
            pages['glyphs'] = { name: "Glyphs", type: "styleguide.glyphs", location: "styleguide:home" };
 | 
			
		||||
            pages['status'] = { name: "Status Indication", type: "styleguide.status", location: "styleguide:home" };
 | 
			
		||||
            pages['controls'] = { name: "Controls", type: "styleguide.controls", location: "styleguide:ui-elements" };
 | 
			
		||||
            pages['input'] = { name: "Text Inputs", type: "styleguide.input", location: "styleguide:ui-elements" };
 | 
			
		||||
            pages['menus'] = { name: "Menus", type: "styleguide.menus", location: "styleguide:ui-elements" };
 | 
			
		||||
 | 
			
		||||
            return {
 | 
			
		||||
                getModels: function () {
 | 
			
		||||
@@ -48,4 +48,4 @@ define(
 | 
			
		||||
 | 
			
		||||
        return ExampleStyleGuideModelProvider
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
@@ -74,8 +74,8 @@
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "start": "node app.js",
 | 
			
		||||
    "lint": "eslint platform example src openmct.js",
 | 
			
		||||
    "lint:fix": "eslint platform example src openmct.js --fix",
 | 
			
		||||
    "lint": "eslint platform src openmct.js",
 | 
			
		||||
    "lint:fix": "eslint platform src openmct.js --fix",
 | 
			
		||||
    "build:prod": "NODE_ENV=production webpack",
 | 
			
		||||
    "build:dev": "webpack",
 | 
			
		||||
    "build:watch": "webpack --watch",
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,8 @@ define([
 | 
			
		||||
    "./res/templates/license-apache.html",
 | 
			
		||||
    "./res/templates/license-mit.html",
 | 
			
		||||
    "./res/templates/licenses.html",
 | 
			
		||||
    "./res/templates/licenses-export-md.html"
 | 
			
		||||
    "./res/templates/licenses-export-md.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    aboutDialogTemplate,
 | 
			
		||||
    LogoController,
 | 
			
		||||
@@ -43,139 +44,137 @@ define([
 | 
			
		||||
    licenseApacheTemplate,
 | 
			
		||||
    licenseMitTemplate,
 | 
			
		||||
    licensesTemplate,
 | 
			
		||||
    licensesExportMdTemplate
 | 
			
		||||
    licensesExportMdTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/about",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "About Open MCT",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "app-logo",
 | 
			
		||||
                        "priority": "optional",
 | 
			
		||||
                        "template": appLogoTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "about-logo",
 | 
			
		||||
                        "priority": "preferred",
 | 
			
		||||
                        "template": aboutLogoTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "about-dialog",
 | 
			
		||||
                        "template": aboutDialogTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "overlay-about",
 | 
			
		||||
                        "template": overlayAboutTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "license-apache",
 | 
			
		||||
                        "template": licenseApacheTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "license-mit",
 | 
			
		||||
                        "template": licenseMitTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "LogoController",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "overlayService"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "implementation": LogoController
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "AboutController",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "versions[]",
 | 
			
		||||
                            "$window"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "implementation": AboutController
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "LicenseController",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "licenses[]"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "implementation": LicenseController
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "licenses": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Json.NET",
 | 
			
		||||
                        "version": "6.0.8",
 | 
			
		||||
                        "author": "Newtonsoft",
 | 
			
		||||
                        "description": "JSON serialization/deserialization",
 | 
			
		||||
                        "website": "http://www.newtonsoft.com/json",
 | 
			
		||||
                        "copyright": "Copyright (c) 2007 James Newton-King",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Nancy",
 | 
			
		||||
                        "version": "0.23.2",
 | 
			
		||||
                        "author": "Andreas Håkansson, Steven Robbins and contributors",
 | 
			
		||||
                        "description": "Embedded web server",
 | 
			
		||||
                        "website": "http://nancyfx.org/",
 | 
			
		||||
                        "copyright": "Copyright © 2010 Andreas Håkansson, Steven Robbins and contributors",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "http://www.opensource.org/licenses/mit-license.php"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Nancy.Hosting.Self",
 | 
			
		||||
                        "version": "0.23.2",
 | 
			
		||||
                        "author": "Andreas Håkansson, Steven Robbins and contributors",
 | 
			
		||||
                        "description": "Embedded web server",
 | 
			
		||||
                        "website": "http://nancyfx.org/",
 | 
			
		||||
                        "copyright": "Copyright © 2010 Andreas Håkansson, Steven Robbins and contributors",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "http://www.opensource.org/licenses/mit-license.php"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "SuperSocket",
 | 
			
		||||
                        "version": "0.9.0.2",
 | 
			
		||||
                        "author": " Kerry Jiang",
 | 
			
		||||
                        "description": "Supports SuperWebSocket",
 | 
			
		||||
                        "website": "https://supersocket.codeplex.com/",
 | 
			
		||||
                        "copyright": "Copyright 2010-2014 Kerry Jiang (kerry-jiang@hotmail.com)",
 | 
			
		||||
                        "license": "license-apache",
 | 
			
		||||
                        "link": "https://supersocket.codeplex.com/license"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "SuperWebSocket",
 | 
			
		||||
                        "version": "0.9.0.2",
 | 
			
		||||
                        "author": " Kerry Jiang",
 | 
			
		||||
                        "description": "WebSocket implementation for client-server communication",
 | 
			
		||||
                        "website": "https://superwebsocket.codeplex.com/",
 | 
			
		||||
                        "copyright": "Copyright 2010-2014 Kerry Jiang (kerry-jiang@hotmail.com)",
 | 
			
		||||
                        "license": "license-apache",
 | 
			
		||||
                        "link": "https://superwebsocket.codeplex.com/license"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "log4net",
 | 
			
		||||
                        "version": "2.0.3",
 | 
			
		||||
                        "author": "Apache Software Foundation",
 | 
			
		||||
                        "description": "Logging",
 | 
			
		||||
                        "website": "http://logging.apache.org/log4net/",
 | 
			
		||||
                        "copyright": "Copyright © 2004-2015 Apache Software Foundation.",
 | 
			
		||||
                        "license": "license-apache",
 | 
			
		||||
                        "link": "http://logging.apache.org/log4net/license.html"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "routes": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "when": "/licenses",
 | 
			
		||||
                        "template": licensesTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "when": "/licenses-md",
 | 
			
		||||
                        "template": licensesExportMdTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/about", {
 | 
			
		||||
        "name": "About Open MCT",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "app-logo",
 | 
			
		||||
                    "priority": "optional",
 | 
			
		||||
                    "template": appLogoTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "about-logo",
 | 
			
		||||
                    "priority": "preferred",
 | 
			
		||||
                    "template": aboutLogoTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "about-dialog",
 | 
			
		||||
                    "template": aboutDialogTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "overlay-about",
 | 
			
		||||
                    "template": overlayAboutTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "license-apache",
 | 
			
		||||
                    "template": licenseApacheTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "license-mit",
 | 
			
		||||
                    "template": licenseMitTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "LogoController",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "overlayService"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "implementation": LogoController
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "AboutController",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "versions[]",
 | 
			
		||||
                        "$window"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "implementation": AboutController
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "LicenseController",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "licenses[]"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "implementation": LicenseController
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "licenses": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Json.NET",
 | 
			
		||||
                    "version": "6.0.8",
 | 
			
		||||
                    "author": "Newtonsoft",
 | 
			
		||||
                    "description": "JSON serialization/deserialization",
 | 
			
		||||
                    "website": "http://www.newtonsoft.com/json",
 | 
			
		||||
                    "copyright": "Copyright (c) 2007 James Newton-King",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Nancy",
 | 
			
		||||
                    "version": "0.23.2",
 | 
			
		||||
                    "author": "Andreas Håkansson, Steven Robbins and contributors",
 | 
			
		||||
                    "description": "Embedded web server",
 | 
			
		||||
                    "website": "http://nancyfx.org/",
 | 
			
		||||
                    "copyright": "Copyright © 2010 Andreas Håkansson, Steven Robbins and contributors",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "http://www.opensource.org/licenses/mit-license.php"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Nancy.Hosting.Self",
 | 
			
		||||
                    "version": "0.23.2",
 | 
			
		||||
                    "author": "Andreas Håkansson, Steven Robbins and contributors",
 | 
			
		||||
                    "description": "Embedded web server",
 | 
			
		||||
                    "website": "http://nancyfx.org/",
 | 
			
		||||
                    "copyright": "Copyright © 2010 Andreas Håkansson, Steven Robbins and contributors",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "http://www.opensource.org/licenses/mit-license.php"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "SuperSocket",
 | 
			
		||||
                    "version": "0.9.0.2",
 | 
			
		||||
                    "author": " Kerry Jiang",
 | 
			
		||||
                    "description": "Supports SuperWebSocket",
 | 
			
		||||
                    "website": "https://supersocket.codeplex.com/",
 | 
			
		||||
                    "copyright": "Copyright 2010-2014 Kerry Jiang (kerry-jiang@hotmail.com)",
 | 
			
		||||
                    "license": "license-apache",
 | 
			
		||||
                    "link": "https://supersocket.codeplex.com/license"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "SuperWebSocket",
 | 
			
		||||
                    "version": "0.9.0.2",
 | 
			
		||||
                    "author": " Kerry Jiang",
 | 
			
		||||
                    "description": "WebSocket implementation for client-server communication",
 | 
			
		||||
                    "website": "https://superwebsocket.codeplex.com/",
 | 
			
		||||
                    "copyright": "Copyright 2010-2014 Kerry Jiang (kerry-jiang@hotmail.com)",
 | 
			
		||||
                    "license": "license-apache",
 | 
			
		||||
                    "link": "https://superwebsocket.codeplex.com/license"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "log4net",
 | 
			
		||||
                    "version": "2.0.3",
 | 
			
		||||
                    "author": "Apache Software Foundation",
 | 
			
		||||
                    "description": "Logging",
 | 
			
		||||
                    "website": "http://logging.apache.org/log4net/",
 | 
			
		||||
                    "copyright": "Copyright © 2004-2015 Apache Software Foundation.",
 | 
			
		||||
                    "license": "license-apache",
 | 
			
		||||
                    "link": "http://logging.apache.org/log4net/license.html"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "routes": [
 | 
			
		||||
                {
 | 
			
		||||
                    "when": "/licenses",
 | 
			
		||||
                    "template": licensesTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "when": "/licenses-md",
 | 
			
		||||
                    "template": licensesExportMdTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,8 @@ define([
 | 
			
		||||
    "./res/templates/menu-arrow.html",
 | 
			
		||||
    "./res/templates/back-arrow.html",
 | 
			
		||||
    "./res/templates/browse/object-properties.html",
 | 
			
		||||
    "./res/templates/browse/inspector-region.html"
 | 
			
		||||
    "./res/templates/browse/inspector-region.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    NavigationService,
 | 
			
		||||
    NavigateAction,
 | 
			
		||||
@@ -45,133 +46,131 @@ define([
 | 
			
		||||
    menuArrowTemplate,
 | 
			
		||||
    backArrowTemplate,
 | 
			
		||||
    objectPropertiesTemplate,
 | 
			
		||||
    inspectorRegionTemplate
 | 
			
		||||
    inspectorRegionTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/browse",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "routes": [
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "DEFAULT_PATH",
 | 
			
		||||
                        "value": "mine",
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "representations": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "browse-object",
 | 
			
		||||
                        "template": browseObjectTemplate,
 | 
			
		||||
                        "gestures": [
 | 
			
		||||
                            "drop"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "view"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "object-header",
 | 
			
		||||
                        "template": objectHeaderTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "type"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "object-header-frame",
 | 
			
		||||
                        "template": objectHeaderFrameTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "type"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "menu-arrow",
 | 
			
		||||
                        "template": menuArrowTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "action"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "gestures": [
 | 
			
		||||
                            "menu"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "back-arrow",
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "context"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "template": backArrowTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "object-properties",
 | 
			
		||||
                        "template": objectPropertiesTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "inspector-region",
 | 
			
		||||
                        "template": inspectorRegionTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "navigationService",
 | 
			
		||||
                        "implementation": NavigationService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$window"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "actions": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "navigate",
 | 
			
		||||
                        "implementation": NavigateAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "navigationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "window",
 | 
			
		||||
                        "name": "Open In New Tab",
 | 
			
		||||
                        "implementation": NewTabAction,
 | 
			
		||||
                        "description": "Open in a new browser tab",
 | 
			
		||||
                        "category": [
 | 
			
		||||
                            "view-control",
 | 
			
		||||
                            "contextual"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "urlService",
 | 
			
		||||
                            "$window"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "group": "windowing",
 | 
			
		||||
                        "cssClass": "icon-new-window",
 | 
			
		||||
                        "priority": "preferred"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "runs": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": OrphanNavigationHandler,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "throttle",
 | 
			
		||||
                            "topic",
 | 
			
		||||
                            "navigationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "browseRoot",
 | 
			
		||||
                        template: browseTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "browseObject",
 | 
			
		||||
                        template: browseObjectTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "inspectorRegion",
 | 
			
		||||
                        template: inspectorRegionTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/browse", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "routes": [
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "DEFAULT_PATH",
 | 
			
		||||
                    "value": "mine",
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "representations": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "browse-object",
 | 
			
		||||
                    "template": browseObjectTemplate,
 | 
			
		||||
                    "gestures": [
 | 
			
		||||
                        "drop"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "view"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "object-header",
 | 
			
		||||
                    "template": objectHeaderTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "type"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "object-header-frame",
 | 
			
		||||
                    "template": objectHeaderFrameTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "type"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "menu-arrow",
 | 
			
		||||
                    "template": menuArrowTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "action"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "gestures": [
 | 
			
		||||
                        "menu"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "back-arrow",
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "context"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "template": backArrowTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "object-properties",
 | 
			
		||||
                    "template": objectPropertiesTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "inspector-region",
 | 
			
		||||
                    "template": inspectorRegionTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "navigationService",
 | 
			
		||||
                    "implementation": NavigationService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$window"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "actions": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "navigate",
 | 
			
		||||
                    "implementation": NavigateAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "navigationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "window",
 | 
			
		||||
                    "name": "Open In New Tab",
 | 
			
		||||
                    "implementation": NewTabAction,
 | 
			
		||||
                    "description": "Open in a new browser tab",
 | 
			
		||||
                    "category": [
 | 
			
		||||
                        "view-control",
 | 
			
		||||
                        "contextual"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "urlService",
 | 
			
		||||
                        "$window"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "group": "windowing",
 | 
			
		||||
                    "cssClass": "icon-new-window",
 | 
			
		||||
                    "priority": "preferred"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "runs": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": OrphanNavigationHandler,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "throttle",
 | 
			
		||||
                        "topic",
 | 
			
		||||
                        "navigationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "browseRoot",
 | 
			
		||||
                    template: browseTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    key: "browseObject",
 | 
			
		||||
                    template: browseObjectTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    key: "inspectorRegion",
 | 
			
		||||
                    template: inspectorRegionTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,8 @@ define([
 | 
			
		||||
    "./res/templates/message.html",
 | 
			
		||||
    "./res/templates/notification-message.html",
 | 
			
		||||
    "./res/templates/overlay-message-list.html",
 | 
			
		||||
    "./res/templates/overlay.html"
 | 
			
		||||
    "./res/templates/overlay.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    DialogService,
 | 
			
		||||
    OverlayService,
 | 
			
		||||
@@ -41,72 +42,70 @@ define([
 | 
			
		||||
    messageTemplate,
 | 
			
		||||
    notificationMessageTemplate,
 | 
			
		||||
    overlayMessageListTemplate,
 | 
			
		||||
    overlayTemplate
 | 
			
		||||
    overlayTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/dialog",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "dialogService",
 | 
			
		||||
                        "implementation": DialogService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "overlayService",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$log",
 | 
			
		||||
                            "$document"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "overlayService",
 | 
			
		||||
                        "implementation": OverlayService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$document",
 | 
			
		||||
                            "$compile",
 | 
			
		||||
                            "$rootScope",
 | 
			
		||||
                            "$timeout"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "overlay-dialog",
 | 
			
		||||
                        "template": overlayDialogTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "overlay-options",
 | 
			
		||||
                        "template": overlayOptionsTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "form-dialog",
 | 
			
		||||
                        "template": dialogTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "overlay-blocking-message",
 | 
			
		||||
                        "template": overlayBlockingMessageTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "message",
 | 
			
		||||
                        "template": messageTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "notification-message",
 | 
			
		||||
                        "template": notificationMessageTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "overlay-message-list",
 | 
			
		||||
                        "template": overlayMessageListTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "containers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "overlay",
 | 
			
		||||
                        "template": overlayTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/dialog", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "dialogService",
 | 
			
		||||
                    "implementation": DialogService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "overlayService",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$log",
 | 
			
		||||
                        "$document"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "overlayService",
 | 
			
		||||
                    "implementation": OverlayService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$document",
 | 
			
		||||
                        "$compile",
 | 
			
		||||
                        "$rootScope",
 | 
			
		||||
                        "$timeout"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "overlay-dialog",
 | 
			
		||||
                    "template": overlayDialogTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "overlay-options",
 | 
			
		||||
                    "template": overlayOptionsTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "form-dialog",
 | 
			
		||||
                    "template": dialogTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "overlay-blocking-message",
 | 
			
		||||
                    "template": overlayBlockingMessageTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "message",
 | 
			
		||||
                    "template": messageTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "notification-message",
 | 
			
		||||
                    "template": notificationMessageTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "overlay-message-list",
 | 
			
		||||
                    "template": overlayMessageListTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "containers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "overlay",
 | 
			
		||||
                    "template": overlayTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -48,7 +48,8 @@ define([
 | 
			
		||||
    "./res/templates/library.html",
 | 
			
		||||
    "./res/templates/edit-object.html",
 | 
			
		||||
    "./res/templates/edit-action-buttons.html",
 | 
			
		||||
    "./res/templates/topbar-edit.html"
 | 
			
		||||
    "./res/templates/topbar-edit.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    EditActionController,
 | 
			
		||||
    EditPanesController,
 | 
			
		||||
@@ -77,277 +78,276 @@ define([
 | 
			
		||||
    libraryTemplate,
 | 
			
		||||
    editObjectTemplate,
 | 
			
		||||
    editActionButtonsTemplate,
 | 
			
		||||
    topbarEditTemplate
 | 
			
		||||
    topbarEditTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    return {
 | 
			
		||||
        name: "platform/commonUI/edit",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "EditActionController",
 | 
			
		||||
                        "implementation": EditActionController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "EditPanesController",
 | 
			
		||||
                        "implementation": EditPanesController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "EditObjectController",
 | 
			
		||||
                        "implementation": EditObjectController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$location",
 | 
			
		||||
                            "navigationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "CreateMenuController",
 | 
			
		||||
                        "implementation": CreateMenuController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "LocatorController",
 | 
			
		||||
                        "implementation": LocatorController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "objectService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "actions": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "compose",
 | 
			
		||||
                        "implementation": EditAndComposeAction
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "edit",
 | 
			
		||||
                        "implementation": EditAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$location",
 | 
			
		||||
                            "navigationService",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "description": "Edit",
 | 
			
		||||
                        "category": "view-control",
 | 
			
		||||
                        "cssClass": "major icon-pencil"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "properties",
 | 
			
		||||
                        "category": [
 | 
			
		||||
                            "contextual",
 | 
			
		||||
                            "view-control"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "implementation": PropertiesAction,
 | 
			
		||||
                        "cssClass": "major icon-pencil",
 | 
			
		||||
                        "name": "Edit Properties...",
 | 
			
		||||
                        "description": "Edit properties of this object.",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "dialogService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "save-and-stop-editing",
 | 
			
		||||
                        "category": "save",
 | 
			
		||||
                        "implementation": SaveAndStopEditingAction,
 | 
			
		||||
                        "name": "Save and Finish Editing",
 | 
			
		||||
                        "cssClass": "icon-save labeled",
 | 
			
		||||
                        "description": "Save changes made to these objects.",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "dialogService",
 | 
			
		||||
                            "notificationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "save",
 | 
			
		||||
                        "category": "save",
 | 
			
		||||
                        "implementation": SaveAction,
 | 
			
		||||
                        "name": "Save and Continue Editing",
 | 
			
		||||
                        "cssClass": "icon-save labeled",
 | 
			
		||||
                        "description": "Save changes made to these objects.",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "dialogService",
 | 
			
		||||
                            "notificationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "save-as",
 | 
			
		||||
                        "category": "save",
 | 
			
		||||
                        "implementation": SaveAsAction,
 | 
			
		||||
                        "name": "Save As...",
 | 
			
		||||
                        "cssClass": "icon-save labeled",
 | 
			
		||||
                        "description": "Save changes made to these objects.",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$injector",
 | 
			
		||||
                            "dialogService",
 | 
			
		||||
                            "copyService",
 | 
			
		||||
                            "notificationService",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "priority": "mandatory"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "cancel",
 | 
			
		||||
                        "category": "conclude-editing",
 | 
			
		||||
                        "implementation": CancelAction,
 | 
			
		||||
                        // Because we use the name as label for edit buttons and mct-control buttons need
 | 
			
		||||
                        // the label to be set to undefined in order to not apply the labeled CSS rule.
 | 
			
		||||
                        "name": undefined,
 | 
			
		||||
                        "cssClass": "icon-x no-label",
 | 
			
		||||
                        "description": "Discard changes made to these objects.",
 | 
			
		||||
                        "depends": []
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "policies": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "action",
 | 
			
		||||
                        "implementation": EditPersistableObjectsPolicy,
 | 
			
		||||
                        "depends": ["openmct"]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": CreationPolicy,
 | 
			
		||||
                        "category": "creation"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "edit-library",
 | 
			
		||||
                        "template": libraryTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "representations": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "edit-object",
 | 
			
		||||
                        "template": editObjectTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "view"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "gestures": [
 | 
			
		||||
                            "drop"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "edit-action-buttons",
 | 
			
		||||
                        "template": editActionButtonsTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "action"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "topbar-edit",
 | 
			
		||||
                        "template": topbarEditTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "create-button",
 | 
			
		||||
                        "template": createButtonTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "create-menu",
 | 
			
		||||
                        "template": createMenuTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "action"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "provides": "capabilityService",
 | 
			
		||||
                        "implementation": TransactionCapabilityDecorator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "transactionManager"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "provides": "transactionService",
 | 
			
		||||
                        "implementation": TransactionService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$log",
 | 
			
		||||
                            "cacheService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "CreateActionProvider",
 | 
			
		||||
                        "provides": "actionService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": CreateActionProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "typeService",
 | 
			
		||||
                            "policyService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "CreationService",
 | 
			
		||||
                        "provides": "creationService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": CreationService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                ],
 | 
			
		||||
                "representers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": EditRepresenter,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/edit", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "EditActionController",
 | 
			
		||||
                    "implementation": EditActionController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "EditPanesController",
 | 
			
		||||
                    "implementation": EditPanesController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "EditObjectController",
 | 
			
		||||
                    "implementation": EditObjectController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$location",
 | 
			
		||||
                        "navigationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "CreateMenuController",
 | 
			
		||||
                    "implementation": CreateMenuController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "LocatorController",
 | 
			
		||||
                    "implementation": LocatorController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "objectService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "actions": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "compose",
 | 
			
		||||
                    "implementation": EditAndComposeAction
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "edit",
 | 
			
		||||
                    "implementation": EditAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$location",
 | 
			
		||||
                        "navigationService",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "description": "Edit",
 | 
			
		||||
                    "category": "view-control",
 | 
			
		||||
                    "cssClass": "major icon-pencil"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "properties",
 | 
			
		||||
                    "category": [
 | 
			
		||||
                        "contextual",
 | 
			
		||||
                        "view-control"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "implementation": PropertiesAction,
 | 
			
		||||
                    "cssClass": "major icon-pencil",
 | 
			
		||||
                    "name": "Edit Properties...",
 | 
			
		||||
                    "description": "Edit properties of this object.",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "dialogService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "save-and-stop-editing",
 | 
			
		||||
                    "category": "save",
 | 
			
		||||
                    "implementation": SaveAndStopEditingAction,
 | 
			
		||||
                    "name": "Save and Finish Editing",
 | 
			
		||||
                    "cssClass": "icon-save labeled",
 | 
			
		||||
                    "description": "Save changes made to these objects.",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "dialogService",
 | 
			
		||||
                        "notificationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "save",
 | 
			
		||||
                    "category": "save",
 | 
			
		||||
                    "implementation": SaveAction,
 | 
			
		||||
                    "name": "Save and Continue Editing",
 | 
			
		||||
                    "cssClass": "icon-save labeled",
 | 
			
		||||
                    "description": "Save changes made to these objects.",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "dialogService",
 | 
			
		||||
                        "notificationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "save-as",
 | 
			
		||||
                    "category": "save",
 | 
			
		||||
                    "implementation": SaveAsAction,
 | 
			
		||||
                    "name": "Save As...",
 | 
			
		||||
                    "cssClass": "icon-save labeled",
 | 
			
		||||
                    "description": "Save changes made to these objects.",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$injector",
 | 
			
		||||
                        "dialogService",
 | 
			
		||||
                        "copyService",
 | 
			
		||||
                        "notificationService",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "priority": "mandatory"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "cancel",
 | 
			
		||||
                    "category": "conclude-editing",
 | 
			
		||||
                    "implementation": CancelAction,
 | 
			
		||||
                    // Because we use the name as label for edit buttons and mct-control buttons need
 | 
			
		||||
                    // the label to be set to undefined in order to not apply the labeled CSS rule.
 | 
			
		||||
                    "name": undefined,
 | 
			
		||||
                    "cssClass": "icon-x no-label",
 | 
			
		||||
                    "description": "Discard changes made to these objects.",
 | 
			
		||||
                    "depends": []
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "policies": [
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "action",
 | 
			
		||||
                    "implementation": EditPersistableObjectsPolicy,
 | 
			
		||||
                    "depends": ["openmct"]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": CreationPolicy,
 | 
			
		||||
                    "category": "creation"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "edit-library",
 | 
			
		||||
                    "template": libraryTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "representations": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "edit-object",
 | 
			
		||||
                    "template": editObjectTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "view"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "gestures": [
 | 
			
		||||
                        "drop"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "edit-action-buttons",
 | 
			
		||||
                    "template": editActionButtonsTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "action"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "topbar-edit",
 | 
			
		||||
                    "template": topbarEditTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "create-button",
 | 
			
		||||
                    "template": createButtonTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "create-menu",
 | 
			
		||||
                    "template": createMenuTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "action"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "provides": "capabilityService",
 | 
			
		||||
                    "implementation": TransactionCapabilityDecorator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "transactionManager"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "provides": "transactionService",
 | 
			
		||||
                    "implementation": TransactionService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$log",
 | 
			
		||||
                        "cacheService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "CreateActionProvider",
 | 
			
		||||
                    "provides": "actionService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": CreateActionProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "typeService",
 | 
			
		||||
                        "policyService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "CreationService",
 | 
			
		||||
                    "provides": "creationService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": CreationService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            ],
 | 
			
		||||
            "representers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": EditRepresenter,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "capabilities": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "editor",
 | 
			
		||||
                    "name": "Editor Capability",
 | 
			
		||||
                    "description": "Provides transactional editing capabilities",
 | 
			
		||||
                    "implementation": EditorCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "transactionService",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controls": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "locator",
 | 
			
		||||
                    "template": locatorTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "transactionManager",
 | 
			
		||||
                    "implementation": TransactionManager,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "transactionService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "runs": [
 | 
			
		||||
                {
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "toolbars[]",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ],
 | 
			
		||||
                    implementation: function (toolbars, openmct) {
 | 
			
		||||
                        toolbars.forEach(openmct.toolbars.addProvider, openmct.toolbars);
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "capabilities": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "editor",
 | 
			
		||||
                        "name": "Editor Capability",
 | 
			
		||||
                        "description": "Provides transactional editing capabilities",
 | 
			
		||||
                        "implementation": EditorCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "transactionService",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controls": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "locator",
 | 
			
		||||
                        "template": locatorTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "transactionManager",
 | 
			
		||||
                        "implementation": TransactionManager,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "transactionService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "runs": [
 | 
			
		||||
                    {
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "toolbars[]",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ],
 | 
			
		||||
                        implementation: function (toolbars, openmct) {
 | 
			
		||||
                            toolbars.forEach(openmct.toolbars.addProvider, openmct.toolbars);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -23,57 +23,56 @@
 | 
			
		||||
define([
 | 
			
		||||
    "./src/FormatProvider",
 | 
			
		||||
    "./src/UTCTimeFormat",
 | 
			
		||||
    "./src/DurationFormat"
 | 
			
		||||
    "./src/DurationFormat",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    FormatProvider,
 | 
			
		||||
    UTCTimeFormat,
 | 
			
		||||
    DurationFormat
 | 
			
		||||
    DurationFormat,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/formats",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Format Registry",
 | 
			
		||||
            "description": "Provides a registry for formats, which allow parsing and formatting of values.",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "formatService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": FormatProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "formats[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "formats": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "utc",
 | 
			
		||||
                        "implementation": UTCTimeFormat
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "duration",
 | 
			
		||||
                        "implementation": DurationFormat
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "DEFAULT_TIME_FORMAT",
 | 
			
		||||
                        "value": "utc"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "licenses": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "d3",
 | 
			
		||||
                        "version": "3.0.0",
 | 
			
		||||
                        "description": "Incorporates modified code from d3 Time Scales",
 | 
			
		||||
                        "author": "Mike Bostock",
 | 
			
		||||
                        "copyright": "Copyright 2010-2016 Mike Bostock. " +
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/formats", {
 | 
			
		||||
        "name": "Format Registry",
 | 
			
		||||
        "description": "Provides a registry for formats, which allow parsing and formatting of values.",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "formatService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": FormatProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "formats[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "formats": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "utc",
 | 
			
		||||
                    "implementation": UTCTimeFormat
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "duration",
 | 
			
		||||
                    "implementation": DurationFormat
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "DEFAULT_TIME_FORMAT",
 | 
			
		||||
                    "value": "utc"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "licenses": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "d3",
 | 
			
		||||
                    "version": "3.0.0",
 | 
			
		||||
                    "description": "Incorporates modified code from d3 Time Scales",
 | 
			
		||||
                    "author": "Mike Bostock",
 | 
			
		||||
                    "copyright": "Copyright 2010-2016 Mike Bostock. " +
 | 
			
		||||
                    "All rights reserved.",
 | 
			
		||||
                        "link": "https://github.com/d3/d3/blob/master/LICENSE"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
                    "link": "https://github.com/d3/d3/blob/master/LICENSE"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,8 @@ define([
 | 
			
		||||
    "./res/templates/object-inspector.html",
 | 
			
		||||
    "./res/templates/controls/selector.html",
 | 
			
		||||
    "./res/templates/controls/datetime-picker.html",
 | 
			
		||||
    "./res/templates/controls/datetime-field.html"
 | 
			
		||||
    "./res/templates/controls/datetime-field.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    UrlService,
 | 
			
		||||
    PopupService,
 | 
			
		||||
@@ -113,417 +114,415 @@ define([
 | 
			
		||||
    objectInspectorTemplate,
 | 
			
		||||
    selectorTemplate,
 | 
			
		||||
    datetimePickerTemplate,
 | 
			
		||||
    datetimeFieldTemplate
 | 
			
		||||
    datetimeFieldTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/general",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "General UI elements",
 | 
			
		||||
            "description": "General UI elements, meant to be reused across modes",
 | 
			
		||||
            "resources": "res",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "urlService",
 | 
			
		||||
                        "implementation": UrlService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$location"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "popupService",
 | 
			
		||||
                        "implementation": PopupService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$document",
 | 
			
		||||
                            "$window"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "runs": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": StyleSheetLoader,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "stylesheets[]",
 | 
			
		||||
                            "$document",
 | 
			
		||||
                            "THEME",
 | 
			
		||||
                            "ASSETS_PATH"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": SplashScreenManager,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$document"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "filters": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": ReverseFilter,
 | 
			
		||||
                        "key": "reverse"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "bottombar",
 | 
			
		||||
                        "template": bottombarTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "action-button",
 | 
			
		||||
                        "template": actionButtonTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "input-filter",
 | 
			
		||||
                        "template": inputFilterTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "indicator",
 | 
			
		||||
                        "template": indicatorTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "message-banner",
 | 
			
		||||
                        "template": messageBannerTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "progress-bar",
 | 
			
		||||
                        "template": progressBarTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "time-controller",
 | 
			
		||||
                        "template": timeControllerTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "TimeRangeController",
 | 
			
		||||
                        "implementation": TimeRangeController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "formatService",
 | 
			
		||||
                            "DEFAULT_TIME_FORMAT",
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "DateTimePickerController",
 | 
			
		||||
                        "implementation": DateTimePickerController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "DateTimeFieldController",
 | 
			
		||||
                        "implementation": DateTimeFieldController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "formatService",
 | 
			
		||||
                            "DEFAULT_TIME_FORMAT"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "TreeNodeController",
 | 
			
		||||
                        "implementation": TreeNodeController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "navigationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ActionGroupController",
 | 
			
		||||
                        "implementation": ActionGroupController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ToggleController",
 | 
			
		||||
                        "implementation": ToggleController
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ClickAwayController",
 | 
			
		||||
                        "implementation": ClickAwayController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$document",
 | 
			
		||||
                            "$timeout"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ViewSwitcherController",
 | 
			
		||||
                        "implementation": ViewSwitcherController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$timeout"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "GetterSetterController",
 | 
			
		||||
                        "implementation": GetterSetterController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "SelectorController",
 | 
			
		||||
                        "implementation": SelectorController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "objectService",
 | 
			
		||||
                            "$scope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ObjectInspectorController",
 | 
			
		||||
                        "implementation": ObjectInspectorController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "objectService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "BannerController",
 | 
			
		||||
                        "implementation": BannerController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "notificationService",
 | 
			
		||||
                            "dialogService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "directives": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctContainer",
 | 
			
		||||
                        "implementation": MCTContainer,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "containers[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctDrag",
 | 
			
		||||
                        "implementation": MCTDrag,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$document",
 | 
			
		||||
                            "agentService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctSelectable",
 | 
			
		||||
                        "implementation": MCTSelectable,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctClickElsewhere",
 | 
			
		||||
                        "implementation": MCTClickElsewhere,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$document"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctResize",
 | 
			
		||||
                        "implementation": MCTResize,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$timeout"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctPopup",
 | 
			
		||||
                        "implementation": MCTPopup,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$compile",
 | 
			
		||||
                            "popupService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctScrollX",
 | 
			
		||||
                        "implementation": MCTScroll,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$parse",
 | 
			
		||||
                            "MCT_SCROLL_X_PROPERTY",
 | 
			
		||||
                            "MCT_SCROLL_X_ATTRIBUTE"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctScrollY",
 | 
			
		||||
                        "implementation": MCTScroll,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$parse",
 | 
			
		||||
                            "MCT_SCROLL_Y_PROPERTY",
 | 
			
		||||
                            "MCT_SCROLL_Y_ATTRIBUTE"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctSplitPane",
 | 
			
		||||
                        "implementation": MCTSplitPane,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$parse",
 | 
			
		||||
                            "$log",
 | 
			
		||||
                            "$interval",
 | 
			
		||||
                            "$window"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctSplitter",
 | 
			
		||||
                        "implementation": MCTSplitter
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctTree",
 | 
			
		||||
                        "implementation": MCTTree,
 | 
			
		||||
                        "depends": ['gestureService', 'openmct']
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctIndicators",
 | 
			
		||||
                        "implementation": MCTIndicators,
 | 
			
		||||
                        "depends": ['openmct']
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "MCT_SCROLL_X_PROPERTY",
 | 
			
		||||
                        "value": "scrollLeft"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "MCT_SCROLL_X_ATTRIBUTE",
 | 
			
		||||
                        "value": "mctScrollX"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "MCT_SCROLL_Y_PROPERTY",
 | 
			
		||||
                        "value": "scrollTop"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "MCT_SCROLL_Y_ATTRIBUTE",
 | 
			
		||||
                        "value": "mctScrollY"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "THEME",
 | 
			
		||||
                        "value": "unspecified",
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ASSETS_PATH",
 | 
			
		||||
                        "value": ".",
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "containers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "accordion",
 | 
			
		||||
                        "template": accordionTemplate,
 | 
			
		||||
                        "attributes": [
 | 
			
		||||
                            "label"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "representations": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "tree",
 | 
			
		||||
                        "template": subtreeTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "composition"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "type": "root",
 | 
			
		||||
                        "priority": "preferred"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "tree",
 | 
			
		||||
                        "template": treeTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "subtree",
 | 
			
		||||
                        "template": subtreeTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "composition"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "tree-node",
 | 
			
		||||
                        "template": treeNodeTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "action"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "label",
 | 
			
		||||
                        "template": labelTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "type",
 | 
			
		||||
                            "location"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "gestures": [
 | 
			
		||||
                            "drag",
 | 
			
		||||
                            "menu",
 | 
			
		||||
                            "info"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "node",
 | 
			
		||||
                        "template": labelTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "type"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "gestures": [
 | 
			
		||||
                            "drag",
 | 
			
		||||
                            "menu"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "action-group",
 | 
			
		||||
                        "template": actionGroupTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "action"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "switcher",
 | 
			
		||||
                        "template": switcherTemplate,
 | 
			
		||||
                        "uses": [
 | 
			
		||||
                            "view"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "object-inspector",
 | 
			
		||||
                        "template": objectInspectorTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controls": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "selector",
 | 
			
		||||
                        "template": selectorTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "datetime-picker",
 | 
			
		||||
                        "template": datetimePickerTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "datetime-field",
 | 
			
		||||
                        "template": datetimeFieldTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "licenses": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Normalize.css",
 | 
			
		||||
                        "version": "1.1.2",
 | 
			
		||||
                        "description": "Browser style normalization",
 | 
			
		||||
                        "author": "Nicolas Gallagher, Jonathan Neal",
 | 
			
		||||
                        "website": "http://necolas.github.io/normalize.css/",
 | 
			
		||||
                        "copyright": "Copyright (c) Nicolas Gallagher and Jonathan Neal",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/necolas/normalize.css/blob/v1.1.2/LICENSE.md"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Zepto",
 | 
			
		||||
                        "version": "1.1.6",
 | 
			
		||||
                        "description": "DOM manipulation",
 | 
			
		||||
                        "author": "Thomas Fuchs",
 | 
			
		||||
                        "website": "http://zeptojs.com/",
 | 
			
		||||
                        "copyright": "Copyright (c) 2010-2016 Thomas Fuchs",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/madrobby/zepto/blob/master/MIT-LICENSE"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/general", {
 | 
			
		||||
        "name": "General UI elements",
 | 
			
		||||
        "description": "General UI elements, meant to be reused across modes",
 | 
			
		||||
        "resources": "res",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "urlService",
 | 
			
		||||
                    "implementation": UrlService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$location"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "popupService",
 | 
			
		||||
                    "implementation": PopupService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$document",
 | 
			
		||||
                        "$window"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "runs": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": StyleSheetLoader,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "stylesheets[]",
 | 
			
		||||
                        "$document",
 | 
			
		||||
                        "THEME",
 | 
			
		||||
                        "ASSETS_PATH"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": SplashScreenManager,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$document"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "filters": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": ReverseFilter,
 | 
			
		||||
                    "key": "reverse"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "bottombar",
 | 
			
		||||
                    "template": bottombarTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "action-button",
 | 
			
		||||
                    "template": actionButtonTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "input-filter",
 | 
			
		||||
                    "template": inputFilterTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "indicator",
 | 
			
		||||
                    "template": indicatorTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "message-banner",
 | 
			
		||||
                    "template": messageBannerTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "progress-bar",
 | 
			
		||||
                    "template": progressBarTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "time-controller",
 | 
			
		||||
                    "template": timeControllerTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "TimeRangeController",
 | 
			
		||||
                    "implementation": TimeRangeController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "formatService",
 | 
			
		||||
                        "DEFAULT_TIME_FORMAT",
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "DateTimePickerController",
 | 
			
		||||
                    "implementation": DateTimePickerController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "DateTimeFieldController",
 | 
			
		||||
                    "implementation": DateTimeFieldController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "formatService",
 | 
			
		||||
                        "DEFAULT_TIME_FORMAT"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "TreeNodeController",
 | 
			
		||||
                    "implementation": TreeNodeController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "navigationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ActionGroupController",
 | 
			
		||||
                    "implementation": ActionGroupController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ToggleController",
 | 
			
		||||
                    "implementation": ToggleController
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ClickAwayController",
 | 
			
		||||
                    "implementation": ClickAwayController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$document",
 | 
			
		||||
                        "$timeout"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ViewSwitcherController",
 | 
			
		||||
                    "implementation": ViewSwitcherController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$timeout"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "GetterSetterController",
 | 
			
		||||
                    "implementation": GetterSetterController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "SelectorController",
 | 
			
		||||
                    "implementation": SelectorController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "objectService",
 | 
			
		||||
                        "$scope"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ObjectInspectorController",
 | 
			
		||||
                    "implementation": ObjectInspectorController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "objectService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "BannerController",
 | 
			
		||||
                    "implementation": BannerController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "notificationService",
 | 
			
		||||
                        "dialogService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "directives": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctContainer",
 | 
			
		||||
                    "implementation": MCTContainer,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "containers[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctDrag",
 | 
			
		||||
                    "implementation": MCTDrag,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$document",
 | 
			
		||||
                        "agentService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctSelectable",
 | 
			
		||||
                    "implementation": MCTSelectable,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctClickElsewhere",
 | 
			
		||||
                    "implementation": MCTClickElsewhere,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$document"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctResize",
 | 
			
		||||
                    "implementation": MCTResize,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$timeout"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctPopup",
 | 
			
		||||
                    "implementation": MCTPopup,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$compile",
 | 
			
		||||
                        "popupService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctScrollX",
 | 
			
		||||
                    "implementation": MCTScroll,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$parse",
 | 
			
		||||
                        "MCT_SCROLL_X_PROPERTY",
 | 
			
		||||
                        "MCT_SCROLL_X_ATTRIBUTE"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctScrollY",
 | 
			
		||||
                    "implementation": MCTScroll,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$parse",
 | 
			
		||||
                        "MCT_SCROLL_Y_PROPERTY",
 | 
			
		||||
                        "MCT_SCROLL_Y_ATTRIBUTE"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctSplitPane",
 | 
			
		||||
                    "implementation": MCTSplitPane,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$parse",
 | 
			
		||||
                        "$log",
 | 
			
		||||
                        "$interval",
 | 
			
		||||
                        "$window"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctSplitter",
 | 
			
		||||
                    "implementation": MCTSplitter
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctTree",
 | 
			
		||||
                    "implementation": MCTTree,
 | 
			
		||||
                    "depends": ['gestureService', 'openmct']
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctIndicators",
 | 
			
		||||
                    "implementation": MCTIndicators,
 | 
			
		||||
                    "depends": ['openmct']
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "MCT_SCROLL_X_PROPERTY",
 | 
			
		||||
                    "value": "scrollLeft"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "MCT_SCROLL_X_ATTRIBUTE",
 | 
			
		||||
                    "value": "mctScrollX"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "MCT_SCROLL_Y_PROPERTY",
 | 
			
		||||
                    "value": "scrollTop"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "MCT_SCROLL_Y_ATTRIBUTE",
 | 
			
		||||
                    "value": "mctScrollY"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "THEME",
 | 
			
		||||
                    "value": "unspecified",
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ASSETS_PATH",
 | 
			
		||||
                    "value": ".",
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "containers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "accordion",
 | 
			
		||||
                    "template": accordionTemplate,
 | 
			
		||||
                    "attributes": [
 | 
			
		||||
                        "label"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "representations": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "tree",
 | 
			
		||||
                    "template": subtreeTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "composition"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "type": "root",
 | 
			
		||||
                    "priority": "preferred"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "tree",
 | 
			
		||||
                    "template": treeTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "subtree",
 | 
			
		||||
                    "template": subtreeTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "composition"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "tree-node",
 | 
			
		||||
                    "template": treeNodeTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "action"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "label",
 | 
			
		||||
                    "template": labelTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "type",
 | 
			
		||||
                        "location"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "gestures": [
 | 
			
		||||
                        "drag",
 | 
			
		||||
                        "menu",
 | 
			
		||||
                        "info"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "node",
 | 
			
		||||
                    "template": labelTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "type"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "gestures": [
 | 
			
		||||
                        "drag",
 | 
			
		||||
                        "menu"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "action-group",
 | 
			
		||||
                    "template": actionGroupTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "action"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "switcher",
 | 
			
		||||
                    "template": switcherTemplate,
 | 
			
		||||
                    "uses": [
 | 
			
		||||
                        "view"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "object-inspector",
 | 
			
		||||
                    "template": objectInspectorTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controls": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "selector",
 | 
			
		||||
                    "template": selectorTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "datetime-picker",
 | 
			
		||||
                    "template": datetimePickerTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "datetime-field",
 | 
			
		||||
                    "template": datetimeFieldTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "licenses": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Normalize.css",
 | 
			
		||||
                    "version": "1.1.2",
 | 
			
		||||
                    "description": "Browser style normalization",
 | 
			
		||||
                    "author": "Nicolas Gallagher, Jonathan Neal",
 | 
			
		||||
                    "website": "http://necolas.github.io/normalize.css/",
 | 
			
		||||
                    "copyright": "Copyright (c) Nicolas Gallagher and Jonathan Neal",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/necolas/normalize.css/blob/v1.1.2/LICENSE.md"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Zepto",
 | 
			
		||||
                    "version": "1.1.6",
 | 
			
		||||
                    "description": "DOM manipulation",
 | 
			
		||||
                    "author": "Thomas Fuchs",
 | 
			
		||||
                    "website": "http://zeptojs.com/",
 | 
			
		||||
                    "copyright": "Copyright (c) 2010-2016 Thomas Fuchs",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/madrobby/zepto/blob/master/MIT-LICENSE"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,8 @@ define([
 | 
			
		||||
    "./res/info-table.html",
 | 
			
		||||
    "./res/info-bubble.html",
 | 
			
		||||
    "./res/bubble.html",
 | 
			
		||||
    "./res/templates/info-button.html"
 | 
			
		||||
    "./res/templates/info-button.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    InfoGesture,
 | 
			
		||||
    InfoButtonGesture,
 | 
			
		||||
@@ -35,83 +36,81 @@ define([
 | 
			
		||||
    infoTableTemplate,
 | 
			
		||||
    infoBubbleTemplate,
 | 
			
		||||
    bubbleTemplate,
 | 
			
		||||
    infoButtonTemplate
 | 
			
		||||
    infoButtonTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/inspect",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "info-table",
 | 
			
		||||
                        "template": infoTableTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "info-bubble",
 | 
			
		||||
                        "template": infoBubbleTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "containers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "bubble",
 | 
			
		||||
                        "template": bubbleTemplate,
 | 
			
		||||
                        "attributes": [
 | 
			
		||||
                            "bubbleTitle",
 | 
			
		||||
                            "bubbleLayout"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "alias": "bubble"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "gestures": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "info",
 | 
			
		||||
                        "implementation": InfoGesture,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "agentService",
 | 
			
		||||
                            "infoService",
 | 
			
		||||
                            "INFO_HOVER_DELAY"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "infobutton",
 | 
			
		||||
                        "implementation": InfoButtonGesture,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$document",
 | 
			
		||||
                            "agentService",
 | 
			
		||||
                            "infoService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "infoService",
 | 
			
		||||
                        "implementation": InfoService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$compile",
 | 
			
		||||
                            "$rootScope",
 | 
			
		||||
                            "popupService",
 | 
			
		||||
                            "agentService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "INFO_HOVER_DELAY",
 | 
			
		||||
                        "value": 2000
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "representations": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "info-button",
 | 
			
		||||
                        "template": infoButtonTemplate,
 | 
			
		||||
                        "gestures": [
 | 
			
		||||
                            "infobutton"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/inspect", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "info-table",
 | 
			
		||||
                    "template": infoTableTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "info-bubble",
 | 
			
		||||
                    "template": infoBubbleTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "containers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "bubble",
 | 
			
		||||
                    "template": bubbleTemplate,
 | 
			
		||||
                    "attributes": [
 | 
			
		||||
                        "bubbleTitle",
 | 
			
		||||
                        "bubbleLayout"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "alias": "bubble"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "gestures": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "info",
 | 
			
		||||
                    "implementation": InfoGesture,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "agentService",
 | 
			
		||||
                        "infoService",
 | 
			
		||||
                        "INFO_HOVER_DELAY"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "infobutton",
 | 
			
		||||
                    "implementation": InfoButtonGesture,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$document",
 | 
			
		||||
                        "agentService",
 | 
			
		||||
                        "infoService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "infoService",
 | 
			
		||||
                    "implementation": InfoService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$compile",
 | 
			
		||||
                        "$rootScope",
 | 
			
		||||
                        "popupService",
 | 
			
		||||
                        "agentService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "INFO_HOVER_DELAY",
 | 
			
		||||
                    "value": 2000
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "representations": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "info-button",
 | 
			
		||||
                    "template": infoButtonTemplate,
 | 
			
		||||
                    "gestures": [
 | 
			
		||||
                        "infobutton"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -23,45 +23,44 @@
 | 
			
		||||
define([
 | 
			
		||||
    "./src/MCTDevice",
 | 
			
		||||
    "./src/AgentService",
 | 
			
		||||
    "./src/DeviceClassifier"
 | 
			
		||||
    "./src/DeviceClassifier",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    MCTDevice,
 | 
			
		||||
    AgentService,
 | 
			
		||||
    DeviceClassifier
 | 
			
		||||
    DeviceClassifier,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/mobile",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "directives": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctDevice",
 | 
			
		||||
                        "implementation": MCTDevice,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "agentService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "agentService",
 | 
			
		||||
                        "implementation": AgentService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$window"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "runs": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": DeviceClassifier,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "agentService",
 | 
			
		||||
                            "$document"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/mobile", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "directives": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctDevice",
 | 
			
		||||
                    "implementation": MCTDevice,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "agentService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "agentService",
 | 
			
		||||
                    "implementation": AgentService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$window"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "runs": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": DeviceClassifier,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "agentService",
 | 
			
		||||
                        "$document"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -24,53 +24,52 @@ define([
 | 
			
		||||
    "./src/NotificationIndicatorController",
 | 
			
		||||
    "./src/NotificationIndicator",
 | 
			
		||||
    "./src/NotificationService",
 | 
			
		||||
    "./res/notification-indicator.html"
 | 
			
		||||
    "./res/notification-indicator.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    NotificationIndicatorController,
 | 
			
		||||
    NotificationIndicator,
 | 
			
		||||
    NotificationService,
 | 
			
		||||
    notificationIndicatorTemplate
 | 
			
		||||
    notificationIndicatorTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/notification",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "notificationIndicatorTemplate",
 | 
			
		||||
                        "template": notificationIndicatorTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "NotificationIndicatorController",
 | 
			
		||||
                        "implementation": NotificationIndicatorController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "openmct",
 | 
			
		||||
                            "dialogService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "indicators": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": NotificationIndicator,
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "notificationService",
 | 
			
		||||
                        "implementation": function (openmct) {
 | 
			
		||||
                            return new NotificationService.default(openmct);
 | 
			
		||||
                        },
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/notification", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "notificationIndicatorTemplate",
 | 
			
		||||
                    "template": notificationIndicatorTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "NotificationIndicatorController",
 | 
			
		||||
                    "implementation": NotificationIndicatorController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "openmct",
 | 
			
		||||
                        "dialogService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "indicators": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": NotificationIndicator,
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "notificationService",
 | 
			
		||||
                    "implementation": function (openmct) {
 | 
			
		||||
                        return new NotificationService.default(openmct);
 | 
			
		||||
                    },
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,34 +22,33 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    './src/InspectorController',
 | 
			
		||||
    './src/EditableRegionPolicy'
 | 
			
		||||
    './src/EditableRegionPolicy',
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    InspectorController,
 | 
			
		||||
    EditableRegionPolicy
 | 
			
		||||
    EditableRegionPolicy,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/commonUI/regions",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "InspectorController",
 | 
			
		||||
                        "implementation": InspectorController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "openmct",
 | 
			
		||||
                            "$document"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "policies": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "region",
 | 
			
		||||
                        "implementation": EditableRegionPolicy
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/commonUI/regions", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "InspectorController",
 | 
			
		||||
                    "implementation": InspectorController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "openmct",
 | 
			
		||||
                        "$document"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "policies": [
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "region",
 | 
			
		||||
                    "implementation": EditableRegionPolicy
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -25,52 +25,51 @@ define([
 | 
			
		||||
    "./src/CompositionMutabilityPolicy",
 | 
			
		||||
    "./src/CompositionModelPolicy",
 | 
			
		||||
    "./src/ComposeActionPolicy",
 | 
			
		||||
    "./src/PersistableCompositionPolicy"
 | 
			
		||||
    "./src/PersistableCompositionPolicy",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    CompositionPolicy,
 | 
			
		||||
    CompositionMutabilityPolicy,
 | 
			
		||||
    CompositionModelPolicy,
 | 
			
		||||
    ComposeActionPolicy,
 | 
			
		||||
    PersistableCompositionPolicy
 | 
			
		||||
    PersistableCompositionPolicy,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/containment",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "policies": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "composition",
 | 
			
		||||
                        "implementation": CompositionPolicy,
 | 
			
		||||
                        "message": "Objects of this type cannot contain objects of that type."
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "composition",
 | 
			
		||||
                        "implementation": CompositionMutabilityPolicy,
 | 
			
		||||
                        "message": "Objects of this type cannot be modified."
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "composition",
 | 
			
		||||
                        "implementation": CompositionModelPolicy,
 | 
			
		||||
                        "message": "Objects of this type cannot contain other objects."
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "action",
 | 
			
		||||
                        "implementation": ComposeActionPolicy,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$injector",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "message": "Objects of this type cannot contain objects of that type."
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "composition",
 | 
			
		||||
                        "implementation": PersistableCompositionPolicy,
 | 
			
		||||
                        "depends": ["openmct"],
 | 
			
		||||
                        "message": "Change cannot be made to composition of non-persistable object"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/containment", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "policies": [
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "composition",
 | 
			
		||||
                    "implementation": CompositionPolicy,
 | 
			
		||||
                    "message": "Objects of this type cannot contain objects of that type."
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "composition",
 | 
			
		||||
                    "implementation": CompositionMutabilityPolicy,
 | 
			
		||||
                    "message": "Objects of this type cannot be modified."
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "composition",
 | 
			
		||||
                    "implementation": CompositionModelPolicy,
 | 
			
		||||
                    "message": "Objects of this type cannot contain other objects."
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "action",
 | 
			
		||||
                    "implementation": ComposeActionPolicy,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$injector",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "message": "Objects of this type cannot contain objects of that type."
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "composition",
 | 
			
		||||
                    "implementation": PersistableCompositionPolicy,
 | 
			
		||||
                    "depends": ["openmct"],
 | 
			
		||||
                    "message": "Change cannot be made to composition of non-persistable object"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,8 @@ define([
 | 
			
		||||
    "./src/services/Now",
 | 
			
		||||
    "./src/services/Throttle",
 | 
			
		||||
    "./src/services/Topic",
 | 
			
		||||
    "./src/services/Instantiate"
 | 
			
		||||
    "./src/services/Instantiate",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    DomainObjectProvider,
 | 
			
		||||
    CoreCapabilityProvider,
 | 
			
		||||
@@ -79,314 +80,312 @@ define([
 | 
			
		||||
    Now,
 | 
			
		||||
    Throttle,
 | 
			
		||||
    Topic,
 | 
			
		||||
    Instantiate
 | 
			
		||||
    Instantiate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/core",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Open MCT Core",
 | 
			
		||||
            "description": "Defines core concepts of Open MCT.",
 | 
			
		||||
            "sources": "src",
 | 
			
		||||
            "configuration": {
 | 
			
		||||
                "paths": {
 | 
			
		||||
                    "uuid": "uuid"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "objectService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": DomainObjectProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "modelService",
 | 
			
		||||
                            "instantiate"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "capabilityService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": CoreCapabilityProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "capabilities[]",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "modelService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": StaticModelProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "models[]",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "modelService",
 | 
			
		||||
                        "type": "aggregator",
 | 
			
		||||
                        "implementation": ModelAggregator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "modelService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": PersistedModelProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "persistenceService",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "now",
 | 
			
		||||
                            "PERSISTENCE_SPACE"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "modelService",
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "implementation": CachingModelDecorator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "cacheService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "modelService",
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "priority": "fallback",
 | 
			
		||||
                        "implementation": MissingModelDecorator
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "typeService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": TypeProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "types[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "actionService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": ActionProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "actions[]",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "actionService",
 | 
			
		||||
                        "type": "aggregator",
 | 
			
		||||
                        "implementation": ActionAggregator
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "actionService",
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "implementation": LoggingActionDecorator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "viewService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": ViewProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "views[]",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "identifierService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": IdentifierProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "PERSISTENCE_SPACE"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "types": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "properties": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "control": "textfield",
 | 
			
		||||
                                "name": "Title",
 | 
			
		||||
                                "key": "name",
 | 
			
		||||
                                "property": "name",
 | 
			
		||||
                                "pattern": "\\S+",
 | 
			
		||||
                                "required": true,
 | 
			
		||||
                                "cssClass": "l-input-lg"
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                "name": "Notes",
 | 
			
		||||
                                "key": "notes",
 | 
			
		||||
                                "property": "notes",
 | 
			
		||||
                                "control": "textarea",
 | 
			
		||||
                                "required": false,
 | 
			
		||||
                                "cssClass": "l-textarea-sm"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "root",
 | 
			
		||||
                        "name": "Root",
 | 
			
		||||
                        "cssClass": "icon-folder"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "folder",
 | 
			
		||||
                        "name": "Folder",
 | 
			
		||||
                        "cssClass": "icon-folder",
 | 
			
		||||
                        "features": "creation",
 | 
			
		||||
                        "description": "Create folders to organize other objects or links to objects.",
 | 
			
		||||
                        "priority": 1000,
 | 
			
		||||
                        "model": {
 | 
			
		||||
                            "composition": []
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "unknown",
 | 
			
		||||
                        "name": "Unknown Type",
 | 
			
		||||
                        "cssClass": "icon-object-unknown"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Unknown Type",
 | 
			
		||||
                        "cssClass": "icon-object-unknown"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "capabilities": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "composition",
 | 
			
		||||
                        "implementation": CompositionCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$injector"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "relationship",
 | 
			
		||||
                        "implementation": RelationshipCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$injector"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "type",
 | 
			
		||||
                        "implementation": TypeCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "typeService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "action",
 | 
			
		||||
                        "implementation": ActionCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "actionService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "view",
 | 
			
		||||
                        "implementation": ViewCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "viewService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "persistence",
 | 
			
		||||
                        "implementation": PersistenceCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "cacheService",
 | 
			
		||||
                            "persistenceService",
 | 
			
		||||
                            "identifierService",
 | 
			
		||||
                            "notificationService",
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "metadata",
 | 
			
		||||
                        "implementation": MetadataCapability
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mutation",
 | 
			
		||||
                        "implementation": MutationCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "topic",
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "delegation",
 | 
			
		||||
                        "implementation": DelegationCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "instantiation",
 | 
			
		||||
                        "implementation": InstantiationCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$injector",
 | 
			
		||||
                            "identifierService",
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "cacheService",
 | 
			
		||||
                        "implementation": ModelCacheService
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "now",
 | 
			
		||||
                        "implementation": Now
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "throttle",
 | 
			
		||||
                        "implementation": Throttle,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$timeout"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "topic",
 | 
			
		||||
                        "implementation": Topic,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "instantiate",
 | 
			
		||||
                        "implementation": Instantiate,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "capabilityService",
 | 
			
		||||
                            "identifierService",
 | 
			
		||||
                            "cacheService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "runs": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": TransactingMutationListener,
 | 
			
		||||
                        "depends": ["topic", "transactionService", "cacheService"]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                        "value": "mct"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "licenses": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Math.uuid.js",
 | 
			
		||||
                        "version": "1.4.7",
 | 
			
		||||
                        "description": "Unique identifer generation (code adapted.)",
 | 
			
		||||
                        "author": "Robert Kieffer",
 | 
			
		||||
                        "website": "https://github.com/broofa/node-uuid",
 | 
			
		||||
                        "copyright": "Copyright (c) 2010-2012 Robert Kieffer",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "http://opensource.org/licenses/MIT"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
    legacyRegistry.register("platform/core", {
 | 
			
		||||
        "name": "Open MCT Core",
 | 
			
		||||
        "description": "Defines core concepts of Open MCT.",
 | 
			
		||||
        "sources": "src",
 | 
			
		||||
        "configuration": {
 | 
			
		||||
            "paths": {
 | 
			
		||||
                "uuid": "uuid"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "objectService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": DomainObjectProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "modelService",
 | 
			
		||||
                        "instantiate"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "capabilityService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": CoreCapabilityProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "capabilities[]",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "modelService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": StaticModelProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "models[]",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "modelService",
 | 
			
		||||
                    "type": "aggregator",
 | 
			
		||||
                    "implementation": ModelAggregator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "modelService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": PersistedModelProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "persistenceService",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "now",
 | 
			
		||||
                        "PERSISTENCE_SPACE"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "modelService",
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "implementation": CachingModelDecorator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "cacheService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "modelService",
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "priority": "fallback",
 | 
			
		||||
                    "implementation": MissingModelDecorator
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "typeService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": TypeProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "types[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "actionService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": ActionProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "actions[]",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "actionService",
 | 
			
		||||
                    "type": "aggregator",
 | 
			
		||||
                    "implementation": ActionAggregator
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "actionService",
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "implementation": LoggingActionDecorator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "viewService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": ViewProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "views[]",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "identifierService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": IdentifierProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "PERSISTENCE_SPACE"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "types": [
 | 
			
		||||
                {
 | 
			
		||||
                    "properties": [
 | 
			
		||||
                        {
 | 
			
		||||
                            "control": "textfield",
 | 
			
		||||
                            "name": "Title",
 | 
			
		||||
                            "key": "name",
 | 
			
		||||
                            "property": "name",
 | 
			
		||||
                            "pattern": "\\S+",
 | 
			
		||||
                            "required": true,
 | 
			
		||||
                            "cssClass": "l-input-lg"
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            "name": "Notes",
 | 
			
		||||
                            "key": "notes",
 | 
			
		||||
                            "property": "notes",
 | 
			
		||||
                            "control": "textarea",
 | 
			
		||||
                            "required": false,
 | 
			
		||||
                            "cssClass": "l-textarea-sm"
 | 
			
		||||
                        }
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "root",
 | 
			
		||||
                    "name": "Root",
 | 
			
		||||
                    "cssClass": "icon-folder"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "folder",
 | 
			
		||||
                    "name": "Folder",
 | 
			
		||||
                    "cssClass": "icon-folder",
 | 
			
		||||
                    "features": "creation",
 | 
			
		||||
                    "description": "Create folders to organize other objects or links to objects.",
 | 
			
		||||
                    "priority": 1000,
 | 
			
		||||
                    "model": {
 | 
			
		||||
                        "composition": []
 | 
			
		||||
                    }
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "unknown",
 | 
			
		||||
                    "name": "Unknown Type",
 | 
			
		||||
                    "cssClass": "icon-object-unknown"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Unknown Type",
 | 
			
		||||
                    "cssClass": "icon-object-unknown"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "capabilities": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "composition",
 | 
			
		||||
                    "implementation": CompositionCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$injector"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "relationship",
 | 
			
		||||
                    "implementation": RelationshipCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$injector"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "type",
 | 
			
		||||
                    "implementation": TypeCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "typeService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "action",
 | 
			
		||||
                    "implementation": ActionCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "actionService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "view",
 | 
			
		||||
                    "implementation": ViewCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "viewService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "persistence",
 | 
			
		||||
                    "implementation": PersistenceCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "cacheService",
 | 
			
		||||
                        "persistenceService",
 | 
			
		||||
                        "identifierService",
 | 
			
		||||
                        "notificationService",
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "metadata",
 | 
			
		||||
                    "implementation": MetadataCapability
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mutation",
 | 
			
		||||
                    "implementation": MutationCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "topic",
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "delegation",
 | 
			
		||||
                    "implementation": DelegationCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "instantiation",
 | 
			
		||||
                    "implementation": InstantiationCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$injector",
 | 
			
		||||
                        "identifierService",
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "cacheService",
 | 
			
		||||
                    "implementation": ModelCacheService
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "now",
 | 
			
		||||
                    "implementation": Now
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "throttle",
 | 
			
		||||
                    "implementation": Throttle,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$timeout"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "topic",
 | 
			
		||||
                    "implementation": Topic,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "instantiate",
 | 
			
		||||
                    "implementation": Instantiate,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "capabilityService",
 | 
			
		||||
                        "identifierService",
 | 
			
		||||
                        "cacheService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "runs": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": TransactingMutationListener,
 | 
			
		||||
                    "depends": ["topic", "transactionService", "cacheService"]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                    "value": "mct"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "licenses": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Math.uuid.js",
 | 
			
		||||
                    "version": "1.4.7",
 | 
			
		||||
                    "description": "Unique identifer generation (code adapted.)",
 | 
			
		||||
                    "author": "Robert Kieffer",
 | 
			
		||||
                    "website": "https://github.com/broofa/node-uuid",
 | 
			
		||||
                    "copyright": "Copyright (c) 2010-2012 Robert Kieffer",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "http://opensource.org/licenses/MIT"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,8 @@ define([
 | 
			
		||||
    "./src/services/MoveService",
 | 
			
		||||
    "./src/services/LinkService",
 | 
			
		||||
    "./src/services/CopyService",
 | 
			
		||||
    "./src/services/LocationService"
 | 
			
		||||
    "./src/services/LocationService",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    MoveAction,
 | 
			
		||||
    CopyAction,
 | 
			
		||||
@@ -49,154 +50,152 @@ define([
 | 
			
		||||
    MoveService,
 | 
			
		||||
    LinkService,
 | 
			
		||||
    CopyService,
 | 
			
		||||
    LocationService
 | 
			
		||||
    LocationService,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/entanglement",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Entanglement",
 | 
			
		||||
            "description": "Tools to assist you in entangling the world of WARP.",
 | 
			
		||||
            "configuration": {},
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "actions": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "move",
 | 
			
		||||
                        "name": "Move",
 | 
			
		||||
                        "description": "Move object to another location.",
 | 
			
		||||
                        "cssClass": "icon-move",
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "implementation": MoveAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "policyService",
 | 
			
		||||
                            "locationService",
 | 
			
		||||
                            "moveService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "copy",
 | 
			
		||||
                        "name": "Duplicate",
 | 
			
		||||
                        "description": "Duplicate object to another location.",
 | 
			
		||||
                        "cssClass": "icon-duplicate",
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "implementation": CopyAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$log",
 | 
			
		||||
                            "policyService",
 | 
			
		||||
                            "locationService",
 | 
			
		||||
                            "copyService",
 | 
			
		||||
                            "dialogService",
 | 
			
		||||
                            "notificationService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "link",
 | 
			
		||||
                        "name": "Create Link",
 | 
			
		||||
                        "description": "Create Link to object in another location.",
 | 
			
		||||
                        "cssClass": "icon-link",
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "implementation": LinkAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "policyService",
 | 
			
		||||
                            "locationService",
 | 
			
		||||
                            "linkService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "locate",
 | 
			
		||||
                        "name": "Set Primary Location",
 | 
			
		||||
                        "description": "Set a domain object's primary location.",
 | 
			
		||||
                        "cssClass": "",
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "implementation": SetPrimaryLocationAction
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "provides": "creationService",
 | 
			
		||||
                        "implementation": LocatingCreationDecorator
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "provides": "objectService",
 | 
			
		||||
                        "implementation": LocatingObjectDecorator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "policies": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "action",
 | 
			
		||||
                        "implementation": CrossSpacePolicy
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "action",
 | 
			
		||||
                        "implementation": CopyPolicy
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "action",
 | 
			
		||||
                        "implementation": MovePolicy
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "capabilities": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "location",
 | 
			
		||||
                        "name": "Location Capability",
 | 
			
		||||
                        "description": "Provides a capability for retrieving the location of an object based upon it's context.",
 | 
			
		||||
                        "implementation": LocationCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$injector"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "moveService",
 | 
			
		||||
                        "name": "Move Service",
 | 
			
		||||
                        "description": "Provides a service for moving objects",
 | 
			
		||||
                        "implementation": MoveService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "openmct",
 | 
			
		||||
                            "linkService",
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "linkService",
 | 
			
		||||
                        "name": "Link Service",
 | 
			
		||||
                        "description": "Provides a service for linking objects",
 | 
			
		||||
                        "implementation": LinkService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "copyService",
 | 
			
		||||
                        "name": "Copy Service",
 | 
			
		||||
                        "description": "Provides a service for copying objects",
 | 
			
		||||
                        "implementation": CopyService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "policyService",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "locationService",
 | 
			
		||||
                        "name": "Location Service",
 | 
			
		||||
                        "description": "Provides a service for prompting a user for locations.",
 | 
			
		||||
                        "implementation": LocationService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "dialogService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "licenses": []
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/entanglement", {
 | 
			
		||||
        "name": "Entanglement",
 | 
			
		||||
        "description": "Tools to assist you in entangling the world of WARP.",
 | 
			
		||||
        "configuration": {},
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "actions": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "move",
 | 
			
		||||
                    "name": "Move",
 | 
			
		||||
                    "description": "Move object to another location.",
 | 
			
		||||
                    "cssClass": "icon-move",
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "implementation": MoveAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "policyService",
 | 
			
		||||
                        "locationService",
 | 
			
		||||
                        "moveService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "copy",
 | 
			
		||||
                    "name": "Duplicate",
 | 
			
		||||
                    "description": "Duplicate object to another location.",
 | 
			
		||||
                    "cssClass": "icon-duplicate",
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "implementation": CopyAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$log",
 | 
			
		||||
                        "policyService",
 | 
			
		||||
                        "locationService",
 | 
			
		||||
                        "copyService",
 | 
			
		||||
                        "dialogService",
 | 
			
		||||
                        "notificationService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "link",
 | 
			
		||||
                    "name": "Create Link",
 | 
			
		||||
                    "description": "Create Link to object in another location.",
 | 
			
		||||
                    "cssClass": "icon-link",
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "implementation": LinkAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "policyService",
 | 
			
		||||
                        "locationService",
 | 
			
		||||
                        "linkService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "locate",
 | 
			
		||||
                    "name": "Set Primary Location",
 | 
			
		||||
                    "description": "Set a domain object's primary location.",
 | 
			
		||||
                    "cssClass": "",
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "implementation": SetPrimaryLocationAction
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "provides": "creationService",
 | 
			
		||||
                    "implementation": LocatingCreationDecorator
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "provides": "objectService",
 | 
			
		||||
                    "implementation": LocatingObjectDecorator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "policies": [
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "action",
 | 
			
		||||
                    "implementation": CrossSpacePolicy
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "action",
 | 
			
		||||
                    "implementation": CopyPolicy
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "action",
 | 
			
		||||
                    "implementation": MovePolicy
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "capabilities": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "location",
 | 
			
		||||
                    "name": "Location Capability",
 | 
			
		||||
                    "description": "Provides a capability for retrieving the location of an object based upon it's context.",
 | 
			
		||||
                    "implementation": LocationCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$injector"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "moveService",
 | 
			
		||||
                    "name": "Move Service",
 | 
			
		||||
                    "description": "Provides a service for moving objects",
 | 
			
		||||
                    "implementation": MoveService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "openmct",
 | 
			
		||||
                        "linkService",
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "linkService",
 | 
			
		||||
                    "name": "Link Service",
 | 
			
		||||
                    "description": "Provides a service for linking objects",
 | 
			
		||||
                    "implementation": LinkService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "copyService",
 | 
			
		||||
                    "name": "Copy Service",
 | 
			
		||||
                    "description": "Provides a service for copying objects",
 | 
			
		||||
                    "implementation": CopyService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "policyService",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "locationService",
 | 
			
		||||
                    "name": "Location Service",
 | 
			
		||||
                    "description": "Provides a service for prompting a user for locations.",
 | 
			
		||||
                    "implementation": LocationService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "dialogService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "licenses": []
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -21,26 +21,25 @@
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/WorkerService"
 | 
			
		||||
    "./src/WorkerService",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    WorkerService
 | 
			
		||||
    WorkerService,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/execution",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "workerService",
 | 
			
		||||
                        "implementation": WorkerService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$window",
 | 
			
		||||
                            "workers[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/execution", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "workerService",
 | 
			
		||||
                    "implementation": WorkerService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$window",
 | 
			
		||||
                        "workers[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,44 +22,42 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./ExportService",
 | 
			
		||||
    "saveAs"
 | 
			
		||||
], function (ExportService, saveAs) {
 | 
			
		||||
    "saveAs",
 | 
			
		||||
    "legacyRegistry"
 | 
			
		||||
], function (ExportService, saveAs, legacyRegistry) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/exporters",
 | 
			
		||||
        definition: {
 | 
			
		||||
            extensions: {
 | 
			
		||||
                services: [
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "exportService",
 | 
			
		||||
                        implementation: function () {
 | 
			
		||||
                            return new ExportService(saveAs.saveAs);
 | 
			
		||||
                        }
 | 
			
		||||
    legacyRegistry.register("platform/exporters", {
 | 
			
		||||
        extensions: {
 | 
			
		||||
            services: [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "exportService",
 | 
			
		||||
                    implementation: function () {
 | 
			
		||||
                        return new ExportService(saveAs.saveAs);
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                licenses: [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "CSV.js",
 | 
			
		||||
                        "version": "3.6.4",
 | 
			
		||||
                        "author": "Kash Nouroozi",
 | 
			
		||||
                        "description": "Encoder for CSV (comma separated values) export",
 | 
			
		||||
                        "website": "https://github.com/knrz/CSV.js",
 | 
			
		||||
                        "copyright": "Copyright (c) 2014 Kash Nouroozi",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/knrz/CSV.js/blob/3.6.4/LICENSE"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "FileSaver.js",
 | 
			
		||||
                        "version": "0.0.2",
 | 
			
		||||
                        "author": "Eli Grey",
 | 
			
		||||
                        "description": "File download initiator (for file exports)",
 | 
			
		||||
                        "website": "https://github.com/eligrey/FileSaver.js/",
 | 
			
		||||
                        "copyright": "Copyright © 2015 Eli Grey.",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            licenses: [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "CSV.js",
 | 
			
		||||
                    "version": "3.6.4",
 | 
			
		||||
                    "author": "Kash Nouroozi",
 | 
			
		||||
                    "description": "Encoder for CSV (comma separated values) export",
 | 
			
		||||
                    "website": "https://github.com/knrz/CSV.js",
 | 
			
		||||
                    "copyright": "Copyright (c) 2014 Kash Nouroozi",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/knrz/CSV.js/blob/3.6.4/LICENSE"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "FileSaver.js",
 | 
			
		||||
                    "version": "0.0.2",
 | 
			
		||||
                    "author": "Eli Grey",
 | 
			
		||||
                    "description": "File download initiator (for file exports)",
 | 
			
		||||
                    "website": "https://github.com/eligrey/FileSaver.js/",
 | 
			
		||||
                    "copyright": "Copyright © 2015 Eli Grey.",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,8 @@ define([
 | 
			
		||||
    "./src/actions/StopTimerAction",
 | 
			
		||||
    "./src/actions/PauseTimerAction",
 | 
			
		||||
    "./res/templates/clock.html",
 | 
			
		||||
    "./res/templates/timer.html"
 | 
			
		||||
    "./res/templates/timer.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    MomentTimezone,
 | 
			
		||||
    ClockIndicator,
 | 
			
		||||
@@ -51,271 +52,269 @@ define([
 | 
			
		||||
    StopTimerAction,
 | 
			
		||||
    PauseTimerAction,
 | 
			
		||||
    clockTemplate,
 | 
			
		||||
    timerTemplate
 | 
			
		||||
    timerTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/features/clock",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Clocks/Timers",
 | 
			
		||||
            "descriptions": "Domain objects for displaying current & relative times.",
 | 
			
		||||
            "configuration": {
 | 
			
		||||
                "paths": {
 | 
			
		||||
                    "moment-duration-format": "moment-duration-format"
 | 
			
		||||
    legacyRegistry.register("platform/features/clock", {
 | 
			
		||||
        "name": "Clocks/Timers",
 | 
			
		||||
        "descriptions": "Domain objects for displaying current & relative times.",
 | 
			
		||||
        "configuration": {
 | 
			
		||||
            "paths": {
 | 
			
		||||
                "moment-duration-format": "moment-duration-format"
 | 
			
		||||
            },
 | 
			
		||||
            "shim": {
 | 
			
		||||
                "moment-duration-format": {
 | 
			
		||||
                    "deps": [
 | 
			
		||||
                        "moment"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "CLOCK_INDICATOR_FORMAT",
 | 
			
		||||
                    "value": "YYYY/MM/DD HH:mm:ss"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "indicators": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": ClockIndicator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "tickerService",
 | 
			
		||||
                        "CLOCK_INDICATOR_FORMAT"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "priority": "preferred"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "tickerService",
 | 
			
		||||
                    "implementation": TickerService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                "shim": {
 | 
			
		||||
                    "moment-duration-format": {
 | 
			
		||||
                        "deps": [
 | 
			
		||||
                            "moment"
 | 
			
		||||
                        ]
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "timerService",
 | 
			
		||||
                    "implementation": TimerService,
 | 
			
		||||
                    "depends": ["openmct"]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ClockController",
 | 
			
		||||
                    "implementation": ClockController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "tickerService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "TimerController",
 | 
			
		||||
                    "implementation": TimerController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$window",
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "RefreshingController",
 | 
			
		||||
                    "implementation": RefreshingController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "tickerService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "views": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "clock",
 | 
			
		||||
                    "type": "clock",
 | 
			
		||||
                    "editable": false,
 | 
			
		||||
                    "template": clockTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "timer",
 | 
			
		||||
                    "type": "timer",
 | 
			
		||||
                    "editable": false,
 | 
			
		||||
                    "template": timerTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "actions": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "timer.follow",
 | 
			
		||||
                    "implementation": FollowTimerAction,
 | 
			
		||||
                    "depends": ["timerService"],
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "name": "Follow Timer",
 | 
			
		||||
                    "cssClass": "icon-clock",
 | 
			
		||||
                    "priority": "optional"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "timer.start",
 | 
			
		||||
                    "implementation": StartTimerAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "name": "Start",
 | 
			
		||||
                    "cssClass": "icon-play",
 | 
			
		||||
                    "priority": "preferred"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "timer.pause",
 | 
			
		||||
                    "implementation": PauseTimerAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "name": "Pause",
 | 
			
		||||
                    "cssClass": "icon-pause",
 | 
			
		||||
                    "priority": "preferred"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "timer.restart",
 | 
			
		||||
                    "implementation": RestartTimerAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "name": "Restart at 0",
 | 
			
		||||
                    "cssClass": "icon-refresh",
 | 
			
		||||
                    "priority": "preferred"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "timer.stop",
 | 
			
		||||
                    "implementation": StopTimerAction,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "now"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "category": "contextual",
 | 
			
		||||
                    "name": "Stop",
 | 
			
		||||
                    "cssClass": "icon-box",
 | 
			
		||||
                    "priority": "preferred"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "types": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "clock",
 | 
			
		||||
                    "name": "Clock",
 | 
			
		||||
                    "cssClass": "icon-clock",
 | 
			
		||||
                    "description": "A UTC-based clock that supports a variety of display formats. Clocks can be added to Display Layouts.",
 | 
			
		||||
                    "priority": 101,
 | 
			
		||||
                    "features": [
 | 
			
		||||
                        "creation"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "properties": [
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "clockFormat",
 | 
			
		||||
                            "name": "Display Format",
 | 
			
		||||
                            "control": "composite",
 | 
			
		||||
                            "items": [
 | 
			
		||||
                                {
 | 
			
		||||
                                    "control": "select",
 | 
			
		||||
                                    "options": [
 | 
			
		||||
                                        {
 | 
			
		||||
                                            "value": "YYYY/MM/DD hh:mm:ss",
 | 
			
		||||
                                            "name": "YYYY/MM/DD hh:mm:ss"
 | 
			
		||||
                                        },
 | 
			
		||||
                                        {
 | 
			
		||||
                                            "value": "YYYY/DDD hh:mm:ss",
 | 
			
		||||
                                            "name": "YYYY/DDD hh:mm:ss"
 | 
			
		||||
                                        },
 | 
			
		||||
                                        {
 | 
			
		||||
                                            "value": "hh:mm:ss",
 | 
			
		||||
                                            "name": "hh:mm:ss"
 | 
			
		||||
                                        }
 | 
			
		||||
                                    ],
 | 
			
		||||
                                    "cssClass": "l-inline"
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    "control": "select",
 | 
			
		||||
                                    "options": [
 | 
			
		||||
                                        {
 | 
			
		||||
                                            "value": "clock12",
 | 
			
		||||
                                            "name": "12hr"
 | 
			
		||||
                                        },
 | 
			
		||||
                                        {
 | 
			
		||||
                                            "value": "clock24",
 | 
			
		||||
                                            "name": "24hr"
 | 
			
		||||
                                        }
 | 
			
		||||
                                    ],
 | 
			
		||||
                                    "cssClass": "l-inline"
 | 
			
		||||
                                }
 | 
			
		||||
                            ]
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "timezone",
 | 
			
		||||
                            "name": "Timezone",
 | 
			
		||||
                            "control": "autocomplete",
 | 
			
		||||
                            "options": MomentTimezone.tz.names()
 | 
			
		||||
                        }
 | 
			
		||||
                    ],
 | 
			
		||||
                    "model": {
 | 
			
		||||
                        "clockFormat": [
 | 
			
		||||
                            "YYYY/MM/DD hh:mm:ss",
 | 
			
		||||
                            "clock12"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "timezone": "UTC"
 | 
			
		||||
                    }
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "timer",
 | 
			
		||||
                    "name": "Timer",
 | 
			
		||||
                    "cssClass": "icon-timer",
 | 
			
		||||
                    "description": "A timer that counts up or down to a datetime. Timers can be started, stopped and reset whenever needed, and support a variety of display formats. Each Timer displays the same value to all users. Timers can be added to Display Layouts.",
 | 
			
		||||
                    "priority": 100,
 | 
			
		||||
                    "features": [
 | 
			
		||||
                        "creation"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "properties": [
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "timestamp",
 | 
			
		||||
                            "control": "datetime",
 | 
			
		||||
                            "name": "Target"
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "timerFormat",
 | 
			
		||||
                            "control": "select",
 | 
			
		||||
                            "name": "Display Format",
 | 
			
		||||
                            "options": [
 | 
			
		||||
                                {
 | 
			
		||||
                                    "value": "long",
 | 
			
		||||
                                    "name": "DDD hh:mm:ss"
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    "value": "short",
 | 
			
		||||
                                    "name": "hh:mm:ss"
 | 
			
		||||
                                }
 | 
			
		||||
                            ]
 | 
			
		||||
                        }
 | 
			
		||||
                    ],
 | 
			
		||||
                    "model": {
 | 
			
		||||
                        "timerFormat": "DDD hh:mm:ss"
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "CLOCK_INDICATOR_FORMAT",
 | 
			
		||||
                        "value": "YYYY/MM/DD HH:mm:ss"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "indicators": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": ClockIndicator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "tickerService",
 | 
			
		||||
                            "CLOCK_INDICATOR_FORMAT"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "priority": "preferred"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "tickerService",
 | 
			
		||||
                        "implementation": TickerService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "timerService",
 | 
			
		||||
                        "implementation": TimerService,
 | 
			
		||||
                        "depends": ["openmct"]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ClockController",
 | 
			
		||||
                        "implementation": ClockController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "tickerService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "TimerController",
 | 
			
		||||
                        "implementation": TimerController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$window",
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "RefreshingController",
 | 
			
		||||
                        "implementation": RefreshingController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "tickerService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "views": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "clock",
 | 
			
		||||
                        "type": "clock",
 | 
			
		||||
                        "editable": false,
 | 
			
		||||
                        "template": clockTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "timer",
 | 
			
		||||
                        "type": "timer",
 | 
			
		||||
                        "editable": false,
 | 
			
		||||
                        "template": timerTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "actions": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "timer.follow",
 | 
			
		||||
                        "implementation": FollowTimerAction,
 | 
			
		||||
                        "depends": ["timerService"],
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "name": "Follow Timer",
 | 
			
		||||
                        "cssClass": "icon-clock",
 | 
			
		||||
                        "priority": "optional"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "timer.start",
 | 
			
		||||
                        "implementation": StartTimerAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "name": "Start",
 | 
			
		||||
                        "cssClass": "icon-play",
 | 
			
		||||
                        "priority": "preferred"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "timer.pause",
 | 
			
		||||
                        "implementation": PauseTimerAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "name": "Pause",
 | 
			
		||||
                        "cssClass": "icon-pause",
 | 
			
		||||
                        "priority": "preferred"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "timer.restart",
 | 
			
		||||
                        "implementation": RestartTimerAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "name": "Restart at 0",
 | 
			
		||||
                        "cssClass": "icon-refresh",
 | 
			
		||||
                        "priority": "preferred"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "timer.stop",
 | 
			
		||||
                        "implementation": StopTimerAction,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "now"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "category": "contextual",
 | 
			
		||||
                        "name": "Stop",
 | 
			
		||||
                        "cssClass": "icon-box",
 | 
			
		||||
                        "priority": "preferred"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "types": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "clock",
 | 
			
		||||
                        "name": "Clock",
 | 
			
		||||
                        "cssClass": "icon-clock",
 | 
			
		||||
                        "description": "A UTC-based clock that supports a variety of display formats. Clocks can be added to Display Layouts.",
 | 
			
		||||
                        "priority": 101,
 | 
			
		||||
                        "features": [
 | 
			
		||||
                            "creation"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "properties": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "clockFormat",
 | 
			
		||||
                                "name": "Display Format",
 | 
			
		||||
                                "control": "composite",
 | 
			
		||||
                                "items": [
 | 
			
		||||
                                    {
 | 
			
		||||
                                        "control": "select",
 | 
			
		||||
                                        "options": [
 | 
			
		||||
                                            {
 | 
			
		||||
                                                "value": "YYYY/MM/DD hh:mm:ss",
 | 
			
		||||
                                                "name": "YYYY/MM/DD hh:mm:ss"
 | 
			
		||||
                                            },
 | 
			
		||||
                                            {
 | 
			
		||||
                                                "value": "YYYY/DDD hh:mm:ss",
 | 
			
		||||
                                                "name": "YYYY/DDD hh:mm:ss"
 | 
			
		||||
                                            },
 | 
			
		||||
                                            {
 | 
			
		||||
                                                "value": "hh:mm:ss",
 | 
			
		||||
                                                "name": "hh:mm:ss"
 | 
			
		||||
                                            }
 | 
			
		||||
                                        ],
 | 
			
		||||
                                        "cssClass": "l-inline"
 | 
			
		||||
                                    },
 | 
			
		||||
                                    {
 | 
			
		||||
                                        "control": "select",
 | 
			
		||||
                                        "options": [
 | 
			
		||||
                                            {
 | 
			
		||||
                                                "value": "clock12",
 | 
			
		||||
                                                "name": "12hr"
 | 
			
		||||
                                            },
 | 
			
		||||
                                            {
 | 
			
		||||
                                                "value": "clock24",
 | 
			
		||||
                                                "name": "24hr"
 | 
			
		||||
                                            }
 | 
			
		||||
                                        ],
 | 
			
		||||
                                        "cssClass": "l-inline"
 | 
			
		||||
                                    }
 | 
			
		||||
                                ]
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "timezone",
 | 
			
		||||
                                "name": "Timezone",
 | 
			
		||||
                                "control": "autocomplete",
 | 
			
		||||
                                "options": MomentTimezone.tz.names()
 | 
			
		||||
                            }
 | 
			
		||||
                        ],
 | 
			
		||||
                        "model": {
 | 
			
		||||
                            "clockFormat": [
 | 
			
		||||
                                "YYYY/MM/DD hh:mm:ss",
 | 
			
		||||
                                "clock12"
 | 
			
		||||
                            ],
 | 
			
		||||
                            "timezone": "UTC"
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "timer",
 | 
			
		||||
                        "name": "Timer",
 | 
			
		||||
                        "cssClass": "icon-timer",
 | 
			
		||||
                        "description": "A timer that counts up or down to a datetime. Timers can be started, stopped and reset whenever needed, and support a variety of display formats. Each Timer displays the same value to all users. Timers can be added to Display Layouts.",
 | 
			
		||||
                        "priority": 100,
 | 
			
		||||
                        "features": [
 | 
			
		||||
                            "creation"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "properties": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "timestamp",
 | 
			
		||||
                                "control": "datetime",
 | 
			
		||||
                                "name": "Target"
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "timerFormat",
 | 
			
		||||
                                "control": "select",
 | 
			
		||||
                                "name": "Display Format",
 | 
			
		||||
                                "options": [
 | 
			
		||||
                                    {
 | 
			
		||||
                                        "value": "long",
 | 
			
		||||
                                        "name": "DDD hh:mm:ss"
 | 
			
		||||
                                    },
 | 
			
		||||
                                    {
 | 
			
		||||
                                        "value": "short",
 | 
			
		||||
                                        "name": "hh:mm:ss"
 | 
			
		||||
                                    }
 | 
			
		||||
                                ]
 | 
			
		||||
                            }
 | 
			
		||||
                        ],
 | 
			
		||||
                        "model": {
 | 
			
		||||
                            "timerFormat": "DDD hh:mm:ss"
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "runs": [{
 | 
			
		||||
                    "implementation": FollowIndicator,
 | 
			
		||||
                    "depends": ["openmct", "timerService"]
 | 
			
		||||
                }],
 | 
			
		||||
                "licenses": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "moment-duration-format",
 | 
			
		||||
                        "version": "1.3.0",
 | 
			
		||||
                        "author": "John Madhavan-Reese",
 | 
			
		||||
                        "description": "Duration parsing/formatting",
 | 
			
		||||
                        "website": "https://github.com/jsmreese/moment-duration-format",
 | 
			
		||||
                        "copyright": "Copyright 2014 John Madhavan-Reese",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/jsmreese/moment-duration-format/blob/master/LICENSE"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
            ],
 | 
			
		||||
            "runs": [{
 | 
			
		||||
                "implementation": FollowIndicator,
 | 
			
		||||
                "depends": ["openmct", "timerService"]
 | 
			
		||||
            }],
 | 
			
		||||
            "licenses": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "moment-duration-format",
 | 
			
		||||
                    "version": "1.3.0",
 | 
			
		||||
                    "author": "John Madhavan-Reese",
 | 
			
		||||
                    "description": "Duration parsing/formatting",
 | 
			
		||||
                    "website": "https://github.com/jsmreese/moment-duration-format",
 | 
			
		||||
                    "copyright": "Copyright 2014 John Madhavan-Reese",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/jsmreese/moment-duration-format/blob/master/LICENSE"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,99 +22,98 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    './src/HyperlinkController',
 | 
			
		||||
    'legacyRegistry',
 | 
			
		||||
    './res/templates/hyperlink.html'
 | 
			
		||||
], function (
 | 
			
		||||
    HyperlinkController,
 | 
			
		||||
    legacyRegistry,
 | 
			
		||||
    hyperlinkTemplate
 | 
			
		||||
) {
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/features/hyperlink",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Hyperlink",
 | 
			
		||||
            "description": "Insert a hyperlink to reference a link",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "types": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "hyperlink",
 | 
			
		||||
                        "name": "Hyperlink",
 | 
			
		||||
                        "cssClass": "icon-chain-links",
 | 
			
		||||
                        "description": "A hyperlink to redirect to a different link",
 | 
			
		||||
                        "features": ["creation"],
 | 
			
		||||
                        "properties": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "url",
 | 
			
		||||
                                "name": "URL",
 | 
			
		||||
                                "control": "textfield",
 | 
			
		||||
                                "required": true,
 | 
			
		||||
                                "cssClass": "l-input-lg"
 | 
			
		||||
                            },
 | 
			
		||||
    legacyRegistry.register("platform/features/hyperlink", {
 | 
			
		||||
        "name": "Hyperlink",
 | 
			
		||||
        "description": "Insert a hyperlink to reference a link",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "types": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "hyperlink",
 | 
			
		||||
                    "name": "Hyperlink",
 | 
			
		||||
                    "cssClass": "icon-chain-links",
 | 
			
		||||
                    "description": "A hyperlink to redirect to a different link",
 | 
			
		||||
                    "features": ["creation"],
 | 
			
		||||
                    "properties": [
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "url",
 | 
			
		||||
                            "name": "URL",
 | 
			
		||||
                            "control": "textfield",
 | 
			
		||||
                            "required": true,
 | 
			
		||||
                            "cssClass": "l-input-lg"
 | 
			
		||||
                        },
 | 
			
		||||
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "displayText",
 | 
			
		||||
                                "name": "Text to Display",
 | 
			
		||||
                                "control": "textfield",
 | 
			
		||||
                                "required": true,
 | 
			
		||||
                                "cssClass": "l-input-lg"
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "displayFormat",
 | 
			
		||||
                                "name": "Display Format",
 | 
			
		||||
                                "control": "select",
 | 
			
		||||
                                "options": [
 | 
			
		||||
                                    {
 | 
			
		||||
                                        "name": "Link",
 | 
			
		||||
                                        "value": "link"
 | 
			
		||||
                                    },
 | 
			
		||||
                                    {
 | 
			
		||||
                                        "value": "button",
 | 
			
		||||
                                        "name": "Button"
 | 
			
		||||
                                    }
 | 
			
		||||
                                ],
 | 
			
		||||
                                "cssClass": "l-inline"
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "openNewTab",
 | 
			
		||||
                                "name": "Tab to Open Hyperlink",
 | 
			
		||||
                                "control": "select",
 | 
			
		||||
                                "options": [
 | 
			
		||||
                                    {
 | 
			
		||||
                                        "name": "Open in this tab",
 | 
			
		||||
                                        "value": "thisTab"
 | 
			
		||||
                                    },
 | 
			
		||||
                                    {
 | 
			
		||||
                                        "value": "newTab",
 | 
			
		||||
                                        "name": "Open in a new tab"
 | 
			
		||||
                                    }
 | 
			
		||||
                                ],
 | 
			
		||||
                                "cssClass": "l-inline"
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "displayText",
 | 
			
		||||
                            "name": "Text to Display",
 | 
			
		||||
                            "control": "textfield",
 | 
			
		||||
                            "required": true,
 | 
			
		||||
                            "cssClass": "l-input-lg"
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "displayFormat",
 | 
			
		||||
                            "name": "Display Format",
 | 
			
		||||
                            "control": "select",
 | 
			
		||||
                            "options": [
 | 
			
		||||
                                {
 | 
			
		||||
                                    "name": "Link",
 | 
			
		||||
                                    "value": "link"
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    "value": "button",
 | 
			
		||||
                                    "name": "Button"
 | 
			
		||||
                                }
 | 
			
		||||
                            ],
 | 
			
		||||
                            "cssClass": "l-inline"
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "openNewTab",
 | 
			
		||||
                            "name": "Tab to Open Hyperlink",
 | 
			
		||||
                            "control": "select",
 | 
			
		||||
                            "options": [
 | 
			
		||||
                                {
 | 
			
		||||
                                    "name": "Open in this tab",
 | 
			
		||||
                                    "value": "thisTab"
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    "value": "newTab",
 | 
			
		||||
                                    "name": "Open in a new tab"
 | 
			
		||||
                                }
 | 
			
		||||
                            ],
 | 
			
		||||
                            "cssClass": "l-inline"
 | 
			
		||||
 | 
			
		||||
                            }
 | 
			
		||||
                        ],
 | 
			
		||||
                        "model": {
 | 
			
		||||
                            "displayFormat": "link",
 | 
			
		||||
                            "openNewTab": "thisTab",
 | 
			
		||||
                            "removeTitle": true
 | 
			
		||||
                        }
 | 
			
		||||
                    ],
 | 
			
		||||
                    "model": {
 | 
			
		||||
                        "displayFormat": "link",
 | 
			
		||||
                        "openNewTab": "thisTab",
 | 
			
		||||
                        "removeTitle": true
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "views": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "hyperlink",
 | 
			
		||||
                        "type": "hyperlink",
 | 
			
		||||
                        "name": "Hyperlink Display",
 | 
			
		||||
                        "template": hyperlinkTemplate,
 | 
			
		||||
                        "editable": false
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "HyperlinkController",
 | 
			
		||||
                        "implementation": HyperlinkController,
 | 
			
		||||
                        "depends": ["$scope"]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "views": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "hyperlink",
 | 
			
		||||
                    "type": "hyperlink",
 | 
			
		||||
                    "name": "Hyperlink Display",
 | 
			
		||||
                    "template": hyperlinkTemplate,
 | 
			
		||||
                    "editable": false
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "HyperlinkController",
 | 
			
		||||
                    "implementation": HyperlinkController,
 | 
			
		||||
                    "depends": ["$scope"]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -24,63 +24,62 @@ define([
 | 
			
		||||
    "./src/policies/ImageryViewPolicy",
 | 
			
		||||
    "./src/controllers/ImageryController",
 | 
			
		||||
    "./src/directives/MCTBackgroundImage",
 | 
			
		||||
    "./res/templates/imagery.html"
 | 
			
		||||
    "./res/templates/imagery.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    ImageryViewPolicy,
 | 
			
		||||
    ImageryController,
 | 
			
		||||
    MCTBackgroundImage,
 | 
			
		||||
    imageryTemplate
 | 
			
		||||
    imageryTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/features/imagery",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Plot view for telemetry",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "views": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Imagery",
 | 
			
		||||
                        "key": "imagery",
 | 
			
		||||
                        "cssClass": "icon-image",
 | 
			
		||||
                        "template": imageryTemplate,
 | 
			
		||||
                        "priority": "preferred",
 | 
			
		||||
                        "needs": [
 | 
			
		||||
                            "telemetry"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "editable": false
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "policies": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "category": "view",
 | 
			
		||||
                        "implementation": ImageryViewPolicy,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ImageryController",
 | 
			
		||||
                        "implementation": ImageryController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$window",
 | 
			
		||||
                            "$element",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "directives": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctBackgroundImage",
 | 
			
		||||
                        "implementation": MCTBackgroundImage,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$document"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/features/imagery", {
 | 
			
		||||
        "name": "Plot view for telemetry",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "views": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Imagery",
 | 
			
		||||
                    "key": "imagery",
 | 
			
		||||
                    "cssClass": "icon-image",
 | 
			
		||||
                    "template": imageryTemplate,
 | 
			
		||||
                    "priority": "preferred",
 | 
			
		||||
                    "needs": [
 | 
			
		||||
                        "telemetry"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "editable": false
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "policies": [
 | 
			
		||||
                {
 | 
			
		||||
                    "category": "view",
 | 
			
		||||
                    "implementation": ImageryViewPolicy,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ImageryController",
 | 
			
		||||
                    "implementation": ImageryController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$window",
 | 
			
		||||
                        "$element",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "directives": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctBackgroundImage",
 | 
			
		||||
                    "implementation": MCTBackgroundImage,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$document"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -20,30 +20,32 @@
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define([], function () {
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/features/my-items",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "My Items",
 | 
			
		||||
            "description": "Defines a root named My Items",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "roots": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "id": "mine"
 | 
			
		||||
define([
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    legacyRegistry.register("platform/features/my-items", {
 | 
			
		||||
        "name": "My Items",
 | 
			
		||||
        "description": "Defines a root named My Items",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "roots": [
 | 
			
		||||
                {
 | 
			
		||||
                    "id": "mine"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "models": [
 | 
			
		||||
                {
 | 
			
		||||
                    "id": "mine",
 | 
			
		||||
                    "model": {
 | 
			
		||||
                        "name": "My Items",
 | 
			
		||||
                        "type": "folder",
 | 
			
		||||
                        "composition": [],
 | 
			
		||||
                        "location": "ROOT"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "models": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "id": "mine",
 | 
			
		||||
                        "model": {
 | 
			
		||||
                            "name": "My Items",
 | 
			
		||||
                            "type": "folder",
 | 
			
		||||
                            "composition": [],
 | 
			
		||||
                            "location": "ROOT"
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,56 +22,55 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/EmbeddedPageController",
 | 
			
		||||
    "./res/iframe.html"
 | 
			
		||||
    "./res/iframe.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    EmbeddedPageController,
 | 
			
		||||
    iframeTemplate
 | 
			
		||||
    iframeTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/features/pages",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "types": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "example.page",
 | 
			
		||||
                        "name": "Web Page",
 | 
			
		||||
                        "cssClass": "icon-page",
 | 
			
		||||
                        "description": "Embed a web page or web-based image in a resizeable window component. Can be added to Display Layouts. Note that the URL being embedded must allow iframing.",
 | 
			
		||||
                        "priority": 50,
 | 
			
		||||
                        "features": [
 | 
			
		||||
                            "creation"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "properties": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "url",
 | 
			
		||||
                                "name": "URL",
 | 
			
		||||
                                "control": "textfield",
 | 
			
		||||
                                "required": true,
 | 
			
		||||
                                "cssClass": "l-input-lg"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "views": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "template": iframeTemplate,
 | 
			
		||||
                        "name": "Page",
 | 
			
		||||
                        "type": "example.page",
 | 
			
		||||
                        "key": "example.page",
 | 
			
		||||
                        "editable": false
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "EmbeddedPageController",
 | 
			
		||||
                        "implementation": EmbeddedPageController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$sce"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/features/pages", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "types": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "example.page",
 | 
			
		||||
                    "name": "Web Page",
 | 
			
		||||
                    "cssClass": "icon-page",
 | 
			
		||||
                    "description": "Embed a web page or web-based image in a resizeable window component. Can be added to Display Layouts. Note that the URL being embedded must allow iframing.",
 | 
			
		||||
                    "priority": 50,
 | 
			
		||||
                    "features": [
 | 
			
		||||
                        "creation"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "properties": [
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "url",
 | 
			
		||||
                            "name": "URL",
 | 
			
		||||
                            "control": "textfield",
 | 
			
		||||
                            "required": true,
 | 
			
		||||
                            "cssClass": "l-input-lg"
 | 
			
		||||
                        }
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "views": [
 | 
			
		||||
                {
 | 
			
		||||
                    "template": iframeTemplate,
 | 
			
		||||
                    "name": "Page",
 | 
			
		||||
                    "type": "example.page",
 | 
			
		||||
                    "key": "example.page",
 | 
			
		||||
                    "editable": false
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "EmbeddedPageController",
 | 
			
		||||
                    "implementation": EmbeddedPageController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$sce"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,35 +22,35 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
 | 
			
		||||
    "./res/markup.html"
 | 
			
		||||
    "./res/markup.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    markupTemplate
 | 
			
		||||
 | 
			
		||||
    markupTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/features/static-markup",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "types": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "static.markup",
 | 
			
		||||
                        "name": "Static Markup",
 | 
			
		||||
                        "cssClass": "icon-pencil",
 | 
			
		||||
                        "description": "Static markup sandbox",
 | 
			
		||||
                        "features": [
 | 
			
		||||
                            "creation"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "views": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "template": markupTemplate,
 | 
			
		||||
                        "name": "Static Markup",
 | 
			
		||||
                        "type": "static.markup",
 | 
			
		||||
                        "key": "static.markup"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/features/static-markup", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "types": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "static.markup",
 | 
			
		||||
                    "name": "Static Markup",
 | 
			
		||||
                    "cssClass": "icon-pencil",
 | 
			
		||||
                    "description": "Static markup sandbox",
 | 
			
		||||
                    "features": [
 | 
			
		||||
                        "creation"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "views": [
 | 
			
		||||
                {
 | 
			
		||||
                    "template": markupTemplate,
 | 
			
		||||
                    "name": "Static Markup",
 | 
			
		||||
                    "type": "static.markup",
 | 
			
		||||
                    "key": "static.markup"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -21,32 +21,31 @@
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./res/templates/deprecated-timeline-message.html"
 | 
			
		||||
    "./res/templates/deprecated-timeline-message.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    deprecatedTimelineMessage
 | 
			
		||||
    deprecatedTimelineMessage,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
    return {
 | 
			
		||||
        name: 'platform/features/timeline',
 | 
			
		||||
        definition: {
 | 
			
		||||
            extensions: {
 | 
			
		||||
                types: [
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "timeline",
 | 
			
		||||
                        name: "Timeline",
 | 
			
		||||
                        description: "Timeline, Activity and Activity Mode objects have been deprecated and will no longer be supported. (07/18/2018)",
 | 
			
		||||
                        priority: 502
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                views: [
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "timeline",
 | 
			
		||||
                        name: "Timeline",
 | 
			
		||||
                        type: "timeline",
 | 
			
		||||
                        description: "Timeline, Activity and Activity Mode objects have been deprecated and will no longer be supported. (07/18/2018)",
 | 
			
		||||
                        template: deprecatedTimelineMessage
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register('platform/features/timeline', {
 | 
			
		||||
        extensions: {
 | 
			
		||||
            types: [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "timeline",
 | 
			
		||||
                    name: "Timeline",
 | 
			
		||||
                    description: "Timeline, Activity and Activity Mode objects have been deprecated and will no longer be supported. (07/18/2018)",
 | 
			
		||||
                    priority: 502
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            views: [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "timeline",
 | 
			
		||||
                    name: "Timeline",
 | 
			
		||||
                    type: "timeline",
 | 
			
		||||
                    description: "Timeline, Activity and Activity Mode objects have been deprecated and will no longer be supported. (07/18/2018)",
 | 
			
		||||
                    template: deprecatedTimelineMessage
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,8 @@ define([
 | 
			
		||||
    "./res/templates/controls/dialog.html",
 | 
			
		||||
    "./res/templates/controls/radio.html",
 | 
			
		||||
    "./res/templates/controls/file-input.html",
 | 
			
		||||
    "./res/templates/controls/snap-view.html"
 | 
			
		||||
    "./res/templates/controls/snap-view.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    MCTForm,
 | 
			
		||||
    MCTControl,
 | 
			
		||||
@@ -71,148 +72,146 @@ define([
 | 
			
		||||
    dialogTemplate,
 | 
			
		||||
    radioTemplate,
 | 
			
		||||
    fileInputTemplate,
 | 
			
		||||
    snapViewTemplate
 | 
			
		||||
    snapViewTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/forms",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "MCT Forms",
 | 
			
		||||
            "description": "Form generator; includes directive and some controls.",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "directives": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctForm",
 | 
			
		||||
                        "implementation": MCTForm
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctControl",
 | 
			
		||||
                        "implementation": MCTControl,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "templateLinker",
 | 
			
		||||
                            "controls[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctFileInput",
 | 
			
		||||
                        "implementation": MCTFileInput,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "fileInputService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controls": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "autocomplete",
 | 
			
		||||
                        "template": autocompleteTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "checkbox",
 | 
			
		||||
                        "template": checkboxTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "radio",
 | 
			
		||||
                        "template": radioTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "datetime",
 | 
			
		||||
                        "template": datetimeTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "select",
 | 
			
		||||
                        "template": selectTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "textfield",
 | 
			
		||||
                        "template": textfieldTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "numberfield",
 | 
			
		||||
                        "template": numberfieldTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "textarea",
 | 
			
		||||
                        "template": textareaTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "button",
 | 
			
		||||
                        "template": buttonTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "color",
 | 
			
		||||
                        "template": colorTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "composite",
 | 
			
		||||
                        "template": compositeTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "menu-button",
 | 
			
		||||
                        "template": menuButtonTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "dialog-button",
 | 
			
		||||
                        "template": dialogTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "file-input",
 | 
			
		||||
                        "template": fileInputTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "snap-view",
 | 
			
		||||
                        "template": snapViewTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "AutocompleteController",
 | 
			
		||||
                        "implementation": AutocompleteController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$element"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "DateTimeController",
 | 
			
		||||
                        "implementation": DateTimeController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "CompositeController",
 | 
			
		||||
                        "implementation": CompositeController
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ColorController",
 | 
			
		||||
                        "implementation": ColorController
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "DialogButtonController",
 | 
			
		||||
                        "implementation": DialogButtonController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "dialogService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "SnapshotPreviewController",
 | 
			
		||||
                        "implementation": SnapshotPreviewController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "fileInputService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": FileInputService
 | 
			
		||||
                    }
 | 
			
		||||
    legacyRegistry.register("platform/forms", {
 | 
			
		||||
        "name": "MCT Forms",
 | 
			
		||||
        "description": "Form generator; includes directive and some controls.",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "directives": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctForm",
 | 
			
		||||
                    "implementation": MCTForm
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctControl",
 | 
			
		||||
                    "implementation": MCTControl,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "templateLinker",
 | 
			
		||||
                        "controls[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctFileInput",
 | 
			
		||||
                    "implementation": MCTFileInput,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "fileInputService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controls": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "autocomplete",
 | 
			
		||||
                    "template": autocompleteTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "checkbox",
 | 
			
		||||
                    "template": checkboxTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "radio",
 | 
			
		||||
                    "template": radioTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "datetime",
 | 
			
		||||
                    "template": datetimeTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "select",
 | 
			
		||||
                    "template": selectTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "textfield",
 | 
			
		||||
                    "template": textfieldTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "numberfield",
 | 
			
		||||
                    "template": numberfieldTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "textarea",
 | 
			
		||||
                    "template": textareaTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "button",
 | 
			
		||||
                    "template": buttonTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "color",
 | 
			
		||||
                    "template": colorTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "composite",
 | 
			
		||||
                    "template": compositeTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "menu-button",
 | 
			
		||||
                    "template": menuButtonTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "dialog-button",
 | 
			
		||||
                    "template": dialogTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "file-input",
 | 
			
		||||
                    "template": fileInputTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "snap-view",
 | 
			
		||||
                    "template": snapViewTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "AutocompleteController",
 | 
			
		||||
                    "implementation": AutocompleteController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$element"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "DateTimeController",
 | 
			
		||||
                    "implementation": DateTimeController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "CompositeController",
 | 
			
		||||
                    "implementation": CompositeController
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ColorController",
 | 
			
		||||
                    "implementation": ColorController
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "DialogButtonController",
 | 
			
		||||
                    "implementation": DialogButtonController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "dialogService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "SnapshotPreviewController",
 | 
			
		||||
                    "implementation": SnapshotPreviewController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "fileInputService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": FileInputService
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -20,88 +20,91 @@
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define([], function () {
 | 
			
		||||
define([
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/framework",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Open MCT Framework Component",
 | 
			
		||||
            "description": "Framework layer for Open MCT; interprets bundle definitions and serves as an intermediary between Require and Angular",
 | 
			
		||||
            "libraries": "lib",
 | 
			
		||||
            "configuration": {
 | 
			
		||||
                "paths": {
 | 
			
		||||
                    "angular": "angular.min"
 | 
			
		||||
                },
 | 
			
		||||
                "shim": {
 | 
			
		||||
                    "angular": {
 | 
			
		||||
                        "exports": "angular"
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    legacyRegistry.register("platform/framework", {
 | 
			
		||||
        "name": "Open MCT Framework Component",
 | 
			
		||||
        "description": "Framework layer for Open MCT; interprets bundle definitions and serves as an intermediary between Require and Angular",
 | 
			
		||||
        "libraries": "lib",
 | 
			
		||||
        "configuration": {
 | 
			
		||||
            "paths": {
 | 
			
		||||
                "angular": "angular.min"
 | 
			
		||||
            },
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "licenses": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Blanket.js",
 | 
			
		||||
                        "version": "1.1.5",
 | 
			
		||||
                        "description": "Code coverage measurement and reporting",
 | 
			
		||||
                        "author": "Alex Seville",
 | 
			
		||||
                        "website": "http://blanketjs.org/",
 | 
			
		||||
                        "copyright": "Copyright (c) 2013 Alex Seville",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "http://opensource.org/licenses/MIT"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Jasmine",
 | 
			
		||||
                        "version": "1.3.1",
 | 
			
		||||
                        "description": "Unit testing",
 | 
			
		||||
                        "author": "Pivotal Labs",
 | 
			
		||||
                        "website": "http://jasmine.github.io/",
 | 
			
		||||
                        "copyright": "Copyright (c) 2008-2011 Pivotal Labs",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "http://opensource.org/licenses/MIT"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "RequireJS",
 | 
			
		||||
                        "version": "2.1.22",
 | 
			
		||||
                        "description": "Script loader",
 | 
			
		||||
                        "author": "The Dojo Foundation",
 | 
			
		||||
                        "website": "http://requirejs.org/",
 | 
			
		||||
                        "copyright": "Copyright (c) 2010-2015, The Dojo Foundation",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/jrburke/requirejs/blob/master/LICENSE"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "AngularJS",
 | 
			
		||||
                        "version": "1.4.4",
 | 
			
		||||
                        "description": "Client-side web application framework",
 | 
			
		||||
                        "author": "Google",
 | 
			
		||||
                        "website": "http://angularjs.org/",
 | 
			
		||||
                        "copyright": "Copyright (c) 2010-2015 Google, Inc. http://angularjs.org",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/angular/angular.js/blob/v1.4.4/LICENSE"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Angular-Route",
 | 
			
		||||
                        "version": "1.4.4",
 | 
			
		||||
                        "description": "Client-side view routing",
 | 
			
		||||
                        "author": "Google",
 | 
			
		||||
                        "website": "http://angularjs.org/",
 | 
			
		||||
                        "copyright": "Copyright (c) 2010-2015 Google, Inc. http://angularjs.org",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/angular/angular.js/blob/v1.4.4/LICENSE"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "ES6-Promise",
 | 
			
		||||
                        "version": "3.0.2",
 | 
			
		||||
                        "description": "Promise polyfill for pre-ECMAScript 6 browsers",
 | 
			
		||||
                        "author": "Yehuda Katz, Tom Dale, Stefan Penner and contributors",
 | 
			
		||||
                        "website": "https://github.com/jakearchibald/es6-promise",
 | 
			
		||||
                        "copyright": "Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/jakearchibald/es6-promise/blob/master/LICENSE"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            "shim": {
 | 
			
		||||
                "angular": {
 | 
			
		||||
                    "exports": "angular"
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "licenses": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Blanket.js",
 | 
			
		||||
                    "version": "1.1.5",
 | 
			
		||||
                    "description": "Code coverage measurement and reporting",
 | 
			
		||||
                    "author": "Alex Seville",
 | 
			
		||||
                    "website": "http://blanketjs.org/",
 | 
			
		||||
                    "copyright": "Copyright (c) 2013 Alex Seville",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "http://opensource.org/licenses/MIT"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Jasmine",
 | 
			
		||||
                    "version": "1.3.1",
 | 
			
		||||
                    "description": "Unit testing",
 | 
			
		||||
                    "author": "Pivotal Labs",
 | 
			
		||||
                    "website": "http://jasmine.github.io/",
 | 
			
		||||
                    "copyright": "Copyright (c) 2008-2011 Pivotal Labs",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "http://opensource.org/licenses/MIT"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "RequireJS",
 | 
			
		||||
                    "version": "2.1.22",
 | 
			
		||||
                    "description": "Script loader",
 | 
			
		||||
                    "author": "The Dojo Foundation",
 | 
			
		||||
                    "website": "http://requirejs.org/",
 | 
			
		||||
                    "copyright": "Copyright (c) 2010-2015, The Dojo Foundation",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/jrburke/requirejs/blob/master/LICENSE"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "AngularJS",
 | 
			
		||||
                    "version": "1.4.4",
 | 
			
		||||
                    "description": "Client-side web application framework",
 | 
			
		||||
                    "author": "Google",
 | 
			
		||||
                    "website": "http://angularjs.org/",
 | 
			
		||||
                    "copyright": "Copyright (c) 2010-2015 Google, Inc. http://angularjs.org",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/angular/angular.js/blob/v1.4.4/LICENSE"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Angular-Route",
 | 
			
		||||
                    "version": "1.4.4",
 | 
			
		||||
                    "description": "Client-side view routing",
 | 
			
		||||
                    "author": "Google",
 | 
			
		||||
                    "website": "http://angularjs.org/",
 | 
			
		||||
                    "copyright": "Copyright (c) 2010-2015 Google, Inc. http://angularjs.org",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/angular/angular.js/blob/v1.4.4/LICENSE"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "ES6-Promise",
 | 
			
		||||
                    "version": "3.0.2",
 | 
			
		||||
                    "description": "Promise polyfill for pre-ECMAScript 6 browsers",
 | 
			
		||||
                    "author": "Yehuda Katz, Tom Dale, Stefan Penner and contributors",
 | 
			
		||||
                    "website": "https://github.com/jakearchibald/es6-promise",
 | 
			
		||||
                    "copyright": "Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/jakearchibald/es6-promise/blob/master/LICENSE"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -24,64 +24,63 @@ define([
 | 
			
		||||
    "./src/IdentityAggregator",
 | 
			
		||||
    "./src/IdentityProvider",
 | 
			
		||||
    "./src/IdentityCreationDecorator",
 | 
			
		||||
    "./src/IdentityIndicator"
 | 
			
		||||
    "./src/IdentityIndicator",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    IdentityAggregator,
 | 
			
		||||
    IdentityProvider,
 | 
			
		||||
    IdentityCreationDecorator,
 | 
			
		||||
    IdentityIndicator
 | 
			
		||||
    IdentityIndicator,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/identity",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": IdentityAggregator,
 | 
			
		||||
                        "type": "aggregator",
 | 
			
		||||
                        "provides": "identityService",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": IdentityProvider,
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "provides": "identityService",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "provides": "creationService",
 | 
			
		||||
                        "implementation": IdentityCreationDecorator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "identityService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "indicators": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": IdentityIndicator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "identityService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "types": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "properties": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "key": "creator",
 | 
			
		||||
                                "name": "Creator"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/identity", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": IdentityAggregator,
 | 
			
		||||
                    "type": "aggregator",
 | 
			
		||||
                    "provides": "identityService",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": IdentityProvider,
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "provides": "identityService",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "provides": "creationService",
 | 
			
		||||
                    "implementation": IdentityCreationDecorator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "identityService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "indicators": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": IdentityIndicator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "identityService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "types": [
 | 
			
		||||
                {
 | 
			
		||||
                    "properties": [
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "creator",
 | 
			
		||||
                            "name": "Creator"
 | 
			
		||||
                        }
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -21,26 +21,25 @@
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/PersistenceAggregator"
 | 
			
		||||
    "./src/PersistenceAggregator",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    PersistenceAggregator
 | 
			
		||||
    PersistenceAggregator,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/persistence/aggregator",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "persistenceService",
 | 
			
		||||
                        "type": "aggregator",
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "implementation": PersistenceAggregator
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/persistence/aggregator", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "persistenceService",
 | 
			
		||||
                    "type": "aggregator",
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "implementation": PersistenceAggregator
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,57 +22,56 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/CouchPersistenceProvider",
 | 
			
		||||
    "./src/CouchIndicator"
 | 
			
		||||
    "./src/CouchIndicator",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    CouchPersistenceProvider,
 | 
			
		||||
    CouchIndicator
 | 
			
		||||
    CouchIndicator,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/persistence/couch",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Couch Persistence",
 | 
			
		||||
            "description": "Adapter to read and write objects using a CouchDB instance.",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "persistenceService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": CouchPersistenceProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$http",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "PERSISTENCE_SPACE",
 | 
			
		||||
                            "COUCHDB_PATH"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                        "value": "mct"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "COUCHDB_PATH",
 | 
			
		||||
                        "value": "/couch/openmct"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "COUCHDB_INDICATOR_INTERVAL",
 | 
			
		||||
                        "value": 15000
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "indicators": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": CouchIndicator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$http",
 | 
			
		||||
                            "$interval",
 | 
			
		||||
                            "COUCHDB_PATH",
 | 
			
		||||
                            "COUCHDB_INDICATOR_INTERVAL"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/persistence/couch", {
 | 
			
		||||
        "name": "Couch Persistence",
 | 
			
		||||
        "description": "Adapter to read and write objects using a CouchDB instance.",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "persistenceService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": CouchPersistenceProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$http",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "PERSISTENCE_SPACE",
 | 
			
		||||
                        "COUCHDB_PATH"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                    "value": "mct"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "COUCHDB_PATH",
 | 
			
		||||
                    "value": "/couch/openmct"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "COUCHDB_INDICATOR_INTERVAL",
 | 
			
		||||
                    "value": 15000
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "indicators": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": CouchIndicator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$http",
 | 
			
		||||
                        "$interval",
 | 
			
		||||
                        "COUCHDB_PATH",
 | 
			
		||||
                        "COUCHDB_INDICATOR_INTERVAL"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -23,75 +23,74 @@
 | 
			
		||||
define([
 | 
			
		||||
    "./src/ElasticPersistenceProvider",
 | 
			
		||||
    "./src/ElasticSearchProvider",
 | 
			
		||||
    "./src/ElasticIndicator"
 | 
			
		||||
    "./src/ElasticIndicator",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    ElasticPersistenceProvider,
 | 
			
		||||
    ElasticSearchProvider,
 | 
			
		||||
    ElasticIndicator
 | 
			
		||||
    ElasticIndicator,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/persistence/elastic",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "ElasticSearch Persistence",
 | 
			
		||||
            "description": "Adapter to read and write objects using an ElasticSearch instance.",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "persistenceService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": ElasticPersistenceProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$http",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "PERSISTENCE_SPACE",
 | 
			
		||||
                            "ELASTIC_ROOT",
 | 
			
		||||
                            "ELASTIC_PATH"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "searchService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": ElasticSearchProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$http",
 | 
			
		||||
                            "ELASTIC_ROOT"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                        "value": "mct"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ELASTIC_ROOT",
 | 
			
		||||
                        "value": "http://localhost:9200",
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ELASTIC_PATH",
 | 
			
		||||
                        "value": "mct/domain_object",
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "ELASTIC_INDICATOR_INTERVAL",
 | 
			
		||||
                        "value": 15000,
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "indicators": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": ElasticIndicator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$http",
 | 
			
		||||
                            "$interval",
 | 
			
		||||
                            "ELASTIC_ROOT",
 | 
			
		||||
                            "ELASTIC_INDICATOR_INTERVAL"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/persistence/elastic", {
 | 
			
		||||
        "name": "ElasticSearch Persistence",
 | 
			
		||||
        "description": "Adapter to read and write objects using an ElasticSearch instance.",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "persistenceService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": ElasticPersistenceProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$http",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "PERSISTENCE_SPACE",
 | 
			
		||||
                        "ELASTIC_ROOT",
 | 
			
		||||
                        "ELASTIC_PATH"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "searchService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": ElasticSearchProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$http",
 | 
			
		||||
                        "ELASTIC_ROOT"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                    "value": "mct"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ELASTIC_ROOT",
 | 
			
		||||
                    "value": "http://localhost:9200",
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ELASTIC_PATH",
 | 
			
		||||
                    "value": "mct/domain_object",
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "ELASTIC_INDICATOR_INTERVAL",
 | 
			
		||||
                    "value": 15000,
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "indicators": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": ElasticIndicator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$http",
 | 
			
		||||
                        "$interval",
 | 
			
		||||
                        "ELASTIC_ROOT",
 | 
			
		||||
                        "ELASTIC_INDICATOR_INTERVAL"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,40 +22,39 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    "./src/LocalStoragePersistenceProvider",
 | 
			
		||||
    "./src/LocalStorageIndicator"
 | 
			
		||||
    "./src/LocalStorageIndicator",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    LocalStoragePersistenceProvider,
 | 
			
		||||
    LocalStorageIndicator
 | 
			
		||||
    LocalStorageIndicator,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/persistence/local",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "persistenceService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": LocalStoragePersistenceProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$window",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "PERSISTENCE_SPACE"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                        "value": "mct"
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "indicators": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": LocalStorageIndicator
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/persistence/local", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "persistenceService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": LocalStoragePersistenceProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$window",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "PERSISTENCE_SPACE"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "PERSISTENCE_SPACE",
 | 
			
		||||
                    "value": "mct"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "indicators": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": LocalStorageIndicator
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -24,59 +24,58 @@ define([
 | 
			
		||||
    "./src/QueuingPersistenceCapabilityDecorator",
 | 
			
		||||
    "./src/PersistenceQueue",
 | 
			
		||||
    "./src/PersistenceFailureController",
 | 
			
		||||
    "./res/templates/persistence-failure-dialog.html"
 | 
			
		||||
    "./res/templates/persistence-failure-dialog.html",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    QueuingPersistenceCapabilityDecorator,
 | 
			
		||||
    PersistenceQueue,
 | 
			
		||||
    PersistenceFailureController,
 | 
			
		||||
    persistenceFailureDialogTemplate
 | 
			
		||||
    persistenceFailureDialogTemplate,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/persistence/queue",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "provides": "capabilityService",
 | 
			
		||||
                        "implementation": QueuingPersistenceCapabilityDecorator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "persistenceQueue"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "persistenceQueue",
 | 
			
		||||
                        "implementation": PersistenceQueue,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "dialogService",
 | 
			
		||||
                            "PERSISTENCE_QUEUE_DELAY"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "PERSISTENCE_QUEUE_DELAY",
 | 
			
		||||
                        "value": 5
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "persistence-failure-dialog",
 | 
			
		||||
                        "template": persistenceFailureDialogTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "PersistenceFailureController",
 | 
			
		||||
                        "implementation": PersistenceFailureController
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/persistence/queue", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "provides": "capabilityService",
 | 
			
		||||
                    "implementation": QueuingPersistenceCapabilityDecorator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "persistenceQueue"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "persistenceQueue",
 | 
			
		||||
                    "implementation": PersistenceQueue,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "dialogService",
 | 
			
		||||
                        "PERSISTENCE_QUEUE_DELAY"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "PERSISTENCE_QUEUE_DELAY",
 | 
			
		||||
                    "value": 5
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "persistence-failure-dialog",
 | 
			
		||||
                    "template": persistenceFailureDialogTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "PersistenceFailureController",
 | 
			
		||||
                    "implementation": PersistenceFailureController
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -23,47 +23,46 @@
 | 
			
		||||
define([
 | 
			
		||||
    "./src/PolicyActionDecorator",
 | 
			
		||||
    "./src/PolicyViewDecorator",
 | 
			
		||||
    "./src/PolicyProvider"
 | 
			
		||||
    "./src/PolicyProvider",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    PolicyActionDecorator,
 | 
			
		||||
    PolicyViewDecorator,
 | 
			
		||||
    PolicyProvider
 | 
			
		||||
    PolicyProvider,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/policy",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Policy Service",
 | 
			
		||||
            "description": "Provides support for extension-driven decisions.",
 | 
			
		||||
            "sources": "src",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "provides": "actionService",
 | 
			
		||||
                        "implementation": PolicyActionDecorator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "policyService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "decorator",
 | 
			
		||||
                        "provides": "viewService",
 | 
			
		||||
                        "implementation": PolicyViewDecorator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "policyService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "provides": "policyService",
 | 
			
		||||
                        "implementation": PolicyProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "policies[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/policy", {
 | 
			
		||||
        "name": "Policy Service",
 | 
			
		||||
        "description": "Provides support for extension-driven decisions.",
 | 
			
		||||
        "sources": "src",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "provides": "actionService",
 | 
			
		||||
                    "implementation": PolicyActionDecorator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "policyService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "decorator",
 | 
			
		||||
                    "provides": "viewService",
 | 
			
		||||
                    "implementation": PolicyViewDecorator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "policyService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "provides": "policyService",
 | 
			
		||||
                    "implementation": PolicyProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "policies[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,8 @@ define([
 | 
			
		||||
    "./src/gestures/GestureRepresenter",
 | 
			
		||||
    "./src/services/DndService",
 | 
			
		||||
    "./src/TemplateLinker",
 | 
			
		||||
    "./src/TemplatePrefetcher"
 | 
			
		||||
    "./src/TemplatePrefetcher",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    MCTInclude,
 | 
			
		||||
    MCTRepresentation,
 | 
			
		||||
@@ -39,106 +40,104 @@ define([
 | 
			
		||||
    GestureRepresenter,
 | 
			
		||||
    DndService,
 | 
			
		||||
    TemplateLinker,
 | 
			
		||||
    TemplatePrefetcher
 | 
			
		||||
    TemplatePrefetcher,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/representation",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "directives": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctInclude",
 | 
			
		||||
                        "implementation": MCTInclude,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "templates[]",
 | 
			
		||||
                            "templateLinker"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "mctRepresentation",
 | 
			
		||||
                        "implementation": MCTRepresentation,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "representations[]",
 | 
			
		||||
                            "views[]",
 | 
			
		||||
                            "representers[]",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "templateLinker",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "gestures": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "drag",
 | 
			
		||||
                        "implementation": DragGesture,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$log",
 | 
			
		||||
                            "dndService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "drop",
 | 
			
		||||
                        "implementation": DropGesture,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "dndService",
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "gestureService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": GestureProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "gestures[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "representers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": GestureRepresenter,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "gestureService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "dndService",
 | 
			
		||||
                        "implementation": DndService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "templateLinker",
 | 
			
		||||
                        "implementation": TemplateLinker,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$templateRequest",
 | 
			
		||||
                            "$sce",
 | 
			
		||||
                            "$compile",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "comment": "For internal use by mct-include and mct-representation."
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "runs": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "priority": "mandatory",
 | 
			
		||||
                        "implementation": TemplatePrefetcher,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "templateLinker",
 | 
			
		||||
                            "templates[]",
 | 
			
		||||
                            "views[]",
 | 
			
		||||
                            "representations[]",
 | 
			
		||||
                            "controls[]",
 | 
			
		||||
                            "containers[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/representation", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "directives": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctInclude",
 | 
			
		||||
                    "implementation": MCTInclude,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "templates[]",
 | 
			
		||||
                        "templateLinker"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "mctRepresentation",
 | 
			
		||||
                    "implementation": MCTRepresentation,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "representations[]",
 | 
			
		||||
                        "views[]",
 | 
			
		||||
                        "representers[]",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "templateLinker",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "gestures": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "drag",
 | 
			
		||||
                    "implementation": DragGesture,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$log",
 | 
			
		||||
                        "dndService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "drop",
 | 
			
		||||
                    "implementation": DropGesture,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "dndService",
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "gestureService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": GestureProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "gestures[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "representers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": GestureRepresenter,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "gestureService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "dndService",
 | 
			
		||||
                    "implementation": DndService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "templateLinker",
 | 
			
		||||
                    "implementation": TemplateLinker,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$templateRequest",
 | 
			
		||||
                        "$sce",
 | 
			
		||||
                        "$compile",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "comment": "For internal use by mct-include and mct-representation."
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "runs": [
 | 
			
		||||
                {
 | 
			
		||||
                    "priority": "mandatory",
 | 
			
		||||
                    "implementation": TemplatePrefetcher,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "templateLinker",
 | 
			
		||||
                        "templates[]",
 | 
			
		||||
                        "views[]",
 | 
			
		||||
                        "representations[]",
 | 
			
		||||
                        "controls[]",
 | 
			
		||||
                        "containers[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,8 @@ define([
 | 
			
		||||
    "./res/templates/search.html",
 | 
			
		||||
    "./res/templates/search-menu.html",
 | 
			
		||||
    "raw-loader!./src/services/GenericSearchWorker.js",
 | 
			
		||||
    "raw-loader!./src/services/BareBonesSearchWorker.js"
 | 
			
		||||
    "raw-loader!./src/services/BareBonesSearchWorker.js",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    SearchController,
 | 
			
		||||
    SearchMenuController,
 | 
			
		||||
@@ -39,100 +40,98 @@ define([
 | 
			
		||||
    searchTemplate,
 | 
			
		||||
    searchMenuTemplate,
 | 
			
		||||
    searchWorkerText,
 | 
			
		||||
    BareBonesSearchWorkerText
 | 
			
		||||
    BareBonesSearchWorkerText,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/search",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Search",
 | 
			
		||||
            "description": "Allows the user to search through the file tree.",
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "constants": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "GENERIC_SEARCH_ROOTS",
 | 
			
		||||
                        "value": [
 | 
			
		||||
                            "ROOT"
 | 
			
		||||
                        ],
 | 
			
		||||
                        "priority": "fallback"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "USE_LEGACY_INDEXER",
 | 
			
		||||
                        "value": false,
 | 
			
		||||
                        "priority": 2
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "SearchController",
 | 
			
		||||
                        "implementation": SearchController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "searchService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "SearchMenuController",
 | 
			
		||||
                        "implementation": SearchMenuController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "types[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "representations": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "search-item",
 | 
			
		||||
                        "template": searchItemTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "templates": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "search",
 | 
			
		||||
                        "template": searchTemplate
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "search-menu",
 | 
			
		||||
                        "template": searchMenuTemplate
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "searchService",
 | 
			
		||||
                        "type": "provider",
 | 
			
		||||
                        "implementation": GenericSearchProvider,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$log",
 | 
			
		||||
                            "modelService",
 | 
			
		||||
                            "workerService",
 | 
			
		||||
                            "topic",
 | 
			
		||||
                            "GENERIC_SEARCH_ROOTS",
 | 
			
		||||
                            "USE_LEGACY_INDEXER",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "searchService",
 | 
			
		||||
                        "type": "aggregator",
 | 
			
		||||
                        "implementation": SearchAggregator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "objectService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "workers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "bareBonesSearchWorker",
 | 
			
		||||
                        "scriptText": BareBonesSearchWorkerText
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "genericSearchWorker",
 | 
			
		||||
                        "scriptText": searchWorkerText
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/search", {
 | 
			
		||||
        "name": "Search",
 | 
			
		||||
        "description": "Allows the user to search through the file tree.",
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "constants": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "GENERIC_SEARCH_ROOTS",
 | 
			
		||||
                    "value": [
 | 
			
		||||
                        "ROOT"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "priority": "fallback"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "USE_LEGACY_INDEXER",
 | 
			
		||||
                    "value": false,
 | 
			
		||||
                    "priority": 2
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "SearchController",
 | 
			
		||||
                    "implementation": SearchController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "searchService"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "SearchMenuController",
 | 
			
		||||
                    "implementation": SearchMenuController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "types[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "representations": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "search-item",
 | 
			
		||||
                    "template": searchItemTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "templates": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "search",
 | 
			
		||||
                    "template": searchTemplate
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "search-menu",
 | 
			
		||||
                    "template": searchMenuTemplate
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "searchService",
 | 
			
		||||
                    "type": "provider",
 | 
			
		||||
                    "implementation": GenericSearchProvider,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$log",
 | 
			
		||||
                        "modelService",
 | 
			
		||||
                        "workerService",
 | 
			
		||||
                        "topic",
 | 
			
		||||
                        "GENERIC_SEARCH_ROOTS",
 | 
			
		||||
                        "USE_LEGACY_INDEXER",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "searchService",
 | 
			
		||||
                    "type": "aggregator",
 | 
			
		||||
                    "implementation": SearchAggregator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "objectService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "workers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "bareBonesSearchWorker",
 | 
			
		||||
                    "scriptText": BareBonesSearchWorkerText
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "genericSearchWorker",
 | 
			
		||||
                    "scriptText": searchWorkerText
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -23,41 +23,40 @@
 | 
			
		||||
define([
 | 
			
		||||
    "./src/StatusRepresenter",
 | 
			
		||||
    "./src/StatusCapability",
 | 
			
		||||
    "./src/StatusService"
 | 
			
		||||
    "./src/StatusService",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    StatusRepresenter,
 | 
			
		||||
    StatusCapability,
 | 
			
		||||
    StatusService
 | 
			
		||||
    StatusService,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/status",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "representers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "implementation": StatusRepresenter
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "capabilities": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "status",
 | 
			
		||||
                        "implementation": StatusCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "statusService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "statusService",
 | 
			
		||||
                        "implementation": StatusService,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "topic"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
    legacyRegistry.register("platform/status", {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "representers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "implementation": StatusRepresenter
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "capabilities": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "status",
 | 
			
		||||
                    "implementation": StatusCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "statusService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "statusService",
 | 
			
		||||
                    "implementation": StatusService,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "topic"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -26,105 +26,104 @@ define([
 | 
			
		||||
    "./src/TelemetryCapability",
 | 
			
		||||
    "./src/TelemetryFormatter",
 | 
			
		||||
    "./src/TelemetrySubscriber",
 | 
			
		||||
    "./src/TelemetryHandler"
 | 
			
		||||
    "./src/TelemetryHandler",
 | 
			
		||||
    'legacyRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    TelemetryAggregator,
 | 
			
		||||
    TelemetryController,
 | 
			
		||||
    TelemetryCapability,
 | 
			
		||||
    TelemetryFormatter,
 | 
			
		||||
    TelemetrySubscriber,
 | 
			
		||||
    TelemetryHandler
 | 
			
		||||
    TelemetryHandler,
 | 
			
		||||
    legacyRegistry
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        name:"platform/telemetry",
 | 
			
		||||
        definition: {
 | 
			
		||||
            "name": "Data bundle",
 | 
			
		||||
            "description": "Interfaces and infrastructure for real-time and historical data",
 | 
			
		||||
            "configuration": {
 | 
			
		||||
                "paths": {
 | 
			
		||||
                    "moment": "moment.min"
 | 
			
		||||
                },
 | 
			
		||||
                "shim": {
 | 
			
		||||
                    "moment": {
 | 
			
		||||
                        "exports": "moment"
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
    legacyRegistry.register("platform/telemetry", {
 | 
			
		||||
        "name": "Data bundle",
 | 
			
		||||
        "description": "Interfaces and infrastructure for real-time and historical data",
 | 
			
		||||
        "configuration": {
 | 
			
		||||
            "paths": {
 | 
			
		||||
                "moment": "moment.min"
 | 
			
		||||
            },
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "components": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "provides": "telemetryService",
 | 
			
		||||
                        "type": "aggregator",
 | 
			
		||||
                        "implementation": TelemetryAggregator,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "controllers": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "TelemetryController",
 | 
			
		||||
                        "implementation": TelemetryController,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$scope",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$timeout",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "capabilities": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "telemetry",
 | 
			
		||||
                        "implementation": TelemetryCapability,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "openmct",
 | 
			
		||||
                            "$injector",
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$log"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "services": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "telemetryFormatter",
 | 
			
		||||
                        "implementation": TelemetryFormatter,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "formatService",
 | 
			
		||||
                            "DEFAULT_TIME_FORMAT"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "telemetrySubscriber",
 | 
			
		||||
                        "implementation": TelemetrySubscriber,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "$timeout"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "key": "telemetryHandler",
 | 
			
		||||
                        "implementation": TelemetryHandler,
 | 
			
		||||
                        "depends": [
 | 
			
		||||
                            "$q",
 | 
			
		||||
                            "telemetrySubscriber"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "licenses": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "Moment.js",
 | 
			
		||||
                        "version": "2.11.1",
 | 
			
		||||
                        "author": "Tim Wood, Iskren Chernev, Moment.js contributors",
 | 
			
		||||
                        "description": "Time/date parsing/formatting",
 | 
			
		||||
                        "website": "http://momentjs.com",
 | 
			
		||||
                        "copyright": "Copyright (c) 2011-2014 Tim Wood, Iskren Chernev, Moment.js contributors",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://raw.githubusercontent.com/moment/moment/develop/LICENSE"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            "shim": {
 | 
			
		||||
                "moment": {
 | 
			
		||||
                    "exports": "moment"
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "components": [
 | 
			
		||||
                {
 | 
			
		||||
                    "provides": "telemetryService",
 | 
			
		||||
                    "type": "aggregator",
 | 
			
		||||
                    "implementation": TelemetryAggregator,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "controllers": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "TelemetryController",
 | 
			
		||||
                    "implementation": TelemetryController,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$scope",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$timeout",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "capabilities": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "telemetry",
 | 
			
		||||
                    "implementation": TelemetryCapability,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "openmct",
 | 
			
		||||
                        "$injector",
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$log"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "services": [
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "telemetryFormatter",
 | 
			
		||||
                    "implementation": TelemetryFormatter,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "formatService",
 | 
			
		||||
                        "DEFAULT_TIME_FORMAT"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "telemetrySubscriber",
 | 
			
		||||
                    "implementation": TelemetrySubscriber,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "$timeout"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "key": "telemetryHandler",
 | 
			
		||||
                    "implementation": TelemetryHandler,
 | 
			
		||||
                    "depends": [
 | 
			
		||||
                        "$q",
 | 
			
		||||
                        "telemetrySubscriber"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "licenses": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Moment.js",
 | 
			
		||||
                    "version": "2.11.1",
 | 
			
		||||
                    "author": "Tim Wood, Iskren Chernev, Moment.js contributors",
 | 
			
		||||
                    "description": "Time/date parsing/formatting",
 | 
			
		||||
                    "website": "http://momentjs.com",
 | 
			
		||||
                    "copyright": "Copyright (c) 2011-2014 Tim Wood, Iskren Chernev, Moment.js contributors",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://raw.githubusercontent.com/moment/moment/develop/LICENSE"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								src/MCT.js
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/MCT.js
									
									
									
									
									
								
							@@ -22,9 +22,9 @@
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    'EventEmitter',
 | 
			
		||||
    'legacyRegistry',
 | 
			
		||||
    'uuid',
 | 
			
		||||
    './BundleRegistry',
 | 
			
		||||
    './installDefaultBundles',
 | 
			
		||||
    './defaultRegistry',
 | 
			
		||||
    './api/api',
 | 
			
		||||
    './api/overlays/OverlayAPI',
 | 
			
		||||
    './selection/Selection',
 | 
			
		||||
@@ -50,9 +50,9 @@ define([
 | 
			
		||||
    'vue'
 | 
			
		||||
], function (
 | 
			
		||||
    EventEmitter,
 | 
			
		||||
    legacyRegistry,
 | 
			
		||||
    uuid,
 | 
			
		||||
    BundleRegistry,
 | 
			
		||||
    installDefaultBundles,
 | 
			
		||||
    defaultRegistry,
 | 
			
		||||
    api,
 | 
			
		||||
    OverlayAPI,
 | 
			
		||||
    Selection,
 | 
			
		||||
@@ -215,7 +215,7 @@ define([
 | 
			
		||||
         * @memberof module:openmct.MCT#
 | 
			
		||||
         * @name objects
 | 
			
		||||
         */
 | 
			
		||||
        this.objects = new api.ObjectAPI();
 | 
			
		||||
        this.objects = new api.ObjectAPI(this.types);
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * An interface for retrieving and interpreting telemetry data associated
 | 
			
		||||
@@ -248,8 +248,7 @@ define([
 | 
			
		||||
 | 
			
		||||
        this.branding = BrandingAPI.default;
 | 
			
		||||
 | 
			
		||||
        this.legacyRegistry = new BundleRegistry();
 | 
			
		||||
        installDefaultBundles(this.legacyRegistry);
 | 
			
		||||
        this.legacyRegistry = defaultRegistry;
 | 
			
		||||
 | 
			
		||||
        // Plugin's that are installed by default
 | 
			
		||||
 | 
			
		||||
@@ -259,6 +258,7 @@ define([
 | 
			
		||||
        this.install(LegacyIndicatorsPlugin());
 | 
			
		||||
        this.install(LicensesPlugin.default());
 | 
			
		||||
        this.install(RemoveActionPlugin.default());
 | 
			
		||||
        this.install(this.plugins.ImportExport());
 | 
			
		||||
        this.install(this.plugins.FolderView());
 | 
			
		||||
        this.install(this.plugins.Tabs());
 | 
			
		||||
        this.install(this.plugins.FlexibleLayout());
 | 
			
		||||
@@ -361,8 +361,8 @@ define([
 | 
			
		||||
            this.legacyExtension('types', legacyDefinition);
 | 
			
		||||
        }.bind(this));
 | 
			
		||||
 | 
			
		||||
        this.legacyRegistry.register('adapter', this.legacyBundle);
 | 
			
		||||
        this.legacyRegistry.enable('adapter');
 | 
			
		||||
        legacyRegistry.register('adapter', this.legacyBundle);
 | 
			
		||||
        legacyRegistry.enable('adapter');
 | 
			
		||||
 | 
			
		||||
        this.router.route(/^\/$/, () => {
 | 
			
		||||
            this.router.setPath('/browse/');
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    'legacyRegistry',
 | 
			
		||||
    './actions/ActionDialogDecorator',
 | 
			
		||||
    './capabilities/AdapterCapability',
 | 
			
		||||
    './directives/MCTView',
 | 
			
		||||
@@ -38,6 +39,7 @@ define([
 | 
			
		||||
    './policies/LegacyCompositionPolicyAdapter',
 | 
			
		||||
    './actions/LegacyActionAdapter'
 | 
			
		||||
], function (
 | 
			
		||||
    legacyRegistry,
 | 
			
		||||
    ActionDialogDecorator,
 | 
			
		||||
    AdapterCapability,
 | 
			
		||||
    MCTView,
 | 
			
		||||
@@ -55,164 +57,161 @@ define([
 | 
			
		||||
    legacyCompositionPolicyAdapter,
 | 
			
		||||
    LegacyActionAdapter
 | 
			
		||||
) {
 | 
			
		||||
    return {
 | 
			
		||||
        name: 'src/adapter',
 | 
			
		||||
        definition: {
 | 
			
		||||
            "extensions": {
 | 
			
		||||
                "directives": [
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "mctView",
 | 
			
		||||
                        implementation: MCTView,
 | 
			
		||||
                        depends: ["openmct"]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                capabilities: [
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "adapter",
 | 
			
		||||
                        implementation: AdapterCapability
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                services: [
 | 
			
		||||
                    {
 | 
			
		||||
                        key: "instantiate",
 | 
			
		||||
                        priority: "mandatory",
 | 
			
		||||
                        implementation: Instantiate,
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "capabilityService",
 | 
			
		||||
                            "identifierService",
 | 
			
		||||
                            "cacheService"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                components: [
 | 
			
		||||
                    {
 | 
			
		||||
                        type: "decorator",
 | 
			
		||||
                        provides: "capabilityService",
 | 
			
		||||
                        implementation: APICapabilityDecorator,
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "$injector"
 | 
			
		||||
                        ]
 | 
			
		||||
    legacyRegistry.register('src/adapter', {
 | 
			
		||||
        "extensions": {
 | 
			
		||||
            "directives": [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "mctView",
 | 
			
		||||
                    implementation: MCTView,
 | 
			
		||||
                    depends: ["openmct"]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            capabilities: [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "adapter",
 | 
			
		||||
                    implementation: AdapterCapability
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            services: [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "instantiate",
 | 
			
		||||
                    priority: "mandatory",
 | 
			
		||||
                    implementation: Instantiate,
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "capabilityService",
 | 
			
		||||
                        "identifierService",
 | 
			
		||||
                        "cacheService"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            components: [
 | 
			
		||||
                {
 | 
			
		||||
                    type: "decorator",
 | 
			
		||||
                    provides: "capabilityService",
 | 
			
		||||
                    implementation: APICapabilityDecorator,
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "$injector"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    type: "decorator",
 | 
			
		||||
                    provides: "actionService",
 | 
			
		||||
                    implementation: ActionDialogDecorator,
 | 
			
		||||
                    depends: ["openmct"]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    type: "decorator",
 | 
			
		||||
                    provides: "modelService",
 | 
			
		||||
                    implementation: MissingModelCompatibilityDecorator,
 | 
			
		||||
                    depends: ["openmct"]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    provides: "objectService",
 | 
			
		||||
                    type: "decorator",
 | 
			
		||||
                    priority: "mandatory",
 | 
			
		||||
                    implementation: LegacyObjectAPIInterceptor,
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "openmct",
 | 
			
		||||
                        "roots[]",
 | 
			
		||||
                        "instantiate",
 | 
			
		||||
                        "topic"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            policies: [
 | 
			
		||||
                {
 | 
			
		||||
                    category: "view",
 | 
			
		||||
                    implementation: AdaptedViewPolicy,
 | 
			
		||||
                    depends: ["openmct"]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            runs: [
 | 
			
		||||
                {
 | 
			
		||||
                    implementation: TypeDeprecationChecker,
 | 
			
		||||
                    depends: ["types[]"]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    implementation: AlternateCompositionInitializer,
 | 
			
		||||
                    depends: ["openmct"]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    implementation: function (openmct, $location, $rootScope) {
 | 
			
		||||
                        return new TimeSettingsURLHandler(
 | 
			
		||||
                            openmct.time,
 | 
			
		||||
                            $location,
 | 
			
		||||
                            $rootScope
 | 
			
		||||
                        );
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        type: "decorator",
 | 
			
		||||
                        provides: "actionService",
 | 
			
		||||
                        implementation: ActionDialogDecorator,
 | 
			
		||||
                        depends: ["openmct"]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        type: "decorator",
 | 
			
		||||
                        provides: "modelService",
 | 
			
		||||
                        implementation: MissingModelCompatibilityDecorator,
 | 
			
		||||
                        depends: ["openmct"]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        provides: "objectService",
 | 
			
		||||
                        type: "decorator",
 | 
			
		||||
                        priority: "mandatory",
 | 
			
		||||
                        implementation: LegacyObjectAPIInterceptor,
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "openmct",
 | 
			
		||||
                            "roots[]",
 | 
			
		||||
                            "instantiate",
 | 
			
		||||
                            "topic"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                policies: [
 | 
			
		||||
                    {
 | 
			
		||||
                        category: "view",
 | 
			
		||||
                        implementation: AdaptedViewPolicy,
 | 
			
		||||
                        depends: ["openmct"]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                runs: [
 | 
			
		||||
                    {
 | 
			
		||||
                        implementation: TypeDeprecationChecker,
 | 
			
		||||
                        depends: ["types[]"]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        implementation: AlternateCompositionInitializer,
 | 
			
		||||
                        depends: ["openmct"]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        implementation: function (openmct, $location, $rootScope) {
 | 
			
		||||
                            return new TimeSettingsURLHandler(
 | 
			
		||||
                                openmct.time,
 | 
			
		||||
                                $location,
 | 
			
		||||
                                $rootScope
 | 
			
		||||
                            );
 | 
			
		||||
                        },
 | 
			
		||||
                        depends: ["openmct", "$location", "$rootScope"]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        implementation: LegacyTelemetryProvider,
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "openmct",
 | 
			
		||||
                            "instantiate"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        implementation: installLegacyViews,
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "openmct",
 | 
			
		||||
                            "views[]",
 | 
			
		||||
                            "instantiate"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        implementation: RegisterLegacyTypes,
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "types[]",
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        implementation: legacyCompositionPolicyAdapter.default,
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "openmct"
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        implementation: LegacyActionAdapter.default,
 | 
			
		||||
                        depends: [
 | 
			
		||||
                            "openmct",
 | 
			
		||||
                            "actions[]"
 | 
			
		||||
                        ]
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                licenses: [
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "almond",
 | 
			
		||||
                        "version": "0.3.3",
 | 
			
		||||
                        "description": "Lightweight RequireJS replacement for builds",
 | 
			
		||||
                        "author": "jQuery Foundation",
 | 
			
		||||
                        "website": "https://github.com/requirejs/almond",
 | 
			
		||||
                        "copyright": "Copyright jQuery Foundation and other contributors, https://jquery.org/",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/requirejs/almond/blob/master/LICENSE"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "lodash",
 | 
			
		||||
                        "version": "3.10.1",
 | 
			
		||||
                        "description": "Utility functions",
 | 
			
		||||
                        "author": "Dojo Foundation",
 | 
			
		||||
                        "website": "https://lodash.com",
 | 
			
		||||
                        "copyright": "Copyright 2012-2015 The Dojo Foundation",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://raw.githubusercontent.com/lodash/lodash/3.10.1/LICENSE"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "name": "EventEmitter3",
 | 
			
		||||
                        "version": "1.2.0",
 | 
			
		||||
                        "description": "Event-driven programming support",
 | 
			
		||||
                        "author": "Arnout Kazemier",
 | 
			
		||||
                        "website": "https://github.com/primus/eventemitter3",
 | 
			
		||||
                        "copyright": "Copyright (c) 2014 Arnout Kazemier",
 | 
			
		||||
                        "license": "license-mit",
 | 
			
		||||
                        "link": "https://github.com/primus/eventemitter3/blob/1.2.0/LICENSE"
 | 
			
		||||
                    }
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
                    depends: ["openmct", "$location", "$rootScope"]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    implementation: LegacyTelemetryProvider,
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "openmct",
 | 
			
		||||
                        "instantiate"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    implementation: installLegacyViews,
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "openmct",
 | 
			
		||||
                        "views[]",
 | 
			
		||||
                        "instantiate"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    implementation: RegisterLegacyTypes,
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "types[]",
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    implementation: legacyCompositionPolicyAdapter.default,
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "openmct"
 | 
			
		||||
                    ]
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    implementation: LegacyActionAdapter.default,
 | 
			
		||||
                    depends: [
 | 
			
		||||
                        "openmct",
 | 
			
		||||
                        "actions[]"
 | 
			
		||||
                    ]
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            licenses: [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "almond",
 | 
			
		||||
                    "version": "0.3.3",
 | 
			
		||||
                    "description": "Lightweight RequireJS replacement for builds",
 | 
			
		||||
                    "author": "jQuery Foundation",
 | 
			
		||||
                    "website": "https://github.com/requirejs/almond",
 | 
			
		||||
                    "copyright": "Copyright jQuery Foundation and other contributors, https://jquery.org/",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/requirejs/almond/blob/master/LICENSE"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "lodash",
 | 
			
		||||
                    "version": "3.10.1",
 | 
			
		||||
                    "description": "Utility functions",
 | 
			
		||||
                    "author": "Dojo Foundation",
 | 
			
		||||
                    "website": "https://lodash.com",
 | 
			
		||||
                    "copyright": "Copyright 2012-2015 The Dojo Foundation",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://raw.githubusercontent.com/lodash/lodash/3.10.1/LICENSE"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "EventEmitter3",
 | 
			
		||||
                    "version": "1.2.0",
 | 
			
		||||
                    "description": "Event-driven programming support",
 | 
			
		||||
                    "author": "Arnout Kazemier",
 | 
			
		||||
                    "website": "https://github.com/primus/eventemitter3",
 | 
			
		||||
                    "copyright": "Copyright (c) 2014 Arnout Kazemier",
 | 
			
		||||
                    "license": "license-mit",
 | 
			
		||||
                    "link": "https://github.com/primus/eventemitter3/blob/1.2.0/LICENSE"
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -60,7 +60,8 @@ define([
 | 
			
		||||
            var newStyleObject = utils.toNewFormat(legacyObject.getModel(), legacyObject.getId()),
 | 
			
		||||
                keystring = utils.makeKeyString(newStyleObject.identifier);
 | 
			
		||||
 | 
			
		||||
            this.eventEmitter.emit(keystring + ":*", newStyleObject);
 | 
			
		||||
            this.eventEmitter.emit(keystring + ':$_synchronize_model', newStyleObject);
 | 
			
		||||
            this.eventEmitter.emit(keystring + ':*', newStyleObject);
 | 
			
		||||
            this.eventEmitter.emit('mutation', newStyleObject);
 | 
			
		||||
        }.bind(this);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,11 @@
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    'lodash'
 | 
			
		||||
    'lodash',
 | 
			
		||||
    '../objects/MutableDomainObject'
 | 
			
		||||
], function (
 | 
			
		||||
    _
 | 
			
		||||
    _,
 | 
			
		||||
    MutableDomainObject
 | 
			
		||||
) {
 | 
			
		||||
    /**
 | 
			
		||||
     * A CompositionCollection represents the list of domain objects contained
 | 
			
		||||
@@ -60,6 +62,17 @@ define([
 | 
			
		||||
        };
 | 
			
		||||
        this.onProviderAdd = this.onProviderAdd.bind(this);
 | 
			
		||||
        this.onProviderRemove = this.onProviderRemove.bind(this);
 | 
			
		||||
        this.mutables = {};
 | 
			
		||||
 | 
			
		||||
        if (this.domainObject instanceof MutableDomainObject.default &&
 | 
			
		||||
            this.publicAPI.objects.isMutable(this.domainObject)) {
 | 
			
		||||
            this.returnMutables = true;
 | 
			
		||||
            this.domainObject.$observe('$_destroy', () => {
 | 
			
		||||
                Object.values(this.mutables).forEach(mutable => {
 | 
			
		||||
                    mutable.$destroy();
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -74,9 +87,6 @@ define([
 | 
			
		||||
        if (!this.listeners[event]) {
 | 
			
		||||
            throw new Error('Event not supported by composition: ' + event);
 | 
			
		||||
        }
 | 
			
		||||
        if (!this.mutationListener) {
 | 
			
		||||
            this._synchronize();
 | 
			
		||||
        }
 | 
			
		||||
        if (this.provider.on && this.provider.off) {
 | 
			
		||||
            if (event === 'add') {
 | 
			
		||||
                this.provider.on(
 | 
			
		||||
@@ -132,8 +142,6 @@ define([
 | 
			
		||||
 | 
			
		||||
        this.listeners[event].splice(index, 1);
 | 
			
		||||
        if (this.listeners[event].length === 0) {
 | 
			
		||||
            this._destroy();
 | 
			
		||||
 | 
			
		||||
            // Remove provider listener if this is the last callback to
 | 
			
		||||
            // be removed.
 | 
			
		||||
            if (this.provider.off && this.provider.on) {
 | 
			
		||||
@@ -182,6 +190,13 @@ define([
 | 
			
		||||
            }
 | 
			
		||||
            this.provider.add(this.domainObject, child.identifier);
 | 
			
		||||
        } else {
 | 
			
		||||
            if (this.returnMutables && this.publicAPI.objects.isMutable(child)) {
 | 
			
		||||
                let keyString = this.publicAPI.objects.makeKeyString(child.identifier);
 | 
			
		||||
                if (this.publicAPI.objects.isMutable(child)) {
 | 
			
		||||
                    child = this.publicAPI.objects.mutable(child);
 | 
			
		||||
                    this.mutables[keyString] = child;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            this.emit('add', child);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
@@ -195,6 +210,7 @@ define([
 | 
			
		||||
     * @name load
 | 
			
		||||
     */
 | 
			
		||||
    CompositionCollection.prototype.load = function () {
 | 
			
		||||
        this.cleanUpMutables();
 | 
			
		||||
        return this.provider.load(this.domainObject)
 | 
			
		||||
            .then(function (children) {
 | 
			
		||||
                return Promise.all(children.map((c) => this.publicAPI.objects.get(c)));
 | 
			
		||||
@@ -225,6 +241,13 @@ define([
 | 
			
		||||
        if (!skipMutate) {
 | 
			
		||||
            this.provider.remove(this.domainObject, child.identifier);
 | 
			
		||||
        } else {
 | 
			
		||||
            if (this.returnMutables && this.publicAPI.objects.isMutable(child)) {
 | 
			
		||||
                let keyString = this.publicAPI.objects.makeKeyString(child);
 | 
			
		||||
                if (this.mutables[keyString] !== undefined) {
 | 
			
		||||
                    this.mutables[keyString].$destroy();
 | 
			
		||||
                    delete this.mutables[keyString];
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            this.emit('remove', child);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
@@ -271,19 +294,6 @@ define([
 | 
			
		||||
        this.remove(child, true);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    CompositionCollection.prototype._synchronize = function () {
 | 
			
		||||
        this.mutationListener = this.publicAPI.objects.observe(this.domainObject, '*', (newDomainObject) => {
 | 
			
		||||
            this.domainObject = JSON.parse(JSON.stringify(newDomainObject));
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    CompositionCollection.prototype._destroy = function () {
 | 
			
		||||
        if (this.mutationListener) {
 | 
			
		||||
            this.mutationListener();
 | 
			
		||||
            delete this.mutationListener;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Emit events.
 | 
			
		||||
     * @private
 | 
			
		||||
@@ -298,5 +308,11 @@ define([
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    CompositionCollection.prototype.cleanUpMutables = function () {
 | 
			
		||||
        Object.values(this.mutables).forEach(mutable => {
 | 
			
		||||
            mutable.$destroy();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return CompositionCollection;
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										105
									
								
								src/api/objects/MutableDomainObject.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								src/api/objects/MutableDomainObject.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2019, 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
import _ from 'lodash';
 | 
			
		||||
import utils from './object-utils.js';
 | 
			
		||||
 | 
			
		||||
const ANY_OBJECT_EVENT = 'mutation';
 | 
			
		||||
 | 
			
		||||
class MutableDomainObject {
 | 
			
		||||
    constructor(eventEmitter) {
 | 
			
		||||
        Object.defineProperties(this, {
 | 
			
		||||
            _eventEmitter: {
 | 
			
		||||
                value: eventEmitter,
 | 
			
		||||
                // Property should not be serialized
 | 
			
		||||
                enumerable: false
 | 
			
		||||
            },
 | 
			
		||||
            _observers: {
 | 
			
		||||
                value: [],
 | 
			
		||||
                // Property should not be serialized
 | 
			
		||||
                enumerable: false
 | 
			
		||||
            },
 | 
			
		||||
            isMutable: {
 | 
			
		||||
                value: true,
 | 
			
		||||
                // Property should not be serialized
 | 
			
		||||
                enumerable: false
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    $observe(path, callback) {
 | 
			
		||||
        var fullPath = qualifiedEventName(this, path);
 | 
			
		||||
        var eventOff =
 | 
			
		||||
            this._eventEmitter.off.bind(this._eventEmitter, fullPath, callback);
 | 
			
		||||
 | 
			
		||||
        this._eventEmitter.on(fullPath, callback);
 | 
			
		||||
        this._observers.push(eventOff);
 | 
			
		||||
 | 
			
		||||
        return eventOff;
 | 
			
		||||
    }
 | 
			
		||||
    $set(path, value) {
 | 
			
		||||
        _.set(this, path, value);
 | 
			
		||||
        _.set(this, 'modified', Date.now());
 | 
			
		||||
 | 
			
		||||
        //Emit secret synchronization event first, so that all objects are in sync before subsequent events fired.
 | 
			
		||||
        this._eventEmitter.emit(qualifiedEventName(this, '$_synchronize_model'), this);
 | 
			
		||||
 | 
			
		||||
        //Emit a general "any object" event
 | 
			
		||||
        this._eventEmitter.emit(ANY_OBJECT_EVENT, this);
 | 
			
		||||
        //Emit wildcard event, with path so that callback knows what changed
 | 
			
		||||
        this._eventEmitter.emit(qualifiedEventName(this, '*'), this, path, value);
 | 
			
		||||
 | 
			
		||||
        //Emit events specific to properties affected
 | 
			
		||||
        let parentPropertiesList = path.split('.');
 | 
			
		||||
        for (let index = parentPropertiesList.length; index > 0; index--) {
 | 
			
		||||
            let parentPropertyPath = parentPropertiesList.slice(0, index).join('.');
 | 
			
		||||
            this._eventEmitter.emit(qualifiedEventName(this, parentPropertyPath), _.get(this, parentPropertyPath));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //TODO: Emit events for listeners of child properties when parent changes.
 | 
			
		||||
        // Do it at observer time - also register observers for parent attribute path.
 | 
			
		||||
    }
 | 
			
		||||
    $destroy() {
 | 
			
		||||
        this._observers.forEach(observer => observer());
 | 
			
		||||
        delete this._eventEmitter;
 | 
			
		||||
        delete this._observers;
 | 
			
		||||
        this._eventEmitter.emit(qualifiedEventName(this, '$_destroy'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static createMutable(object, mutationTopic) {
 | 
			
		||||
        let mutable = Object.create(new MutableDomainObject(mutationTopic));
 | 
			
		||||
        Object.assign(mutable, object);
 | 
			
		||||
        mutable.$observe('$_synchronize_model', (updatedObject) => {
 | 
			
		||||
            let clone = JSON.parse(JSON.stringify(updatedObject));
 | 
			
		||||
            let deleted = _.difference(Object.keys(updatedObject), Object.keys(updatedObject));
 | 
			
		||||
            deleted.forEach((propertyName) => delete mutable[propertyName]);
 | 
			
		||||
            Object.assign(mutable, clone);
 | 
			
		||||
        })
 | 
			
		||||
        return mutable;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function qualifiedEventName(object, eventName) {
 | 
			
		||||
    var keystring = utils.makeKeyString(object.identifier);
 | 
			
		||||
 | 
			
		||||
    return [keystring, eventName].join(':');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default MutableDomainObject;
 | 
			
		||||
@@ -1,102 +0,0 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2018, 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([
 | 
			
		||||
    './object-utils.js',
 | 
			
		||||
    'lodash'
 | 
			
		||||
], function (
 | 
			
		||||
    utils,
 | 
			
		||||
    _
 | 
			
		||||
) {
 | 
			
		||||
    var ANY_OBJECT_EVENT = "mutation";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The MutableObject wraps a DomainObject and provides getters and
 | 
			
		||||
     * setters for
 | 
			
		||||
     * @param eventEmitter
 | 
			
		||||
     * @param object
 | 
			
		||||
     * @interface MutableObject
 | 
			
		||||
     */
 | 
			
		||||
    function MutableObject(eventEmitter, object) {
 | 
			
		||||
        this.eventEmitter = eventEmitter;
 | 
			
		||||
        this.object = object;
 | 
			
		||||
        this.unlisteners = [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function qualifiedEventName(object, eventName) {
 | 
			
		||||
        var keystring = utils.makeKeyString(object.identifier);
 | 
			
		||||
 | 
			
		||||
        return [keystring, eventName].join(':');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    MutableObject.prototype.stopListening = function () {
 | 
			
		||||
        this.unlisteners.forEach(function (unlisten) {
 | 
			
		||||
            unlisten();
 | 
			
		||||
        });
 | 
			
		||||
        this.unlisteners = [];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Observe changes to this domain object.
 | 
			
		||||
     * @param {string} path the property to observe
 | 
			
		||||
     * @param {Function} callback a callback to invoke when new values for
 | 
			
		||||
     *        this property are observed
 | 
			
		||||
     * @method on
 | 
			
		||||
     * @memberof module:openmct.MutableObject#
 | 
			
		||||
     */
 | 
			
		||||
    MutableObject.prototype.on = function (path, callback) {
 | 
			
		||||
        var fullPath = qualifiedEventName(this.object, path);
 | 
			
		||||
        var eventOff =
 | 
			
		||||
            this.eventEmitter.off.bind(this.eventEmitter, fullPath, callback);
 | 
			
		||||
 | 
			
		||||
        this.eventEmitter.on(fullPath, callback);
 | 
			
		||||
        this.unlisteners.push(eventOff);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Modify this domain object.
 | 
			
		||||
     * @param {string} path the property to modify
 | 
			
		||||
     * @param {*} value the new value for this property
 | 
			
		||||
     * @method set
 | 
			
		||||
     * @memberof module:openmct.MutableObject#
 | 
			
		||||
     */
 | 
			
		||||
    MutableObject.prototype.set = function (path, value) {
 | 
			
		||||
        _.set(this.object, path, value);
 | 
			
		||||
        _.set(this.object, 'modified', Date.now());
 | 
			
		||||
 | 
			
		||||
        var handleRecursiveMutation = function (newObject) {
 | 
			
		||||
            this.object = newObject;
 | 
			
		||||
        }.bind(this);
 | 
			
		||||
 | 
			
		||||
        //Emit wildcard event
 | 
			
		||||
        this.eventEmitter.emit(qualifiedEventName(this.object, '*'), this.object);
 | 
			
		||||
        //Emit a general "any object" event
 | 
			
		||||
        this.eventEmitter.emit(ANY_OBJECT_EVENT, this.object);
 | 
			
		||||
 | 
			
		||||
        this.eventEmitter.on(qualifiedEventName(this.object, '*'), handleRecursiveMutation);
 | 
			
		||||
        //Emit event specific to property
 | 
			
		||||
        this.eventEmitter.emit(qualifiedEventName(this.object, path), value);
 | 
			
		||||
        this.eventEmitter.off(qualifiedEventName(this.object, '*'), handleRecursiveMutation);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return MutableObject;
 | 
			
		||||
});
 | 
			
		||||
@@ -23,14 +23,14 @@
 | 
			
		||||
define([
 | 
			
		||||
    'lodash',
 | 
			
		||||
    './object-utils',
 | 
			
		||||
    './MutableObject',
 | 
			
		||||
    './MutableDomainObject',
 | 
			
		||||
    './RootRegistry',
 | 
			
		||||
    './RootObjectProvider',
 | 
			
		||||
    'EventEmitter'
 | 
			
		||||
], function (
 | 
			
		||||
    _,
 | 
			
		||||
    utils,
 | 
			
		||||
    MutableObject,
 | 
			
		||||
    MutableDomainObject,
 | 
			
		||||
    RootRegistry,
 | 
			
		||||
    RootObjectProvider,
 | 
			
		||||
    EventEmitter
 | 
			
		||||
@@ -43,7 +43,8 @@ define([
 | 
			
		||||
     * @memberof module:openmct
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    function ObjectAPI() {
 | 
			
		||||
    function ObjectAPI(typeRegistry) {
 | 
			
		||||
        this.typeRegistry = typeRegistry;
 | 
			
		||||
        this.eventEmitter = new EventEmitter();
 | 
			
		||||
        this.providers = {};
 | 
			
		||||
        this.rootRegistry = new RootRegistry();
 | 
			
		||||
@@ -157,6 +158,19 @@ define([
 | 
			
		||||
        return provider.get(identifier);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Will fetch object, returning it as a MutableDomainObject IF the object is mutable.
 | 
			
		||||
     */
 | 
			
		||||
    ObjectAPI.prototype.getAsMutable = function (identifier) {
 | 
			
		||||
        return this.get(identifier).then((object) => {
 | 
			
		||||
            if (this.isMutable(object)) {
 | 
			
		||||
                return this.mutable(object);
 | 
			
		||||
            } else {
 | 
			
		||||
                return object;
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ObjectAPI.prototype.delete = function () {
 | 
			
		||||
        throw new Error('Delete not implemented');
 | 
			
		||||
    };
 | 
			
		||||
@@ -177,6 +191,20 @@ define([
 | 
			
		||||
        this.rootRegistry.addRoot(key);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    ObjectAPI.prototype.mutable = function (object) {
 | 
			
		||||
        if (!this.isMutable) {
 | 
			
		||||
            throw `Error: Attempted to create mutable from immutable object ${object.name}`;
 | 
			
		||||
        }
 | 
			
		||||
        return MutableDomainObject.default.createMutable(object, this.eventEmitter);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ObjectAPI.prototype.isMutable = function (object) {
 | 
			
		||||
        // Checking for mutability is a bit broken right now. This is an 80% solution,
 | 
			
		||||
        // but does not work in many cases.
 | 
			
		||||
        const type = this.typeRegistry.get(object.type);
 | 
			
		||||
        return type && type.definition.creatable === true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Modify a domain object.
 | 
			
		||||
     * @param {module:openmct.DomainObject} object the object to mutate
 | 
			
		||||
@@ -186,9 +214,17 @@ define([
 | 
			
		||||
     * @memberof module:openmct.ObjectAPI#
 | 
			
		||||
     */
 | 
			
		||||
    ObjectAPI.prototype.mutate = function (domainObject, path, value) {
 | 
			
		||||
        var mutableObject =
 | 
			
		||||
            new MutableObject(this.eventEmitter, domainObject);
 | 
			
		||||
        return mutableObject.set(path, value);
 | 
			
		||||
        if (!this.isMutable(domainObject)) {
 | 
			
		||||
            throw `Error: Attempted to mutate immutable object ${domainObject.name}`;
 | 
			
		||||
        }
 | 
			
		||||
        console.warn('DEPRECATION WARNING: The .mutate() function in the Object API is now deprecated. Please use mutable() ');
 | 
			
		||||
        if (domainObject instanceof MutableDomainObject.default) {
 | 
			
		||||
            domainObject.$set(path, value);
 | 
			
		||||
        } else {
 | 
			
		||||
            let mutable = this.mutable(domainObject);
 | 
			
		||||
            mutable.$set(path, value);
 | 
			
		||||
            mutable.$destroy();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -201,10 +237,14 @@ define([
 | 
			
		||||
     * @memberof module:openmct.ObjectAPI#
 | 
			
		||||
     */
 | 
			
		||||
    ObjectAPI.prototype.observe = function (domainObject, path, callback) {
 | 
			
		||||
        var mutableObject =
 | 
			
		||||
            new MutableObject(this.eventEmitter, domainObject);
 | 
			
		||||
        mutableObject.on(path, callback);
 | 
			
		||||
        return mutableObject.stopListening.bind(mutableObject);
 | 
			
		||||
        console.warn('DEPRECATION WARNING: The .observe() function in the Object API is now deprecated. Please use mutable() ');
 | 
			
		||||
        if (domainObject instanceof MutableDomainObject.default) {
 | 
			
		||||
            return domainObject.$observe(path, callback);
 | 
			
		||||
        } else {
 | 
			
		||||
            let mutable = this.mutable(domainObject);
 | 
			
		||||
            mutable.$observe(path, callback);
 | 
			
		||||
            return () => mutable.$destroy();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										121
									
								
								src/api/objects/ObjectAPISpec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								src/api/objects/ObjectAPISpec.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2019, 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([
 | 
			
		||||
    './ObjectAPI'
 | 
			
		||||
], function (
 | 
			
		||||
    ObjectAPI
 | 
			
		||||
) {
 | 
			
		||||
    fdescribe('The Object API', function () {
 | 
			
		||||
        describe('Mutable Object', function () {
 | 
			
		||||
            let testObject;
 | 
			
		||||
            let mutable;
 | 
			
		||||
            let objectAPI;
 | 
			
		||||
 | 
			
		||||
            beforeEach(function () {
 | 
			
		||||
                objectAPI = new ObjectAPI();
 | 
			
		||||
                testObject = {
 | 
			
		||||
                    identifier: {
 | 
			
		||||
                        namespace: 'test-namespace',
 | 
			
		||||
                        key: 'test-key'
 | 
			
		||||
                    },
 | 
			
		||||
                    otherAttribute: 'other-attribute-value',
 | 
			
		||||
                    objectAttribute: {
 | 
			
		||||
                        embeddedObject: {
 | 
			
		||||
                            embeddedKey: 'embedded-value'
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                };
 | 
			
		||||
                mutable = objectAPI.mutable(testObject);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it('retains own properties', function () {
 | 
			
		||||
                expect(mutable.hasOwnProperty('identifier')).toBe(true);
 | 
			
		||||
                expect(mutable.hasOwnProperty('otherAttribute')).toBe(true);
 | 
			
		||||
                expect(mutable.identifier).toEqual(testObject.identifier);
 | 
			
		||||
                expect(mutable.otherAttribute).toEqual(testObject.otherAttribute);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it('is identical to original object when serialized', function () {
 | 
			
		||||
                expect(JSON.stringify(mutable)).toEqual(JSON.stringify(testObject));
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it('is identical to original object when serialized', function () {
 | 
			
		||||
                expect(JSON.stringify(mutable)).toEqual(JSON.stringify(testObject));
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            describe('uses events', function () {
 | 
			
		||||
                let testObjectDuplicate;
 | 
			
		||||
                let mutableSecondInstance;
 | 
			
		||||
 | 
			
		||||
                beforeEach(function () {
 | 
			
		||||
                    // Duplicate object to guarantee we are not sharing object instance, which would invalidate test
 | 
			
		||||
                    testObjectDuplicate = JSON.parse(JSON.stringify(testObject));
 | 
			
		||||
                    mutableSecondInstance = objectAPI.mutable(testObjectDuplicate);
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                it('to stay synchronized when mutated', function () {
 | 
			
		||||
                    mutable.$set('otherAttribute', 'new-attribute-value');
 | 
			
		||||
                    expect(mutableSecondInstance.otherAttribute).toBe('new-attribute-value');
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                it('to indicate when a property changes', function () {
 | 
			
		||||
                    let mutationCallback = jasmine.createSpy('mutation-callback');
 | 
			
		||||
 | 
			
		||||
                    return new Promise(function (resolve) {
 | 
			
		||||
                        mutationCallback.and.callFake(resolve);
 | 
			
		||||
                        mutableSecondInstance.observe('otherAttribute', mutationCallback);
 | 
			
		||||
                        mutable.$set('otherAttribute', 'some-new-value')
 | 
			
		||||
                    }).then(function () {
 | 
			
		||||
                        expect(mutationCallback).toHaveBeenCalledWith('some-new-value');
 | 
			
		||||
                    });
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                it('to indicate when a child property has changed', function () {
 | 
			
		||||
                    let embeddedKeyCallback = jasmine.createSpy('embeddedKeyCallback');
 | 
			
		||||
                    let embeddedObjectCallback = jasmine.createSpy('embeddedObjectCallback');
 | 
			
		||||
                    let objectAttributeCallback = jasmine.createSpy('objectAttribute');
 | 
			
		||||
 | 
			
		||||
                    return new Promise(function (resolve) {
 | 
			
		||||
                        objectAttributeCallback.and.callFake(resolve);
 | 
			
		||||
 | 
			
		||||
                        mutableSecondInstance.observe('objectAttribute.embeddedObject.embeddedKey', embeddedKeyCallback);
 | 
			
		||||
                        mutableSecondInstance.observe('objectAttribute.embeddedObject', embeddedObjectCallback);
 | 
			
		||||
                        mutableSecondInstance.observe('objectAttribute', objectAttributeCallback);
 | 
			
		||||
 | 
			
		||||
                        mutable.$set('objectAttribute.embeddedObject.embeddedKey', 'updated-embedded-value');
 | 
			
		||||
                    }).then(function () {
 | 
			
		||||
                        expect(embeddedKeyCallback).toHaveBeenCalledWith('updated-embedded-value');
 | 
			
		||||
                        expect(embeddedObjectCallback).toHaveBeenCalledWith({
 | 
			
		||||
                            embeddedKey: 'updated-embedded-value'
 | 
			
		||||
                        });
 | 
			
		||||
                        expect(objectAttributeCallback).toHaveBeenCalledWith({
 | 
			
		||||
                            embeddedObject: {
 | 
			
		||||
                                embeddedKey: 'updated-embedded-value'
 | 
			
		||||
                            }
 | 
			
		||||
                        });
 | 
			
		||||
                    });
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    })
 | 
			
		||||
});
 | 
			
		||||
@@ -19,41 +19,10 @@
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
const DEFAULTS = [
 | 
			
		||||
    'src/adapter',
 | 
			
		||||
    'platform/framework',
 | 
			
		||||
    'platform/core',
 | 
			
		||||
    'platform/representation',
 | 
			
		||||
    'platform/commonUI/about',
 | 
			
		||||
    'platform/commonUI/browse',
 | 
			
		||||
    'platform/commonUI/edit',
 | 
			
		||||
    'platform/commonUI/dialog',
 | 
			
		||||
    'platform/commonUI/formats',
 | 
			
		||||
    'platform/commonUI/general',
 | 
			
		||||
    'platform/commonUI/inspect',
 | 
			
		||||
    'platform/commonUI/mobile',
 | 
			
		||||
    'platform/commonUI/notification',
 | 
			
		||||
    'platform/containment',
 | 
			
		||||
    'platform/execution',
 | 
			
		||||
    'platform/exporters',
 | 
			
		||||
    'platform/telemetry',
 | 
			
		||||
    'platform/features/clock',
 | 
			
		||||
    'platform/features/imagery',
 | 
			
		||||
    'platform/features/pages',
 | 
			
		||||
    'platform/features/hyperlink',
 | 
			
		||||
    'platform/features/timeline',
 | 
			
		||||
    'platform/forms',
 | 
			
		||||
    'platform/identity',
 | 
			
		||||
    'platform/persistence/aggregator',
 | 
			
		||||
    'platform/persistence/queue',
 | 
			
		||||
    'platform/policy',
 | 
			
		||||
    'platform/entanglement',
 | 
			
		||||
    'platform/search',
 | 
			
		||||
    'platform/status',
 | 
			
		||||
    'platform/commonUI/regions'
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    'legacyRegistry',
 | 
			
		||||
 | 
			
		||||
    '../src/adapter/bundle',
 | 
			
		||||
 | 
			
		||||
    '../example/eventGenerator/bundle',
 | 
			
		||||
@@ -105,23 +74,45 @@ define([
 | 
			
		||||
    '../platform/search/bundle',
 | 
			
		||||
    '../platform/status/bundle',
 | 
			
		||||
    '../platform/telemetry/bundle'
 | 
			
		||||
], function () {
 | 
			
		||||
    const LEGACY_BUNDLES = Array.from(arguments);
 | 
			
		||||
], function (legacyRegistry) {
 | 
			
		||||
 | 
			
		||||
    return function installDefaultBundles(bundleRegistry) {
 | 
			
		||||
        registerLegacyBundles(LEGACY_BUNDLES);
 | 
			
		||||
        enableDefaultBundles();
 | 
			
		||||
    var DEFAULTS = [
 | 
			
		||||
        'src/adapter',
 | 
			
		||||
        'platform/framework',
 | 
			
		||||
        'platform/core',
 | 
			
		||||
        'platform/representation',
 | 
			
		||||
        'platform/commonUI/about',
 | 
			
		||||
        'platform/commonUI/browse',
 | 
			
		||||
        'platform/commonUI/edit',
 | 
			
		||||
        'platform/commonUI/dialog',
 | 
			
		||||
        'platform/commonUI/formats',
 | 
			
		||||
        'platform/commonUI/general',
 | 
			
		||||
        'platform/commonUI/inspect',
 | 
			
		||||
        'platform/commonUI/mobile',
 | 
			
		||||
        'platform/commonUI/notification',
 | 
			
		||||
        'platform/containment',
 | 
			
		||||
        'platform/execution',
 | 
			
		||||
        'platform/exporters',
 | 
			
		||||
        'platform/telemetry',
 | 
			
		||||
        'platform/features/clock',
 | 
			
		||||
        'platform/features/imagery',
 | 
			
		||||
        'platform/features/pages',
 | 
			
		||||
        'platform/features/hyperlink',
 | 
			
		||||
        'platform/features/timeline',
 | 
			
		||||
        'platform/forms',
 | 
			
		||||
        'platform/identity',
 | 
			
		||||
        'platform/persistence/aggregator',
 | 
			
		||||
        'platform/persistence/queue',
 | 
			
		||||
        'platform/policy',
 | 
			
		||||
        'platform/entanglement',
 | 
			
		||||
        'platform/search',
 | 
			
		||||
        'platform/status',
 | 
			
		||||
        'platform/commonUI/regions'
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
        function registerLegacyBundles(bundles) {
 | 
			
		||||
            bundles.forEach((bundle, i) => {
 | 
			
		||||
                bundleRegistry.register(bundle.name, bundle.definition);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    DEFAULTS.forEach(function (bundlePath) {
 | 
			
		||||
        legacyRegistry.enable(bundlePath);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
        function enableDefaultBundles() {
 | 
			
		||||
            DEFAULTS.forEach(function (bundlePath) {
 | 
			
		||||
                bundleRegistry.enable(bundlePath);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return legacyRegistry;
 | 
			
		||||
});
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
    <tr @contextmenu.prevent="showContextMenu">
 | 
			
		||||
        <td>{{name}}</td>
 | 
			
		||||
        <td>{{domainObject.name}}</td>
 | 
			
		||||
        <td>{{timestamp}}</td>
 | 
			
		||||
        <td :class="valueClass">
 | 
			
		||||
            {{value}}
 | 
			
		||||
@@ -50,7 +50,6 @@ export default {
 | 
			
		||||
        currentObjectPath.unshift(this.domainObject);
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            name: this.domainObject.name,
 | 
			
		||||
            timestamp: '---',
 | 
			
		||||
            value: '---',
 | 
			
		||||
            valueClass: '',
 | 
			
		||||
@@ -70,9 +69,6 @@ export default {
 | 
			
		||||
                this.valueClass = '';
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        updateName(name){
 | 
			
		||||
            this.name = name;
 | 
			
		||||
        },
 | 
			
		||||
        updateTimeSystem(timeSystem) {
 | 
			
		||||
            this.value = '---';
 | 
			
		||||
            this.timestamp = '---';
 | 
			
		||||
@@ -98,14 +94,6 @@ export default {
 | 
			
		||||
            .telemetry
 | 
			
		||||
            .limitEvaluator(this.domainObject);
 | 
			
		||||
 | 
			
		||||
        this.stopWatchingMutation = openmct
 | 
			
		||||
            .objects
 | 
			
		||||
            .observe(
 | 
			
		||||
                this.domainObject,
 | 
			
		||||
                '*',
 | 
			
		||||
                this.updateName
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        this.openmct.time.on('timeSystem', this.updateTimeSystem);
 | 
			
		||||
 | 
			
		||||
        this.timestampKey = this.openmct.time.timeSystem().key;
 | 
			
		||||
@@ -126,7 +114,6 @@ export default {
 | 
			
		||||
            .then((array) => this.updateValues(array[array.length - 1]));
 | 
			
		||||
    },
 | 
			
		||||
    destroyed() {
 | 
			
		||||
        this.stopWatchingMutation();
 | 
			
		||||
        this.unsubscribe();
 | 
			
		||||
        this.openmct.off('timeSystem', this.updateTimeSystem);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -176,9 +176,8 @@
 | 
			
		||||
 | 
			
		||||
    export default {
 | 
			
		||||
        data() {
 | 
			
		||||
            let domainObject = JSON.parse(JSON.stringify(this.domainObject));
 | 
			
		||||
            return {
 | 
			
		||||
                internalDomainObject: domainObject,
 | 
			
		||||
                internalDomainObject: this.domainObject,
 | 
			
		||||
                initSelectIndex: undefined,
 | 
			
		||||
                selection: []
 | 
			
		||||
            };
 | 
			
		||||
@@ -566,9 +565,6 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        mounted() {
 | 
			
		||||
            this.unlisten = this.openmct.objects.observe(this.internalDomainObject, '*', function (obj) {
 | 
			
		||||
                this.internalDomainObject = JSON.parse(JSON.stringify(obj));
 | 
			
		||||
            }.bind(this));
 | 
			
		||||
            this.openmct.selection.on('change', this.setSelection);
 | 
			
		||||
            this.initializeItems();
 | 
			
		||||
            this.composition = this.openmct.composition.get(this.internalDomainObject);
 | 
			
		||||
@@ -580,7 +576,6 @@
 | 
			
		||||
            this.openmct.selection.off('change', this.setSelection);
 | 
			
		||||
            this.composition.off('add', this.addChild);
 | 
			
		||||
            this.composition.off('remove', this.removeChild);
 | 
			
		||||
            this.unlisten();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -113,10 +113,13 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        mounted() {
 | 
			
		||||
            this.openmct.objects.get(this.item.identifier)
 | 
			
		||||
            this.openmct.objects.getAsMutable(this.item.identifier)
 | 
			
		||||
                .then(this.setObject);
 | 
			
		||||
        },
 | 
			
		||||
        destroyed() {
 | 
			
		||||
            if (this.domainObject.$destroy) {
 | 
			
		||||
                this.domainObject.$destroy();
 | 
			
		||||
            }
 | 
			
		||||
            if (this.removeSelectable) {
 | 
			
		||||
                this.removeSelectable();
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -248,12 +248,13 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        mounted() {
 | 
			
		||||
            this.openmct.objects.get(this.item.identifier)
 | 
			
		||||
            this.openmct.objects.getAsMutable(this.item.identifier)
 | 
			
		||||
                .then(this.setObject);
 | 
			
		||||
            this.openmct.time.on("bounds", this.refreshData);
 | 
			
		||||
        },
 | 
			
		||||
        destroyed() {
 | 
			
		||||
            this.removeSubscription();
 | 
			
		||||
            this.domainObject.$destroy();
 | 
			
		||||
 | 
			
		||||
            if (this.removeSelectable) {
 | 
			
		||||
                this.removeSelectable();
 | 
			
		||||
 
 | 
			
		||||
@@ -152,24 +152,25 @@
 | 
			
		||||
            },
 | 
			
		||||
            getGlobalFiltersToRemove(keyString) {
 | 
			
		||||
                let filtersToRemove = new Set();
 | 
			
		||||
                if (this.children[keyString]){
 | 
			
		||||
                    this.children[keyString].metadataWithFilters.forEach(metadatum => {
 | 
			
		||||
                        let keepFilter = false
 | 
			
		||||
                        Object.keys(this.children).forEach(childKeyString => {
 | 
			
		||||
                            if (childKeyString !== keyString) {
 | 
			
		||||
                                let filterMatched = this.children[childKeyString].metadataWithFilters.some(childMetadatum => childMetadatum.key === metadatum.key);
 | 
			
		||||
 | 
			
		||||
                this.children[keyString].metadataWithFilters.forEach(metadatum => {
 | 
			
		||||
                    let keepFilter = false
 | 
			
		||||
                    Object.keys(this.children).forEach(childKeyString => {
 | 
			
		||||
                        if (childKeyString !== keyString) {
 | 
			
		||||
                            let filterMatched = this.children[childKeyString].metadataWithFilters.some(childMetadatum => childMetadatum.key === metadatum.key);
 | 
			
		||||
 | 
			
		||||
                            if (filterMatched) {
 | 
			
		||||
                                keepFilter = true;
 | 
			
		||||
                                return;
 | 
			
		||||
                                if (filterMatched) {
 | 
			
		||||
                                    keepFilter = true;
 | 
			
		||||
                                    return;
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
                        if (!keepFilter) {
 | 
			
		||||
                            filtersToRemove.add(metadatum.key);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                    if (!keepFilter) {
 | 
			
		||||
                        filtersToRemove.add(metadatum.key);
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return Array.from(filtersToRemove);
 | 
			
		||||
            },
 | 
			
		||||
@@ -234,16 +235,14 @@
 | 
			
		||||
            this.composition.on('add', this.addChildren);
 | 
			
		||||
            this.composition.on('remove', this.removeChildren);
 | 
			
		||||
            this.composition.load();
 | 
			
		||||
            this.unobserve = this.openmct.objects.observe(this.providedObject, 'configuration.filters', this.updatePersistedFilters);
 | 
			
		||||
            this.unobserveGlobalFilters = this.openmct.objects.observe(this.providedObject, 'configuration.globalFilters', this.updateGlobalFilters);
 | 
			
		||||
            this.unobserveAllMutation = this.openmct.objects.observe(this.providedObject, '*', (mutatedObject) => this.providedObject = mutatedObject);
 | 
			
		||||
            this.unobserve = this.providedObject.$observe(this.providedObject, 'configuration.filters', this.updatePersistedFilters);
 | 
			
		||||
            this.unobserveGlobalFilters = this.providedObject.$observe(this.providedObject, 'configuration.globalFilters', this.updateGlobalFilters);
 | 
			
		||||
        },
 | 
			
		||||
        beforeDestroy() {
 | 
			
		||||
            this.composition.off('add', this.addChildren);
 | 
			
		||||
            this.composition.off('remove', this.removeChildren);
 | 
			
		||||
            this.unobserve();
 | 
			
		||||
            this.unobserveGlobalFilters();
 | 
			
		||||
            this.unobserveAllMutation();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -629,9 +629,6 @@ export default {
 | 
			
		||||
                return size;
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        updateDomainObject(newDomainObject) {
 | 
			
		||||
            this.domainObject = newDomainObject;
 | 
			
		||||
        },
 | 
			
		||||
        moveContainer(toIndex, event) {
 | 
			
		||||
            let containerId = event.dataTransfer.getData('containerid');
 | 
			
		||||
            let container = this.containers.filter(c => c.id === containerId)[0];
 | 
			
		||||
@@ -664,14 +661,10 @@ export default {
 | 
			
		||||
        this.composition.on('add', this.addFrame);
 | 
			
		||||
 | 
			
		||||
        this.RemoveAction = new RemoveAction(this.openmct);
 | 
			
		||||
 | 
			
		||||
        this.unobserve = this.openmct.objects.observe(this.domainObject, '*', this.updateDomainObject);
 | 
			
		||||
    },
 | 
			
		||||
    beforeDestroy() {
 | 
			
		||||
        this.composition.off('remove', this.removeChildObject);
 | 
			
		||||
        this.composition.off('add', this.addFrame);
 | 
			
		||||
 | 
			
		||||
        this.unobserve();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -108,7 +108,7 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    mounted() {
 | 
			
		||||
        if (this.frame.domainObjectIdentifier) {
 | 
			
		||||
            this.openmct.objects.get(this.frame.domainObjectIdentifier).then((object)=>{
 | 
			
		||||
            this.openmct.objects.getAsMutable(this.frame.domainObjectIdentifier).then((object)=>{
 | 
			
		||||
                this.setDomainObject(object);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
@@ -116,6 +116,10 @@ export default {
 | 
			
		||||
        this.dragGhost = document.getElementById('js-fl-drag-ghost');
 | 
			
		||||
    },
 | 
			
		||||
    beforeDestroy() {
 | 
			
		||||
        if (this.domainObject.$destroy) {
 | 
			
		||||
            this.domainObject.$destroy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (this.unsubscribeSelection) {
 | 
			
		||||
            this.unsubscribeSelection();
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -34,11 +34,8 @@ define([
 | 
			
		||||
            this.columns = {};
 | 
			
		||||
 | 
			
		||||
            this.removeColumnsForObject = this.removeColumnsForObject.bind(this);
 | 
			
		||||
            this.objectMutated = this.objectMutated.bind(this);
 | 
			
		||||
            //Make copy of configuration, otherwise change detection is impossible if shared instance is being modified.
 | 
			
		||||
            this.oldConfiguration = JSON.parse(JSON.stringify(this.getConfiguration()));
 | 
			
		||||
 | 
			
		||||
            this.unlistenFromMutation = openmct.objects.observe(domainObject, '*', this.objectMutated);
 | 
			
		||||
            this.unlistenFromMutation = domainObject.$observe('configuration', configuration => this.updateListeners(configuration));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        getConfiguration() {
 | 
			
		||||
@@ -60,15 +57,8 @@ define([
 | 
			
		||||
         * @private
 | 
			
		||||
         * @param {*} object
 | 
			
		||||
         */
 | 
			
		||||
        objectMutated(object) {
 | 
			
		||||
            //Synchronize domain object reference. Duplicate object otherwise change detection becomes impossible.
 | 
			
		||||
            this.domainObject = object;
 | 
			
		||||
            //Was it the configuration that changed?
 | 
			
		||||
            if (object.configuration !== undefined && !_.eq(object.configuration, this.oldConfiguration)) {
 | 
			
		||||
                //Make copy of configuration, otherwise change detection is impossible if shared instance is being modified.
 | 
			
		||||
                this.oldConfiguration = JSON.parse(JSON.stringify(this.getConfiguration()));
 | 
			
		||||
                this.emit('change', object.configuration);
 | 
			
		||||
            }
 | 
			
		||||
        updateListeners(configuration) {
 | 
			
		||||
            this.emit('change', configuration);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        addSingleColumnForObject(telemetryObject, column, position) {
 | 
			
		||||
 
 | 
			
		||||
@@ -822,7 +822,6 @@ export default {
 | 
			
		||||
        this.filterChanged = _.debounce(this.filterChanged, 500);
 | 
			
		||||
    },
 | 
			
		||||
    mounted() {
 | 
			
		||||
        console.log("Table mounted");
 | 
			
		||||
        this.csvExporter = new CSVExporter();
 | 
			
		||||
        this.rowsAdded = _.throttle(this.rowsAdded, 200);
 | 
			
		||||
        this.rowsRemoved = _.throttle(this.rowsRemoved, 200);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,197 +0,0 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2018, 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
import TablePlugin from './plugin.js';
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import {
 | 
			
		||||
    createOpenMct,
 | 
			
		||||
    createMouseEvent
 | 
			
		||||
} from 'testTools';
 | 
			
		||||
 | 
			
		||||
let openmct;
 | 
			
		||||
let tablePlugin;
 | 
			
		||||
let element;
 | 
			
		||||
let child;
 | 
			
		||||
 | 
			
		||||
describe("the plugin", () => {
 | 
			
		||||
    beforeEach((done) => {
 | 
			
		||||
        const appHolder = document.createElement('div');
 | 
			
		||||
        appHolder.style.width = '640px';
 | 
			
		||||
        appHolder.style.height = '480px';
 | 
			
		||||
 | 
			
		||||
        openmct = createOpenMct();
 | 
			
		||||
 | 
			
		||||
        element = document.createElement('div');
 | 
			
		||||
        child = document.createElement('div');
 | 
			
		||||
        element.appendChild(child);
 | 
			
		||||
 | 
			
		||||
        tablePlugin = new TablePlugin();
 | 
			
		||||
        openmct.install(tablePlugin);
 | 
			
		||||
 | 
			
		||||
        spyOn(openmct.telemetry, 'request').and.returnValue(Promise.resolve([]));
 | 
			
		||||
 | 
			
		||||
        openmct.on('start', done);
 | 
			
		||||
        openmct.start(appHolder);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it("provides a table view for objects with telemetry", () => {
 | 
			
		||||
        const testTelemetryObject = {
 | 
			
		||||
            id:"test-object",
 | 
			
		||||
            type: "test-object",
 | 
			
		||||
            telemetry: {
 | 
			
		||||
                values: [{
 | 
			
		||||
                    key: "utc"
 | 
			
		||||
                }]
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        const applicableViews = openmct.objectViews.get(testTelemetryObject);
 | 
			
		||||
        let tableView = applicableViews.find((viewProvider) => viewProvider.key === 'table');
 | 
			
		||||
        expect(tableView).toBeDefined();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    describe("The table view", () => {
 | 
			
		||||
        let testTelemetryObject;
 | 
			
		||||
        let applicableViews;
 | 
			
		||||
        let tableViewProvider;
 | 
			
		||||
        let tableView;
 | 
			
		||||
 | 
			
		||||
        beforeEach(() => {
 | 
			
		||||
            testTelemetryObject = {
 | 
			
		||||
                identifier:{ namespace: "", key: "test-object"},
 | 
			
		||||
                type: "test-object",
 | 
			
		||||
                name: "Test Object",
 | 
			
		||||
                telemetry: {
 | 
			
		||||
                    values: [{
 | 
			
		||||
                        key: "utc",
 | 
			
		||||
                        name: "Time attribute",
 | 
			
		||||
                        format: "utc",
 | 
			
		||||
                        hints: {
 | 
			
		||||
                            domain: 1
 | 
			
		||||
                        }
 | 
			
		||||
                    }, {
 | 
			
		||||
                        key: "some-other-key",
 | 
			
		||||
                        name: "Another attribute",
 | 
			
		||||
                        hints: {
 | 
			
		||||
                            range: 1
 | 
			
		||||
                        }
 | 
			
		||||
                    }]
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
            applicableViews = openmct.objectViews.get(testTelemetryObject);
 | 
			
		||||
            tableViewProvider = applicableViews.find((viewProvider) => viewProvider.key === 'table');
 | 
			
		||||
            tableView = tableViewProvider.view(testTelemetryObject, true, [testTelemetryObject]);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        describe("columns", () => {
 | 
			
		||||
            beforeEach(() => {
 | 
			
		||||
                tableView.show(child, true);
 | 
			
		||||
                return Vue.nextTick();
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("are rendered for every item in telemetry metadata",() => {
 | 
			
		||||
                let headers = element.querySelectorAll('span.c-telemetry-table__headers__label');
 | 
			
		||||
                expect(headers.length).toBe(2);
 | 
			
		||||
                expect(headers[0].innerText).toBe('Time attribute');
 | 
			
		||||
                expect(headers[1].innerText).toBe('Another attribute');
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("Supports reordering via drag and drop",() => {
 | 
			
		||||
                let columns = element.querySelectorAll('tr.c-telemetry-table__headers__labels th');
 | 
			
		||||
                let fromColumn = columns[0];
 | 
			
		||||
                let toColumn = columns[1];
 | 
			
		||||
                let fromColumnText = fromColumn.querySelector('span.c-telemetry-table__headers__label').innerText;
 | 
			
		||||
                let toColumnText = toColumn.querySelector('span.c-telemetry-table__headers__label').innerText;
 | 
			
		||||
 | 
			
		||||
                let dragStartEvent = createMouseEvent('dragstart');
 | 
			
		||||
                let dragOverEvent = createMouseEvent('dragover');
 | 
			
		||||
                let dropEvent = createMouseEvent('drop');
 | 
			
		||||
 | 
			
		||||
                dragStartEvent.dataTransfer =
 | 
			
		||||
                    dragOverEvent.dataTransfer =
 | 
			
		||||
                        dropEvent.dataTransfer = new DataTransfer();
 | 
			
		||||
 | 
			
		||||
                fromColumn.dispatchEvent(dragStartEvent);
 | 
			
		||||
                toColumn.dispatchEvent(dragOverEvent);
 | 
			
		||||
                toColumn.dispatchEvent(dropEvent);
 | 
			
		||||
 | 
			
		||||
                return Vue.nextTick().then(() => {
 | 
			
		||||
                    columns = element.querySelectorAll('tr.c-telemetry-table__headers__labels th');
 | 
			
		||||
                    let firstColumn = columns[0];
 | 
			
		||||
                    let secondColumn = columns[1];
 | 
			
		||||
                    let firstColumnText = firstColumn.querySelector('span.c-telemetry-table__headers__label').innerText;
 | 
			
		||||
                    let secondColumnText = secondColumn.querySelector('span.c-telemetry-table__headers__label').innerText;
 | 
			
		||||
 | 
			
		||||
                    expect(fromColumnText).not.toEqual(firstColumnText);
 | 
			
		||||
                    expect(fromColumnText).toEqual(secondColumnText);
 | 
			
		||||
                    expect(toColumnText).not.toEqual(secondColumnText);
 | 
			
		||||
                    expect(toColumnText).toEqual(firstColumnText);
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
            it("are ordered with domain column first",() => {
 | 
			
		||||
                let headers = element.querySelectorAll('span.c-telemetry-table__headers__label');
 | 
			
		||||
                expect(headers[0].innerText).toBe('Time attribute');
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        fit("Displays historical telemetry if within bounds", () => {
 | 
			
		||||
            return new Promise((resolve) => {
 | 
			
		||||
                openmct.telemetry.request.and.returnValue(new Promise((innerResolve) => {
 | 
			
		||||
                    resolve();
 | 
			
		||||
                    innerResolve([{
 | 
			
		||||
                        'utc': 10,
 | 
			
		||||
                        'some-other-key': 'Value 1'
 | 
			
		||||
                    }, {
 | 
			
		||||
                        'utc': 20,
 | 
			
		||||
                        'some-other-key': 'Value 1'
 | 
			
		||||
                    }, {
 | 
			
		||||
                        'utc': 30,
 | 
			
		||||
                        'some-other-key': 'Value 1'
 | 
			
		||||
                    }])
 | 
			
		||||
                }));
 | 
			
		||||
                tableView.show(child, true);
 | 
			
		||||
            }).then(Vue.nextTick).then(() => {
 | 
			
		||||
                let rows = element.querySelectorAll('table.c-telemetry-table__body tbody tr');
 | 
			
		||||
                expect(rows.length).toBe(3);
 | 
			
		||||
 | 
			
		||||
                /*let firstRow = rows[0];
 | 
			
		||||
                let firstRowCells = firstRow.querySelectorAll('td');
 | 
			
		||||
                let secondRow = rows[1];
 | 
			
		||||
                let secondRowCells = firstRow.querySelectorAll('td');
 | 
			
		||||
                let thirdRow = rows[2];
 | 
			
		||||
                let thirdRowCells = firstRow.querySelectorAll('td');*/
 | 
			
		||||
            })
 | 
			
		||||
        });
 | 
			
		||||
        /*
 | 
			
		||||
        it("Does not display historical telemetry if outside of bounds", () => {
 | 
			
		||||
            spyOn(openmct.telemetry, 'request').and.returnValue(Promise.resolve([{
 | 
			
		||||
                'utc': 10,
 | 
			
		||||
                'some-other-key': 'Value 1'
 | 
			
		||||
            },{
 | 
			
		||||
                'utc': 20,
 | 
			
		||||
                'some-other-key': 'Value 1'
 | 
			
		||||
            },{
 | 
			
		||||
                'utc': 101,
 | 
			
		||||
                'some-other-key': 'Value 1'
 | 
			
		||||
            }]));
 | 
			
		||||
        });*/
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@@ -23,11 +23,13 @@
 | 
			
		||||
define(
 | 
			
		||||
    [
 | 
			
		||||
        'EventEmitter',
 | 
			
		||||
        'lodash'
 | 
			
		||||
        'lodash',
 | 
			
		||||
        '../api/objects/MutableDomainObject.js'
 | 
			
		||||
    ],
 | 
			
		||||
    function (
 | 
			
		||||
        EventEmitter,
 | 
			
		||||
        _
 | 
			
		||||
        _,
 | 
			
		||||
        MutableDomainObject
 | 
			
		||||
    ) {
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
@@ -75,6 +77,10 @@ define(
 | 
			
		||||
                this.selected = [selectable];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (this.temporaryMutables) {
 | 
			
		||||
                this.temporaryMutables.forEach(mutable => mutable.$destroy());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            this.emit('change', this.selected);
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
@@ -218,27 +224,21 @@ define(
 | 
			
		||||
         * @public
 | 
			
		||||
         */
 | 
			
		||||
        Selection.prototype.selectable = function (element, context, select) {
 | 
			
		||||
            if (!this.isSelectable(element)) {
 | 
			
		||||
                return () => {};
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            let selectable = {
 | 
			
		||||
                context: context,
 | 
			
		||||
                element: element
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            if (!this.isSelectable(element)) {
 | 
			
		||||
                return () => {};
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var capture = this.capture.bind(this, selectable);
 | 
			
		||||
            var selectCapture = this.selectCapture.bind(this, selectable);
 | 
			
		||||
 | 
			
		||||
            element.addEventListener('click', capture, true);
 | 
			
		||||
            element.addEventListener('click', selectCapture);
 | 
			
		||||
 | 
			
		||||
            if (context.item) {
 | 
			
		||||
                var unlisten = this.openmct.objects.observe(context.item, "*", function (newItem) {
 | 
			
		||||
                    context.item = newItem;
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (select) {
 | 
			
		||||
                element.click();
 | 
			
		||||
            }
 | 
			
		||||
@@ -246,10 +246,6 @@ define(
 | 
			
		||||
            return function () {
 | 
			
		||||
                element.removeEventListener('click', capture, true);
 | 
			
		||||
                element.removeEventListener('click', selectCapture);
 | 
			
		||||
 | 
			
		||||
                if (unlisten) {
 | 
			
		||||
                    unlisten();
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -58,6 +58,8 @@ $plotYLabelMinH: 20px;
 | 
			
		||||
$plotYLabelW: 10px;
 | 
			
		||||
$plotXBarH: 35px;
 | 
			
		||||
$plotLegendH: 20px;
 | 
			
		||||
$plotLegendWidthCollapsed: 20%;
 | 
			
		||||
$plotLegendWidthExpanded: 50%;
 | 
			
		||||
$plotSwatchD: 8px;
 | 
			
		||||
$plotDisplayArea: (0, 0, $plotXBarH, $plotYBarW); // 1: Top, 2: right, 3: bottom, 4: left
 | 
			
		||||
$plotMinH: 95px;
 | 
			
		||||
 
 | 
			
		||||
@@ -78,7 +78,6 @@ mct-plot {
 | 
			
		||||
 | 
			
		||||
    /*********************** AXIS AND DISPLAY AREA */
 | 
			
		||||
    .plot-wrapper-axis-and-display-area {
 | 
			
		||||
        margin-top: $interiorMargin; // Keep the top tick label from getting clipped
 | 
			
		||||
        position: relative;
 | 
			
		||||
        flex: 1 1 auto;
 | 
			
		||||
 | 
			
		||||
@@ -460,13 +459,14 @@ mct-plot {
 | 
			
		||||
    &.plot-legend-collapsed .icon-cursor-lock::before { padding-right: 5px; }
 | 
			
		||||
    &.plot-legend-expanded .icon-cursor-lock::before { padding-right: 5px; }
 | 
			
		||||
 | 
			
		||||
    &.plot-legend-top .gl-plot-legend { margin-bottom: $interiorMargin; }
 | 
			
		||||
    &.plot-legend-bottom .gl-plot-legend { margin-top: $interiorMargin; }
 | 
			
		||||
    &.plot-legend-right .gl-plot-legend { margin-left: $interiorMargin; }
 | 
			
		||||
    &.plot-legend-left .gl-plot-legend { margin-right: $interiorMargin; }
 | 
			
		||||
 | 
			
		||||
    /***************** GENERAL STYLES, COLLAPSED */
 | 
			
		||||
    &.plot-legend-collapsed {
 | 
			
		||||
        // .plot-legend-item is a span of spans.
 | 
			
		||||
        &.plot-legend-top .gl-plot-legend { margin-bottom: $interiorMargin; }
 | 
			
		||||
        &.plot-legend-bottom .gl-plot-legend { margin-top: $interiorMargin; }
 | 
			
		||||
        &.plot-legend-right .gl-plot-legend { margin-left: $interiorMargin; }
 | 
			
		||||
        &.plot-legend-left .gl-plot-legend { margin-right: $interiorMargin; }
 | 
			
		||||
 | 
			
		||||
        .plot-legend-item {
 | 
			
		||||
            display: flex;
 | 
			
		||||
@@ -494,7 +494,7 @@ mct-plot {
 | 
			
		||||
    /***************** GENERAL STYLES, EXPANDED */
 | 
			
		||||
    &.plot-legend-expanded {
 | 
			
		||||
        .gl-plot-legend {
 | 
			
		||||
            max-height: 70%;
 | 
			
		||||
            // max-height: 70%;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .plot-wrapper-expanded-legend {
 | 
			
		||||
@@ -518,21 +518,27 @@ mct-plot {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /***************** EITHER SIDE */
 | 
			
		||||
    /***************** LEFT OR RIGHT */
 | 
			
		||||
    &.plot-legend-left,
 | 
			
		||||
    &.plot-legend-right {
 | 
			
		||||
        // If the legend is expanded, use flex-col instead so that the legend gets the width it needs.
 | 
			
		||||
        // General styles when legend is on left or right
 | 
			
		||||
        .gl-plot-legend {
 | 
			
		||||
            max-height: inherit;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.plot-legend-expanded {
 | 
			
		||||
            // EXPANDED, ON EITHER SIDE
 | 
			
		||||
            flex-direction: column;
 | 
			
		||||
            .gl-plot-legend {
 | 
			
		||||
                width: $plotLegendWidthExpanded;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.plot-legend-collapsed {
 | 
			
		||||
            // COLLAPSED, ON EITHER SIDE
 | 
			
		||||
            .gl-plot-legend {
 | 
			
		||||
                max-height: inherit;
 | 
			
		||||
                width: 25%;
 | 
			
		||||
                width: $plotLegendWidthCollapsed;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            .plot-wrapper-collapsed-legend {
 | 
			
		||||
                display: flex;
 | 
			
		||||
                flex-flow: column nowrap;
 | 
			
		||||
@@ -557,7 +563,7 @@ mct-plot {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /***************** ON BOTTOM OR RIGHT */
 | 
			
		||||
    &.plot-legend-right:not(.plot-legend-expanded),
 | 
			
		||||
    &.plot-legend-right,
 | 
			
		||||
    &.plot-legend-bottom {
 | 
			
		||||
        .gl-plot-legend {
 | 
			
		||||
            order: 2;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
import MCT from 'MCT';
 | 
			
		||||
 | 
			
		||||
export function createOpenMct() {
 | 
			
		||||
    const openmct = new MCT();
 | 
			
		||||
    openmct.install(openmct.plugins.LocalStorage());
 | 
			
		||||
    openmct.install(openmct.plugins.UTCTimeSystem());
 | 
			
		||||
    openmct.time.timeSystem('utc', {start: 0, end: 100});
 | 
			
		||||
 | 
			
		||||
    return openmct;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function createMouseEvent(eventName) {
 | 
			
		||||
    return new MouseEvent(eventName, {
 | 
			
		||||
        bubbles: true,
 | 
			
		||||
        cancelable: true,
 | 
			
		||||
        view: window
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
@@ -68,12 +68,6 @@ export default {
 | 
			
		||||
        };
 | 
			
		||||
    },
 | 
			
		||||
    mounted() {
 | 
			
		||||
        if (this.observedObject) {
 | 
			
		||||
            let removeListener = this.openmct.objects.observe(this.observedObject, '*', (newObject) => {
 | 
			
		||||
                this.observedObject = newObject;
 | 
			
		||||
            });
 | 
			
		||||
            this.$once('hook:destroyed', removeListener);
 | 
			
		||||
        }
 | 
			
		||||
        this.previewAction = new PreviewAction(this.openmct);
 | 
			
		||||
    },
 | 
			
		||||
    computed: {
 | 
			
		||||
 
 | 
			
		||||
@@ -59,10 +59,6 @@ export default {
 | 
			
		||||
                delete this.removeSelectable;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (this.composition) {
 | 
			
		||||
                this.composition._destroy();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            this.openmct.objectViews.off('clearData', this.clearData);
 | 
			
		||||
        },
 | 
			
		||||
        invokeEditModeHandler(editMode) {
 | 
			
		||||
@@ -80,7 +76,6 @@ export default {
 | 
			
		||||
            
 | 
			
		||||
            this.composition = this.openmct.composition.get(this.currentObject);
 | 
			
		||||
            if (this.composition) {
 | 
			
		||||
                this.composition._synchronize();
 | 
			
		||||
                this.loadComposition();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -130,20 +125,17 @@ export default {
 | 
			
		||||
                delete this.removeSelectable;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (this.composition) {
 | 
			
		||||
                this.composition._destroy();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            this.currentObject = object;
 | 
			
		||||
 | 
			
		||||
            this.composition = this.openmct.composition.get(this.currentObject);
 | 
			
		||||
            if (this.composition) {
 | 
			
		||||
                this.loadComposition();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (currentObjectPath) {
 | 
			
		||||
                this.currentObjectPath = currentObjectPath;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            this.unlisten = this.openmct.objects.observe(this.currentObject, '*', (mutatedObject) => {
 | 
			
		||||
                this.currentObject = mutatedObject;
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            this.viewKey = viewKey;
 | 
			
		||||
            this.updateView(immediatelySelect);
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
@@ -118,9 +118,6 @@ export default {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (this.parentObject) {
 | 
			
		||||
                this.mutationUnobserver = this.openmct.objects.observe(this.parentObject, '*', (updatedModel) => {
 | 
			
		||||
                    this.parentObject = updatedModel;
 | 
			
		||||
                });
 | 
			
		||||
                this.composition = this.openmct.composition.get(this.parentObject);
 | 
			
		||||
 | 
			
		||||
                if (this.composition) {
 | 
			
		||||
@@ -141,8 +138,7 @@ export default {
 | 
			
		||||
        },
 | 
			
		||||
        addElement(element) {
 | 
			
		||||
            let keyString = this.openmct.objects.makeKeyString(element.identifier);
 | 
			
		||||
            this.elementsCache[keyString] = 
 | 
			
		||||
                JSON.parse(JSON.stringify(element));
 | 
			
		||||
            this.elementsCache[keyString] = element;
 | 
			
		||||
            this.applySearch(this.currentSearch);
 | 
			
		||||
        },
 | 
			
		||||
        reorderElements() {
 | 
			
		||||
@@ -182,9 +178,6 @@ export default {
 | 
			
		||||
        this.openmct.editor.off('isEditing', this.setEditState);
 | 
			
		||||
        this.openmct.selection.off('change', this.showSelection);
 | 
			
		||||
 | 
			
		||||
        if (this.mutationUnobserver) {
 | 
			
		||||
            this.mutationUnobserver();
 | 
			
		||||
        }
 | 
			
		||||
        if (this.compositionUnlistener) {
 | 
			
		||||
            this.compositionUnlistener();
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -77,8 +77,9 @@ const PLACEHOLDER_OBJECT = {};
 | 
			
		||||
                this.showSaveMenu = false;
 | 
			
		||||
            },
 | 
			
		||||
            updateName(event) {
 | 
			
		||||
                // TODO: handle isssues with contenteditable text escaping.
 | 
			
		||||
                if (event.target.innerText !== this.domainObject.name && event.target.innerText.match(/\S/)) {
 | 
			
		||||
                    this.openmct.objects.mutate(this.domainObject, 'name', event.target.innerText);
 | 
			
		||||
                    this.domainObject.$set('name', event.target.innerText);
 | 
			
		||||
                } else {
 | 
			
		||||
                    event.target.innerText = this.domainObject.name;
 | 
			
		||||
                }
 | 
			
		||||
@@ -223,20 +224,7 @@ const PLACEHOLDER_OBJECT = {};
 | 
			
		||||
                this.isEditing = isEditing;
 | 
			
		||||
            });
 | 
			
		||||
        },
 | 
			
		||||
        watch: {
 | 
			
		||||
            domainObject() {
 | 
			
		||||
                if (this.mutationObserver) {
 | 
			
		||||
                    this.mutationObserver();
 | 
			
		||||
                }
 | 
			
		||||
                this.mutationObserver = this.openmct.objects.observe(this.domainObject, '*', (domainObject) => {
 | 
			
		||||
                    this.domainObject = domainObject;
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        beforeDestroy: function () {
 | 
			
		||||
            if (this.mutationObserver) {
 | 
			
		||||
                this.mutationObserver();
 | 
			
		||||
            }
 | 
			
		||||
            document.removeEventListener('click', this.closeViewAndSaveMenu);
 | 
			
		||||
            window.removeEventListener('click', this.promptUserbeforeNavigatingAway);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -207,6 +207,7 @@
 | 
			
		||||
            getAllChildren() {
 | 
			
		||||
                this.isLoading = true;
 | 
			
		||||
                this.openmct.objects.get('ROOT')
 | 
			
		||||
                    .then(root => this.openmct.objects.mutable(root))
 | 
			
		||||
                    .then(root => {
 | 
			
		||||
                        return this.openmct.composition.get(root).load()
 | 
			
		||||
                    })
 | 
			
		||||
@@ -223,8 +224,18 @@
 | 
			
		||||
                    });
 | 
			
		||||
            },
 | 
			
		||||
            getFilteredChildren() {
 | 
			
		||||
                if (this.filteredTreeItems) {
 | 
			
		||||
                    this.filteredTreeItems.forEach(filteredTreeItem => filteredTreeItem.destroy());
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                this.searchService.query(this.searchValue).then(children => {
 | 
			
		||||
                    this.filteredTreeItems = children.hits.map(child => {
 | 
			
		||||
                    this.filteredTreeItems = children.hits
 | 
			
		||||
                        .map(child => { 
 | 
			
		||||
                            if (this.openmct.objects.isMutable(child)) {
 | 
			
		||||
                                this.openmct.objects.mutable(child);
 | 
			
		||||
                            }
 | 
			
		||||
                        })
 | 
			
		||||
                        .map(child => {
 | 
			
		||||
                        
 | 
			
		||||
                        let context = child.object.getCapability('context'),
 | 
			
		||||
                            object = child.object.useCapability('adapter'),
 | 
			
		||||
 
 | 
			
		||||
@@ -66,11 +66,7 @@
 | 
			
		||||
            // TODO: set isAlias per tree-item
 | 
			
		||||
 | 
			
		||||
            this.domainObject = this.node.object;
 | 
			
		||||
            let removeListener = this.openmct.objects.observe(this.domainObject, '*', (newObject) => {
 | 
			
		||||
                this.domainObject = newObject;
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            this.$once('hook:destroyed', removeListener);
 | 
			
		||||
            if (this.openmct.composition.get(this.node.object)) {
 | 
			
		||||
                this.hasChildren = true;
 | 
			
		||||
            }
 | 
			
		||||
@@ -82,6 +78,7 @@
 | 
			
		||||
            if (this.composition) {
 | 
			
		||||
                this.composition.off('add', this.addChild);
 | 
			
		||||
                this.composition.off('remove', this.removeChild);
 | 
			
		||||
                this.children.forEach(child => child.object.$destroy());
 | 
			
		||||
                delete this.composition;
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
@@ -101,6 +98,9 @@
 | 
			
		||||
        },
 | 
			
		||||
        methods: {
 | 
			
		||||
            addChild (child) {
 | 
			
		||||
                if (this.openmct.objects.isMutable(child)) {
 | 
			
		||||
                    child = this.openmct.objects.mutable(child);
 | 
			
		||||
                }
 | 
			
		||||
                this.children.push({
 | 
			
		||||
                    id: this.openmct.objects.makeKeyString(child.identifier),
 | 
			
		||||
                    object: child,
 | 
			
		||||
@@ -110,8 +110,16 @@
 | 
			
		||||
            },
 | 
			
		||||
            removeChild(identifier) {
 | 
			
		||||
                let removeId = this.openmct.objects.makeKeyString(identifier);
 | 
			
		||||
                let removed = [];
 | 
			
		||||
                this.children = this.children
 | 
			
		||||
                    .filter(c => c.id !== removeId);
 | 
			
		||||
                    .filter(c => {
 | 
			
		||||
                        if(c.id !== removeId) {
 | 
			
		||||
                            removed.push(c);
 | 
			
		||||
                            return true
 | 
			
		||||
                        }
 | 
			
		||||
                        return false;
 | 
			
		||||
                    });
 | 
			
		||||
                removed.forEach(removedChild => removedChild.object.$destroy());
 | 
			
		||||
            },
 | 
			
		||||
            finishLoading () {
 | 
			
		||||
                this.isLoading = false;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,13 +7,14 @@ define([
 | 
			
		||||
    return function install(openmct) {
 | 
			
		||||
        let navigateCall = 0;
 | 
			
		||||
        let browseObject;
 | 
			
		||||
        let unobserve = undefined;
 | 
			
		||||
        let mutable;
 | 
			
		||||
        let currentObjectPath;
 | 
			
		||||
 | 
			
		||||
        openmct.router.route(/^\/browse\/?$/, navigateToFirstChildOfRoot);
 | 
			
		||||
 | 
			
		||||
        openmct.router.route(/^\/browse\/(.*)$/, (path, results, params) => {
 | 
			
		||||
            let navigatePath = results[1];
 | 
			
		||||
            clearMutationListeners();
 | 
			
		||||
            navigateToPath(navigatePath, params.view);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
@@ -27,10 +28,17 @@ define([
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        function viewObject(object, viewProvider) {
 | 
			
		||||
            if (mutable) {
 | 
			
		||||
                mutable.$destroy();
 | 
			
		||||
                mutable = undefined;
 | 
			
		||||
            }
 | 
			
		||||
            if (openmct.objects.isMutable(object)) {
 | 
			
		||||
                mutable = openmct.objects.mutable(object);
 | 
			
		||||
            }
 | 
			
		||||
            currentObjectPath = openmct.router.path;
 | 
			
		||||
 | 
			
		||||
            openmct.layout.$refs.browseObject.show(object, viewProvider.key, true, currentObjectPath);
 | 
			
		||||
            openmct.layout.$refs.browseBar.domainObject = object;
 | 
			
		||||
            openmct.layout.$refs.browseObject.show(mutable || object, viewProvider.key, true, currentObjectPath);
 | 
			
		||||
            openmct.layout.$refs.browseBar.domainObject = mutable || object;
 | 
			
		||||
            openmct.layout.$refs.browseBar.viewKey = viewProvider.key;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -38,37 +46,26 @@ define([
 | 
			
		||||
            navigateCall++;
 | 
			
		||||
            let currentNavigation = navigateCall;
 | 
			
		||||
 | 
			
		||||
            if (unobserve) {
 | 
			
		||||
                unobserve();
 | 
			
		||||
                unobserve = undefined;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Split path into object identifiers
 | 
			
		||||
            if (!Array.isArray(path)) {
 | 
			
		||||
                path = path.split('/');
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return pathToObjects(path).then((objects)=>{
 | 
			
		||||
            return pathToObjects(path).then((objects) => {
 | 
			
		||||
                if (currentNavigation !== navigateCall) {
 | 
			
		||||
                    return; // Prevent race.
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                let navigatedObject = objects[objects.length - 1];
 | 
			
		||||
 | 
			
		||||
                // FIXME: this is a hack to support create action, intended to
 | 
			
		||||
                // expose the current routed path.  We need to rewrite the
 | 
			
		||||
                // navigation service and router to expose a clear and minimal
 | 
			
		||||
                // API for this.
 | 
			
		||||
                openmct.router.path = objects.reverse();
 | 
			
		||||
                objects = objects.reverse();
 | 
			
		||||
                openmct.router.path = objects;
 | 
			
		||||
 | 
			
		||||
                unobserve = this.openmct.objects.observe(openmct.router.path[0], '*', (newObject) => {
 | 
			
		||||
                    openmct.router.path[0] = newObject;
 | 
			
		||||
                });
 | 
			
		||||
                browseObject = objects[0];
 | 
			
		||||
                openmct.layout.$refs.browseBar.domainObject = browseObject;
 | 
			
		||||
 | 
			
		||||
                openmct.layout.$refs.browseBar.domainObject = navigatedObject;
 | 
			
		||||
                browseObject = navigatedObject;
 | 
			
		||||
 | 
			
		||||
                if (!navigatedObject) {
 | 
			
		||||
                if (!browseObject) {
 | 
			
		||||
                    openmct.layout.$refs.browseObject.clear();
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
@@ -78,12 +75,12 @@ define([
 | 
			
		||||
 | 
			
		||||
                document.title = browseObject.name; //change document title to current object in main view
 | 
			
		||||
 | 
			
		||||
                if (currentProvider && currentProvider.canView(navigatedObject)) {
 | 
			
		||||
                    viewObject(navigatedObject,  currentProvider);
 | 
			
		||||
                if (currentProvider && currentProvider.canView(browseObject)) {
 | 
			
		||||
                    viewObject(browseObject,  currentProvider);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                let defaultProvider = openmct.objectViews.get(navigatedObject)[0];
 | 
			
		||||
                let defaultProvider = openmct.objectViews.get(browseObject)[0];
 | 
			
		||||
                if (defaultProvider) {
 | 
			
		||||
                    openmct.router.updateParams({
 | 
			
		||||
                        view: defaultProvider.key
 | 
			
		||||
@@ -99,7 +96,7 @@ define([
 | 
			
		||||
 | 
			
		||||
        function pathToObjects(path) {
 | 
			
		||||
            return Promise.all(path.map((keyString)=>{
 | 
			
		||||
                return openmct.objects.get(keyString);
 | 
			
		||||
                return openmct.objects.getAsMutable(keyString);
 | 
			
		||||
            }));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -117,5 +114,15 @@ define([
 | 
			
		||||
                    });
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function clearMutationListeners() {
 | 
			
		||||
            if (openmct.router.path !== undefined) {
 | 
			
		||||
                openmct.router.path.forEach((pathObject) => {
 | 
			
		||||
                    if (pathObject.$destroy) {
 | 
			
		||||
                        pathObject.$destroy();
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -81,8 +81,8 @@
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            observeObject(domainObject, id) {
 | 
			
		||||
                let unobserveObject = this.openmct.objects.observe(domainObject, '*', function(newObject) {
 | 
			
		||||
                    this.domainObjectsById[id].newObject = JSON.parse(JSON.stringify(newObject));
 | 
			
		||||
                let unobserveObject = domainObject.$observe('*', function(newObject) {
 | 
			
		||||
                    this.domainObjectsById[id].newObject = newObject;
 | 
			
		||||
                    this.updateToolbarAfterMutation();
 | 
			
		||||
                }.bind(this));
 | 
			
		||||
                this.unObserveObjects.push(unobserveObject);
 | 
			
		||||
 
 | 
			
		||||
@@ -37,9 +37,7 @@ const webpackConfig = {
 | 
			
		||||
            "vue": path.join(__dirname, "node_modules/vue/dist/vue.js"),
 | 
			
		||||
            "d3-scale": path.join(__dirname, "node_modules/d3-scale/build/d3-scale.min.js"),
 | 
			
		||||
            "printj": path.join(__dirname, "node_modules/printj/dist/printj.min.js"),
 | 
			
		||||
            "styles": path.join(__dirname, "src/styles"),
 | 
			
		||||
            "MCT": path.join(__dirname, "src/MCT"),
 | 
			
		||||
            "testTools": path.join(__dirname, "src/testTools.js")
 | 
			
		||||
            "styles": path.join(__dirname, "src/styles")
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    devtool: devMode ? 'eval-source-map' : 'source-map',
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user