From 5cc80c737c764dc4077a5d16099d838088fc2295 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 10 Dec 2015 14:39:22 -0800 Subject: [PATCH] Updated editable view policies --- platform/commonUI/edit/bundle.json | 4 ++ .../edit/src/policies/EditablePanelPolicy.js | 63 +++++++++++++++++++ .../edit/src/policies/EditableViewPolicy.js | 7 ++- 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 platform/commonUI/edit/src/policies/EditablePanelPolicy.js diff --git a/platform/commonUI/edit/bundle.json b/platform/commonUI/edit/bundle.json index c216a9d877..3edc871d5c 100644 --- a/platform/commonUI/edit/bundle.json +++ b/platform/commonUI/edit/bundle.json @@ -87,6 +87,10 @@ { "category": "view", "implementation": "policies/EditableViewPolicy.js" + }, + { + "category": "view", + "implementation": "policies/EditablePanelPolicy.js" } ], "templates": [ diff --git a/platform/commonUI/edit/src/policies/EditablePanelPolicy.js b/platform/commonUI/edit/src/policies/EditablePanelPolicy.js new file mode 100644 index 0000000000..46468b35f2 --- /dev/null +++ b/platform/commonUI/edit/src/policies/EditablePanelPolicy.js @@ -0,0 +1,63 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web 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 Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define*/ + +define( + [], + function () { + "use strict"; + + /** + * Policy controlling which views should be visible in Edit mode. + * @memberof platform/commonUI/edit + * @constructor + * @implements {Policy.} + */ + function EditablePanelPolicy() { + } + + function applicableView(key){ + return ['plot', 'scrolling'].indexOf(key) >= 0; + } + + function editableType(key){ + return key === 'telemetry.panel'; + } + + EditablePanelPolicy.prototype.allow = function (view, domainObject) { + // If a view is flagged as non-editable, only allow it + // while we're not in Edit mode. + if (view && view.editable != false) { + //But show the view if the domain object is in edit mode, + // but is not the object being edited. + if (applicableView(view.key) && !editableType(domainObject.getCapability('type').getKey())){ + return false; + } + } + + // Like all policies, allow by default. + return true; + }; + + return EditablePanelPolicy; + } +); diff --git a/platform/commonUI/edit/src/policies/EditableViewPolicy.js b/platform/commonUI/edit/src/policies/EditableViewPolicy.js index 17194064b0..fed287cded 100644 --- a/platform/commonUI/edit/src/policies/EditableViewPolicy.js +++ b/platform/commonUI/edit/src/policies/EditableViewPolicy.js @@ -36,10 +36,11 @@ define( } EditableViewPolicy.prototype.allow = function (view, domainObject) { - // If a view is flagged as non-editable, only allow it - // while we're not in Edit mode. + // If a view is flagged as non-editable, allow it if the object + // itself is not being edited. For example if we are in browse + // mode, or edit mode and the object is within a layout. if ((view || {}).editable === false) { - return !domainObject.hasCapability('editor'); + return !domainObject.getCapability('status').get('editing'); } // Like all policies, allow by default.