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("<"));
