mirror of
https://github.com/nasa/openmct.git
synced 2025-05-14 22:43:40 +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",
|
"category": "action",
|
||||||
"implementation": "policies/EditActionPolicy.js"
|
"implementation": "policies/EditActionPolicy.js"
|
||||||
},
|
|
||||||
{
|
|
||||||
"category": "view",
|
|
||||||
"implementation": "policies/EditableViewPolicy.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"category": "view",
|
|
||||||
"implementation": "policies/EditablePanelPolicy.js"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"templates": [
|
"templates": [
|
||||||
|
@ -34,18 +34,42 @@ define(
|
|||||||
* @constructor
|
* @constructor
|
||||||
* @implements {Policy.<Action, ActionContext>}
|
* @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 applicableView(key){
|
||||||
function countEditableViews(context) {
|
return ['plot', 'scrolling'].indexOf(key) >= 0;
|
||||||
var domainObject = (context || {}).domainObject,
|
}
|
||||||
views = domainObject && domainObject.useCapability('view'),
|
|
||||||
count = 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
|
// A view is editable unless explicitly flagged as not
|
||||||
(views || []).forEach(function (view) {
|
(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;
|
return count;
|
||||||
@ -75,9 +99,9 @@ define(
|
|||||||
// the converse is true), and where the domain object is not
|
// the converse is true), and where the domain object is not
|
||||||
// already being edited.
|
// already being edited.
|
||||||
if (key === 'edit') {
|
if (key === 'edit') {
|
||||||
return countEditableViews(context) > 0 && !isEditing(context);
|
return this.countEditableViews(context) > 0 && !isEditing(context);
|
||||||
} else if (key === 'properties') {
|
} 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) {
|
EditableViewPolicy.prototype.allow = function (view, domainObject) {
|
||||||
// If a view is flagged as non-editable, allow it if the object
|
// If a view is flagged as non-editable, only allow it
|
||||||
// itself is not being edited. For example if we are in browse
|
// while we're not in Edit mode.
|
||||||
// mode, or edit mode and the object is within a layout.
|
|
||||||
if ((view || {}).editable === false) {
|
if ((view || {}).editable === false) {
|
||||||
return !domainObject.getCapability('status').get('editing');
|
return !domainObject.hasCapability('editor');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Like all policies, allow by default.
|
// Like all policies, allow by default.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user