Compare commits
	
		
			1 Commits
		
	
	
		
			cut-releas
			...
			rover-prop
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d2217f52f7 | 
@@ -44,6 +44,7 @@
 | 
			
		||||
            openmct.install(openmct.plugins.ExampleImagery());
 | 
			
		||||
            openmct.install(openmct.plugins.UTCTimeSystem());
 | 
			
		||||
            openmct.install(openmct.plugins.ImportExport());
 | 
			
		||||
            openmct.install(openmct.plugins.RoverView());
 | 
			
		||||
            openmct.install(openmct.plugins.Conductor({
 | 
			
		||||
                menuOptions: [
 | 
			
		||||
                    {
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,8 @@ define([
 | 
			
		||||
    '../../platform/features/autoflow/plugin',
 | 
			
		||||
    './timeConductor/plugin',
 | 
			
		||||
    '../../example/imagery/plugin',
 | 
			
		||||
    '../../platform/import-export/bundle'
 | 
			
		||||
    '../../platform/import-export/bundle',
 | 
			
		||||
    './roverView/plugin.js'
 | 
			
		||||
], function (
 | 
			
		||||
    _,
 | 
			
		||||
    UTCTimeSystem,
 | 
			
		||||
@@ -35,7 +36,8 @@ define([
 | 
			
		||||
    AutoflowPlugin,
 | 
			
		||||
    TimeConductorPlugin,
 | 
			
		||||
    ExampleImagery,
 | 
			
		||||
    ImportExport
 | 
			
		||||
    ImportExport,
 | 
			
		||||
    RoverView
 | 
			
		||||
) {
 | 
			
		||||
    var bundleMap = {
 | 
			
		||||
        CouchDB: 'platform/persistence/couch',
 | 
			
		||||
@@ -121,5 +123,7 @@ define([
 | 
			
		||||
 | 
			
		||||
    plugins.ExampleImagery = ExampleImagery;
 | 
			
		||||
 | 
			
		||||
    plugins.RoverView = RoverView;
 | 
			
		||||
 | 
			
		||||
    return plugins;
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										126
									
								
								src/plugins/roverView/RoverPropertiesAction.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								src/plugins/roverView/RoverPropertiesAction.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,126 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2017, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Edit the properties of a domain object. Shows a dialog
 | 
			
		||||
 * which should display a set of properties similar to that
 | 
			
		||||
 * shown in the Create wizard.
 | 
			
		||||
 */
 | 
			
		||||
define(
 | 
			
		||||
    [
 | 
			
		||||
        '../../../platform/commonUI/edit/src/actions/PropertiesDialog',
 | 
			
		||||
        '../../../platform/core/src/types/TypeProperty'
 | 
			
		||||
    ],
 | 
			
		||||
    function (PropertiesDialog, TypeProperty) {
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Implements the "Edit Properties" action, which prompts the user
 | 
			
		||||
         * to modify a domain object's properties.
 | 
			
		||||
         *
 | 
			
		||||
         * @param {DialogService} dialogService a service which will show the dialog
 | 
			
		||||
         * @param {DomainObject} object the object to be edited
 | 
			
		||||
         * @param {ActionContext} context the context in which this action is performed
 | 
			
		||||
         * @memberof platform/commonUI/edit
 | 
			
		||||
         * @implements {Action}
 | 
			
		||||
         * @constructor
 | 
			
		||||
         */
 | 
			
		||||
        function RoverPropertiesAction(dialogService, context) {
 | 
			
		||||
            this.domainObject = (context || {}).domainObject;
 | 
			
		||||
            this.dialogService = dialogService;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        RoverPropertiesAction.prototype.perform = function () {
 | 
			
		||||
            var type = this.domainObject.getCapability('type'),
 | 
			
		||||
                domainObject = this.domainObject,
 | 
			
		||||
                dialogService = this.dialogService;
 | 
			
		||||
 | 
			
		||||
            // Update the domain object model based on user input
 | 
			
		||||
            function updateModel(userInput, dialog) {
 | 
			
		||||
                return domainObject.useCapability('mutation', function (model) {
 | 
			
		||||
                    dialog.updateModel(model, userInput);
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function generateFormFromJoints(telemetry) {
 | 
			
		||||
                var properties = Object.keys(telemetry).map(function (jointName) {
 | 
			
		||||
                    return new TypeProperty({
 | 
			
		||||
                        name: jointName,
 | 
			
		||||
                        control: "textfield",
 | 
			
		||||
                        cssClass: "l-input-lg",
 | 
			
		||||
                        key: "joint." + jointName,
 | 
			
		||||
                        required: true,
 | 
			
		||||
                        property: [
 | 
			
		||||
                            "configuration",
 | 
			
		||||
                            "telemetry",
 | 
			
		||||
                            jointName
 | 
			
		||||
                        ]
 | 
			
		||||
                    });
 | 
			
		||||
                }, {});
 | 
			
		||||
 | 
			
		||||
                return {
 | 
			
		||||
                    getProperties: function () {
 | 
			
		||||
                        return properties;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function showDialog(objType) {
 | 
			
		||||
                var model = domainObject.getModel();
 | 
			
		||||
                var form = generateFormFromJoints(model.configuration.telemetry);
 | 
			
		||||
 | 
			
		||||
                // Create a dialog object to generate the form structure, etc.
 | 
			
		||||
                var dialog =
 | 
			
		||||
                    new PropertiesDialog(form, domainObject.getModel());
 | 
			
		||||
 | 
			
		||||
                // Show the dialog
 | 
			
		||||
                return dialogService.getUserInput(
 | 
			
		||||
                    dialog.getFormStructure(),
 | 
			
		||||
                    dialog.getInitialFormValue()
 | 
			
		||||
                ).then(function (userInput) {
 | 
			
		||||
                    // Update the model, if user input was provided
 | 
			
		||||
                    return userInput && updateModel(userInput, dialog);
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return type && showDialog(type);
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Filter this action for applicability against a given context.
 | 
			
		||||
         * This will ensure that a domain object is present in the
 | 
			
		||||
         * context.
 | 
			
		||||
         */
 | 
			
		||||
        RoverPropertiesAction.appliesTo = function (context) {
 | 
			
		||||
            var domainObject = (context || {}).domainObject,
 | 
			
		||||
                type = domainObject && domainObject.getCapability('type'),
 | 
			
		||||
                creatable = type && type.hasFeature('creation');
 | 
			
		||||
 | 
			
		||||
            // Only allow creatable types to be edited
 | 
			
		||||
            return domainObject && creatable && type.getKey() === 'webgl.rover.view';
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return RoverPropertiesAction;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										56
									
								
								src/plugins/roverView/RoverPropertiesActionPolicy.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/plugins/roverView/RoverPropertiesActionPolicy.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2017, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define(
 | 
			
		||||
    [],
 | 
			
		||||
    function () {
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Policy controlling when the `edit` and/or `properties` actions
 | 
			
		||||
         * can appear as applicable actions of the `view-control` category
 | 
			
		||||
         * (shown as buttons in the top-right of browse mode.)
 | 
			
		||||
         * @memberof platform/commonUI/edit
 | 
			
		||||
         * @constructor
 | 
			
		||||
         * @implements {Policy.<Action, ActionContext>}
 | 
			
		||||
         */
 | 
			
		||||
        function RoverPropertiesActionPolicy(policyService) {
 | 
			
		||||
            this.policyService = policyService;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        RoverPropertiesActionPolicy.prototype.allow = function (action, context) {
 | 
			
		||||
            var key = action.getMetadata().key;
 | 
			
		||||
            var category = (context || {}).category;
 | 
			
		||||
            var domainObject = (context || {}).domainObject;
 | 
			
		||||
            var objectType = domainObject.useCapability('type');
 | 
			
		||||
            var typeKey = objectType.getKey();
 | 
			
		||||
 | 
			
		||||
            if (key === 'properties' && category === 'view-control' && domainObject) {
 | 
			
		||||
                return typeKey !== 'webgl.rover.view';
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Like all policies, allow by default.
 | 
			
		||||
            return true;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return RoverPropertiesActionPolicy;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										70
									
								
								src/plugins/roverView/plugin.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/plugins/roverView/plugin.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2017, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
define([
 | 
			
		||||
    './RoverPropertiesAction',
 | 
			
		||||
    './RoverPropertiesActionPolicy'
 | 
			
		||||
    ], function (
 | 
			
		||||
        RoverPropertiesAction,
 | 
			
		||||
        RoverPropertiesActionPolicy
 | 
			
		||||
    ) {
 | 
			
		||||
    return function () {
 | 
			
		||||
        return function (openmct) {
 | 
			
		||||
            openmct.legacyExtension('actions', {
 | 
			
		||||
                "key": "rover-properties",
 | 
			
		||||
                "category": [
 | 
			
		||||
                    "contextual",
 | 
			
		||||
                    "view-control"
 | 
			
		||||
                ],
 | 
			
		||||
                "implementation": RoverPropertiesAction,
 | 
			
		||||
                "cssClass": "major icon-pencil",
 | 
			
		||||
                "name": "Edit Properties...",
 | 
			
		||||
                "description": "Edit properties of this object.",
 | 
			
		||||
                "depends": [
 | 
			
		||||
                    "dialogService"
 | 
			
		||||
                ]
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            openmct.legacyExtension('policies', {
 | 
			
		||||
                "category": "action",
 | 
			
		||||
                "implementation": RoverPropertiesActionPolicy
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            // Dummy rover view type for testing
 | 
			
		||||
/*            openmct.types.addType('webgl.rover.view', {
 | 
			
		||||
                key: 'webgl.rover.view',
 | 
			
		||||
                name: 'Rover View',
 | 
			
		||||
                cssClass: 'icon-image',
 | 
			
		||||
                description: 'For development use.',
 | 
			
		||||
                creatable: true,
 | 
			
		||||
                initialize: function (object) {
 | 
			
		||||
                    object.configuration = {
 | 
			
		||||
                        telemetry: {
 | 
			
		||||
                            'joint1': 'value1',
 | 
			
		||||
                            'joint2': 'value2'
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });*/
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user