From a3a9393d1bfcf3b27b552ffe2fc65495125c03dc Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 11 Mar 2016 17:32:57 -0800 Subject: [PATCH] [Tree] Change selection on click --- platform/commonUI/general/src/directives/MCTTree.js | 3 ++- platform/commonUI/general/src/ui/TreeNodeView.js | 8 ++++++-- platform/commonUI/general/src/ui/TreeView.js | 13 ++++++++----- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/platform/commonUI/general/src/directives/MCTTree.js b/platform/commonUI/general/src/directives/MCTTree.js index 29d2e00ba7..c48d1775a7 100644 --- a/platform/commonUI/general/src/directives/MCTTree.js +++ b/platform/commonUI/general/src/directives/MCTTree.js @@ -29,7 +29,8 @@ define([ function link(scope, element, attrs) { var treeView = new TreeView(), expr = $parse(attrs.mctModel), - unobserve = treeView.observe(expr.assign.bind(expr, scope)); + assign = expr.assign.bind(expr, scope.$parent), + unobserve = treeView.observe(assign); element.append(angular.element(treeView.elements())); diff --git a/platform/commonUI/general/src/ui/TreeNodeView.js b/platform/commonUI/general/src/ui/TreeNodeView.js index 9481bfdf9e..b639c024f3 100644 --- a/platform/commonUI/general/src/ui/TreeNodeView.js +++ b/platform/commonUI/general/src/ui/TreeNodeView.js @@ -29,7 +29,7 @@ define([ ], function ($, nodeTemplate, ToggleView, TreeLabelView) { 'use strict'; - function TreeNodeView(subtreeFactory) { + function TreeNodeView(subtreeFactory, selectFn) { this.li = $('
  • '); this.toggleView = new ToggleView(false); @@ -49,6 +49,10 @@ define([ this.labelView = new TreeLabelView(); + $(this.labelView.elements()).on('click', function () { + selectFn(this.activeObject); + }.bind(this)); + this.li.append($(nodeTemplate)); this.li.find('span').eq(0) .append($(this.toggleView.elements())) @@ -80,7 +84,7 @@ define([ function getId(domainObject) { return domainObject.getId(); } - + return domainObject ? domainObject.getCapability('context').getPath().map(getId) : []; diff --git a/platform/commonUI/general/src/ui/TreeView.js b/platform/commonUI/general/src/ui/TreeView.js index 120c3230c8..594fec2894 100644 --- a/platform/commonUI/general/src/ui/TreeView.js +++ b/platform/commonUI/general/src/ui/TreeView.js @@ -27,21 +27,25 @@ define([ ], function ($, TreeNodeView) { 'use strict'; - function TreeView() { + function TreeView(selectFn) { this.ul = $(''); this.nodeViews = []; this.callbacks = []; + this.selectFn = selectFn || this.value.bind(this); } - function newTreeView() { - return new TreeView(); + TreeView.prototype.newTreeView = function () { + return new TreeView(this.selectFn); } TreeView.prototype.setSize = function (sz) { var nodeView; while (this.nodeViews.length < sz) { - nodeView = new TreeNodeView(newTreeView); + nodeView = new TreeNodeView( + this.newTreeView.bind(this), + this.selectFn + ); this.nodeViews.push(nodeView); this.ul.append($(nodeView.elements())); } @@ -104,7 +108,6 @@ define([ }; TreeView.prototype.observe = function (callback) { - callback(this.selectedObject); this.callbacks.push(callback); return function () { this.callbacks = this.callbacks.filter(function (c) {