Compare commits
	
		
			39 Commits
		
	
	
		
			imagery-ag
			...
			subobject-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					407550e6f4 | ||
| 
						 | 
					8b44b44e38 | ||
| 
						 | 
					8dfa8df28a | ||
| 
						 | 
					9e19296b14 | ||
| 
						 | 
					106632c21c | ||
| 
						 | 
					235032a571 | ||
| 
						 | 
					db41f6e64f | ||
| 
						 | 
					e83e0da521 | ||
| 
						 | 
					c411f8fbe3 | ||
| 
						 | 
					4ce952846c | ||
| 
						 | 
					fdab4a614f | ||
| 
						 | 
					152f55652f | ||
| 
						 | 
					c46c42e576 | ||
| 
						 | 
					75bf956c3d | ||
| 
						 | 
					0a44c48338 | ||
| 
						 | 
					e4c3412e8a | ||
| 
						 | 
					4e1cfac4b9 | ||
| 
						 | 
					0a64e9f515 | ||
| 
						 | 
					7341ed9d03 | ||
| 
						 | 
					e2631bdcfd | ||
| 
						 | 
					773a7c0c24 | ||
| 
						 | 
					fdcba66558 | ||
| 
						 | 
					3b1ed7821f | ||
| 
						 | 
					1be517f3ea | ||
| 
						 | 
					5e3dcadfa4 | ||
| 
						 | 
					fd97f4db41 | ||
| 
						 | 
					3228a83802 | ||
| 
						 | 
					1dba551fc6 | ||
| 
						 | 
					20f3b57ddd | ||
| 
						 | 
					58787c4436 | ||
| 
						 | 
					2a45893602 | ||
| 
						 | 
					a94ab44431 | ||
| 
						 | 
					cc9efdff31 | ||
| 
						 | 
					6e664003e3 | ||
| 
						 | 
					70d804fc49 | ||
| 
						 | 
					06c184821e | ||
| 
						 | 
					b76be3d2e5 | ||
| 
						 | 
					8934ba96f7 | ||
| 
						 | 
					3fb4ce7819 | 
@@ -19,6 +19,7 @@
 | 
			
		||||
    "comma-separated-values": "^3.6.4",
 | 
			
		||||
    "FileSaver.js": "^0.0.2",
 | 
			
		||||
    "zepto": "^1.1.6",
 | 
			
		||||
    "eventemitter3": "^1.2.0",
 | 
			
		||||
    "html2canvas": "^0.4.1",
 | 
			
		||||
    "jspdf": "^1.2.61"
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -28,12 +28,12 @@
 | 
			
		||||
    <script src="bower_components/requirejs/require.js">
 | 
			
		||||
    </script>
 | 
			
		||||
    <script>
 | 
			
		||||
        require(['main'], function (mct) {
 | 
			
		||||
        require(['main'], function (openmct) {
 | 
			
		||||
            require([
 | 
			
		||||
                './example/imagery/bundle',
 | 
			
		||||
                './example/eventGenerator/bundle',
 | 
			
		||||
                './example/generator/bundle'
 | 
			
		||||
            ], mct.run.bind(mct));
 | 
			
		||||
            ], openmct.start.bind(openmct));
 | 
			
		||||
        });
 | 
			
		||||
    </script>
 | 
			
		||||
    <link rel="stylesheet" href="platform/commonUI/general/res/css/startup-base.css">
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								main.js
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								main.js
									
									
									
									
									
								
							@@ -27,6 +27,7 @@ requirejs.config({
 | 
			
		||||
        "angular": "bower_components/angular/angular.min",
 | 
			
		||||
        "angular-route": "bower_components/angular-route/angular-route.min",
 | 
			
		||||
        "csv": "bower_components/comma-separated-values/csv.min",
 | 
			
		||||
        "EventEmitter": "bower_components/eventemitter3/index",
 | 
			
		||||
        "es6-promise": "bower_components/es6-promise/es6-promise.min",
 | 
			
		||||
        "html2canvas": "bower_components/html2canvas/build/html2canvas.min",
 | 
			
		||||
        "jsPDF": "bower_components/jspdf/dist/jspdf.min",
 | 
			
		||||
@@ -45,6 +46,9 @@ requirejs.config({
 | 
			
		||||
        "angular-route": {
 | 
			
		||||
            "deps": ["angular"]
 | 
			
		||||
        },
 | 
			
		||||
        "EventEmitter": {
 | 
			
		||||
            "exports": "EventEmitter"
 | 
			
		||||
        },
 | 
			
		||||
        "html2canvas": {
 | 
			
		||||
            "exports": "html2canvas"
 | 
			
		||||
        },
 | 
			
		||||
@@ -64,6 +68,7 @@ requirejs.config({
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    './src/openmct',
 | 
			
		||||
    './platform/framework/src/Main',
 | 
			
		||||
    'legacyRegistry',
 | 
			
		||||
 | 
			
		||||
@@ -101,12 +106,12 @@ define([
 | 
			
		||||
    './platform/entanglement/bundle',
 | 
			
		||||
    './platform/search/bundle',
 | 
			
		||||
    './platform/status/bundle',
 | 
			
		||||
    './platform/commonUI/regions/bundle'
 | 
			
		||||
], function (Main, legacyRegistry) {
 | 
			
		||||
    return {
 | 
			
		||||
        legacyRegistry: legacyRegistry,
 | 
			
		||||
        run: function () {
 | 
			
		||||
            return new Main().run(legacyRegistry);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    './platform/commonUI/regions/bundle',
 | 
			
		||||
    './src/adapter/legacyBundle'
 | 
			
		||||
], function (openmct, Main, legacyRegistry) {
 | 
			
		||||
    openmct.legacyRegistry = legacyRegistry;
 | 
			
		||||
    openmct.on('start', function () {
 | 
			
		||||
        return new Main().run(legacyRegistry);
 | 
			
		||||
    });
 | 
			
		||||
    return openmct;
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -72,7 +72,7 @@ define(
 | 
			
		||||
 | 
			
		||||
            // Assemble all gestures into a map, for easy look up
 | 
			
		||||
            gestures.forEach(function (gesture) {
 | 
			
		||||
                gestureMap[gesture.key] = gesture;
 | 
			
		||||
                gestureMap[gesture.key] = gestureMap[gesture.key] || gesture;
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            this.gestureMap = gestureMap;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								src/Registry.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/Registry.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
define([], function () {
 | 
			
		||||
    function Registry() {
 | 
			
		||||
        this.providers = [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Registry.prototype.get = function (context) {
 | 
			
		||||
        return this.providers.filter(function (provider) {
 | 
			
		||||
            return provider.appliesTo(context);
 | 
			
		||||
        }).map(function (provider) {
 | 
			
		||||
            return provider.get(context);
 | 
			
		||||
        }).reduce(function (a, b) {
 | 
			
		||||
            return Array.isArray(b) ? a.concat(b) : a.concat([b]);
 | 
			
		||||
        }, []);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Registry.prototype.register = function (provider) {
 | 
			
		||||
        this.providers.push(provider);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return Registry;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										9
									
								
								src/adapter/gestures/AdaptedContextMenuGesture.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/adapter/gestures/AdaptedContextMenuGesture.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
define(
 | 
			
		||||
    function () {
 | 
			
		||||
        function AdaptedContextMenuGesture(openmct, $els, domainObject) {
 | 
			
		||||
            this.destroy = openmct.gestures.contextual($els[0], domainObject);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return AdaptedContextMenuGesture;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										48
									
								
								src/adapter/legacyBundle.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/adapter/legacyBundle.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2016, 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([
 | 
			
		||||
    'legacyRegistry',
 | 
			
		||||
    './gestures/AdaptedContextMenuGesture',
 | 
			
		||||
    '../openmct'
 | 
			
		||||
], function (legacyRegistry, AdaptedContextMenuGesture, openmct) {
 | 
			
		||||
    legacyRegistry.register('adapter', {
 | 
			
		||||
        extensions: {
 | 
			
		||||
            services: [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "openmct",
 | 
			
		||||
                    implementation: function () {
 | 
			
		||||
                        return openmct;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            gestures: [
 | 
			
		||||
                {
 | 
			
		||||
                    key: "menu",
 | 
			
		||||
                    implementation: AdaptedContextMenuGesture,
 | 
			
		||||
                    priority: "preferred",
 | 
			
		||||
                    depends: ["openmct"]
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										28
									
								
								src/adapter/ui/AngularView.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/adapter/ui/AngularView.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
define(['angular'], function (angular) {
 | 
			
		||||
    function AngularView(template) {
 | 
			
		||||
        this.template = template;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    AngularView.prototype.show = function (container) {
 | 
			
		||||
        if (this.activeScope) {
 | 
			
		||||
            this.destroy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        var $injector = angular.injector(['ng']);
 | 
			
		||||
        var $compile = $injector.get('$compile');
 | 
			
		||||
        var $rootScope = $injector.get('$rootScope');
 | 
			
		||||
        var $scope = $rootScope.$new();
 | 
			
		||||
        var elements = $compile(this.template)($scope);
 | 
			
		||||
 | 
			
		||||
        angular.element(container).append(elements);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    AngularView.prototype.destroy = function () {
 | 
			
		||||
        if (this.activeScope) {
 | 
			
		||||
            this.activeScope.$destroy();
 | 
			
		||||
            this.activeScope = undefined;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return AngularView;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										65
									
								
								src/openmct.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/openmct.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2016, 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([
 | 
			
		||||
    'EventEmitter',
 | 
			
		||||
    './Registry',
 | 
			
		||||
    './selection/Selection',
 | 
			
		||||
    './selection/ContextManager',
 | 
			
		||||
    './selection/SelectGesture',
 | 
			
		||||
    './ui/menu/ContextMenuGesture',
 | 
			
		||||
    './ui/ViewRegistry'
 | 
			
		||||
], function (
 | 
			
		||||
    EventEmitter,
 | 
			
		||||
    Registry,
 | 
			
		||||
    Selection,
 | 
			
		||||
    ContextManager,
 | 
			
		||||
    SelectGesture,
 | 
			
		||||
    ContextMenuGesture,
 | 
			
		||||
    ViewRegistry
 | 
			
		||||
) {
 | 
			
		||||
    var openmct = Object.create(EventEmitter.prototype);
 | 
			
		||||
    var actionRegistry = new Registry();
 | 
			
		||||
    var selection = new Selection();
 | 
			
		||||
    var manager = new ContextManager();
 | 
			
		||||
    var select = new SelectGesture(manager, selection);
 | 
			
		||||
    var contextMenu = new ContextMenuGesture(
 | 
			
		||||
            selection,
 | 
			
		||||
            {},
 | 
			
		||||
            actionRegistry,
 | 
			
		||||
            manager
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
    EventEmitter.call(openmct);
 | 
			
		||||
 | 
			
		||||
    openmct.selection = selection;
 | 
			
		||||
    openmct.inspectors = new ViewRegistry();
 | 
			
		||||
 | 
			
		||||
    openmct.gestures = {
 | 
			
		||||
        selectable: select.apply.bind(select),
 | 
			
		||||
        contextual: contextMenu.apply.bind(contextMenu)
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    openmct.start = openmct.emit.bind(openmct, 'start');
 | 
			
		||||
 | 
			
		||||
    return openmct;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										77
									
								
								src/selection/ContextManager.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								src/selection/ContextManager.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2016, 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(['zepto'], function ($) {
 | 
			
		||||
    /**
 | 
			
		||||
     * @typedef Context
 | 
			
		||||
     * @property {*} item
 | 
			
		||||
     * @property {HTMLElement} element
 | 
			
		||||
     * @property {Context} parent the containing context (may be undefined)
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    function ContextManager() {
 | 
			
		||||
        this.counter = 0;
 | 
			
		||||
        this.contexts = {};
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ContextManager.prototype.nextId = function () {
 | 
			
		||||
        this.counter += 1;
 | 
			
		||||
        return "context-" + this.counter;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    ContextManager.prototype.context = function (item, htmlElement) {
 | 
			
		||||
        var $element = $(htmlElement);
 | 
			
		||||
        var id = $element.attr('data-context') || this.nextId();
 | 
			
		||||
 | 
			
		||||
        $element.attr('data-context', id);
 | 
			
		||||
 | 
			
		||||
        if (this.contexts[id] && this.contexts[id].item !== item) {
 | 
			
		||||
            this.release(htmlElement);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!this.contexts[id]) {
 | 
			
		||||
            var $parent = $element.closest('[data-context]');
 | 
			
		||||
            var parentId = $parent.attr('data-context');
 | 
			
		||||
            var parentContext = parentId ? this.contexts[parentId] : undefined;
 | 
			
		||||
            this.contexts[id] = {
 | 
			
		||||
                item: item,
 | 
			
		||||
                element: htmlElement,
 | 
			
		||||
                parent: parentContext
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return this.contexts[id];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    ContextManager.prototype.release = function (htmlElement) {
 | 
			
		||||
        var $element = $(htmlElement);
 | 
			
		||||
        var id = $element.attr('data-context');
 | 
			
		||||
 | 
			
		||||
        if (id) {
 | 
			
		||||
            delete this.contexts[id];
 | 
			
		||||
            $element.removeAttr('data-context');
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return ContextManager;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										58
									
								
								src/selection/HoverGesture.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/selection/HoverGesture.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2016, 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(['zepto'], function ($) {
 | 
			
		||||
    function HoverGesture(hoverManager) {
 | 
			
		||||
        this.hoverManager = hoverManager;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    HoverGesture.prototype.apply = function (htmlElement) {
 | 
			
		||||
        var $element = $(htmlElement);
 | 
			
		||||
        var hoverManager = this.hoverManager;
 | 
			
		||||
 | 
			
		||||
        function update() {
 | 
			
		||||
            $(hoverManager.all()).removeClass('hovering');
 | 
			
		||||
            $(hoverManager.top()).addClass('hovering');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function enter() {
 | 
			
		||||
            hoverManager.add(htmlElement);
 | 
			
		||||
            update();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function leave() {
 | 
			
		||||
            hoverManager.remove(htmlElement);
 | 
			
		||||
            update();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $element.on('mouseenter', enter);
 | 
			
		||||
        $element.on('mouseleave', leave);
 | 
			
		||||
 | 
			
		||||
        return function () {
 | 
			
		||||
            leave();
 | 
			
		||||
            $element.off('mouseenter', enter);
 | 
			
		||||
            $element.off('mouseleave', leave);
 | 
			
		||||
        }.bind(this);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return HoverGesture;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										60
									
								
								src/selection/SelectGesture.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								src/selection/SelectGesture.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2016, 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(['zepto'], function ($) {
 | 
			
		||||
    function SelectGesture(selection, contextManager) {
 | 
			
		||||
        this.selection = selection;
 | 
			
		||||
        this.contextManager = contextManager;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    SelectGesture.prototype.apply = function (htmlElement, item) {
 | 
			
		||||
        var $element = $(htmlElement);
 | 
			
		||||
        var contextManager = this.contextManager;
 | 
			
		||||
        var selection = this.selection;
 | 
			
		||||
        var path = contextManager.path(item, htmlElement);
 | 
			
		||||
 | 
			
		||||
        function select() {
 | 
			
		||||
            selection.add(path);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function change() {
 | 
			
		||||
            var selected = selection.primary();
 | 
			
		||||
            $element.toggleClass(
 | 
			
		||||
                'selected',
 | 
			
		||||
                selected && path.matches(selected)
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $element.addClass('selectable');
 | 
			
		||||
        $element.on('click', select);
 | 
			
		||||
        selection.on('change', change);
 | 
			
		||||
        change(); // Initialize
 | 
			
		||||
 | 
			
		||||
        return function () {
 | 
			
		||||
            contextManager.release(htmlElement);
 | 
			
		||||
            $element.off('click', select);
 | 
			
		||||
            selection.off('change', change);
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return SelectGesture;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										64
									
								
								src/selection/Selection.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/selection/Selection.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2016, 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(['EventEmitter'], function (EventEmitter) {
 | 
			
		||||
    function Selection() {
 | 
			
		||||
        EventEmitter.call(this);
 | 
			
		||||
        this.selected = [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Selection.prototype = Object.create(EventEmitter.prototype);
 | 
			
		||||
 | 
			
		||||
    Selection.prototype.add = function (path) {
 | 
			
		||||
        this.clear(); // Only allow single select as initial simplification
 | 
			
		||||
        this.selected.push(path);
 | 
			
		||||
        this.emit('change');
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Selection.prototype.remove = function (path) {
 | 
			
		||||
        this.selected = this.selected.filter(function (otherPath) {
 | 
			
		||||
            return !path.matches(otherPath);
 | 
			
		||||
        });
 | 
			
		||||
        this.emit('change');
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Selection.prototype.contains = function (path) {
 | 
			
		||||
        return this.selected.some(function (otherPath) {
 | 
			
		||||
            return path.matches(otherPath);
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Selection.prototype.clear = function () {
 | 
			
		||||
        this.selected = [];
 | 
			
		||||
        this.emit('change');
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Selection.prototype.primary = function () {
 | 
			
		||||
        return this.selected[this.selected.length - 1];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Selection.prototype.all = function () {
 | 
			
		||||
        return this.selected;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return Selection;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										43
									
								
								src/ui/InspectorRegion.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/ui/InspectorRegion.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
define(['zepto'], function ($) {
 | 
			
		||||
    function InspectorRegion(element, selection, inspectors) {
 | 
			
		||||
        this.element = element;
 | 
			
		||||
        this.selection = selection;
 | 
			
		||||
        this.inspectors = inspectors;
 | 
			
		||||
        this.active = false;
 | 
			
		||||
 | 
			
		||||
        this.onSelectionChange = this.onSelectionChange.bind(this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    InspectorRegion.prototype.onSelectionChange = function (item) {
 | 
			
		||||
        var $element = $(this.element);
 | 
			
		||||
        var providers = this.inspectors.get(item);
 | 
			
		||||
 | 
			
		||||
        $element.empty();
 | 
			
		||||
 | 
			
		||||
        if (factories.length > 0) {
 | 
			
		||||
            providers[0].view(item).show(this.element);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    InspectorRegion.prototype.activate = function () {
 | 
			
		||||
        if (this.active) {
 | 
			
		||||
            this.deactivate();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.selection.on('change', this.onSelectionChange);
 | 
			
		||||
 | 
			
		||||
        this.active = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    InspectorRegion.prototype.deactivate = function () {
 | 
			
		||||
        if (!this.active) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.selection.off('change', this.onSelectionChange);
 | 
			
		||||
 | 
			
		||||
        this.active = false;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return InspectorRegion;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										18
									
								
								src/ui/ViewRegistry.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/ui/ViewRegistry.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
define([], function () {
 | 
			
		||||
    function ViewRegistry() {
 | 
			
		||||
        this.providers = [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ViewRegistry.prototype.get = function (item) {
 | 
			
		||||
        return this.providers.filter(function (provider) {
 | 
			
		||||
            return provider.canView(item);
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    ViewRegistry.prototype.addProvider = function (provider) {
 | 
			
		||||
        this.providers.push(provider);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return ViewRegistry;
 | 
			
		||||
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										42
									
								
								src/ui/menu/ContextMenuGesture.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/ui/menu/ContextMenuGesture.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
define(['zepto', './ContextMenuView'], function ($, ContextMenuView) {
 | 
			
		||||
    function ContextMenuGesture(
 | 
			
		||||
        selection,
 | 
			
		||||
        overlayManager,
 | 
			
		||||
        actionRegistry,
 | 
			
		||||
        contextManager
 | 
			
		||||
    ) {
 | 
			
		||||
        this.selection = selection;
 | 
			
		||||
        this.overlayManager = overlayManager;
 | 
			
		||||
        this.actionRegistry = actionRegistry;
 | 
			
		||||
        this.contextManager = contextManager;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ContextMenuGesture.prototype.apply = function (htmlElement, item) {
 | 
			
		||||
        var overlayManager = this.overlayManager;
 | 
			
		||||
        var selection = this.selection;
 | 
			
		||||
        var actionRegistry = this.actionRegistry;
 | 
			
		||||
        var contextManager = this.contextManager;
 | 
			
		||||
 | 
			
		||||
        var $element = $(htmlElement);
 | 
			
		||||
        var context = contextManager.context(item, htmlElement);
 | 
			
		||||
 | 
			
		||||
        function showMenu(event) {
 | 
			
		||||
            selection.add(context);
 | 
			
		||||
 | 
			
		||||
            var x = event.clientX;
 | 
			
		||||
            var y = event.clientY;
 | 
			
		||||
            var actions = actionRegistry.get(context);
 | 
			
		||||
            var view = new ContextMenuView(actions);
 | 
			
		||||
 | 
			
		||||
            overlayManager.show(view, x, y);
 | 
			
		||||
 | 
			
		||||
            event.preventDefault();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $element.on('contextmenu', showMenu);
 | 
			
		||||
 | 
			
		||||
        return $element.off.bind($element, 'contextmenu', showMenu);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return ContextMenuGesture;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										10
									
								
								src/ui/menu/ContextMenuView.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/ui/menu/ContextMenuView.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
define(['zepto'], function ($) {
 | 
			
		||||
    function ContextMenuView(actions) {
 | 
			
		||||
        this.actions = actions;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ContextMenuView.prototype.show = function (element) {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return ContextMenuView;
 | 
			
		||||
});
 | 
			
		||||
@@ -53,6 +53,7 @@ requirejs.config({
 | 
			
		||||
        "angular": "bower_components/angular/angular.min",
 | 
			
		||||
        "angular-route": "bower_components/angular-route/angular-route.min",
 | 
			
		||||
        "csv": "bower_components/comma-separated-values/csv.min",
 | 
			
		||||
        "EventEmitter": "bower_components/eventemitter3/index",
 | 
			
		||||
        "es6-promise": "bower_components/es6-promise/es6-promise.min",
 | 
			
		||||
        "html2canvas": "bower_components/html2canvas/build/html2canvas.min",
 | 
			
		||||
        "jsPDF": "bower_components/jspdf/dist/jspdf.min",
 | 
			
		||||
@@ -72,6 +73,9 @@ requirejs.config({
 | 
			
		||||
        "angular-route": {
 | 
			
		||||
            "deps": [ "angular" ]
 | 
			
		||||
        },
 | 
			
		||||
        "EventEmitter": {
 | 
			
		||||
            "exports": "EventEmitter"
 | 
			
		||||
        },
 | 
			
		||||
        "moment-duration-format": {
 | 
			
		||||
            "deps": [ "moment" ]
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user