Repository: brooklyn-ui
Updated Branches:
  refs/heads/master a359d463d -> e9f98864d


Expand relationship support to memberspecs


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/2f61b765
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/2f61b765
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/2f61b765

Branch: refs/heads/master
Commit: 2f61b7655706a1d96359e85b4e022cba78bb112d
Parents: fb77f72
Author: Thomas Bouron <[email protected]>
Authored: Wed Oct 24 19:52:00 2018 +0100
Committer: Thomas Bouron <[email protected]>
Committed: Wed Oct 24 19:52:18 2018 +0100

----------------------------------------------------------------------
 .../providers/blueprint-service.provider.js       |  7 +++++++
 .../app/components/util/d3-blueprint.js           | 18 +++++++++++++-----
 .../app/components/util/model/entity.model.js     |  9 +++++++++
 3 files changed, 29 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2f61b765/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
----------------------------------------------------------------------
diff --git 
a/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
 
b/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
index 9630303..69ba3f6 100644
--- 
a/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
+++ 
b/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
@@ -625,6 +625,13 @@ function BlueprintService($log, $q, $sce, paletteApi, 
iconGenerator, dslService)
             };
         });
 
+        relationships = Array.from(entity.config.values())
+            .filter(config => config[DSL_ENTITY_SPEC] && 
config[DSL_ENTITY_SPEC] instanceof Entity)
+            .map(config => config[DSL_ENTITY_SPEC])
+            .reduce((relationships, spec) => {
+            return relationships.concat(getRelationships(spec));
+        }, relationships);
+
         return entity.children.reduce((relationships, child) => {
             return relationships.concat(getRelationships(child))
         }, relationships);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2f61b765/ui-modules/blueprint-composer/app/components/util/d3-blueprint.js
----------------------------------------------------------------------
diff --git a/ui-modules/blueprint-composer/app/components/util/d3-blueprint.js 
b/ui-modules/blueprint-composer/app/components/util/d3-blueprint.js
index 032e7a3..b25bc04 100755
--- a/ui-modules/blueprint-composer/app/components/util/d3-blueprint.js
+++ b/ui-modules/blueprint-composer/app/components/util/d3-blueprint.js
@@ -677,7 +677,13 @@ export function D3Blueprint(container) {
      * @return {*} a D3 tree node
      */
     function nodeForEntity(entity) {
-        let node = _d3DataHolder.nodes.find((d)=>(d.data._id === entity._id));
+        let node = _d3DataHolder.nodes.find(d => {
+            let predicate = d.data._id === entity._id;
+            if (!!d.data.getClusterMemberspecEntity(PREDICATE_MEMBERSPEC)) {
+                predicate |= 
d.data.getClusterMemberspecEntity(PREDICATE_MEMBERSPEC)._id === entity._id;
+            }
+            return predicate;
+        });
         if (!node) {
             throw new Error('Node for Entity ' + entity._id + ' not found');
         }
@@ -702,19 +708,21 @@ export function D3Blueprint(container) {
             .attr('d', function(d) {
                 let targetNode = nodeForEntity(d.target);
                 let sourceNode = nodeForEntity(d.source);
+                let sourceY = sourceNode.y + (d.source.isMemberSpec() ? 
_configHolder.nodes.memberspec.circle.cy : 0);
+                let targetY = targetNode.y + (d.target.isMemberSpec() ? 
_configHolder.nodes.memberspec.circle.cy : 0);
                 let dx = targetNode.x - sourceNode.x;
-                let dy = targetNode.y - sourceNode.y;
+                let dy = targetY - sourceY;
                 let dr = Math.sqrt(dx * dx + dy * dy);
                 let sweep = dx * dy > 0 ? 0 : 1;
-                _mirror.attr('d', `M ${sourceNode.x},${sourceNode.y} A 
${dr},${dr} 0 0,${sweep} ${targetNode.x},${targetNode.y}`);
+                _mirror.attr('d', `M ${sourceNode.x},${sourceY} A ${dr},${dr} 
0 0,${sweep} ${targetNode.x},${targetY}`);
 
                 let m = 
_mirror._groups[0][0].getPointAtLength(_mirror._groups[0][0].getTotalLength() - 
_configHolder.nodes.child.circle.r - 20);
 
                 dx = m.x - sourceNode.x;
-                dy = m.y - sourceNode.y;
+                dy = m.y - sourceY;
                 dr = Math.sqrt(dx * dx + dy * dy);
 
-                return `M ${sourceNode.x},${sourceNode.y} A ${dr},${dr} 0 
0,${sweep} ${m.x},${m.y}`;
+                return `M ${sourceNode.x},${sourceY} A ${dr},${dr} 0 
0,${sweep} ${m.x},${m.y}`;
             });
         relationData.exit()
             .transition()

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2f61b765/ui-modules/blueprint-composer/app/components/util/model/entity.model.js
----------------------------------------------------------------------
diff --git 
a/ui-modules/blueprint-composer/app/components/util/model/entity.model.js 
b/ui-modules/blueprint-composer/app/components/util/model/entity.model.js
index 182e68d..9643c66 100644
--- a/ui-modules/blueprint-composer/app/components/util/model/entity.model.js
+++ b/ui-modules/blueprint-composer/app/components/util/model/entity.model.js
@@ -556,6 +556,7 @@ Entity.prototype.addMetadata = addMetadata;
 Entity.prototype.removeConfig = removeConfig;
 Entity.prototype.removeMetadata = removeMetadata;
 Entity.prototype.isCluster = isCluster;
+Entity.prototype.isMemberSpec = isMemberSpec;
 Entity.prototype.setClusterMemberspecEntity = setClusterMemberspecEntity;
 Entity.prototype.getClusterMemberspecEntity = getClusterMemberspecEntity;
 Entity.prototype.getClusterMemberspecEntities = getClusterMemberspecEntities;
@@ -644,6 +645,14 @@ function isCluster() {
     }).length > 0;
 }
 
+/**
+ *
+ * @returns {boolean}
+ */
+function isMemberSpec() {
+    return this.parent.isCluster() && this.parent.getClusterMemberspecEntity() 
=== this;
+}
+
 export function baseType(s) {
     if (s && s.indexOf("<")>=0) {
         s = s.substring(0, s.indexOf("<")); 

Reply via email to