Group selection
Open in a new window.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../build/ogma.min.js"></script>
<style>
#graph-container { top: 0; bottom: 0; left: 0; right: 0; position: absolute; margin: 0; overflow: hidden; }
.group { position: absolute; top:10px; left: 10px; }
.ungroup { position: absolute; top:40px; left: 10px; }
</style>
</head>
<body>
<div id="graph-container"></div>
<button class="group" onclick="groupSelection()">Group selected nodes</button>
<button class="ungroup" onclick="ungroupNodes()">Undo last grouping</button>
<script>
'use strict';
var ogma = new Ogma({
container: 'graph-container'
});
var duration = 300;
ogma.generate.random({nodes: 15, edges: 15}).then(function (graph) {
ogma.setGraph(graph);
ogma.view.locateGraph();
});
var transformations = [];
function groupSelection() {
var selectedNodes = ogma.getSelectedNodes();
if (selectedNodes.size < 2) return;
var grouping = ogma.transformations.addNodeGrouping({
selector: function (node) {
return selectedNodes.includes(node);
},
nodeGenerator: function (nodes) {
return {
attributes: {
radius: nodes.reduce(function (radius, node) {
return radius + node.getAttribute('radius');
}, 0)
}
};
},
duration: duration
});
transformations.push(grouping);
}
function ungroupNodes() {
if (transformations.length > 0) {
transformations.pop().destroy(duration);
}
}
</script>
</body>
</html>