You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2021/05/31 22:18:41 UTC
[brooklyn-ui] 03/05: layers can be extended or overridden by
composerOverrides, and code tidy
This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-ui.git
commit 7c23bdcf9b4d1cdaf15d4588f2ee64a7714f199e
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Mon May 31 22:35:37 2021 +0100
layers can be extended or overridden by composerOverrides, and code tidy
---
.../app/components/util/d3-blueprint.js | 6 ++++++
.../app/views/main/main.controller.js | 25 ++++++++++++++++------
2 files changed, 24 insertions(+), 7 deletions(-)
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 eb23e80..e65507f 100755
--- a/ui-modules/blueprint-composer/app/components/util/d3-blueprint.js
+++ b/ui-modules/blueprint-composer/app/components/util/d3-blueprint.js
@@ -565,6 +565,12 @@ export function D3Blueprint(container, options) {
let nodeData = _nodeGroup.selectAll('g.node')
.data(_d3DataHolder.visible.nodes, (d)=>(`node-${d.data._id}`));
+ // if desired to let overrides customize things, could leverage two functions on the seletions,
+ // TBC whether in enter or draw or etc (and note, by exposing just the first, callers can use the second)
+ // .call( fn /* runs on the selection */ )
+ // .each( fn /* runs on each Node */ )
+
+
// Draw group that contains all SVG element: node representation and location/policies/enricher indicators
// -----------------------------------------------------
let nodeGroup = nodeData
diff --git a/ui-modules/blueprint-composer/app/views/main/main.controller.js b/ui-modules/blueprint-composer/app/views/main/main.controller.js
index 0e55db4..90f97b6 100644
--- a/ui-modules/blueprint-composer/app/views/main/main.controller.js
+++ b/ui-modules/blueprint-composer/app/views/main/main.controller.js
@@ -28,7 +28,7 @@ import {graphicalEditSpecState} from './graphical/edit/spec/edit.spec.controller
import bottomSheetTemplate from './bottom-sheet.template.html';
import {ISSUE_LEVEL} from '../../components/util/model/issue.model';
-const layers = [
+const LAYERS = [
{
id: 'locations',
label: 'Locations',
@@ -54,7 +54,7 @@ const layers = [
active: true
}
];
-const layerCacheKey = 'blueprint-composer.layers';
+const LAYER_CACHE_KEY = 'blueprint-composer.layers';
export function MainController($scope, $element, $log, $state, $stateParams, brBrandInfo, blueprintService, actionService, tabService, catalogApi, applicationApi, brSnackbar, brBottomSheet, composerOverrides, edit, yaml) {
$scope.$emit(HIDE_INTERSTITIAL_SPINNER_EVENT);
@@ -69,18 +69,29 @@ export function MainController($scope, $element, $log, $state, $stateParams, brB
vm.mode = toState;
});
- vm.layers = localStorage && localStorage.getItem(layerCacheKey) !== null ?
- JSON.parse(localStorage.getItem(layerCacheKey)) :
- layers;
+ let layersM = {};
+ (composerOverrides.getLayers() || LAYERS).forEach(l => layersM[l.id] = l);
+
+ let layersL = localStorage && localStorage.getItem(LAYER_CACHE_KEY) !== null && JSON.parse(localStorage.getItem(LAYER_CACHE_KEY));
+ if (layersL) layersL.forEach(l => { if (layersM[l.id]) layersM[l.id] = Object.assign({}, layersM[l.id], l); });
+ vm.layers = Object.values(layersM);
+
$scope.$watch('vm.layers', ()=> {
vm.layers.forEach(layer => {
document.querySelectorAll(layer.selector).forEach(node => {
- angular.element(node).css('display', layer.active ? 'block' : 'none');
+ // TODO does $watch approach give any newly created nodes/relationships the right display?
+
+ // if (layer.apply) {
+ // // layers could supply custom layer behaviour (including via composer overrides)
+ // layer.apply(node, layer, angular.element(node));
+ // } else {
+ angular.element(node).css('display', layer.active ? 'block' : 'none');
+ // }
});
});
if (localStorage) {
try {
- localStorage.setItem(layerCacheKey, JSON.stringify(vm.layers));
+ localStorage.setItem(LAYER_CACHE_KEY, JSON.stringify(vm.layers));
} catch (ex) {
$log.error('Cannot save layers preferences: ' + ex.message);
}