mirror of
https://github.com/nasa/openmct.git
synced 2024-12-20 21:53:08 +00:00
Fixed edit action and editable view policies for NEM
This commit is contained in:
parent
02e89f9c73
commit
b32eb363f1
@ -90,14 +90,6 @@
|
||||
{
|
||||
"category": "action",
|
||||
"implementation": "policies/EditActionPolicy.js"
|
||||
},
|
||||
{
|
||||
"category": "view",
|
||||
"implementation": "policies/EditableViewPolicy.js"
|
||||
},
|
||||
{
|
||||
"category": "view",
|
||||
"implementation": "policies/EditablePanelPolicy.js"
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
|
@ -34,18 +34,42 @@ define(
|
||||
* @constructor
|
||||
* @implements {Policy.<Action, ActionContext>}
|
||||
*/
|
||||
function EditActionPolicy() {
|
||||
function EditActionPolicy(policyService) {
|
||||
this.policyService = policyService;
|
||||
}
|
||||
|
||||
// Get a count of views which are not flagged as non-editable.
|
||||
function countEditableViews(context) {
|
||||
var domainObject = (context || {}).domainObject,
|
||||
views = domainObject && domainObject.useCapability('view'),
|
||||
count = 0;
|
||||
function applicableView(key){
|
||||
return ['plot', 'scrolling'].indexOf(key) >= 0;
|
||||
}
|
||||
|
||||
function editableType(key){
|
||||
return key === 'telemetry.panel';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a count of views which are not flagged as non-editable.
|
||||
* @private
|
||||
*/
|
||||
EditActionPolicy.prototype.countEditableViews = function (context) {
|
||||
var domainObject = context.domainObject,
|
||||
count = 0,
|
||||
type, views;
|
||||
|
||||
if (!domainObject){
|
||||
return count;
|
||||
}
|
||||
|
||||
type = domainObject.getCapability('type');
|
||||
views = domainObject.useCapability('view');
|
||||
|
||||
|
||||
// A view is editable unless explicitly flagged as not
|
||||
(views || []).forEach(function (view) {
|
||||
count += (view.editable !== false) ? 1 : 0;
|
||||
if (view.editable===false || (applicableView(view.key) && !editableType(type.getKey()))){
|
||||
// Do nothing
|
||||
} else {
|
||||
count++;
|
||||
}
|
||||
});
|
||||
|
||||
return count;
|
||||
@ -75,9 +99,9 @@ define(
|
||||
// the converse is true), and where the domain object is not
|
||||
// already being edited.
|
||||
if (key === 'edit') {
|
||||
return countEditableViews(context) > 0 && !isEditing(context);
|
||||
return this.countEditableViews(context) > 0 && !isEditing(context);
|
||||
} else if (key === 'properties') {
|
||||
return countEditableViews(context) < 1 && !isEditing(context);
|
||||
return this.countEditableViews(context) < 1 && !isEditing(context);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,63 +0,0 @@
|
||||
/*****************************************************************************
|
||||
* 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.<View, DomainObject>}
|
||||
*/
|
||||
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;
|
||||
}
|
||||
);
|
@ -36,11 +36,10 @@ define(
|
||||
}
|
||||
|
||||
EditableViewPolicy.prototype.allow = function (view, domainObject) {
|
||||
// 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 a view is flagged as non-editable, only allow it
|
||||
// while we're not in Edit mode.
|
||||
if ((view || {}).editable === false) {
|
||||
return !domainObject.getCapability('status').get('editing');
|
||||
return !domainObject.hasCapability('editor');
|
||||
}
|
||||
|
||||
// Like all policies, allow by default.
|
||||
|
Loading…
Reference in New Issue
Block a user