mirror of
https://github.com/nasa/openmct.git
synced 2025-06-19 07:38:15 +00:00
[Common UI] Encapsulate TreeNodeController
Reduce reliance on from TreeNodeController, clean up and better isolate node expansion behavior. Part of transition of common UI elements, WTD-574.
This commit is contained in:
@ -3,6 +3,7 @@
|
|||||||
"platform/core",
|
"platform/core",
|
||||||
"platform/representation",
|
"platform/representation",
|
||||||
"platform/commonUI/browse",
|
"platform/commonUI/browse",
|
||||||
|
"platform/commonUI/edit",
|
||||||
"platform/commonUI/dialog",
|
"platform/commonUI/dialog",
|
||||||
"platform/commonUI/general",
|
"platform/commonUI/general",
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
<b>
|
|
||||||
<div style="width: 400px; border: 4px green solid; text-align:right;">{{model.name}}</div>
|
|
||||||
</b>
|
|
@ -1,7 +1,8 @@
|
|||||||
<span ng-controller="ToggleController as toggle">
|
<span ng-controller="ToggleController as toggle">
|
||||||
<span class="tree-item menus-to-left" ng-controller="TreeNodeController">
|
<span ng-controller="TreeNodeController as treeNode">
|
||||||
|
<span class="tree-item menus-to-left">
|
||||||
<span class='ui-symbol view-control'
|
<span class='ui-symbol view-control'
|
||||||
ng-click="toggle.toggle()"
|
ng-click="toggle.toggle(); treeNode.setNodeObject(domainObject)"
|
||||||
ng-if="model.composition !== undefined">
|
ng-if="model.composition !== undefined">
|
||||||
{{toggle.isActive() ? "v" : ">"}}
|
{{toggle.isActive() ? "v" : ">"}}
|
||||||
</span>
|
</span>
|
||||||
@ -9,15 +10,19 @@
|
|||||||
mct-object="domainObject"
|
mct-object="domainObject"
|
||||||
parameters="parameters"
|
parameters="parameters"
|
||||||
ng-click="parameters.callback(domainObject)"
|
ng-click="parameters.callback(domainObject)"
|
||||||
ng-class="{selected: node.isSelected}">
|
ng-class="{selected: treeNode.isNavigated()}">
|
||||||
</mct-representation>
|
</mct-representation>
|
||||||
</span>
|
</span>
|
||||||
<span class="tree-item-subtree"
|
<span class="tree-item-subtree"
|
||||||
ng-show="toggle.isActive()"
|
ng-show="toggle.isActive()"
|
||||||
ng-if="model.composition !== undefined">
|
ng-if="model.composition !== undefined">
|
||||||
|
|
||||||
|
ID: {{treeNode.getNodeObject().getId()}}?
|
||||||
<mct-representation key="'tree'"
|
<mct-representation key="'tree'"
|
||||||
parameters="parameters"
|
parameters="parameters"
|
||||||
mct-object="node.domainObject">
|
mct-object="treeNode.getNodeObject()">
|
||||||
</mct-representation>
|
</mct-representation>
|
||||||
</span>
|
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
@ -13,7 +13,9 @@ define(
|
|||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function TreeNodeController($scope, navigationService) {
|
function TreeNodeController($scope, navigationService) {
|
||||||
var navigatedObject = navigationService.getNavigation();
|
var navigatedObject = navigationService.getNavigation(),
|
||||||
|
isNavigated = false,
|
||||||
|
expandedObject;
|
||||||
|
|
||||||
function idsEqual(objA, objB) {
|
function idsEqual(objA, objB) {
|
||||||
return objA && objB && (objA.getId() === objB.getId());
|
return objA && objB && (objA.getId() === objB.getId());
|
||||||
@ -58,14 +60,16 @@ define(
|
|||||||
function checkNavigation() {
|
function checkNavigation() {
|
||||||
var nodeObject = $scope.domainObject;
|
var nodeObject = $scope.domainObject;
|
||||||
|
|
||||||
$scope.node.isSelected =
|
isNavigated =
|
||||||
idsEqual(nodeObject, navigatedObject) &&
|
idsEqual(nodeObject, navigatedObject) &&
|
||||||
idsEqual(parentOf(nodeObject), parentOf(navigatedObject));
|
idsEqual(parentOf(nodeObject), parentOf(navigatedObject));
|
||||||
|
|
||||||
// Expand if necessary
|
// Expand if necessary
|
||||||
if (!$scope.node.expanded &&
|
if (isOnNavigationPath(nodeObject, navigatedObject) &&
|
||||||
isOnNavigationPath(nodeObject, navigatedObject) &&
|
$scope.toggle !== undefined &&
|
||||||
$scope.toggle !== undefined) {
|
$scope.toggle.isActive()) {
|
||||||
$scope.toggle.toggle();
|
$scope.toggle.toggle();
|
||||||
|
expandedObject = nodeObject;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,25 +78,23 @@ define(
|
|||||||
checkNavigation();
|
checkNavigation();
|
||||||
}
|
}
|
||||||
|
|
||||||
// When the node is expanded, set "node.domainObject" in
|
|
||||||
// the scope; this is used to populate the subtree, which
|
|
||||||
// should only happen when first expanded (lazy loading)
|
|
||||||
function doExpand(state) {
|
|
||||||
if (state) {
|
|
||||||
$scope.node.domainObject = $scope.domainObject;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set up a little namespace for tree node properties
|
|
||||||
$scope.node = {};
|
|
||||||
|
|
||||||
navigationService.addListener(setNavigation);
|
navigationService.addListener(setNavigation);
|
||||||
$scope.$on("$destroy", function () {
|
$scope.$on("$destroy", function () {
|
||||||
navigationService.removeListener(setNavigation);
|
navigationService.removeListener(setNavigation);
|
||||||
});
|
});
|
||||||
$scope.$watch("domainObject", checkNavigation);
|
$scope.$watch("domainObject", checkNavigation);
|
||||||
$scope.$watch("toggle.isActive()", doExpand);
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
setNodeObject: function (domainObject) {
|
||||||
|
expandedObject = domainObject;
|
||||||
|
},
|
||||||
|
getNodeObject: function () {
|
||||||
|
return expandedObject;
|
||||||
|
},
|
||||||
|
isNavigated: function () {
|
||||||
|
return isNavigated;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return TreeNodeController;
|
return TreeNodeController;
|
||||||
|
Reference in New Issue
Block a user