cytoscape-klay
Description
The Klay layout algorithm for Cytoscape.js (demo)
This discrete layout creates good results for most graphs and it supports compound nodes.
Dependencies
- Cytoscape.js ^3.2.0
- Klay ^0.4.1
Usage instructions
Download the library:
- via npm:
npm install cytoscape-klay
, - via bower:
bower install cytoscape-klay
, or - via direct download in the repository (probably from a tag).
Import the library as appropriate for your project:
ES import:
import cytoscape from 'cytoscape';
import klay from 'cytoscape-klay';
cytoscape.use( klay );
CommonJS require:
let cytoscape = require('cytoscape');
let klay = require('cytoscape-klay');
cytoscape.use( klay );
AMD:
require(['cytoscape', 'cytoscape-klay'], function( cytoscape, klay ){
klay( cytoscape );
});
Plain HTML/JS has the extension registered for you automatically, because no require()
is needed.
API
var options = {
nodeDimensionsIncludeLabels: false,
fit: true,
padding: 20,
animate: false,
animateFilter: function( node, i ){ return true; },
animationDuration: 500,
animationEasing: undefined,
transform: function( node, pos ){ return pos; },
ready: undefined,
stop: undefined,
klay: {
addUnnecessaryBendpoints: false,
aspectRatio: 1.6,
borderSpacing: 20,
compactComponents: false,
crossingMinimization: 'LAYER_SWEEP',
cycleBreaking: 'GREEDY',
direction: 'UNDEFINED',
edgeRouting: 'ORTHOGONAL',
edgeSpacingFactor: 0.5,
feedbackEdges: false,
fixedAlignment: 'NONE',
inLayerSpacingFactor: 1.0,
layoutHierarchy: false,
linearSegmentsDeflectionDampening: 0.3,
mergeEdges: false,
mergeHierarchyCrossingEdges: true,
nodeLayering:'NETWORK_SIMPLEX',
nodePlacement:'BRANDES_KOEPF',
randomizationSeed: 1,
routeSelfLoopInside: false,
separateConnectedComponents: true,
spacing: 20,
thoroughness: 7
},
priority: function( edge ){ return null; },
};
cy.layout( options ).run();
Build targets
npm run test
: Run Mocha tests in ./test
npm run build
: Build ./src/**
into cytoscape-klay.js
npm run watch
: Automatically build on changes with live reloading (N.b. you must already have an HTTP server running)npm run dev
: Automatically build on changes with live reloading with webpack dev servernpm run lint
: Run eslint on the source
N.b. all builds use babel, so modern ES features can be used in the src
.
Publishing instructions
This project is set up to automatically be published to npm and bower. To publish:
- Build the extension :
npm run build:release
- Commit the build :
git commit -am "Build for release"
- Bump the version number and tag:
npm version major|minor|patch
- Push to origin:
git push && git push --tags
- Publish to npm:
npm publish .
- If publishing to bower for the first time, you'll need to run
bower register cytoscape-klay https://github.com/cytoscape/cytoscape.js-klay.git
- Make a new release for Zenodo.