diff --git a/waltz-ng/client/common/hierarchy-utils.js b/waltz-ng/client/common/hierarchy-utils.js index 1f817d3345..585b215ee5 100644 --- a/waltz-ng/client/common/hierarchy-utils.js +++ b/waltz-ng/client/common/hierarchy-utils.js @@ -16,6 +16,7 @@ * */ import _ from "lodash"; +import {stratify} from "d3"; /** @@ -131,6 +132,24 @@ export function buildHierarchies(nodes, parentsAsRefs = true) { return _.reject(populateParents(nodes, parentsAsRefs), n => n.parent); } +export function buildHierarchies2(nodes) { + + console.time("stratify"); + const withRoot = _.concat([{id: -99}], nodes || []); + console.log({nodes, withRoot}) + const sr = stratify() + .parentId(d => d.id === -99 + ? null + : d.parentId ?? -99) + (withRoot); + const forest = _.map(sr.children, c => Object.assign(c, {parentId: null, parent: null})); + console.timeEnd("stratify"); + console.log({forest}) + return forest; + // return [sr]; + +} + export const reduceToSelectedNodesOnly = (nodes, selectedNodeIds = []) => { const byId = _.keyBy(nodes, d => d.id); const selectedNodesOnly = _ diff --git a/waltz-ng/client/measurable/components/tree/measurable-tree.html b/waltz-ng/client/measurable/components/tree/measurable-tree.html index db9a4c90fa..6cf424015f 100644 --- a/waltz-ng/client/measurable/components/tree/measurable-tree.html +++ b/waltz-ng/client/measurable/components/tree/measurable-tree.html @@ -45,12 +45,12 @@ tree-model="$ctrl.hierarchy" options="$ctrl.treeOptions" expanded-nodes="$ctrl.expandedNodes" - order-by="'-name'"> - + + ng-click="$ctrl.onSelect(node.data)"> - diff --git a/waltz-ng/client/measurable/components/tree/measurable-tree.js b/waltz-ng/client/measurable/components/tree/measurable-tree.js index 4e36b36de8..433a8a9ad4 100644 --- a/waltz-ng/client/measurable/components/tree/measurable-tree.js +++ b/waltz-ng/client/measurable/components/tree/measurable-tree.js @@ -25,7 +25,9 @@ import { doSearch, prepareSearchNodes, determineExpandedNodes, - determineDepthLimit} from "../../../common/hierarchy-utils"; + determineDepthLimit, + buildHierarchies2 +} from "../../../common/hierarchy-utils"; import template from "./measurable-tree.html"; @@ -76,7 +78,7 @@ const recursivelySum = buildPropertySummer(); function prepareTree(measurables = []) { - const hierarchy = buildHierarchies(measurables, false); + const hierarchy = buildHierarchies2(measurables, false); _.each(hierarchy, root => recursivelySum(root)); return hierarchy; }