Plugins:
- #351 layouts.forceLink Layout pulls nodes too close together
- #285 Fix exporters.image: Incomplete image export on Retina screen
This release improves rendering performance by x7 and reduces memory used indexes by x2. Indexes will use ES6 Map instead of Object if possible. It also provides a new plugin to integrate geospatial visualization with Leaflet. Rendering of node border has been changed (breaking) with new settings:
- Rename
borderSize
tonodeBorderSize
- Rename
outerBorderColor
tonodeOuterBorderColor
- Add
nodeBorderColor
,nodeOuterBorderColor
,nodeOuterBorderSize
,defaultNodeOuterBorderColor
- Add
nodeHoverBorderColor
,nodeHoverOuterBorderColor
- Add
nodeActiveBorderSize
,nodeActiveBorderColor
,nodeActiveOuterBorderColor
,nodeActiveOuterBorderSize
,defaultNodeActiveOuterBorderColor
Core:
- #348 Defaut size to added nodes and edges
- #347 Convert x,y,size as number if they are string
- Fix #342 Regression: slow camera
- #333 Distinct border settings to nodes, hovered nodes, active nodes (BREAKING CHANGES)
- #330 Fire
coordinatesUpdated
event - #329 Add
zoomOnLocation
setting - Fix #328 Node coordinates change if autoRescale array doesn't contain 'nodesPosition'
- #284 Make local indexes more memory-efficient
Plugins:
- Fix #341 ForceAtlas2 adjustSizes setting is ignored (thanks @rangeonnicolas)
- #340 plugins.activeState: get nb active nodes and edges in O(1)
- #339 plugins.dragNodes: prevent drag if all nodes are active
- #338 plugins.design: add downloadable palette and styles as .toJSON()
- #337 plugins.design: add reference to items in histogram
- Fix #336 plugins.design: 'One value of the property x is not a number.' thrown if sequential property has no value
- #335 plugins.fullScreen should be able to display control UI elements
- Fix #334 layouts.dagre: exception if node ids are numbers
- #332 Support for multiple tooltips (thanks @mujx)
- Fix #326 plugins.dragNodes: wrong mouse canvas if it is not the last canvas element
- Fix #325 plugins.select: Two adjacent nodes can be selected after selecting an adjacent edge
- #150 Add Leaflet integration for geospatial
- Fix #120 exports.svg: images are cut-off in Inkscape and browser
This release fixes multiple rendering issues. It provides better support to SVG renderers and export.
Core:
- #321 Add curved edges for SVG
- #321 SVG edge renderer handles defaultEdgeType setting
- #321 Exported SVG is rescaled automatically to the specified size
- Fix #319 sigma.renderers.svg.resize doesn't take arguments into account
- Fix #316 Two parallel edges with opposite directions overlap
- Fix #315 The last parallel edge after dropping the other edges remains curved
- #295 Multi-line node labels on Canvas
- Fix #266 'minArrowSize' settings not work (thanks @bkkoo)
Plugins:
- #322 Add a margin to exporters.svg
- #289 renderers.linkurious: Add tapered edges for SVG
- Fix #286 sigma.statistics.louvain Uncaught RangeError: NaN included (thanks @partizanos)
- #131 renderers.edgeLabels: Add edge labels for SVG
This release has BREAKING CHANGES regarding plugins.image and sigma.layout.*. Is also brings a new plugin that will provide nice legends to visualizations.
Plugins:
- #303 layouts.forcelink: pinned nodes coord are updated if previously laid out while unpinned
- #240 Rename plugins.image -> exporters.image
- #239 Rename sigma.layout.* -> sigma.layouts.*
- #188 Add plugins.legend
This release is greatly powered by the community. Multiple plugins are stabilized and important features are added for rendering and integration.
Hightlights:
- Support of WebPack module builder
- New file exporters in GraphML and JSON
- Nodes can have borders (aka strokes) without hover
- Curve parallel edges automatically (i.e. edges with same extremities), add new settings:
autoCurveRatio
,autoCurveSortByDirection
- The dragNodes plugin becomes stable
Core:
- Fix #247 No hovering or graph disappears when nodes are on the same axis (thanks @mdamien)
- #242 Factorize quadtree & edgequadtree (thanks @mdamien)
- Fix #241 Only one label displayed on all examples (thanks @mdamien)
Plugins:
- Fix #287 minimum edges louvain (thanks @partizanos)
- #282 Add "constrained" labelAllignment setting (thanks @NicholasAntonov )
- Fix #281 Prevent dragNodes during animations
- Fix #278 getTextWidth not being called correctly (thanks @NicholasAntonov)
- Fix #277 bugs when sigma was required with webpack (thanks @NicholasAntonov)
- #273 Add parametric edge curvature (canvas renderer) (thanks @ekkis)
- #270 renderers.linkurious: add node border on canvas (without hover) (thanks @ekkis)
- #267 A* plugin, v1.0.1 Fix non-optimal path (thanks @A----)
- #263 parsers.cypher: increase robustness (thanks @ekkis)
- #253 plugins.tooltips: fire 'shown' after the open() function was fully executed (thanks @mdamien)
- Fix #248 Animate set node coordinated to undefined if the target position are not included (thanks @mdamien)
- #245 plugins.dragNodes: add sticky effect (avoid drag on clicking inside the node)
- #237 Add exporters.graphml (thanks @Ytawo)
- #186 Add exporters.json
Docs:
- #53 Add documentation on sigma lifecycle
This release provides A BREAKING CHANGE from the core of Sigma.js and focuses on performance.
Hightlights:
- linkurious.js is now available on npm:
npm install linkurious
- Latest release files directly in
dist/
and a plugins.(.min).js containing all the plugins - Crisp render on retina displays
- Added plugin.generators to generate graphs
- Panning, zooming and hovering is a lot smoother on Canvas
- New setting:
edgesClippingWithNodes
to hide the edges having both extremities outside of the view iftrue
- Contributors, we have a new workflow: #201 (in short: all plugins are merged into the develop branch)
How to upgrade:
- replace
overNode(s)
,outNode(s)
,overEdge(s)
,outEdge(s)
events by thehovers
event
Core:
- #235 Add plugins.js and plugins.min.js and clean grunt/package.json things (thanks to @mdamien)
- #229 Alert the user if webgl is not supported but trying to render with the WebGL renderer (thanks to @mdamien)
- #224 Fix Edges not rendered when extremities are far from the view (thanks to @mdamien)
- #223 Remove width hack and clear canvas via clearRect (thanks to @mdamien)
- #222 Improve pan/zoom smoothiness on canvas (thanks to @mdamien)
- #221 Aggressively simplify hovering system (replace
overNode(s)
,outNode(s)
,overEdge(s)
,outEdge(s)
byhovers
) (thanks to @mdamien) - #213 Fix
onMove
render twice during a panning event (thanks to @mdamien) - #210 Publish on npm (thanks to @mdamien)
- #208 Add dist/ folder with latest release (thanks to @mdamien)
- #204 Improve node labels renderers (thanks to @mdamien)
- #203 New rendering system and faster edge labels renderer (thanks to @mdamien)
- #25 Fix retina display (thanks to @mdamien)
Plugins:
- #233 Fix plugins.select throws "Uncaught TypeError" on Spacebar+Del
- #226 Fix layout.dagre only runs the first time that is called
- #209 Fix plugins.tooltip: wrong position on sigma container with margins
- #198 plugins.tooltip: Add option to delay hide execution on outNode and outEdge
- #196 renderers.halo: Merge circles via two-pass rendering (thanks to @mdamien)
- #194 Include renderers.customEdgeShapes into renderers.linkurious (thanks to @mdamien)
- #181 Fix plugins.image crashes on batchEdgesDrawing: true
- #177 Fix layout.fruchtermanReingold only runs the first time it is called
- #168 renderers.linkurious: Cache
context.font
value when rendering (~20% rendering overall speedup) (thanks to @mdamien) - #104 Add plugins.generators
Docs:
- #201 [NEWS] Changes on the dev workflow
- #238 Add AUTHORS file
Core:
- #167 Optimize label alignment of latin fonts via a faster context.measureText() by adding
approximateLabelWidth
to Sigma settings (false
by default) (~12% rendering overall speedup) (thanks @mdamien) - #167 src/renderers/canvas/sigma.canvas.labels.def.js: Add backward-compatible support of
approximateLabelWidth
setting (thanks @mdamien) - #158 src/renderers/sigma.renderers.webgl.js: Fix lines in reverse order
- #152 Add backward-compatible
beforeRender
event (see also jacomyal/sigma.js#606) (thanks @mdamien) - #143 Add backward-compatible
nodeQuadtreeMaxLevel
andedgeQuadtreeMaxLevel
to Sigma settings (4
by default) (see also jacomyal/sigma.js#602) - #96 use
throw new Error('msg')
instead ofthrow 'msg'
to get stack trace (see also jacomyal/sigma.js#536)
Plugins:
- #185 exporters.gexf: File exports fail in IE10+
- #185 exporters.spreadsheet: File exports fail in IE10+
- #145 exporters.spreadsheet: Add column for node and edge categories/types
- #187 exporters.svg: Fix SVG export fails in IE10+ (see also jacomyal/sigma.js#621)
- #185 exporters.xlsx: File exports fail in IE10+
- #136 exporters.xlsx: Add column for node and edge categories/types
- #128 helpers.graph: Add option in adjacentNodes() to get non-hidden nodes only
- #128 helpers.graph: Add option in adjacentEdges() to get non-hidden edges only
- #126 Add layout.forceLink and restore original layout.forceAtlas
- #192 Add layouts.dagre for Direct Acyclic Graph (DAG) / hierarchical layout.
- #139 parsers.cypher: Fix edgeColor setting don't work
- #142 plugins.activeState: Fix event not fired on invert functions if no node/edge is active afterwards
- #138 plugins.design: Fix cannot format string labels using the nodes.labels.by function
- #122 plugins.design: Fix Error: Missing key "7" in nodes palette " of color scheme nodes.qualitative.categories"
- #137 plugins.dragNodes: Add stickiness setting
- #163 plugin.filter: Fix test not passing on firefox (thanks @mdamien)
- #185 plugins.image: File exports fail in IE10+
- #134 plugins.keyboard: Fix page jump on Chrome, Safari and IE when mouseover graph that isn't fully in view
- #121 plugins.keyboard: Fix zoom in/out ignores zoomMin/zoomMax settings
- #146 plugins.select: Fix do not select edges on mouse move (expected: panning)
- #174 renderers.customEdgeShapes: Fix hover erroring if edgeLabels plugin not here (thanks @mdamien)
- #167 renderers.edgeLabels: Add support of
approximateLabelWidth
setting - #166 renderers.edgeLabels: Computations only if useful (thanks @mdamien)
- #125 renderers.edgeLabels: Add edge label hovering effects
- #124 renderers.edgeLabels: set angle=0 when edge length > text width
- #153 renderers.glyphs: Fix
drawGlyphs
setting not working - #154 renderers.halo: Add
drawHalo
setting - #133 renderers.halo: Add clustering of node halo
- #132 renderers.halo: Add stroke to node halo
- #129 renderers.halo: Fix halo is displayed on hidden nodes and edges
- #167 renderers.linkurious: Add support of
approximateLabelWidth
setting - #125 renderers.linkurious: Add edge label hovering effects
Tests:
- #159 Add smoke tests for renderers (see also jacomyal/sigma.js#610) (thanks @mdamien)
Plugins:
- Fix #109 sigma.plugins.locate: handle multiple sigma instances
- #108 sigma.plugins.locate: add an optional padding
- Fix #107 sigma.plugins.select: A node is deactivated on double-click
- Fix #106 sigma.plugins.dragNodes: Dragging an unselected node while another node is selected drags both
- Fix #105 sigma.plugins.select: A node is deactivated on drag
Plugins:
- #94 Add sigma.layouts.fruchtermanReingold
- Add sigma.parsers.cypher (license GNU GPL3 from @sim51)
- Add levels to Linkurious renderers (canvas)
- use throw new Error('msg') instead of throw 'msg'
- plugins.lasso: Ensure that lasso does not select hidden nodes (thanks @apitts)
- exporters.gexf: Change initial type to integer in GEXF exporter (thanks @apitts)
- plugins.design: Minor fix in histogram on a missing "color" key
Core:
- Switch
clone
setting tofalse
by default - Switch
singleHover
setting totrue
by default
Plugins:
- plugins.design: Add method to deal with deleted node/edge properties
- plugins.design: Preserve
color
key whencolors
exist for backward-compatibility - plugins.activeState: improved event trigger system
- #64 renderers.linkurious: should use defaultNodeHoverColor
- #86 renderers.glyphs: glyphs displayed on hidden nodes
- #88 plugins.dragNodes: do not drag on right click
- #84 plugins.dragNodes: node still selected after a click on its neighbor
Examples:
- Add select-and-drag-nodes.html
Dev:
- Update devDependencies
-
Update Sigma to jacomyal/sigma.js#287f49616a5674ddcf30775d37f9c564cacf8e2a
-
New plugin
sigma.pathfinding.astar
to find shortest paths (thanks to @A----) -
New plugin
sigma.statistics.louvain
for community detection (thanks to @upphiminn) -
Revamp plugin
sigma.plugins.dragNodes
to support multiple nodes (thanks to @martindelataille)
Improvements:
- #69 sigma.layout.forceAtlas2: make maxIterations and avgDistanceThreshold configurable
- #66 sigma.plugins.design: add support of type, icon, and image
- #62 sigma.plugins.design: add color generation for qualitative data
- add label alignment settings for canvas (thanks to @qinfchen)
Bug fixes:
- #78 sigma.plugins.image: sized images with zoom false are blurred
- #74 sigma.plugins.locate.nodes() zooms out instead of zooming in
- #72 sigma.plugins.design Histograms are not generated when there is only one value for a sequential property (thanks to @callicles)
- #60-#61 sigma.plugins.designer documentation
- #59 sigma.plugins.designer doesn't support multiple sigma instances
- #57 sigma.plugins.locate doesn't support multiple sigma instances
- #56 sigma.plugins.tooltips doesn't support multiple sigma instances
- New plugin
sigma.exporters.xlsx
- New plugin
sigma.plugins.lasso
(thanks to @Flo-Schield-Bobby) - New plugin
sigma.renderers.glyphs
(thanks to @Flo-Schield-Bobby) - Revamp plugin
sigma.renderers.customShapes
(thanks to @jbilcke) - New plugin
sigma.renderers.linkurious
(thanks to @jbilcke) - Add an option to animate a given set of nodes in
sigma.plugins.animate
- New plugin
sigma.exporters.gexf
- New plugin
sigma.exporters.spreadsheet
- New plugin
sigma.exporters.svg
(thanks to @Yomguithereal) - New plugin
sigma.plugins.image
, fork ofsigma.renderers.snapshot
(thanks to @martindelataille) - New plugin
sigma.plugins.keyboard
- New plugin
sigma.plugins.poweredBy
- Merge sigma.js 1.0.3
- New plugin
sigma.plugins.colorbrewer
- New plugin
sigma.plugins.designer
- New plugin
sigma.plugins.fullScreen
(thanks to @martindelataille) - New plugin
sigma.renderers.halo
- Add background execution and easing transition to
sigma.layout.forceAtlas2
- Improve
sigma.plugins.dragNodes
- Merge sigma.js 1.0.2
- Add method
graph.attachBefore
to the core - Add spatial indexing of edges using a quad tree to the core
- Add events on edges to the core
- Add edge hovering to the core
- New plugin
sigma.helpers.graph
- New plugin
sigma.plugin.activeState
- New plugin
sigma.plugin.edgeSiblings
- New plugin
sigma.plugin.filter
- New plugin
sigma.plugin.locate
- New plugin
sigma.plugin.select
- New plugin
sigma.plugin.tooltips
- New plugin
sigma.renderers.customEdgeShapes
- New plugin
sigma.renderers.edgeLabels
- Add auto-stop condition to
sigma.layout.forceAtlas2