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 6d38e6aa2c4728685cca0d22fc613a5992065dc8 Author: John Athanasiou <jathanas...@users.noreply.github.com> AuthorDate: Tue Aug 3 14:13:25 2021 +0100 syntax refactoring --- .../app/components/dsl-editor/dsl-editor.js | 70 +++++++++++----------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/ui-modules/blueprint-composer/app/components/dsl-editor/dsl-editor.js b/ui-modules/blueprint-composer/app/components/dsl-editor/dsl-editor.js index 9e4812d..cd1bdf4 100644 --- a/ui-modules/blueprint-composer/app/components/dsl-editor/dsl-editor.js +++ b/ui-modules/blueprint-composer/app/components/dsl-editor/dsl-editor.js @@ -280,19 +280,19 @@ export function dslEditorDirective($rootScope, $filter, $log, brUtilsGeneral, bl } } - function getEntityConfigPropertyItems (entity, definition, propertyName) { - return entity.miscData.get(propertyName) - .filter(item => item !== definition) + function entityPropertyParserFor(type, filterFunc=()=>true) { + return (entity, propertyName) => entity.miscData.get(propertyName) + .filter(filterFunc) .map(({ name, description }) => ({ id: name, - type: DSL_KINDS.CONFIG, + type, entity, name, description, })); - }; + } - function uniqueConfigItems(items) { + function uniqueItems(items) { const IDs = new Set(); return items.filter(({ id }) => { @@ -303,9 +303,11 @@ export function dslEditorDirective($rootScope, $filter, $log, brUtilsGeneral, bl } function getConfigItems(entity, definition, nested=false) { + const parseAsConfig = entityPropertyParserFor(DSL_KINDS.CONFIG, item=>item !== definition); + const result = [ - ...getEntityConfigPropertyItems(entity, definition, 'config'), - ...getEntityConfigPropertyItems(entity, definition, 'parameters'), + ...parseAsConfig(entity, 'config'), + ...parseAsConfig(entity, 'parameters'), ]; Object.values(entity.getClusterMemberspecEntities() || {}).forEach(member => { @@ -318,47 +320,47 @@ export function dslEditorDirective($rootScope, $filter, $log, brUtilsGeneral, bl return nested ? result - : uniqueConfigItems(result); // only need to check distinct items once, not in every recursion + : uniqueItems(result); // only need to check distinct items once, not in every recursion } - function getSensorItems(entity) { - let sensors = entity.miscData.get('sensors').map(sensor => { - return { - id: sensor.name, - type: DSL_KINDS.SENSOR, - entity: entity, - name: sensor.name, - description: sensor.description - }; + function getSensorItems(entity, nested=false) { + const parseAsSensors = entityPropertyParserFor(DSL_KINDS.SENSOR); + + const result = parseAsSensors(entity, 'sensors'); + + Object.values(entity.getClusterMemberspecEntities() || {}).forEach(member => { + result.push(...getSensorItems(member, true)); }); - sensors = Object.values(entity.getClusterMemberspecEntities()).reduce((acc, spec) => { - return acc.concat(getSensorItems(spec)); - }, sensors); + (entity.children || []).forEach(child => { + result.push(...getSensorItems(child, true)); + }); - return entity.children.reduce((acc, child) => { - return acc.concat(getSensorItems(child)); - }, sensors); + return nested + ? result + : uniqueItems(result); } - function getEntityItems(entity, type) { - let entities = []; - - entities.push({ + function getEntityItems(entity, nested=false) { + const result = [{ id: entity._id, type: DSL_KINDS.ENTITY, entity: entity, name: entity.miscData.get('typeName') || $filter('entityName')(entity) || 'New application', description: entity.description + }]; + + Object.values(entity.getClusterMemberspecEntities() || {}).forEach(member => { + result.push(...getEntityItems(member, true)); }); - entities = Object.values(entity.getClusterMemberspecEntities()).reduce((acc, spec) => { - return acc.concat(getEntityItems(spec, type)); - }, entities); + (entity.children || []).forEach(child => { + result.push(...getEntityItems(child, true)); + }); - return entity.children.reduce((acc, child) => { - return acc.concat(getEntityItems(child, type)); - }, entities); + return nested + ? result + : uniqueItems(result); } function getScopedDsl(entity, targetEntity, state) {