+465
@@ -0,0 +1,465 @@
|
||||
<!DOCTYPE>
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>cytoscape-fcose.js demo</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
|
||||
|
||||
<!-- Bootstrap, popper, jQuery and filesaver - for demo purpose only -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<script src="https://unpkg.com/cytoscape/dist/cytoscape.min.js"></script>
|
||||
<script src="https://unpkg.com/layout-base/layout-base.js"></script>
|
||||
<script src="https://unpkg.com/cose-base/cose-base.js"></script>
|
||||
<script src="https://unpkg.com/cytoscape-layout-utilities/cytoscape-layout-utilities.js"></script>
|
||||
|
||||
<!-- for testing with local version of cytoscape.js -->
|
||||
<!--<script src="../cytoscape.js/build/cytoscape.js"></script>-->
|
||||
|
||||
<script src="../cytoscape-fcose.js"></script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-family: helvetica neue, helvetica, liberation sans, arial, sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#cy {
|
||||
position: relative;
|
||||
width: auto;
|
||||
height: 90%;
|
||||
z-index: 999;
|
||||
margin-left: 290px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
opacity: 1;
|
||||
color: #555;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
/* The sidepanel menu */
|
||||
.sidepanel {
|
||||
height: auto; /* Specify a height */
|
||||
width: 290px; /* 0 width - change this with JavaScript */
|
||||
position: absolute; /* Stay in place */
|
||||
z-index: 1000; /* Stay on top */
|
||||
float: left;
|
||||
top: auto;
|
||||
left: 0;
|
||||
background-color: #b7ffff; /* Black*/
|
||||
overflow-x: hidden; /* Disable horizontal scroll */
|
||||
padding-top: 10px; /* Place content 10px from the top */
|
||||
padding-bottom: 10px; /* Place content 10px from the bottom */
|
||||
transition: 0s; /* 0.5 second transition effect to slide in the sidepanel */
|
||||
}
|
||||
|
||||
table{
|
||||
margin-left: 4px;
|
||||
margin-right: auto;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
/* The sidepanel links */
|
||||
table td {
|
||||
padding: 0px 8px 8px 8px;
|
||||
text-decoration: none;
|
||||
font-size: 13px;
|
||||
color: #555;
|
||||
transition: 0.3s;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* Style the button that is used to open the sidepanel */
|
||||
.button {
|
||||
font-size: 15px;
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
background-color: #b7ffff;
|
||||
padding: 5px 10px;
|
||||
border: none;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.textField {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
background-color: #0f0;
|
||||
}
|
||||
|
||||
.btn-group-sm>.btn, .btn-sm {
|
||||
font-size: 13px;
|
||||
background-color: #7d8991;
|
||||
border-color: #7d8991;
|
||||
}
|
||||
|
||||
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open>.dropdown-toggle.btn-primary {
|
||||
color: #fff;
|
||||
background-color: #60717d;
|
||||
border-color: #60717d; /*set the color you want here*/
|
||||
}
|
||||
|
||||
.btn-outline-primary:hover, .btn-outline-primary:focus, .btn-outline-primary:active, .btn-outline-primary.active, .open>.dropdown-toggle.btn-primary {
|
||||
color: #fff;
|
||||
background-color: #60717d;
|
||||
border-color: #60717d; /*set the color you want here*/
|
||||
}
|
||||
|
||||
.form-control-sm {
|
||||
font-size: 13px
|
||||
}
|
||||
|
||||
.custom-select-sm {
|
||||
font-size: 13px
|
||||
}
|
||||
|
||||
.custom-control-label {
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.custom-control-input:checked~.custom-control-label::before {
|
||||
color: #fff;
|
||||
border-color: #7d8991;
|
||||
background-color: #7d8991;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function(){
|
||||
|
||||
var cy = window.cy = cytoscape({
|
||||
container: document.getElementById('cy'),
|
||||
|
||||
ready: function(){
|
||||
let layoutUtilities = this.layoutUtilities({
|
||||
desiredAspectRatio: this.width()/this.height()
|
||||
});
|
||||
this.nodes().forEach(function(node){
|
||||
let size = Math.random()*120+30;
|
||||
node.css("width", size);
|
||||
node.css("height", size);
|
||||
});
|
||||
this.layout({name: 'fcose', animationEasing: 'ease-out'}).run();
|
||||
},
|
||||
|
||||
// demo your layout
|
||||
layout: {
|
||||
name: 'grid'
|
||||
},
|
||||
|
||||
style: [
|
||||
{
|
||||
selector: 'node',
|
||||
style: {
|
||||
'background-color': '#2B65EC'
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
selector: ':parent',
|
||||
style: {
|
||||
'background-opacity': 0.333,
|
||||
'border-color': '#2B65EC'
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
selector: 'edge',
|
||||
style: {
|
||||
'line-color': '#2B65EC'
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
selector: 'node:selected',
|
||||
style: {
|
||||
'background-color': '#F08080',
|
||||
'border-color': 'red'
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
selector: 'edge:selected',
|
||||
style: {
|
||||
'line-color': '#F08080'
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
elements: [{ group:'nodes', data:{ id: 'n0'}},
|
||||
{ group:'nodes', data:{ id: 'n1'}},
|
||||
{ group:'nodes', data:{ id: 'n2'}},
|
||||
{ group:'nodes', data:{ id: 'n3'}},
|
||||
{ group:'nodes', data:{ id: 'n4', parent: 'n37'}},
|
||||
{ group:'nodes', data:{ id: 'n5'}},
|
||||
{ group:'nodes', data:{ id: 'n6'}},
|
||||
{ group:'nodes', data:{ id: 'n7', parent: 'n37'}},
|
||||
{ group:'nodes', data:{ id: 'n8', parent: 'n37'}},
|
||||
{ group:'nodes', data:{ id: 'n9', parent: 'n37'}},
|
||||
{ group:'nodes', data:{ id: 'n10', parent: 'n38'}},
|
||||
{ group:'nodes', data:{ id: 'n12'}},
|
||||
{ group:'nodes', data:{ id: 'n13'}},
|
||||
{ group:'nodes', data:{ id: 'n14'}},
|
||||
{ group:'nodes', data:{ id: 'n15'}},
|
||||
{ group:'nodes', data:{ id: 'n16'}},
|
||||
{ group:'nodes', data:{ id: 'n17'}},
|
||||
{ group:'nodes', data:{ id: 'n18'}},
|
||||
{ group:'nodes', data:{ id: 'n19'}},
|
||||
{ group:'nodes', data:{ id: 'n20'}},
|
||||
{ group:'nodes', data:{ id: 'n21'}},
|
||||
{ group:'nodes', data:{ id: 'n22'}},
|
||||
{ group:'nodes', data:{ id: 'n23'}},
|
||||
{ group:'nodes', data:{ id: 'n24', parent: 'n39'}},
|
||||
{ group:'nodes', data:{ id: 'n25', parent: 'n39'}},
|
||||
{ group:'nodes', data:{ id: 'n26', parent: 'n42'}},
|
||||
{ group:'nodes', data:{ id: 'n27', parent: 'n42'}},
|
||||
{ group:'nodes', data:{ id: 'n28', parent: 'n42'}},
|
||||
{ group:'nodes', data:{ id: 'n29', parent: 'n40'}},
|
||||
{ group:'nodes', data:{ id: 'n31', parent: 'n41'}},
|
||||
{ group:'nodes', data:{ id: 'n32', parent: 'n41'}},
|
||||
{ group:'nodes', data:{ id: 'n33', parent: 'n41'}},
|
||||
{ group:'nodes', data:{ id: 'n34', parent: 'n41'}},
|
||||
{ group:'nodes', data:{ id: 'n35', parent: 'n41'}},
|
||||
{ group:'nodes', data:{ id: 'n36', parent: 'n41'}},
|
||||
{ group:'nodes', data:{ id: 'n37'}},
|
||||
{ group:'nodes', data:{ id: 'n38'}},
|
||||
{ group:'nodes', data:{ id: 'n39', parent: 'n43'}},
|
||||
{ group:'nodes', data:{ id: 'n40', parent: 'n42'}},
|
||||
{ group:'nodes', data:{ id: 'n41', parent: 'n42'}},
|
||||
{ group:'nodes', data:{ id: 'n42', parent: 'n43'}},
|
||||
{ group:'nodes', data:{ id: 'n43'}},
|
||||
{ group:'nodes', data:{ id: 'n44'}},
|
||||
{ group:'nodes', data:{ id: 'n45'}},
|
||||
{ group:'nodes', data:{ id: 'n46'}},
|
||||
{ group:'nodes', data:{ id: 'n47'}},
|
||||
{ group:'edges', data:{ id: 'e0', source: 'n0', target: 'n1'} },
|
||||
{ group:'edges', data:{ id: 'e1', source: 'n1', target: 'n2'} },
|
||||
{ group:'edges', data:{ id: 'e2', source: 'n2', target: 'n3'} },
|
||||
{ group:'edges', data:{ id: 'e3', source: 'n0', target: 'n3'} },
|
||||
{ group:'edges', data:{ id: 'e4', source: 'n1', target: 'n4'} },
|
||||
{ group:'edges', data:{ id: 'e5', source: 'n2', target: 'n4'} },
|
||||
{ group:'edges', data:{ id: 'e6', source: 'n4', target: 'n5'} },
|
||||
{ group:'edges', data:{ id: 'e7', source: 'n5', target: 'n6'} },
|
||||
{ group:'edges', data:{ id: 'e8', source: 'n4', target: 'n6'} },
|
||||
{ group:'edges', data:{ id: 'e9', source: 'n4', target: 'n7'} },
|
||||
{ group:'edges', data:{ id: 'e10', source: 'n7', target: 'n8'} },
|
||||
{ group:'edges', data:{ id: 'e11', source: 'n8', target: 'n9'} },
|
||||
{ group:'edges', data:{ id: 'e12', source: 'n7', target: 'n9'} },
|
||||
{ group:'edges', data:{ id: 'e13', source: 'n13', target: 'n14'} },
|
||||
//{ group:'edges', data:{ id: 'e14', source: 'n12', target: 'n14'} },
|
||||
{ group:'edges', data:{ id: 'e15', source: 'n14', target: 'n15'} },
|
||||
{ group:'edges', data:{ id: 'e16', source: 'n14', target: 'n16'} },
|
||||
{ group:'edges', data:{ id: 'e17', source: 'n15', target: 'n17'} },
|
||||
{ group:'edges', data:{ id: 'e18', source: 'n17', target: 'n18'} },
|
||||
{ group:'edges', data:{ id: 'e19', source: 'n18', target: 'n19'} },
|
||||
{ group:'edges', data:{ id: 'e20', source: 'n17', target: 'n20'} },
|
||||
{ group:'edges', data:{ id: 'e21', source: 'n19', target: 'n20'} },
|
||||
{ group:'edges', data:{ id: 'e22', source: 'n16', target: 'n20'} },
|
||||
{ group:'edges', data:{ id: 'e23', source: 'n20', target: 'n21'} },
|
||||
{ group:'edges', data:{ id: 'e25', source: 'n23', target: 'n24'} },
|
||||
{ group:'edges', data:{ id: 'e26', source: 'n24', target: 'n25'} },
|
||||
{ group:'edges', data:{ id: 'e27', source: 'n26', target: 'n38'} },
|
||||
{ group:'edges', data:{ id: 'e29', source: 'n26', target: 'n39'} },
|
||||
{ group:'edges', data:{ id: 'e30', source: 'n26', target: 'n27'} },
|
||||
{ group:'edges', data:{ id: 'e31', source: 'n26', target: 'n28'} },
|
||||
{ group:'edges', data:{ id: 'e33', source: 'n21', target: 'n31'} },
|
||||
{ group:'edges', data:{ id: 'e35', source: 'n31', target: 'n33'} },
|
||||
{ group:'edges', data:{ id: 'e36', source: 'n31', target: 'n34'} },
|
||||
{ group:'edges', data:{ id: 'e37', source: 'n33', target: 'n34'} },
|
||||
{ group:'edges', data:{ id: 'e38', source: 'n32', target: 'n35'} },
|
||||
{ group:'edges', data:{ id: 'e39', source: 'n32', target: 'n36'} },
|
||||
{ group:'edges', data:{ id: 'e40', source: 'n16', target: 'n40'} },
|
||||
{ group:'edges', data:{ id: 'e41', source: 'n44', target: 'n45'} },
|
||||
{ group:'edges', data:{ id: 'e42', source: 'n44', target: 'n46'} },
|
||||
{ group:'edges', data:{ id: 'e43', source: 'n45', target: 'n46'} }
|
||||
]
|
||||
|
||||
});
|
||||
|
||||
document.getElementById("randomizeButton").addEventListener("click", function(){
|
||||
var layout = cy.layout({
|
||||
name: 'random',
|
||||
animate: true,
|
||||
animationDuration: 1000
|
||||
});
|
||||
|
||||
layout.run();
|
||||
});
|
||||
|
||||
document.getElementById("fcoseButton").addEventListener("click", function(){
|
||||
let qualityItem = document.getElementById("quality");
|
||||
var layout = cy.layout({
|
||||
name: 'fcose',
|
||||
quality: qualityItem.options[qualityItem.selectedIndex].value,
|
||||
randomize: !(document.getElementById("randomize").checked),
|
||||
animate: document.getElementById("animate").checked,
|
||||
animationEasing: 'ease-out',
|
||||
fit: document.getElementById("fit").checked,
|
||||
uniformNodeDimensions: document.getElementById("uniformNodeDimensions").checked,
|
||||
packComponents: document.getElementById("packComponents").checked,
|
||||
tile: document.getElementById("tile").checked,
|
||||
nodeRepulsion: parseFloat(document.getElementById("nodeRepulsion").value),
|
||||
idealEdgeLength: parseFloat(document.getElementById("idealEdgeLength").value),
|
||||
edgeElasticity: parseFloat(document.getElementById("edgeElasticity").value),
|
||||
nestingFactor: parseFloat(document.getElementById("nestingFactor").value),
|
||||
gravity: parseFloat(document.getElementById("gravity").value),
|
||||
gravityRange: parseFloat(document.getElementById("gravityRange").value),
|
||||
gravityCompound: parseFloat(document.getElementById("gravityCompound").value),
|
||||
gravityRangeCompound: parseFloat(document.getElementById("gravityRangeCompound").value),
|
||||
numIter: parseFloat(document.getElementById("numIter").value),
|
||||
tilingPaddingVertical: parseFloat(document.getElementById("tilingPaddingVertical").value),
|
||||
tilingPaddingHorizontal: parseFloat(document.getElementById("tilingPaddingHorizontal").value),
|
||||
initialEnergyOnIncremental: document.getElementById("initialEnergyOnIncremental").value,
|
||||
step:"all"
|
||||
});
|
||||
|
||||
layout.run();
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1 class="ml-2">cytoscape-fcose demo (compound)</h1>
|
||||
<div style='width: 300px; position: absolute;'>
|
||||
<button id="randomizeButton" class="btn btn-primary btn-sm mb-2 ml-2">Randomize</button>   
|
||||
<button id="fcoseButton" class="btn btn-primary btn-sm mb-2 ml-2">fCoSE</button>
|
||||
|
||||
<div id="mySidepanel" class="sidepanel">
|
||||
<table>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Quality of the layout"> Quality </span></td>
|
||||
<td>
|
||||
<select id="quality" class='custom-select custom-select-sm'>
|
||||
<option value="draft">draft</option>
|
||||
<option value="default" selected="">default</option>
|
||||
<option value="proof">proof</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to enable incremental mode"> Incremental </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="randomize" name="incremental">
|
||||
<label class="custom-control-label" for="randomize"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to perform animation after layout"> Animate </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="animate" name="animate" checked>
|
||||
<label class="custom-control-label" for="animate"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to fit the viewport to the repositioned nodes"> Fit </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="fit" name="fit" checked>
|
||||
<label class="custom-control-label" for="fit"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether nodes are of uniform dimensions"> Uniform Node Dimensions </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="uniformNodeDimensions" name="uniformNodeDimensions">
|
||||
<label class="custom-control-label" for="uniformNodeDimensions"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to pack components"> Pack Components to Window </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="packComponents" name="packComponents" checked>
|
||||
<label class="custom-control-label" for="packComponents"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to tile disconnected nodes"> Tile Disconnected </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="tile" name="tile" checked>
|
||||
<label class="custom-control-label" for="tile"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Node repulsion (non overlapping) multiplier"> Node Repulsion </span></td>
|
||||
<td><input id="nodeRepulsion" class="textField form-control form-control-sm" type="text" value="4500" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Ideal (intra-graph) edge length"> Ideal Edge Length </span></td>
|
||||
<td><input id="idealEdgeLength" class="textField form-control form-control-sm" type="text" value="50" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Divisor to compute edge forces"> Edge Elasticity </span></td>
|
||||
<td><input id="edgeElasticity" class="textField form-control form-control-sm" type="text" value="0.45" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Nesting factor (multiplier) to compute ideal edge length for inter-graph edges"> Nesting Factor </span></td>
|
||||
<td><input id="nestingFactor" class="textField form-control form-control-sm" type="text" value="0.1" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Gravity force (constant)"> Gravity </span></td>
|
||||
<td><input id="gravity" class="textField form-control form-control-sm" type="text" value="0.25" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Gravity range (constant)"> Gravity Range </span></td>
|
||||
<td><input id="gravityRange" class="textField form-control form-control-sm" type="text" value="3.8" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Gravity force (constant) for compounds"> Compound Gravity </span></td>
|
||||
<td><input id="gravityCompound" class="textField form-control form-control-sm" type="text" value="1" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Gravity range (constant) for compounds"> Compound Gravity Range </span></td>
|
||||
<td><input id="gravityRangeCompound" class="textField form-control form-control-sm" type="text" value="1.5" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Maximum number of iterations to perform"> Number of Iterations </span></td>
|
||||
<td><input id="numIter" class="textField form-control form-control-sm" type="text" value="2500" size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Amount of vertical space to put between degree zero nodes during tiling"> Tiling Vertical Padding </span></td>
|
||||
<td><input id="tilingPaddingVertical" class="textField form-control form-control-sm" type="text" value="10" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Amount of horizontal space to put between degree zero nodes during tiling"> Tiling Horizontal Padding </span></td>
|
||||
<td><input id="tilingPaddingHorizontal" class="textField form-control form-control-sm" type="text" value="10" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Initial cooling factor for incremental layout"> Incremental Cooling Factor </span></td>
|
||||
<td><input id="initialEnergyOnIncremental" class="textField form-control form-control-sm" type="text" value="0.3" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="cy"></div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+1482
File diff suppressed because it is too large
Load Diff
+345
@@ -0,0 +1,345 @@
|
||||
<!DOCTYPE>
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>cytoscape-fcose.js demo</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
|
||||
|
||||
<!-- Bootstrap, popper, jQuery and filesaver - for demo purpose only -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||
<script src="https://raw.githack.com/eligrey/FileSaver.js/master/dist/FileSaver.min.js"></script>
|
||||
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Cytoscape and fcose -->
|
||||
<script src="https://unpkg.com/cytoscape/dist/cytoscape.min.js"></script>
|
||||
<script src="https://unpkg.com/layout-base/layout-base.js"></script>
|
||||
<script src="https://unpkg.com/cose-base/cose-base.js"></script>
|
||||
<script src="../cytoscape-fcose.js"></script>
|
||||
|
||||
<script src="demo-constraint-control.js" defer></script>
|
||||
|
||||
<!-- CoLa for local comparison only -->
|
||||
<!-- <script src="https://unpkg.com/webcola/WebCola/cola.min.js"></script> -->
|
||||
<!-- <script src="cytoscape-cola.js"></script> -->
|
||||
|
||||
<script src="https://unpkg.com/cytoscape-layout-utilities/cytoscape-layout-utilities.js"></script>
|
||||
<script src="https://unpkg.com/cytoscape-view-utilities/cytoscape-view-utilities.js"></script>
|
||||
<script src="https://unpkg.com/cytoscape-graphml/cytoscape-graphml.js"></script> <!-- graphml - for demo purpose only-->
|
||||
<!-- <script src="https://raw.githack.com/iVis-at-Bilkent/cytoscape.js-layvo/unstable/cytoscape-layvo.js"></script> --> <!-- For quality metrics -->
|
||||
<!-- <script src="https://raw.githack.com/kinimesi/cytoscape-svg/master/cytoscape-svg.js"></script> --> <!-- For svg export -->
|
||||
|
||||
<!-- We use a workaround here to be able to debug real world files in local by keeping json content as js variable. -->
|
||||
<script type="text/javascript" src="samples/unix.js"></script>
|
||||
<script type="text/javascript" src="samples/unix_constraints.js"></script>
|
||||
<script type="text/javascript" src="samples/chalk.js"></script>
|
||||
<script type="text/javascript" src="samples/chalk_constraints.js"></script>
|
||||
<script type="text/javascript" src="samples/uwsn.js"></script>
|
||||
<script type="text/javascript" src="samples/uwsn_constraints.js"></script>
|
||||
<script type="text/javascript" src="samples/callGraph.js"></script>
|
||||
<script type="text/javascript" src="samples/callGraph_constraints.js"></script>
|
||||
<script type="text/javascript" src="samples/wsn.js"></script>
|
||||
<script type="text/javascript" src="samples/wsn_constraints.js"></script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-family: helvetica neue, helvetica, liberation sans, arial, sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#cy {
|
||||
position: relative;
|
||||
width: auto;
|
||||
height: 95%;
|
||||
z-index: 999;
|
||||
margin-left: 375px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
opacity: 1;
|
||||
color: #555;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
hr.line {
|
||||
margin-top: 9px;
|
||||
margin-bottom: 9px
|
||||
}
|
||||
|
||||
/* The sidepanel menu */
|
||||
.sidepanel {
|
||||
height: auto; /* Specify a height */
|
||||
width: 375px; /* 0 width - change this with JavaScript */
|
||||
position: absolute; /* Stay in place */
|
||||
z-index: 1000; /* Stay on top */
|
||||
float: left;
|
||||
top: auto;
|
||||
left: 0;
|
||||
background-color: #d9fbff;
|
||||
overflow-x: hidden; /* Disable horizontal scroll */
|
||||
padding-top: 10px; /* Place content 10px from the top */
|
||||
padding-bottom: 10px; /* Place content 10px from the bottom */
|
||||
transition: 0s; /* 0.5 second transition effect to slide in the sidepanel */
|
||||
}
|
||||
|
||||
table{
|
||||
margin-left: 8;
|
||||
margin-right: 10;
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
/* The sidepanel links */
|
||||
table td {
|
||||
padding: 4px 4px 4px 0px;
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
color: #555;
|
||||
transition: 0.3s;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.layoutButton {
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
background-color: #b7ffff;
|
||||
padding: 5px 10px;
|
||||
border: none;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.constraintButton {
|
||||
cursor: pointer;
|
||||
padding: 2px 5px;
|
||||
background-color: #64ffee;
|
||||
border-radius: 3px;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
.constraintButtonLarge {
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
background-color: #64ffee;
|
||||
border-radius: 3px;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
.btn-group-sm>.btn, .btn-sm {
|
||||
font-size: 13px;
|
||||
background-color: #7d8991;
|
||||
border-color: #7d8991;
|
||||
}
|
||||
|
||||
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open>.dropdown-toggle.btn-primary {
|
||||
color: #fff;
|
||||
background-color: #60717d;
|
||||
border-color: #60717d; /*set the color you want here*/
|
||||
}
|
||||
|
||||
.btn-outline-primary:hover, .btn-outline-primary:focus, .btn-outline-primary:active, .btn-outline-primary.active, .open>.dropdown-toggle.btn-primary {
|
||||
color: #fff;
|
||||
background-color: #60717d;
|
||||
border-color: #60717d; /*set the color you want here*/
|
||||
}
|
||||
|
||||
.btn-outline-primary{
|
||||
font-size: 13px;
|
||||
background-color: #ffffff;
|
||||
color: #7d8991;
|
||||
}
|
||||
|
||||
.form-control-sm {
|
||||
font-size: 13px
|
||||
}
|
||||
|
||||
.custom-select-sm {
|
||||
font-size: 13px
|
||||
}
|
||||
|
||||
.textField {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
background-color: #0f0;
|
||||
}
|
||||
|
||||
.custom-control-label {
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.custom-control-input:checked~.custom-control-label::before {
|
||||
color: #fff;
|
||||
border-color: #7d8991;
|
||||
background-color: #7d8991;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 class="ml-2">cytoscape-fcose demo (constraint)</h1>
|
||||
<div style='width: 375px; position: absolute;'>
|
||||
<!-- File menu-->
|
||||
<input id="inputFile" type='file' style="display: none" />
|
||||
<input type="button" id="openFile" type="button" class="btn btn-primary btn-sm ml-2" data-toggle="tooltip" title="Load graphml file" value="Load Graph"/> 
|
||||
<select id="sample" class="custom-select custom-select-sm ml-2" style="width:auto;">
|
||||
<option value="sample1" selected="">sample1 - fixed</option>
|
||||
<option value="sample2">sample2 - alignment</option>
|
||||
<option value="sample3">sample3 - relative</option>
|
||||
<option value="sample4">sample4 - hybrid</option>
|
||||
<option value="sample4">sample5</option>
|
||||
<option value="sample5">unix-family-tree</option>
|
||||
<option value="sample6">chalk-dependency</option>
|
||||
<option value="sample7">UW-sensor-network</option>
|
||||
<option value="sample8">python-call-graph</option>
|
||||
<option value="sample9">wireless-sensor-network</option>
|
||||
</select>
|
||||
<!-- File Menu End -->
|
||||
|
||||
<hr class="line">
|
||||
|
||||
<!-- Layout Menu-->
|
||||
<button id="randomizeButton" class="btn btn-primary btn-sm mb-2 ml-2">Randomize</button> 
|
||||
<button id="fcoseButton" class="btn btn-primary btn-sm mb-2">fCoSE</button> 
|
||||
<!-- <button id="colaButton" class="btn btn-primary btn-sm mb-2">CoLa</button>  -->
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="incremental" name="incremental">
|
||||
<label class="custom-control-label" for="incremental">Incremental</label>
|
||||
</div><br>
|
||||
<button id="draftButton" class="btn btn-outline-primary btn-sm ml-2">Draft</button> 
|
||||
<button id="transformButton" class="btn btn-outline-primary btn-sm">Transform</button> 
|
||||
<button id="enforceButton" class="btn btn-outline-primary btn-sm">Enforce</button> 
|
||||
<button id="coseButton" class="btn btn-outline-primary btn-sm">CoSE</button><br>
|
||||
<!-- Layout Menu End-->
|
||||
|
||||
<hr class="line">
|
||||
<div id="mySidepanel" class="sidepanel">
|
||||
<!-- Constraints Menu -->
|
||||
<table id="ConstraintIOTable">
|
||||
<tr>
|
||||
<td style = "width: 25%"><h7 class="card-subtitle mt-1 text-muted"><b>Constraints</b></h7></td>
|
||||
<td><button id="importConstraint" type="button" class="btn btn-primary btn-sm ml-1" onclick="document.getElementById('inputConstraint').click();" data-toggle="tooltip" title="Import constraint file">Import</button>
|
||||
<input id="inputConstraint" type='file' style="display: none" /></td>
|
||||
<td><button id="exportConstraint" type="button" class="btn btn-primary btn-sm" data-toggle="tooltip" title="Export constraint file">Export</button></td>
|
||||
<td style = "width: 35%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr class="line">
|
||||
|
||||
<!-- <button id="saveAsSVG" type="button" class="layoutButton" data-toggle="tooltip" title="Save graph as SVG file">Save as SVG</button> -->
|
||||
<!-- Fixed Node Constraints -->
|
||||
<form>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 mb-2">
|
||||
<h7 class="card-subtitle ml-2 mt-1 text-muted"><b>Fixed Node Constraint</b></h7>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row form-inline">
|
||||
<div id="nodeListColumn" class="form-group col-md-4 ml-2 mr-3">
|
||||
</div>
|
||||
<div class="form-group col-md-5">
|
||||
<label>x : </label>
|
||||
<input type="text" class="form-control form-control-sm w-25 ml-1 mr-1" style="display:flex; flex-grow:1" id="fixedNodeX" value="">
|
||||
<label>y : </label>
|
||||
<input type="text" class="form-control form-control-sm w-25 ml-1 mr-1" style="display:flex; flex-grow:1" id="fixedNodeY" value="">
|
||||
</div>
|
||||
<div class="form-group col-md-2">
|
||||
<input type="button" id="fixedNode" class="btn btn-primary btn-sm" value="Add"/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<hr class="line">
|
||||
|
||||
<!-- Alignment Constraints -->
|
||||
<form>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 mb-2">
|
||||
<h7 class="card-subtitle ml-2 mt-1 text-muted"><b>Alignment Constraint</b></h7>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row form-inline mb-2">
|
||||
<div class="form-group col-md-8">
|
||||
<h7 class="card-subtitle ml-2 mt-1 text-muted">Selected Nodes Vertically</h7>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<input type="button" id="verticalAlignment" class="btn btn-primary btn-sm" value="Add"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row form-inline">
|
||||
<div class="form-group col-md-8">
|
||||
<h7 class="card-subtitle ml-2 mt-1 text-muted">Selected Nodes Horizontally</h7>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<input type="button" id="horizontalAlignment" class="btn btn-primary btn-sm" value="Add"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 mt-2 mb-0">
|
||||
<span style="margin-left: 9px; font-size: 12px">Click on a node for selecting. Shift + click for extending selection.</span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<hr class="line">
|
||||
|
||||
<!-- Relative Placement Constraints -->
|
||||
<form>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 mb-2">
|
||||
<h7 class="card-subtitle ml-2 mt-1 text-muted"><b>Relative Placement Constraint</b></h7>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row form-inline">
|
||||
<div id="nodeListColumnRP1" class="form-group col-md-12 ml-2 mb-2"></div>
|
||||
</div>
|
||||
<div class="form-row form-inline mb-2">
|
||||
<div class="form-group col-md-4">
|
||||
<select id="directionList" class='custom-select custom-select-sm ml-2' style='width:auto;'>
|
||||
<option value="left-right">left-right</option>
|
||||
<option value="top-bottom">top-bottom</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label>Gap: </label>
|
||||
<input type="text" class="form-control form-control-sm w-50 ml-1" id="gap" value="">
|
||||
</div>
|
||||
<div class="form-group col-md-2">
|
||||
<input type="button" id="relativePlacement" class="btn btn-primary btn-sm" value="Add"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row form-inline mb-2">
|
||||
<div id="nodeListColumnRP2" class="form-group col-md-12 ml-2"></div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<hr class="line">
|
||||
|
||||
<table id="constraintListTable" class="table-striped">
|
||||
<div class="form-group col-md-12 mt-1 mb-1" style="padding-left: 9px">
|
||||
<span style="font-size: 12px">Hover a constraint row to see involved nodes.</span>
|
||||
</div>
|
||||
<tr>
|
||||
<th style="font-size: 0.9em; text-align: left; width:25%">Type</th>
|
||||
<th style="font-size: 0.9em; text-align: left; width:40%">Nodes</th>
|
||||
<th style="font-size: 0.9em; text-align: left;">Info</th>
|
||||
<th style="font-size: 0.9em; text-align: left;"></th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!-- Constraints Menu End-->
|
||||
</div>
|
||||
<div id="cy"></div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 4.4 MiB |
+457
@@ -0,0 +1,457 @@
|
||||
<!DOCTYPE>
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>cytoscape-fcose.js demo</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
|
||||
|
||||
<!-- Bootstrap, popper, jQuery and filesaver - for demo purpose only -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<script src="https://unpkg.com/cytoscape/dist/cytoscape.min.js"></script>
|
||||
<script src="https://unpkg.com/layout-base/layout-base.js"></script>
|
||||
<script src="https://unpkg.com/cose-base/cose-base.js"></script>
|
||||
<script src="https://unpkg.com/cytoscape-layout-utilities/cytoscape-layout-utilities.js"></script>
|
||||
|
||||
<!-- for testing with local version of cytoscape.js -->
|
||||
<!--<script src="../cytoscape.js/build/cytoscape.js"></script>-->
|
||||
|
||||
<script src="../cytoscape-fcose.js"></script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-family: helvetica neue, helvetica, liberation sans, arial, sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#cy {
|
||||
position: relative;
|
||||
width: auto;
|
||||
height: 90%;
|
||||
z-index: 999;
|
||||
margin-left: 290px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
opacity: 1;
|
||||
color: #555;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
/* The sidepanel menu */
|
||||
.sidepanel {
|
||||
height: auto; /* Specify a height */
|
||||
width: 290px; /* 0 width - change this with JavaScript */
|
||||
position: absolute; /* Stay in place */
|
||||
z-index: 1000; /* Stay on top */
|
||||
float: left;
|
||||
top: auto;
|
||||
left: 0;
|
||||
background-color: #b7ffff; /* Black*/
|
||||
overflow-x: hidden; /* Disable horizontal scroll */
|
||||
padding-top: 10px; /* Place content 10px from the top */
|
||||
padding-bottom: 10px; /* Place content 10px from the bottom */
|
||||
transition: 0s; /* 0.5 second transition effect to slide in the sidepanel */
|
||||
}
|
||||
|
||||
table{
|
||||
margin-left: 4px;
|
||||
margin-right: auto;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
/* The sidepanel links */
|
||||
table td {
|
||||
padding: 0px 8px 8px 8px;
|
||||
text-decoration: none;
|
||||
font-size: 13px;
|
||||
color: #555;
|
||||
transition: 0.3s;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* Style the button that is used to open the sidepanel */
|
||||
.button {
|
||||
font-size: 15px;
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
background-color: #b7ffff;
|
||||
padding: 5px 10px;
|
||||
border: none;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.textField {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
background-color: #0f0;
|
||||
}
|
||||
|
||||
.btn-group-sm>.btn, .btn-sm {
|
||||
font-size: 13px;
|
||||
background-color: #7d8991;
|
||||
border-color: #7d8991;
|
||||
}
|
||||
|
||||
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open>.dropdown-toggle.btn-primary {
|
||||
color: #fff;
|
||||
background-color: #60717d;
|
||||
border-color: #60717d; /*set the color you want here*/
|
||||
}
|
||||
|
||||
.btn-outline-primary:hover, .btn-outline-primary:focus, .btn-outline-primary:active, .btn-outline-primary.active, .open>.dropdown-toggle.btn-primary {
|
||||
color: #fff;
|
||||
background-color: #60717d;
|
||||
border-color: #60717d; /*set the color you want here*/
|
||||
}
|
||||
|
||||
.form-control-sm {
|
||||
font-size: 13px
|
||||
}
|
||||
|
||||
.custom-select-sm {
|
||||
font-size: 13px
|
||||
}
|
||||
|
||||
.custom-control-label {
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.custom-control-input:checked~.custom-control-label::before {
|
||||
color: #fff;
|
||||
border-color: #7d8991;
|
||||
background-color: #7d8991;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function(){
|
||||
|
||||
var cy = window.cy = cytoscape({
|
||||
container: document.getElementById('cy'),
|
||||
|
||||
ready: function(){
|
||||
let layoutUtilities = this.layoutUtilities({
|
||||
desiredAspectRatio: this.width()/this.height()
|
||||
});
|
||||
this.nodes().forEach(function(node){
|
||||
let size = Math.random()*120+30;
|
||||
node.css("width", size);
|
||||
node.css("height", size);
|
||||
});
|
||||
this.layout({name: 'fcose'}).run();
|
||||
},
|
||||
|
||||
style: [
|
||||
{
|
||||
selector: 'node',
|
||||
style: {
|
||||
'background-color': '#2B65EC'
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
selector: 'edge',
|
||||
style: {
|
||||
'width': 3,
|
||||
'line-color': '#2B65EC'
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
selector: 'node:selected',
|
||||
style: {
|
||||
'background-color': '#F08080',
|
||||
'border-color': 'red'
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
selector: 'edge:selected',
|
||||
style: {
|
||||
'line-color': '#F08080'
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
elements: [{"data":{"id":"glyph9","position":{"x":1452.639173965406,"y":609.3619416544145},"group":"nodes"}},
|
||||
{"data":{"id":"glyph0","position":{"x":1351.3490293961959,"y":518.9529901384763},"group":"nodes"}},
|
||||
{"data":{"id":"glyph6","position":{"x":1358.2854747390154,"y":707.9866590968695},"group":"nodes"}},
|
||||
{"data":{"id":"glyph8","position":{"x":1322.9939787691299,"y":614.6878118623499},"group":"nodes"}},
|
||||
{"data":{"id":"glyph7","position":{"x":1239.4852011317887,"y":543.2369849876238},"group":"nodes"}},
|
||||
{"data":{"id":"glyph12","position":{"x":841.6855140740067,"y":765.0152660242113},"group":"nodes"}},
|
||||
{"data":{"id":"glyph13","position":{"x":1019.5908382748769,"y":841.6087025848726},"group":"nodes"}},
|
||||
{"data":{"id":"glyph1","position":{"x":1231.2768042260652,"y":673.2683218469676},"group":"nodes"}},
|
||||
{"data":{"id":"glyph2","position":{"x":1039.8995038336504,"y":730.180116446269},"group":"nodes"}},
|
||||
{"data":{"id":"glyph15","position":{"x":569.5498472077387,"y":506.89980858075364},"group":"nodes"}},
|
||||
{"data":{"id":"glyph3","position":{"x":903.0347368937041,"y":654.3308627056822},"group":"nodes"}},
|
||||
{"data":{"id":"glyph17","position":{"x":1195.6310733031135,"y":820.9504141631944},"group":"nodes"}},
|
||||
{"data":{"id":"glyph10","position":{"x":1141.2404374322139,"y":732.3190922346248},"group":"nodes"}},
|
||||
{"data":{"id":"glyph19","position":{"x":893.1427762830865,"y":856.2695126662625},"group":"nodes"}},
|
||||
{"data":{"id":"glyph11","position":{"x":939.3335184518824,"y":758.3699048922733},"group":"nodes"}},
|
||||
{"data":{"id":"glyph18","position":{"x":770.4114528170364,"y":659.2220219290564},"group":"nodes"}},
|
||||
{"data":{"id":"glyph16","position":{"x":818.0111009023315,"y":564.8072603606723},"group":"nodes"}},
|
||||
{"data":{"id":"glyph22","position":{"x":651.1292498357636,"y":314.1387423188818},"group":"nodes"}},
|
||||
{"data":{"id":"glyph4","position":{"x":792.0076145303351,"y":454.0225025614517},"group":"nodes"}},
|
||||
{"data":{"id":"glyph23","position":{"x":704.0937009722281,"y":398.0421081673902},"group":"nodes"}},
|
||||
{"data":{"id":"glyph24","position":{"x":809.2974819306742,"y":231.7141323534711},"group":"nodes"}},
|
||||
{"data":{"id":"glyph25","position":{"x":890.826951363933,"y":299.74915938409947},"group":"nodes"}},
|
||||
{"data":{"id":"glyph20","position":{"x":786.2625869125006,"y":331.67766378118495},"group":"nodes"}},
|
||||
{"data":{"id":"glyph26","position":{"x":879.2981049664311,"y":389.27232563593486},"group":"nodes"}},
|
||||
{"data":{"id":"glyph35","position":{"x":627.088268638501,"y":40.089848876876886},"group":"nodes"}},
|
||||
{"data":{"id":"glyph36","position":{"x":329.6761506918384,"y":187.20503497360494},"group":"nodes"}},
|
||||
{"data":{"id":"glyph37","position":{"x":155.12947729633356,"y":379.5263531900425},"group":"nodes"}},
|
||||
{"data":{"id":"glyph38","position":{"x":70.13952165372024,"y":581.2691021233562},"group":"nodes"}},
|
||||
{"data":{"id":"glyph21","position":{"x":713.4639263718316,"y":229.06355211274115},"group":"nodes"}},
|
||||
{"data":{"id":"glyph42","position":{"x":523.848994074475,"y":108.47701882803744},"group":"nodes"}},
|
||||
{"data":{"id":"glyph41","position":{"x":718.966532806447,"y":116.46683749236911},"group":"nodes"}},
|
||||
{"data":{"id":"glyph31","position":{"x":621.3138039842713,"y":145.7168752444793},"group":"nodes"}},
|
||||
{"data":{"id":"glyph27","position":{"x":525.2099120385327,"y":210.92542274858295},"group":"nodes"}},
|
||||
{"data":{"id":"glyph32","position":{"x":426.3492127437995,"y":257.85665030680025},"group":"nodes"}},
|
||||
{"data":{"id":"glyph28","position":{"x":346.30926488002945,"y":344.4562152937847},"group":"nodes"}},
|
||||
{"data":{"id":"glyph43","position":{"x":363.54724181648487,"y":486.5705174517715},"group":"nodes"}},
|
||||
{"data":{"id":"glyph33","position":{"x":269.87972487503066,"y":430.2423722580144},"group":"nodes"}},
|
||||
{"data":{"id":"glyph29","position":{"x":227.86139816113416,"y":531.824141876398},"group":"nodes"}},
|
||||
{"data":{"id":"glyph39","position":{"x":104.77693104995387,"y":691.8382969303054},"group":"nodes"}},
|
||||
{"data":{"id":"glyph40","position":{"x":292.039416141131,"y":643.4009391289965},"group":"nodes"}},
|
||||
{"data":{"id":"glyph34","position":{"x":193.8304385062596,"y":632.9540034207419},"group":"nodes"}},
|
||||
{"data":{"id":"glyph30","position":{"x":205.4745704273754,"y":733.5181650652648},"group":"nodes"}},
|
||||
{"data":{"id":"glyph14","position":{"x":695.1248473196924,"y":482.8828321494848},"group":"nodes"}},
|
||||
{"data":{"id":"glyph5","position":{"x":721.6687687330186,"y":570.3868893775194},"group":"nodes"}},
|
||||
{"data":{"id":"e22","source":"glyph9","target":"glyph8","group":"edges"}},
|
||||
{"data":{"id":"e23","source":"glyph0","target":"glyph8","group":"edges"}},
|
||||
{"data":{"id":"e24","source":"glyph8","target":"glyph1","group":"edges"}},
|
||||
{"data":{"id":"e25","source":"glyph6","target":"glyph8","group":"edges"}},
|
||||
{"data":{"id":"e26","source":"glyph8","target":"glyph7","group":"edges"}},
|
||||
{"data":{"id":"e27","source":"glyph11","target":"glyph12","group":"edges"}},
|
||||
{"data":{"id":"e28","source":"glyph13","target":"glyph11","group":"edges"}},
|
||||
{"data":{"id":"e29","source":"glyph1","target":"glyph10","group":"edges"}},
|
||||
{"data":{"id":"e30","source":"glyph10","target":"glyph2","group":"edges"}},
|
||||
{"data":{"id":"e31","source":"glyph2","target":"glyph11","group":"edges"}},
|
||||
//{"data":{"id":"e32","source":"glyph11","target":"glyph3","group":"edges"}},
|
||||
{"data":{"id":"e33","source":"glyph14","target":"glyph4","group":"edges"}},
|
||||
{"data":{"id":"e34","source":"glyph15","target":"glyph14","group":"edges"}},
|
||||
{"data":{"id":"e35","source":"glyph3","target":"glyph16","group":"edges"}},
|
||||
{"data":{"id":"e36","source":"glyph16","target":"glyph5","group":"edges"}},
|
||||
{"data":{"id":"e37","source":"glyph16","target":"glyph4","group":"edges"}},
|
||||
{"data":{"id":"e38","source":"glyph17","target":"glyph10","group":"edges"}},
|
||||
{"data":{"id":"e39","source":"glyph19","target":"glyph11","group":"edges"}},
|
||||
{"data":{"id":"e40","source":"glyph18","target":"glyph16","group":"edges"}},
|
||||
//{"data":{"id":"e41","source":"glyph22","target":"glyph20","group":"edges"}},
|
||||
{"data":{"id":"e42","source":"glyph4","target":"glyph20","group":"edges"}},
|
||||
{"data":{"id":"e43","source":"glyph20","target":"glyph21","group":"edges"}},
|
||||
{"data":{"id":"e44","source":"glyph23","target":"glyph20","group":"edges"}},
|
||||
{"data":{"id":"e45","source":"glyph24","target":"glyph20","group":"edges"}},
|
||||
{"data":{"id":"e46","source":"glyph20","target":"glyph25","group":"edges"}},
|
||||
{"data":{"id":"e47","source":"glyph20","target":"glyph26","group":"edges"}},
|
||||
{"data":{"id":"e48","source":"glyph35","target":"glyph31","group":"edges"}},
|
||||
{"data":{"id":"e49","source":"glyph36","target":"glyph32","group":"edges"}},
|
||||
//{"data":{"id":"e50","source":"glyph37","target":"glyph33","group":"edges"}},
|
||||
{"data":{"id":"e51","source":"glyph38","target":"glyph34","group":"edges"}},
|
||||
{"data":{"id":"e52","source":"glyph21","target":"glyph31","group":"edges"}},
|
||||
{"data":{"id":"e53","source":"glyph42","target":"glyph31","group":"edges"}},
|
||||
{"data":{"id":"e54","source":"glyph31","target":"glyph41","group":"edges"}},
|
||||
{"data":{"id":"e55","source":"glyph31","target":"glyph27","group":"edges"}},
|
||||
{"data":{"id":"e56","source":"glyph27","target":"glyph32","group":"edges"}},
|
||||
{"data":{"id":"e57","source":"glyph32","target":"glyph28","group":"edges"}},
|
||||
{"data":{"id":"e58","source":"glyph28","target":"glyph33","group":"edges"}},
|
||||
//{"data":{"id":"e59","source":"glyph33","target":"glyph43","group":"edges"}},
|
||||
//{"data":{"id":"e60","source":"glyph33","target":"glyph29","group":"edges"}},
|
||||
{"data":{"id":"e61","source":"glyph29","target":"glyph34","group":"edges"}},
|
||||
//{"data":{"id":"e62","source":"glyph39","target":"glyph34","group":"edges"}},
|
||||
{"data":{"id":"e63","source":"glyph34","target":"glyph40","group":"edges"}},
|
||||
{"data":{"id":"e64","source":"glyph34","target":"glyph30","group":"edges"}},
|
||||
{"data":{"id":"e65","source":"glyph14","target":"glyph5","group":"edges"}},
|
||||
{"data":{"id":"e66","source":"glyph33","target":"glyph35","group":"edges"}},
|
||||
{"data":{"id":"e67","source":"glyph13","target":"glyph22","group":"edges"}},
|
||||
{"data":{"id":"e68","source":"glyph17","target":"glyph6","group":"edges"}},
|
||||
{"data":{"id":"e69","source":"glyph25","target":"glyph27","group":"edges"}}]
|
||||
});
|
||||
|
||||
document.getElementById("randomizeButton").addEventListener("click", function(){
|
||||
var layout = cy.layout({
|
||||
name: 'random',
|
||||
animate: true,
|
||||
animationDuration: 1000
|
||||
});
|
||||
|
||||
layout.run();
|
||||
});
|
||||
|
||||
document.getElementById("fcoseButton").addEventListener("click", function(){
|
||||
let qualityItem = document.getElementById("quality");
|
||||
var layout = cy.layout({
|
||||
name: 'fcose',
|
||||
quality: qualityItem.options[qualityItem.selectedIndex].value,
|
||||
randomize: !(document.getElementById("randomize").checked),
|
||||
animate: document.getElementById("animate").checked,
|
||||
animationEasing: 'ease-out',
|
||||
fit: document.getElementById("fit").checked,
|
||||
uniformNodeDimensions: document.getElementById("uniformNodeDimensions").checked,
|
||||
packComponents: document.getElementById("packComponents").checked,
|
||||
tile: document.getElementById("tile").checked,
|
||||
nodeRepulsion: parseFloat(document.getElementById("nodeRepulsion").value),
|
||||
idealEdgeLength: parseFloat(document.getElementById("idealEdgeLength").value),
|
||||
edgeElasticity: parseFloat(document.getElementById("edgeElasticity").value),
|
||||
nestingFactor: parseFloat(document.getElementById("nestingFactor").value),
|
||||
gravity: parseFloat(document.getElementById("gravity").value),
|
||||
gravityRange: parseFloat(document.getElementById("gravityRange").value),
|
||||
gravityCompound: parseFloat(document.getElementById("gravityCompound").value),
|
||||
gravityRangeCompound: parseFloat(document.getElementById("gravityRangeCompound").value),
|
||||
numIter: parseFloat(document.getElementById("numIter").value),
|
||||
tilingPaddingVertical: parseFloat(document.getElementById("tilingPaddingVertical").value),
|
||||
tilingPaddingHorizontal: parseFloat(document.getElementById("tilingPaddingHorizontal").value),
|
||||
initialEnergyOnIncremental: document.getElementById("initialEnergyOnIncremental").value,
|
||||
step:"all"
|
||||
});
|
||||
|
||||
layout.run();
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1 class="ml-2">cytoscape-fcose demo</h1>
|
||||
<div style='width: 300px; position: absolute;'>
|
||||
<button id="randomizeButton" class="btn btn-primary btn-sm mb-2 ml-2">Randomize</button> 
|
||||
<button id="fcoseButton" class="btn btn-primary btn-sm mb-2">fCoSE</button> 
|
||||
|
||||
<div id="mySidepanel" class="sidepanel">
|
||||
<table>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Quality of the layout"> Quality </span></td>
|
||||
<td>
|
||||
<select id="quality" class='custom-select custom-select-sm'>
|
||||
<option value="draft">draft</option>
|
||||
<option value="default" selected="">default</option>
|
||||
<option value="proof">proof</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to enable incremental mode"> Incremental </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="randomize" name="incremental">
|
||||
<label class="custom-control-label" for="randomize"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to perform animation after layout"> Animate </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="animate" name="animate" checked>
|
||||
<label class="custom-control-label" for="animate"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to fit the viewport to the repositioned nodes"> Fit </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="fit" name="fit" checked>
|
||||
<label class="custom-control-label" for="fit"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether nodes are of uniform dimensions"> Uniform Node Dimensions </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="uniformNodeDimensions" name="uniformNodeDimensions">
|
||||
<label class="custom-control-label" for="uniformNodeDimensions"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to pack components"> Pack Components to Window</span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="packComponents" name="packComponents" checked>
|
||||
<label class="custom-control-label" for="packComponents"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Whether to tile disconnected nodes"> Tile Disconnected </span></td>
|
||||
<td>
|
||||
<div class="custom-control custom-control-inline custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="tile" name="tile" checked>
|
||||
<label class="custom-control-label" for="tile"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Node repulsion (non overlapping) multiplier"> Node Repulsion </span></td>
|
||||
<td><input id="nodeRepulsion" class="textField form-control form-control-sm" type="text" value="4500" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Ideal (intra-graph) edge length"> Ideal Edge Length </span></td>
|
||||
<td><input id="idealEdgeLength" class="textField form-control form-control-sm" type="text" value="50" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Divisor to compute edge forces"> Edge Elasticity </span></td>
|
||||
<td><input id="edgeElasticity" class="textField form-control form-control-sm" type="text" value="0.45" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Nesting factor (multiplier) to compute ideal edge length for inter-graph edges"> Nesting Factor </span></td>
|
||||
<td><input id="nestingFactor" class="textField form-control form-control-sm" type="text" value="0.1" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Gravity force (constant)"> Gravity </span></td>
|
||||
<td><input id="gravity" class="textField form-control form-control-sm" type="text" value="0.25" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Gravity range (constant)"> Gravity Range </span></td>
|
||||
<td><input id="gravityRange" class="textField form-control form-control-sm" type="text" value="3.8" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Gravity force (constant) for compounds"> Compound Gravity </span></td>
|
||||
<td><input id="gravityCompound" class="textField form-control form-control-sm" type="text" value="1" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Gravity range (constant) for compounds"> Compound Gravity Range </span></td>
|
||||
<td><input id="gravityRangeCompound" class="textField form-control form-control-sm" type="text" value="1.5" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Maximum number of iterations to perform"> Number of Iterations </span></td>
|
||||
<td><input id="numIter" class="textField form-control form-control-sm" type="text" value="2500" size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Amount of vertical space to put between degree zero nodes during tiling"> Tiling Vertical Padding </span></td>
|
||||
<td><input id="tilingPaddingVertical" class="textField form-control form-control-sm" type="text" value="10" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Amount of horizontal space to put between degree zero nodes during tiling"> Tiling Horizontal Padding </span></td>
|
||||
<td><input id="tilingPaddingHorizontal" class="textField form-control form-control-sm" type="text" value="10" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="add-on layout-text" title="Initial cooling factor for incremental layout"> Incremental Cooling Factor </span></td>
|
||||
<td><input id="initialEnergyOnIncremental" class="textField form-control form-control-sm" type="text" value="0.3" maxlength=5 size="5"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="cy"></div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 3.0 MiB |
+1616
File diff suppressed because it is too large
Load Diff
+123
@@ -0,0 +1,123 @@
|
||||
callGraph_constraints = {
|
||||
"alignmentConstraint": {
|
||||
"horizontal": [
|
||||
[
|
||||
"288a2f9b-2930-701e-c68e-400307fbffd4",
|
||||
"nwtN_a44ad134-4c47-4cf5-b244-9d9fc0804e93",
|
||||
"nwtN_ac02fa71-2428-47ad-8c3c-80bb5659a066"
|
||||
],
|
||||
[
|
||||
"nwtN_550a66a2-1061-45cc-9f78-14570daaff94",
|
||||
"82181180-e275-b004-243e-eb4383e1e72f",
|
||||
"359e920c-52a4-459e-2262-4ec90824f21e",
|
||||
"5a34dca5-646c-cae7-affe-ef4142c5ad73",
|
||||
"2f560d5b-bb1b-cc3f-d5b5-a69e6fab8d47",
|
||||
"d07ee031-2818-7c9c-5589-e8a161b9946c",
|
||||
"912c0f08-87fb-c746-18cb-19909a2b41c8"
|
||||
],
|
||||
[
|
||||
"1f64237f-dd15-2d5f-18f0-02a0d0338f44",
|
||||
"63edffef-16cf-a216-5ace-a27a4290e3d8",
|
||||
"d6768356-8772-a49a-c2f7-c3b9802c954b",
|
||||
"05b42313-71a4-e1a9-383b-6b4be641e69d"
|
||||
],
|
||||
[
|
||||
"3c161178-1fca-ec7e-3fc7-425ce940fe1a",
|
||||
"bab5c8a0-0f39-66d4-eaca-7f9160ef25fa",
|
||||
"a0d92978-e6e9-6d87-9a06-567d139d15af"
|
||||
]
|
||||
]
|
||||
},
|
||||
"relativePlacementConstraint": [
|
||||
{
|
||||
"top": "nwtN_6e27959a-ae83-4cb0-898f-9a1e6c5cafae",
|
||||
"bottom": "d2f78da5-fbd3-fe91-4046-3b5aea0648f6",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_6e27959a-ae83-4cb0-898f-9a1e6c5cafae",
|
||||
"bottom": "nwtN_a44ad134-4c47-4cf5-b244-9d9fc0804e93",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "d2f78da5-fbd3-fe91-4046-3b5aea0648f6",
|
||||
"bottom": "288a2f9b-2930-701e-c68e-400307fbffd4",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "d2f78da5-fbd3-fe91-4046-3b5aea0648f6",
|
||||
"bottom": "nwtN_ac02fa71-2428-47ad-8c3c-80bb5659a066",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_ac02fa71-2428-47ad-8c3c-80bb5659a066",
|
||||
"bottom": "912c0f08-87fb-c746-18cb-19909a2b41c8",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_ac02fa71-2428-47ad-8c3c-80bb5659a066",
|
||||
"bottom": "82181180-e275-b004-243e-eb4383e1e72f",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_ac02fa71-2428-47ad-8c3c-80bb5659a066",
|
||||
"bottom": "359e920c-52a4-459e-2262-4ec90824f21e",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_ac02fa71-2428-47ad-8c3c-80bb5659a066",
|
||||
"bottom": "5a34dca5-646c-cae7-affe-ef4142c5ad73",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_ac02fa71-2428-47ad-8c3c-80bb5659a066",
|
||||
"bottom": "2f560d5b-bb1b-cc3f-d5b5-a69e6fab8d47",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_a44ad134-4c47-4cf5-b244-9d9fc0804e93",
|
||||
"bottom": "nwtN_550a66a2-1061-45cc-9f78-14570daaff94",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_a44ad134-4c47-4cf5-b244-9d9fc0804e93",
|
||||
"bottom": "d07ee031-2818-7c9c-5589-e8a161b9946c",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "2f560d5b-bb1b-cc3f-d5b5-a69e6fab8d47",
|
||||
"bottom": "1f64237f-dd15-2d5f-18f0-02a0d0338f44",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "d07ee031-2818-7c9c-5589-e8a161b9946c",
|
||||
"bottom": "63edffef-16cf-a216-5ace-a27a4290e3d8",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "d07ee031-2818-7c9c-5589-e8a161b9946c",
|
||||
"bottom": "d6768356-8772-a49a-c2f7-c3b9802c954b",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "d07ee031-2818-7c9c-5589-e8a161b9946c",
|
||||
"bottom": "05b42313-71a4-e1a9-383b-6b4be641e69d",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "63edffef-16cf-a216-5ace-a27a4290e3d8",
|
||||
"bottom": "3c161178-1fca-ec7e-3fc7-425ce940fe1a",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "63edffef-16cf-a216-5ace-a27a4290e3d8",
|
||||
"bottom": "bab5c8a0-0f39-66d4-eaca-7f9160ef25fa",
|
||||
"gap": 98.25
|
||||
},
|
||||
{
|
||||
"top": "63edffef-16cf-a216-5ace-a27a4290e3d8",
|
||||
"bottom": "a0d92978-e6e9-6d87-9a06-567d139d15af",
|
||||
"gap": 98.25
|
||||
}
|
||||
]
|
||||
}
|
||||
+1305
File diff suppressed because it is too large
Load Diff
+78
@@ -0,0 +1,78 @@
|
||||
chalk_constraints = {
|
||||
"alignmentConstraint": {
|
||||
"vertical": [
|
||||
[
|
||||
"nwtN_c152aeef-01df-49fc-9539-9e022e8d4c64",
|
||||
"nwtN_fa99aac7-9500-4ead-82c3-90c72e9837f3",
|
||||
"nwtN_6442ea6c-8a74-4948-ab60-2a2fc6b904f7",
|
||||
"nwtN_395e3fed-fcd4-427a-909a-c01a7fc94607"
|
||||
],
|
||||
[
|
||||
"nwtN_fc4a5aa8-171f-41bd-8ab3-5eee343c4f9f",
|
||||
"nwtN_10cd6cfc-6d2a-48b1-82e1-29d16dadd069",
|
||||
"nwtN_88c73829-9d76-4b03-ab27-335fd9581531"
|
||||
],
|
||||
[
|
||||
"nwtN_23452b85-7855-413f-a03d-26412ed87bfc",
|
||||
"nwtN_6ffc1fdf-602f-4395-89b5-666b383a5059"
|
||||
]
|
||||
]
|
||||
},
|
||||
"relativePlacementConstraint": [
|
||||
{
|
||||
"left": "nwtN_6ffc1fdf-602f-4395-89b5-666b383a5059",
|
||||
"right": "nwtN_c152aeef-01df-49fc-9539-9e022e8d4c64",
|
||||
"gap": 180
|
||||
},
|
||||
{
|
||||
"left": "nwtN_6ffc1fdf-602f-4395-89b5-666b383a5059",
|
||||
"right": "nwtN_fa99aac7-9500-4ead-82c3-90c72e9837f3",
|
||||
"gap": 180
|
||||
},
|
||||
{
|
||||
"left": "nwtN_6ffc1fdf-602f-4395-89b5-666b383a5059",
|
||||
"right": "nwtN_6442ea6c-8a74-4948-ab60-2a2fc6b904f7",
|
||||
"gap": 180
|
||||
},
|
||||
{
|
||||
"left": "nwtN_6ffc1fdf-602f-4395-89b5-666b383a5059",
|
||||
"right": "nwtN_395e3fed-fcd4-427a-909a-c01a7fc94607",
|
||||
"gap": 180
|
||||
},
|
||||
{
|
||||
"left": "nwtN_fa99aac7-9500-4ead-82c3-90c72e9837f3",
|
||||
"right": "nwtN_10cd6cfc-6d2a-48b1-82e1-29d16dadd069",
|
||||
"gap": 120
|
||||
},
|
||||
{
|
||||
"left": "nwtN_395e3fed-fcd4-427a-909a-c01a7fc94607",
|
||||
"right": "nwtN_fc4a5aa8-171f-41bd-8ab3-5eee343c4f9f",
|
||||
"gap": 120
|
||||
},
|
||||
{
|
||||
"left": "nwtN_395e3fed-fcd4-427a-909a-c01a7fc94607",
|
||||
"right": "nwtN_88c73829-9d76-4b03-ab27-335fd9581531",
|
||||
"gap": 120
|
||||
},
|
||||
{
|
||||
"left": "nwtN_10cd6cfc-6d2a-48b1-82e1-29d16dadd069",
|
||||
"right": "nwtN_ec240627-f567-42b4-a9c6-4564450e9946",
|
||||
"gap": 100
|
||||
},
|
||||
{
|
||||
"left": "nwtN_10cd6cfc-6d2a-48b1-82e1-29d16dadd069",
|
||||
"right": "nwtN_da2a2f8c-a185-4ffd-b577-f2c5a7680a37",
|
||||
"gap": 120
|
||||
},
|
||||
{
|
||||
"left": "nwtN_ec240627-f567-42b4-a9c6-4564450e9946",
|
||||
"right": "nwtN_da2a2f8c-a185-4ffd-b577-f2c5a7680a37",
|
||||
"gap": 120
|
||||
},
|
||||
{
|
||||
"left": "nwtN_da2a2f8c-a185-4ffd-b577-f2c5a7680a37",
|
||||
"right": "nwtN_2f088c82-aac6-4e48-8fde-8574a3390d24",
|
||||
"gap": 120
|
||||
}
|
||||
]
|
||||
}
|
||||
+2868
File diff suppressed because it is too large
Load Diff
+249
@@ -0,0 +1,249 @@
|
||||
unix_constraints = {
|
||||
"relativePlacementConstraint": [
|
||||
{
|
||||
"top": "nwtN_4451c335-4668-4f8d-9f71-274aa2e6ab06",
|
||||
"bottom": "nwtN_8d99e7af-1b2f-4605-a381-ce3127b6199a",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_4451c335-4668-4f8d-9f71-274aa2e6ab06",
|
||||
"bottom": "nwtN_37220ed2-0cbe-4d1f-9cac-07dfb11d6eda",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_8d99e7af-1b2f-4605-a381-ce3127b6199a",
|
||||
"bottom": "nwtN_020b84b2-717f-4465-b716-7520e5c9c470",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_8d99e7af-1b2f-4605-a381-ce3127b6199a",
|
||||
"bottom": "nwtN_c1880331-8411-443e-9218-87e78c057b22",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_8d99e7af-1b2f-4605-a381-ce3127b6199a",
|
||||
"bottom": "nwtN_3f3b6234-e449-44bb-9ba8-059d1f843c98",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_8d99e7af-1b2f-4605-a381-ce3127b6199a",
|
||||
"bottom": "nwtN_d7bbe746-9028-4268-a642-70544788d687",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_8d99e7af-1b2f-4605-a381-ce3127b6199a",
|
||||
"bottom": "nwtN_5bb0a938-c7ee-42d8-85c8-17bdc1ff0ade",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_37220ed2-0cbe-4d1f-9cac-07dfb11d6eda",
|
||||
"bottom": "nwtN_8227939a-5dc0-433e-8c4d-987ec44a1f8f",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_37220ed2-0cbe-4d1f-9cac-07dfb11d6eda",
|
||||
"bottom": "nwtN_3f7d61be-a016-4383-9b8d-8c1db26192f2",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_020b84b2-717f-4465-b716-7520e5c9c470",
|
||||
"bottom": "nwtN_166d8364-fd55-499e-9098-0a48db6615c1",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_c1880331-8411-443e-9218-87e78c057b22",
|
||||
"bottom": "nwtN_167a075d-9d93-49d0-b5be-446efebec06c",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_c1880331-8411-443e-9218-87e78c057b22",
|
||||
"bottom": "nwtN_db35fc70-2b89-4857-acb2-9dd545e61447",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_c1880331-8411-443e-9218-87e78c057b22",
|
||||
"bottom": "nwtN_9dfde51e-a410-4e3b-a472-9061ae4fae7a",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_8227939a-5dc0-433e-8c4d-987ec44a1f8f",
|
||||
"bottom": "nwtN_9dfde51e-a410-4e3b-a472-9061ae4fae7a",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_3f7d61be-a016-4383-9b8d-8c1db26192f2",
|
||||
"bottom": "nwtN_a186f2a4-524e-4a84-95c0-66d41dbda586",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_3f7d61be-a016-4383-9b8d-8c1db26192f2",
|
||||
"bottom": "nwtN_26c73172-708d-45cc-8ba5-f29671089767",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_167a075d-9d93-49d0-b5be-446efebec06c",
|
||||
"bottom": "nwtN_a2bfb9bd-8b13-43a5-87a5-d88b0137bd78",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_167a075d-9d93-49d0-b5be-446efebec06c",
|
||||
"bottom": "nwtN_2d9c1f24-1482-46fb-a0f4-f963ba454710",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_167a075d-9d93-49d0-b5be-446efebec06c",
|
||||
"bottom": "nwtN_15fb1e74-6b08-4914-95ac-ee4ecb1b7f17",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_167a075d-9d93-49d0-b5be-446efebec06c",
|
||||
"bottom": "nwtN_485d980b-dc42-48ca-9ada-3c1b754cc2ef",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_167a075d-9d93-49d0-b5be-446efebec06c",
|
||||
"bottom": "nwtN_bce869d1-7c58-4489-81aa-e87e9418ab70",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_9dfde51e-a410-4e3b-a472-9061ae4fae7a",
|
||||
"bottom": "nwtN_db35fc70-2b89-4857-acb2-9dd545e61447",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_a186f2a4-524e-4a84-95c0-66d41dbda586",
|
||||
"bottom": "nwtN_2cf0c5aa-67eb-4394-85e3-dc84f4b1cd52",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_26c73172-708d-45cc-8ba5-f29671089767",
|
||||
"bottom": "nwtN_2b6ef682-26c7-48d7-9fd8-09fa76c7b718",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_a2bfb9bd-8b13-43a5-87a5-d88b0137bd78",
|
||||
"bottom": "nwtN_be8097dc-4a84-4d3f-ade9-e80221f86dd6",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_d53ea35c-4609-4051-917a-8a183e5976cf",
|
||||
"bottom": "nwtN_c261ca93-6060-49c1-8286-2a98900c3b9e",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_db35fc70-2b89-4857-acb2-9dd545e61447",
|
||||
"bottom": "nwtN_a68571c0-2669-4894-aa53-332555f625a2",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_eed8fc62-a21d-4677-85f2-f1244e3abf00",
|
||||
"bottom": "nwtN_2f175f07-154a-4873-98cc-bc4e4d6d13a1",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_eed8fc62-a21d-4677-85f2-f1244e3abf00",
|
||||
"bottom": "nwtN_a68571c0-2669-4894-aa53-332555f625a2",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_eed8fc62-a21d-4677-85f2-f1244e3abf00",
|
||||
"bottom": "nwtN_e55d29c7-89bc-4aa0-b599-3637e141f17f",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_c261ca93-6060-49c1-8286-2a98900c3b9e",
|
||||
"bottom": "nwtN_02a50d8b-3939-492a-ac5b-1f356cd514f6",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_2f175f07-154a-4873-98cc-bc4e4d6d13a1",
|
||||
"bottom": "nwtN_a68571c0-2669-4894-aa53-332555f625a2",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_166d8364-fd55-499e-9098-0a48db6615c1",
|
||||
"bottom": "nwtN_205680d2-dc98-4faf-baf4-21e27e8585e4",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_02a50d8b-3939-492a-ac5b-1f356cd514f6",
|
||||
"bottom": "nwtN_205680d2-dc98-4faf-baf4-21e27e8585e4",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_02a50d8b-3939-492a-ac5b-1f356cd514f6",
|
||||
"bottom": "nwtN_75318a95-e179-40fc-b6e1-e01fcd66cd8c",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_02a50d8b-3939-492a-ac5b-1f356cd514f6",
|
||||
"bottom": "nwtN_bce869d1-7c58-4489-81aa-e87e9418ab70",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_a68571c0-2669-4894-aa53-332555f625a2",
|
||||
"bottom": "nwtN_8ed84db0-02da-43c6-847c-6b33f657f52c",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_205680d2-dc98-4faf-baf4-21e27e8585e4",
|
||||
"bottom": "nwtN_be8097dc-4a84-4d3f-ade9-e80221f86dd6",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_205680d2-dc98-4faf-baf4-21e27e8585e4",
|
||||
"bottom": "nwtN_8489a816-b7af-452f-a722-04d06226341c",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_75318a95-e179-40fc-b6e1-e01fcd66cd8c",
|
||||
"bottom": "nwtN_d4bf8470-416d-4387-a563-3c9cccf55079",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_75318a95-e179-40fc-b6e1-e01fcd66cd8c",
|
||||
"bottom": "nwtN_e48d9732-8ee0-4714-8b62-8de8238ec9c2",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_bce869d1-7c58-4489-81aa-e87e9418ab70",
|
||||
"bottom": "nwtN_103a9105-ef50-47a4-b501-840a431fcbdd",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_8ed84db0-02da-43c6-847c-6b33f657f52c",
|
||||
"bottom": "nwtN_6385f491-0d09-4d53-a34c-781a861e8b42",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_6385f491-0d09-4d53-a34c-781a861e8b42",
|
||||
"bottom": "nwtN_88e20782-9221-4b12-9b62-6a6c7116a70f",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_167a075d-9d93-49d0-b5be-446efebec06c",
|
||||
"bottom": "nwtN_be8097dc-4a84-4d3f-ade9-e80221f86dd6",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_485d980b-dc42-48ca-9ada-3c1b754cc2ef",
|
||||
"bottom": "nwtN_d53ea35c-4609-4051-917a-8a183e5976cf",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_2cf0c5aa-67eb-4394-85e3-dc84f4b1cd52",
|
||||
"bottom": "nwtN_db35fc70-2b89-4857-acb2-9dd545e61447",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_cc15f875-f4dd-4df8-a09e-a4f2e6c8a3f5",
|
||||
"bottom": "nwtN_db35fc70-2b89-4857-acb2-9dd545e61447",
|
||||
"gap": 76.25
|
||||
},
|
||||
{
|
||||
"top": "nwtN_2b6ef682-26c7-48d7-9fd8-09fa76c7b718",
|
||||
"bottom": "nwtN_eed8fc62-a21d-4677-85f2-f1244e3abf00",
|
||||
"gap": 76.25
|
||||
}
|
||||
]
|
||||
}
|
||||
+2303
File diff suppressed because it is too large
Load Diff
+88
@@ -0,0 +1,88 @@
|
||||
uwsn_constraints = {
|
||||
"fixedNodeConstraint": [
|
||||
{
|
||||
"nodeId": "nwtN_91cff953-5f55-4626-96fa-e2f675e13e54",
|
||||
"position": {
|
||||
"x": -650,
|
||||
"y": -230
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "nwtN_b20cc3f4-dc9c-4031-ac79-df665d4c53cd",
|
||||
"position": {
|
||||
"x": 0,
|
||||
"y": -230
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "nwtN_5d6f7198-03e4-48e5-9004-919221f87e66",
|
||||
"position": {
|
||||
"x": 650,
|
||||
"y": -230
|
||||
}
|
||||
}
|
||||
],
|
||||
"alignmentConstraint": {
|
||||
"vertical": [
|
||||
[
|
||||
"nwtN_91cff953-5f55-4626-96fa-e2f675e13e54",
|
||||
"nwtN_7e09bf9e-a4da-4618-baba-60a2b3a0b134"
|
||||
],
|
||||
[
|
||||
"nwtN_b20cc3f4-dc9c-4031-ac79-df665d4c53cd",
|
||||
"661498c7-ace9-bd34-0289-7c9931d3e1ba"
|
||||
],
|
||||
[
|
||||
"nwtN_5d6f7198-03e4-48e5-9004-919221f87e66",
|
||||
"aeee80bf-8280-f4ec-c1f3-26f3a7a0651c"
|
||||
]
|
||||
]
|
||||
},
|
||||
"relativePlacementConstraint": [
|
||||
{
|
||||
"top": "nwtN_7e09bf9e-a4da-4618-baba-60a2b3a0b134",
|
||||
"bottom": "nwtN_be627c29-b885-460c-bf92-8f9bb7b8c8c5",
|
||||
"gap": 100
|
||||
},
|
||||
{
|
||||
"top": "nwtN_7e09bf9e-a4da-4618-baba-60a2b3a0b134",
|
||||
"bottom": "nwtN_64abed47-d1b1-474c-b944-b9ad6354c086",
|
||||
"gap": 100
|
||||
},
|
||||
{
|
||||
"top": "661498c7-ace9-bd34-0289-7c9931d3e1ba",
|
||||
"bottom": "nwtN_0185dada-235a-4b51-bce7-e8bd3b8ee661",
|
||||
"gap": 100
|
||||
},
|
||||
{
|
||||
"top": "661498c7-ace9-bd34-0289-7c9931d3e1ba",
|
||||
"bottom": "nwtN_273f6927-f05a-425b-aa2b-92de2be06bd9",
|
||||
"gap": 100
|
||||
},
|
||||
{
|
||||
"top": "aeee80bf-8280-f4ec-c1f3-26f3a7a0651c",
|
||||
"bottom": "5c108d5c-88e4-7b97-95a8-67238c33d283",
|
||||
"gap": 100
|
||||
},
|
||||
{
|
||||
"top": "aeee80bf-8280-f4ec-c1f3-26f3a7a0651c",
|
||||
"bottom": "3ea6020e-8918-8abf-a8e5-62427070f84f",
|
||||
"gap": 100
|
||||
},
|
||||
{
|
||||
"top": "nwtN_5d6f7198-03e4-48e5-9004-919221f87e66",
|
||||
"bottom": "aeee80bf-8280-f4ec-c1f3-26f3a7a0651c",
|
||||
"gap": 250
|
||||
},
|
||||
{
|
||||
"top": "nwtN_b20cc3f4-dc9c-4031-ac79-df665d4c53cd",
|
||||
"bottom": "661498c7-ace9-bd34-0289-7c9931d3e1ba",
|
||||
"gap": 250
|
||||
},
|
||||
{
|
||||
"top": "nwtN_91cff953-5f55-4626-96fa-e2f675e13e54",
|
||||
"bottom": "nwtN_7e09bf9e-a4da-4618-baba-60a2b3a0b134",
|
||||
"gap": 250
|
||||
}
|
||||
]
|
||||
}
|
||||
+7640
File diff suppressed because it is too large
Load Diff
+102
@@ -0,0 +1,102 @@
|
||||
wsn_constraints = {
|
||||
"fixedNodeConstraint": [
|
||||
{
|
||||
"nodeId": "86f48f58-145d-92cc-0d33-aaf639984733",
|
||||
"position": {
|
||||
"x": 399,
|
||||
"y": 139
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "f91d914e-6ab7-92cf-b16d-b9a7661e0044",
|
||||
"position": {
|
||||
"x": 857,
|
||||
"y": 340
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "33f80abd-028e-ad1c-068b-33d5b40d9a93",
|
||||
"position": {
|
||||
"x": 1068,
|
||||
"y": 288
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "2b855d36-0c89-996d-9281-ea54f711cc8e",
|
||||
"position": {
|
||||
"x": 520,
|
||||
"y": 518
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "0ddcc98c-7b7c-ac2e-2207-081c5ffc9921",
|
||||
"position": {
|
||||
"x": 533,
|
||||
"y": -37
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "e53126c9-70fe-ca8a-3b85-bab123a93d70",
|
||||
"position": {
|
||||
"x": 816,
|
||||
"y": 280
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "4ca3044f-9b82-020b-e1cb-bbb45e4b0088",
|
||||
"position": {
|
||||
"x": 630,
|
||||
"y": 205
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "bc0420e3-9b6e-4c97-74c6-61278dbc18d4",
|
||||
"position": {
|
||||
"x": 507,
|
||||
"y": 407
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "a97f8f48-6652-7e09-8eda-2d87eae7d20b",
|
||||
"position": {
|
||||
"x": 323,
|
||||
"y": 330
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "889eedb3-8cb8-b906-8beb-904cd499c4f6",
|
||||
"position": {
|
||||
"x": 892,
|
||||
"y": -55
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "bd77a77c-4627-ad77-1c5a-2c390ba21959",
|
||||
"position": {
|
||||
"x": 1114,
|
||||
"y": 570
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "ffbd69bf-481f-faa8-73db-1489f3175b75",
|
||||
"position": {
|
||||
"x": 666,
|
||||
"y": 533
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "5fdc6150-63bb-18e8-1f03-33bb8d6b7529",
|
||||
"position": {
|
||||
"x": 726,
|
||||
"y": 670
|
||||
}
|
||||
},
|
||||
{
|
||||
"nodeId": "b386ca2b-81a7-e365-4706-f955f13db03f",
|
||||
"position": {
|
||||
"x": 721,
|
||||
"y": -36
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user