Skip to content

5.0.7

Improvements

  • Exposes animation easing in the layout API, improving the UX. (#3725)

Hierarchical layout

  • Fixed the Y position of the first layers when nodes are different sizes. (#3746)

Bug fixes

  • Image export now respects and adds proper file extension if it's missing. (#3745)

Texts

  • Edge texts on straight edges are now positioned correctly when the nodes have different sizes. (#3734)

Documentation

  • Added annotations plugin example. (#3747)

Docs

  • Removed documentation for the hidden attribute, as it does not exists anymore. (#3727)
  • Added documentation for the groupIdFunction in geoClustering, it was missing. (#3727)

5.0.6

Improvements

Performance

  • Improved loading speed of large graphs by 28%. (#3689)

Bug fixes

Force layout

  • Release the webGL context after the GPU layout has finished, to prevent from using all allowed WebGL contexts in the tab. (#3724)

Documentation

  • Improved loading speed of our examples page. (#3717)

5.0.5

Bug fixes

  • Fixes geo mode exports of the semi-transparent nodes and edges. (#3668)
  • Removed warning messages when Ogma instance is destroyed. (#3678)

Documentation

  • Updated all the tutorials and examples to use React 18 and latest @linkurious/ogma-react wrapper. (#3684)

5.0.4

Improvements

Edges

  • Improved edges rendering. (#3648)

Bug fixes

  • Fixed the shape renderer bug that was causing WebGL to crash in some enviroments. (#3658)

Geo mode

  • Removed the longitude limits in Geo mode. (#3654)

5.0.3

API changes

Grouping

  • Added a way to omit malformed group consisting, for instance, of just one element. Now the nodeGenerator and edgeGenerator can return null in this or other edge cases and then the group will be omitted. (#3642)

Improvements

Events

  • Exposed publicly the frame event, triggered when ogma renders a new frame. (#3626)

Bug fixes

Export PNG

  • Pass the camera dimensions in the viewExportStart event. (#3636)

Transformations

  • Animate only when one transformation changed state. (#3628)

Documentation

  • Fixed the interactions tutorial example. (#3605)
  • Improved styles on the US airlines example. (#3612)
  • Fixed some broken links in tutorials. (#3625)

Documentation

  • Fixed the open in playground and Download links in the tutorials. (#3601)

5.0.2

Bug fixes

  • Fixed the edge case when the spatial index for nodes and edges interactivity was not rebuilt after manually moving a high-degree node. (#3587)
  • Fixed a bug in our Node.js support code that didn't work properly with Angular SSR build. (#3589)

5.0.1

Improvements

  • Improved the memory management when dealing with huge graphs in the new GPU examples, now they work fine on older hardware. (#3582)

Bug fixes

StyleClass

  • getNodesByClassName and getEdgesByClassName now respect the filter argument. (#3580)

Documentation

  • Improved search in the examples. (#3583)

Layers

5.0.0

New features

  • New version of GPU layout, capable of calculating positions for graphs of tens of thousands of nodes within seconds. It's up to 40 times faster than the CPU version and produces much higher quality layouts. (#3537)

Improvements

  • Fixed an edge case in hit detection that was causing the visualization sometimes to freeze for seconds at a time after a layout. Now reindexing in by order of magnitude faster in 50% of the cases. (#3570)

Bug fixes

  • Fixed a bug in WebGL renderer, that was discarding nodes with x coordinate above 32767 units. (#3573)

Documentation

  • Fixed the CSV, Gexf and GraphML examples. (#3576)

4.6.6

New features

  • Added Matrix Market file format parser (.mtx) for bigger topologies. (#3565)

API changes

  • Style classes now have .destroy() method. (#3559)

Improvements

Playground

  • You can now use async/await inside functions in Ogma playground (to use it on the top level you need to wrap your code into a self-executing function (async () => { ... })();). (#3560)

Bug fixes

EdgeGrouping

  • Fixed the bug that was sometimes assigning the wrong curvature to some edges on undo. (#3540)

Typescript

  • Added types key in the package.json exports so that typescript 5 can find them. (#3563)

4.6.5

This release contains internal fixes and improvements## 4.6.4

This release contains internal fixes and improvements## 4.6.3

Bug fixes

  • Fixes a rendering artifact in WebGL when very short triangular edges are rendered thicker than the radius of their extremities. (#3554)

Badges and nodes

  • Fixed the hairline stroke artifact in nodes and node badges when the stroke width was actually set to 0. (#3552)

4.6.2

This release contains internal fixes and improvements## 4.6.1

API changes

  • Removed deprecated dimensions parameter from Ogma constructor. Please use options.width and options.height instead if you want to pre-set the container size for the instance. (#3546)

Documentation

  • Entirely new documentation website, with full-text search. Check it out!. (#3531)

4.6.0

Improvements

GPU layout

  • Optimised GPU layout, it is about 3x faster than before, and handles larger graphs now. (#3497)

4.5.6

API changes

Hierarchical layout

  • Added an option to sort siblings. (#3515)

Bug fixes

Edge text

  • Fixed a bug that was breaking splitText during rendering. (#3519)

4.5.5

Improvements

Badges

  • Fixed the wrong alignment for scaled texts within badges. (#3504)

Hierarchical Layout

  • Made the default value for nodeDistance much smaller to get more compact layouts. (#3507)

Texts

  • Enabled full rounded corner on textboxes. (#3503)

Documentation

Docs

  • Added a tutorial on how to test Ogma with Playwright. (#3505)

Geo mode

4.5.4

Improvements

  • ogma.view.getElementAt() now works even if mouse interactions are off, making it more convenient for algorithmic use. (#3494)

Hover

  • Allow to hover edges within groups. (#3495)
  • When setting null as backgroundColor, set the Ogma background color instead of rgba(0,0,0,0). (#3496)

Bug fixes

  • The collaboration example if back up. (#3422)

Nodes hover

  • Allow to hover node labels within groups. (#3490)

4.5.3

Improvements

  • Included missing .mjs and .dev.mjs files into the .zip release used for manual download. (#3482)

Bug fixes

Hover

  • Fixed an important regression with node and edge detection on the big graphs. (#3477)

4.5.2

New features

Documentation

4.5.1

Improvements

Interactions

  • Added an option to enable/disable node badges detection on mousemove. (#3451)

Transformations

  • Improved the animation on node collapsing. (#3452)

View

  • Added the getNodeBadge function to easily check if a node badge is hovered or not. (#3451)

Bug fixes

  • Fixed the problem causing Webpack/Terser tree-shaking routine to break the client code. (#3441)

Documentation

  • Updated the example and tutorial about font icons, added the examples of how to use the CSS classes instead of unicode to retrieve the icons. (#3443)
  • Added an example of how to build a UI for async nodes metadata requests. (#3448)
  • Updated best practices tutorial. (#3454)

Geo mode

  • Added an example with dense geo graph (France railways). (#3381)

4.5.0

Improvements

  • Improved mouse wheel scroll calculation to make it smoother and more controllable. (#3393)
  • Added interactions.zoom.speed setting to control the scroll zoom speed. (#3393)

Algorithms

  • Added directed option to BFS and DFS graph traversals. (#3407)

Force layout

  • Fallback on CPU if the graph is too big (> 10k nodes). (#3412)

Hover

  • Allow to hover animated nodes and edges if they are not moving. (#3404)
  • Added a setting for hover animation transition. (#3404)
  • Fixed the animation glitch with text box backgrounds. (#3417)
  • Changed default edge hit detection tolerance to 2 pixels to avoid flickering. (#3417)

Texts

  • Fixed the bug which was wrongly placing text tips. (#3408)

Texts and icons

  • Better centering in webgl renderer. (#3410)

SetGraph/addGraph

  • Auto center the view on the graph if Ogma was empty. (#3411)

Bug fixes

Grouping

  • Fixed the flickering that happens when dragging a node within a group. (#3419)

Animations

  • Prevent from animations to glitch when nodes are moving. (#3399)

Documentation

  • Added example for visual group expansion. (#3396)

4.4.6

Documentation

Documentation

  • Added an example showing how to resize Ogma container. (#3369)
  • Added an example showing how to tune force layout depending on graph size. (#3370)
  • Added an example showing how to display different edge texts depending on zoom. (#3385)

4.4.5

API changes

NodeGrouping

  • Added edgeGroupIdFunction option to NodeGrouping, allowing you to create parallel edges with NodeGrouping if necessary. (#3316)
  • Added edgeGroupIdFunction option to GeoClustering, allowing you to create parallel edges with GeoClustering if necessary. (#3316)

Improvements

  • Fixed the Chrome warnings about the CPU texture use and willReadFrequently. (#3342)

Transformations

  • Added types for transformation.setOptions. (#3351)

Bug fixes

  • Fixed a bug in hierarchical layout that produced invalid positions. (#3341)

Documentation

  • Fixed and extended our example of interfacing with SPARQL. (#3345)
  • Improved search in examples. (#3350)

Docs

4.4.4

Bug fixes

  • Added a safeguard for the error thrown when incremental layout is badly configured with pinning. (#3330)
  • Remove the nodes and edges ids from the classes when they are removed from the visualisation. (#3331)

Documentation

  • Added an example showing range filtering on a big graph. (#3332)

4.4.3

Improvements

Hierarchical layout

  • Improved the decrossing algorithm to make it faster on big graphs. (#3312)

Bug fixes

  • Fixes the issue with PNG export in Node.js. (#3313)
  • Fixed Node.js SVG export with xmldom. (#3314)
  • Fixed a bug in GPU layout that was collapsing subgraphs of certain topology to 0,0 coordinate. (#3318)

Edges

  • It is now possible to completely hide edges using `width. (#3308)

Incremental layout

  • It now takes account of the layoutable attribute. (#3302)

Documentation

  • Better documentation for geo clustering radius parameter. (#3309)
  • We have published a collection of build system integration templates and starters to make the bootstrapping process easier. Check it out at https://github.com/Linkurious/ogma-build-systems. (#3317)

4.4.2

API changes

  • Added idle event to notify that all the all the topology, attribute changes and camera movements have been finished. (#3297)
  • Added refreshStyleRule event to notify that the style rule was applied. (#3297)

Bug fixes

Clustering

  • Fixed the bug that was ignoring edges which have one extremity not selected by nodeSelector. (#3288)

Documentation

  • Fixed examples search. (#3292)

4.4.1

API changes

GeoClustering

  • Added a zoomLevels options to control the min and max zoom levels on which the geo clusters are computed. Allows to get clusters on max geo zoom. (#3272)

Bug fixes

Transformations

  • Clear transformatons contexts on graph.clear. (#3267)

Documentation

  • Added an example of calculating centrality measures (pagerank, closeness, degree centrality). (#3234)
  • Fixed outdated npm link patters in the documentation and Readme files. (#3278)
  • Fixed the CDN URL in edge badges example. (#3279)

4.4.0

New features

Layouts

  • Experimentally releasing GPU layout mode. (#3065)

API changes

API

  • Added `ogma.transformations.getById(id. (#3228)

Documentation

4.3.11

Improvements

Geo mode

  • Ensured compatibility with Leaflet 1.9.x. (#3181)

Documentation

Added [Jupyter Notebook integration tutorial](https

Added [real-time collaboration example](https

Tutorials

  • Added Jupyter notebooks integration tutorial for data scientists. (#3182)

4.3.10

Improvements

  • WebGL rendererI Improved the rendering of big nodes, that were previously showing cut-off artifacts on the top and left sides. Especially visible in Visual Grouping. (#3176)

Bug fixes

Geo mode

  • Restored the geo opacity option. (#3178)

Documentation

Docs

  • Improved examples search. (#3169)

4.3.9

Bug fixes

  • Made radial layout compatible with Babel, it was using for..of, which does not get pollyfilled properlly in some cases. (#3149)

Documentation

Annotations

  • Example of using the annotation layers to combine the graph with schematics and blueprints data to link the nodes with the spatial data. (#3159)

4.3.8

This release contains internal fixes and improvements

4.3.7

Bug fixes

  • Made radial layout compatible with Babel, it was using for..of, which does not get pollyfilled properlly in some cases. (#3149)

Documentation

Annotations

  • Example of using the annotation layers to combine the graph with schematics and blueprints data to link the nodes with the spatial data. (#3159)

4.3.6

API changes

Layers

  • New type of layers available: SVGLayer, it allows you to add SVG Overlays on top of Ogma. (#3117)

Improvements

WebGL renderer

  • Added automatic recovery and fallback to canvas renderer in case WebGL context is lost. (#3115)

Bug fixes

Geo mode

  • Fixed a bug that didn't allow updating geo coordinates using .setData() while using custom data paths for the coordinates in node. (#3128)

Grouping

  • Fixes a bug that was causing visual glitches when some styles were introduced after adding the graph to the scene. (#3127)

Playground

  • Fixed the bug leading to new tabs being lost. (#3121)

4.3.5

Bug fixes

Docs

  • Fixed the error on the docs website that was breaking the playground link sharing. (#3109)

4.3.4

API changes

  • PNG export now supports canvasLayer export. (#3091)

Improvements

Plugins

Bug fixes

Algorithms

  • Fixed the minimum enclosing disc algorithm that was used in the visual grouping. Now it uses non-recursive approach and will not fail on degenerate node sets. (#3092)
  • Exposed ogma.algorithms.getMinimumEnclosingCircle(nodes) algorithm. You can use it to create annotations. (#3092)

Documentation

Documentation

  • Added an example showing how to drag and drop files in Ogma. (#3081)
  • Fixed the anchors in the Neptune tutorial. (#3096)

4.3.3

This release contains minor enhancements and bug fixes.

4.3.2

Documentation

Docs

  • Added an example on how to edit nodes labels in-place. (#3073)

4.3.1

Improvements

Events

  • Added an addGraph event, triggered when calling addGraph method. (#3054)

Documentation

Layouts

  • Added an example of circular layout using a simple plug-in code. (#3056)

Timeline

  • Ported to Typescript. (#3058)

4.3.0

Improvements

  • Now the dev build @linkurious/ogma/dev will pick up the TypeScript type declarations properly. (#3010)

Docs

Layouts

  • Added colDistance and rowDistance parameters to ogma.layouts.grid so that you can have full control over the gaps between the rows and columns of the layout. (#3008)

Texts

  • Do not push texts away when hovering and selecting nodes. (#3016)
  • Added rounded corners to textboxes. The radius of the corners can be controlled via ogma.setOptions({textBoxCornerRadius: number}). (#3026)
  • Decreased the texts default distance from the nodes for readability. Improved the rendering of arrow tips of the caption backgrounds. (#3032)

Bug fixes

Layouts

  • Fixed a bug causing the locate option in all layout calls to not zoom to the graph properly. (#3028)

Documentation

Docs

[New example of React integration with minimap plugin](https

4.2.2

New features

Imports

API changes

Legend

  • Added the style property as an input for titleFunction. This way you can differentiate in the legend titles between the properties. (#2998)

Bug fixes

Betweenness

  • Fixed the bug that was ignoring the normalized and directed options. (#3000)

Geo mode

  • Fixed integration with Leaflet@1.8.x. (#3003)

Rendering

  • Fixed the bug which was making long edges longer than their head. (#2994)

Snapping

  • Fixed the bug that was preventing the snapping tool to find the fourth point in a square. (#2999)

Themes

  • Fixed the bug that was making themes override the default values. (#3001)

Documentation

Timeline

4.2.1

Documentation

  • Added the documentation for the betweenness API. (#2996)

4.2.0

New features

Algorithms

  • Added betweenness centrality measure. It is available with ogma.algorithms.betweenness. (#2978)

API changes

API

  • Added a flag to elements to getBoundingBox methods, to take account of texts. (#2969)
  • ogma.view.zoomIn and ogma.view.zoomOut changed to make their TypeScript declarations compliant to the documentation: ogma.view.zoomIn/Out({ modifier?: number } & CameraAnimationOptions | modifier: number | undefined). So you can pass either a modifier ratio, or AnimationOptions object with modifier included in it. (#2971)

Improvements

Hierarchical layout

  • Improved the X and Y positions to prevent nodes overlapping and improve the decrossing algorithm. (#2932)

Bug fixes

Legend

  • Fixed the bug which was displaying wrong legend with node radiuses. (#2983)

Documentation

Doc

  • Fixed the open/close behaviour in the visual-grouping example. (#2989)

Playground

  • Added a dropdown menu to select the current ogma version. (#2986)

4.1.5

API changes

Lasso

  • Fixed the ogma.tools.lasso.enable(options?) API so that the LassoOptions are properly typed in regards to Node/Edge data types. (#2972)

Bug fixes

Grouping

  • Provided a fix for the situation when the group node data is overwritten when the transformation is refreshed. (#2967)
  • Fixed bug which was preventing from collapsing the last open group. (#2968)

Documentation

Timeline

  • Added and example of an animated timeline, telling the story of Paris Metro construction. (#2953)

4.1.4

API changes

Tools

  • Made ogma.tools.snapping.enable() argument optional, as in the docs. (#2950)

Improvements

SVG

  • Better element labelling in SVG exports so that it's easier to process the documents afterwards. (#2955)

Tranformations

  • Made the recomputation of Edges curvature more robust on EdgeGrouping enable/disable. (#2934)

Bug fixes

Layouts

  • Fixed the edge case bug in radial layout when it failed to calculate positions for the chain of 3 nodes. (#2960)

Transformations

  • Fixed the regression introduced in 4.1.0: some animations with node grouping were broken. (#2954)

Documentation

Added [mini-map (overview)](https

Timeline

  • Added an example on how to use vis.js timeline with Ogma. (#2949)
  • Added an example on how to layout the graph depending on time. to create a Lombardi-like graph. (#2951)

4.1.3

API changes

  • Added destroy event, it could be useful for cleanup hooks before the instance is destroyed. (#2943)

ShortestPath

  • Added nodes and edges options to be able to exclude elements from the shortest path querry. (#2939)

Bug fixes

Layouts

  • Fixed the radial layout to respect the layer distances in the smaller graphs. (#2938)

Renderer

  • Fixed the aliasing effect on edges introduced in 4.1.0. (#2935)

Documentation

Docs

Visual grouping

  • Fixed the bug that was happening when concurrent animations were triggered. (#2851)

4.1.2

Bug fixes

Build

  • Make Ogma@>4 compatible with webpack. (#2929)

4.1.1

Improvements

Webgl Renderer

  • Made the webgl renderer able to display gigantic nodes without precision loss. (#2916)

Bug fixes

Build

  • Make Ogma@>4 compatible with webpack. (#2922)

Documentation

  • Added changelog page to the documentation. It is available from the version menu in the header. (#2918)
  • Fixed sharing button on the playground. (#2923)
  • Now playground supports React. (#2923)

Added [integration tutorial with Amazon Neptune graph database](https

4.1.0

New features

Layouts

  • Added spread() layout for quick overlap removal. (#2820)

API changes

API

  • Simplified camera event names: cameraZoomzoom, cameraPanpan, cameraMovemove, startZoomzoomStart. (#2857)
  • Now deprecated methods shows a warning in the console when using ogma.dev. Production builds of Ogma does not contain those warnings. (#2892)
  • New set of static methods in Ogma.parse. (#2906)
  • All ogma.parse. methods are now soft-deprecated in favor of static namespace Ogma.parse. They will continue working until 4.2, but consider changing ogma.parse.json[FromUrl](...) etc in your code to Ogma.parse.json[FromUrl](...). Not the big O - these methods are now in a static namespace of Ogma. (#2906)

Tranformations

  • Add a setOptions method to transformations. It allows to update transformations options. (#2890)

Improvements

  • We are now providing an ES module build of the library, that you can load directly in the browsers that support that feature. You can now import ogma as import Ogma from '@linkurious/ogma/esm' and use it with <script type="module"> in the browsers that support it. (#2861)

Texts

  • Introducing new text attribute position for edges. With it you can put the texts directly on the edges. (#2769)

Bug fixes

API

  • Fixed Node/Edge.getAdjacentElements() methods to respect the policy flags. (#2869)

NodeGrouping

  • Fix the curvature computing of the edges between groups when using the groupEdges: false option. (#2870)

Tranformations

  • Fixed the bug that was preventing transformations to update properlly after a setGraph. (#2882)

Documentation

Docs

  • Fixed the output format in the JSON export example. (#2901)
  • Added reference to the Ogma-vue wrapper in the tutorials. (#2908)

Grouping

  • groupIdFunction types were fixed to allow returning undefined for the cases when Node/Edge should not be grouped. (#2893)

Introducing our new wrapper library for working with React

Typescript

  • Fixed KeyboardEvent type. (#2880)
  • Exposed EventTypes map to Typescript developers. (#2895)
  • Hidden some private class fields exposed by mistakes. (#2895)

Other

Typescript

  • Exposed DataChange, NodesDataChange, EdgesDataChange types. (#2824)

4.0.9

New features

View

  • Added ogma.view.getElementsInView() method. It's shorter and more efficient than ogma.getNodes().filter(n => n.isInView()) + nodes.getAdjacentEdges(). (#2860)
  • Added ogma.view.getBounds() method. (#2860)

API changes

Pulses

  • Elements.pulse now returns a promise. This promise resolves when the pulse is finished. (#2795)

Improvements

Pulses

  • Prevents from pulsating hidden elements. When hiding an element, pulse stops. (#2855)

SVG export

  • Made font embedding more stable. (#2866)

Bug fixes

Edge grouping

  • Fixed curvature recalculation on edge group refresh. (#2867)

Layers

  • Now calling ogma.view.setSize automatically resizes Ogma layers. (#2852)

Documentation

Doc

Docs

  • Fixed examples and playground download. (#2850)

Geo mode

  • Added a geo-mode + Heatmaps example. (#2848)

StyleRules

Other

Excel export

  • Updated dependency to xlsx@0.17.0 due to a security vulnerability. (#2865)

4.0.8

Bug fixes

Edge grouping

  • Delete virtual edges when destroying edgeGrouping transformation. (#2836)

Neo4j parser

  • Removed coordinate randomization from the parser. (#2841)

Documentation

  • Fixed edgesUnSelected even typo in the docs. (#2843)
  • Lighter docs css. (#2844)

Docs

  • Fixed the UI of draw-your-graph example. The UI was invisible. (#2832)
  • Fixed the examples filtering, now it doesn't show collapsed example groups when you are searching. (#2833)

Grouping

  • Added an example on how to group nodes depending on zoom. (#2821)

4.0.7

New features

Layouts

  • Added proper implementation of ogma.layouts.stop(), now the iterations really stop after calling that API. (#2816)
  • Added continuous option to force and forceLink layouts so that the intermediate steps could be rendered. (#2816)

Improvements

Tools

  • Prevents ogma.tools from trying to connect grouped nodes together, or to rewire grouped edges. (#2798)

Bug fixes

Geo mode

  • Improved the geo mode setOptions method. Now it can update latitude and longitude paths while geo mode is enabled. It can also store the options, so it is no longer necessary to pass them on every geo.enable. (#2812)

Layers

  • Fixed the bug which was introduced in 4.0.5 preventing from using setPosition on an overlay. (#2810)

Texts

  • Improved the collision for texts in geo mode, and take account of the paddings. (#2793)

Documentation

  • Added an example on sync Ogma with a spreadsheet view. (#2794)
  • Added an example illustrating transformations pipeline. (#2799)

Added ["Hold space to drag" example](https

Doc

  • Improved the styles of the Draw your graph example. (#2814)

Docs

  • Added an example on how to implement undo/redo behaviour with ogma. (#2797)

Improvements on the new documentation website

  • The version modal is now accessible from al lthe pages. (#2808)

4.0.6

New features

  • Added BFS and DFS traversal APIs. (#2790)

Bug fixes

  • Added a protection for creating Overlays from HTML strings. (#2778)
  • Fixed a bug causing an exception on node hover with RTL text processing. (#2782)

Documentation

Typescript

  • Improved the definitions for ogma.styles.addNodeRule() and ogma.styles.addEdgeRule() so that you could use the overloads properly and provide the style rule definition as a first argument when there's no need for a selector. (#2780)

4.0.5

Bug fixes

Edge grouping

  • Fixed the bug that was assigning wrong curvatures on edges when disabling edge grouping. (#2731)

Events

  • Fixed the bug that was firing events after ogma.destroy was called. (#2751)
  • Made the typescript definition of ogma.events.off more permissive. Prevents from having intempesitve typescript errors when trying to unregister from events. (#2759)

Documentation

Doc

  • Added a button in the playground to share links with tinyurl. (#2764)
  • Added documentation for setVisible for node,edge,nodeList,edgeList. (#2765)

Integrations

Layers

  • Added an option for overlays layers to choose wether or not they scale on zoom. (#2752)
  • Added an example on how to build a contextmenu with layers. (#2752)
  • Added an example on how to integrate PixiJs in Ogma. (#2753)

4.0.4

Improvements

Export

  • **Breaking change: ** changed the return type of JSON export to Promise<RawGraph> based on the usage patterns, the string was only required to save the file, also, you can always JSON.stringify the graph returned by the method. (#2744)
  • Added anonymize option to Ogma.export.json: it would allow you to quickly export your graph without the data, only representation and topology. Useful to reproduce problems and styling solutions in our Playground and sharing the visualisations without sharing your sensitive data. (#2744)

Typescript

  • Exported missing types for layers: Layer, Overlay and CanvasLayer. (#2744)

Bug fixes

CSV export

  • Fixed the escaping of formulas in data fields for CSV and XSLX export. (#2733)

Documentation

Added an [example](https

Added simple tooltip implementation to ["React with hooks" tutorial](https

Docs

  • Added example of integration with d3. (#2732)
  • Added example of integration with Konva.js. (#2732)

4.0.3

Improvements

CSV export

  • Added standard escaping of ' and " symbols. Now Ogma CSV export is producing standard-compliant output. (#2715)

Geometry

  • Exposed a new function: getQuadraticControlPoint, which computes the control point necessary to draw a curved edge. (#2719)

Bug fixes

Grouping

  • Fixed the bug that was hiding nodes behind their group when there were no edes inside it. (#2717)

Documentation

Layers

4.0.2

Improvements

Icons

  • Fixed the bug that was displaying very small SVG icons with a poor quality when set as an image attribute. (#2671)

Bug fixes

Export

  • Fixed an issue with the exported images on retina screens. (#2699)

Texts

  • Fixed the top padding in multiline text in WebGL renderer. (#2699)

Documentation

  • There is already a reference to this.ogmaLayer. (#2704)

Docs

4.0.1

Improvements

Events

  • Fixed the types of the mouse events. The domEvt key was badly type and button was missing on click events. (#2681)

4.0.0

API changes

API

  • Add on/once/off methods in ogma.events API. (#2634)
  • Deprecated Ogma.events.onOgmaEvent methods. (#2634)
  • Added new method to nodes, edges, nodeLists and edgeList: getAdjacentElements. It returns nodes and edges adjacent to the element. (#2665)

Due to security and branding concerns, Ogma package is renamed into @linkurious/ogma. If you are using webpack, rollup or other build systems, you have to update the lines where you import Ogma library into your code. You can see an example in all of our tutorials and examples

  • It's import Ogma from '@linkurious/ogma' for ES6 modules and const Ogma = require('@linkurious/ogma') for CommonJS. (#2651)

Styles

  • Added ogma.styles.setTheme API. It allows to change the default attributes for nodes and edges. See documentation for more details. (#2656)
  • Created ready-to-use themes for Ogma. See this example on how to use it and ogma-styles repository for more info on how to build your own theme. (#2656)

Bug fixes

  • Fixed a bug that would prevent users from setting node or edge text to some JavaScript reserved words, like toString or isPrototypeOf. (#2667)

Pulse

  • Fixed the bug that was preventing nodes and edges from pulsating when using pulse attribute. (#2663)

View

  • Fixed the bug that sometimes prevented the promises returned by camera movement calls, such as locateGraph, setCenter, setZoom, never to resolve. (#2647)

Documentation

Doc

Documentation

3.4.5

API changes

API

  • Added Ogma.view.animationInProgress() check function, so that you can synchronise your UI with the view animation state. (#2645)

Improvements

Exports

  • Fixes possible CSV injection vulnerability in Ogma.export.xlsx() and Ogma.exports.csv(). (#2643)

3.4.4

New features

API

  • Added ignoreInvalid flag to .addGraph(), .setGraph(), addEdges(), addEdge() so that you could safely ignore the invalid edges with one or both extremities absent in the visualisation. false by default. (#2635)

Improvements

Mousewheel

  • Changed the mousewheel zoom animation and inertia factor from 1.8 to 1.4 to make it more precise on the laptop trackpads. (#2611)

Bug fixes

Grouping

  • Fixed the bug that was overwriting the data of the grouped nodes by the data in the nodeGenerator function. (#2632)

Documentation

Docs

3.4.3

API changes

API

  • Exposed ogma.events.onAnimate() event to listen to the animation start of the Nodes and Edges. (#2614)

ConnectNodes

  • Provided onBeforeNodeCreated and onBeforeEdgeCreated callbacks in the connectNodes tool for more flexibility: it allows to set custmon ids to the new nodes and edges. (#2601)
  • Deprecated onNodeCreated and onEdgeCreated. (#2601)

Export SVG

  • Added an option to control the groupSemantically behaviour. If set to false, the export will remain ungrouped and the nodes, edges and texts will remain with the same z-index as in the vizualisation. (#2599)

Improvements

EdgeGrouping

  • Added animation on edgeGrouping: they can now be smoothly collapsed and expanded. (#2602)

Bug fixes

  • Fixes the compatibility problem with create-react-app, that caused problems when force layout was running in the WebWorker after the production build. (#2605)

Layout

  • Ported force layout to ES5 so that it would still work in web worker within the code generated by Babel. (#2616)

Documentation

Layouts

Options

  • Added an example on how to tweak Ogma options. (#2604)

3.4.2

API changes

Events

  • Added an onGraphCleared event to the API. (#2595)

Bug fixes

  • Fixes the compatibility problem with create-react-app, that caused problems when force layout was running in the WebWorker after the production build. (#2605)

NodeCollapsing

  • Fixed the bug that was hidding edges generated by the NodeCollapsing on re run of the transformation. (#2607)

Texts

  • Fixed the edge case bug in the text overlap removal that used to make it fail on particular edge texts. (#2589)

Documentation

Docs

  • Small fixes on the website. (#2608)

Tutorials

  • New tutorial on the best practices usingNodeGrouping. (#2584)

Data

  • Added an example on how to use node and edges data to style your visualization. (#2594)

Docs

  • Added a tutorial for React integration with state management using Context API. (#2600)

3.4.1

New features

Grouping

  • Added a padding option to open groups. (#2555)
  • Fixed the bug that was preventing open groups from being updated on creation. (#2555)

Improvements

Browser support

Tooltip

  • Now hovering the tooltips would not unhover nodes and edges. (#2558)

Bug fixes

Export

  • Fixed the bug that was preventing from exporting to PNG with a legend without providing a devicePixelRatio. (#2566)

Geo mode

  • Fixed the bug that was preventing nodes from being displayed at the right place if the mode was enabled with an empty graph. (#2562)

Pulse

  • Fixed the visual glitch happening when deleting a pulsating node. (#2559)

Documentation

Export

  • Added an example on how to export cropped images of an Ogma Visualization. (#2577)

Flowlines

  • Added an example on how to use layers to draw custom edges. (#2570)

Tutorials

  • Added a tutorial with React-redux integration. (#2565)

3.4.0

New features

Geo

  • ogma.transformations.addGeoClustering is now available. It allows you to group the graph on geo mode depending on zoom. (#2454)

API changes

API

  • Removed Ogma.fetch from the API. (#2478)

Bug fixes

  • Fixed Node.js support. (#2535)

Documentation

  • Fixed the neo4j-connector demo to use the pre-recorded server-responses. (#2525)
  • Fixed the embedded editor in tutorials. (#2539)

API

  • Added geometry namespace to the API. (#2517)

Export

  • A new example showing how to export your ogma visualization into a PDF document is available. (#2504)

Labels

  • Added a new example on how to display texts at the extremities of edges. (#2517)

3.3.10

Documentation

Docs

  • Fixed the embedded editor issue in tutorials and the playground. (#2522)

3.3.9

Improvements

Import

  • Neo4j parser now supports queryResult format parser. (#2498)

Bug fixes

Labels

  • Fixed the bug that was preventing labels with the scaling atribute to be hidden when overlapping other texts. (#2509)
  • Fixed the bug that was preventing labels with the scaling atribute to be hidden when overlapping other texts. (#2510)

RTL texts

  • Fixed the bug that was hiding texts with a long words in RTL mode. (#2490)

Texts

  • Fixed overlap removal for the edge texts that were straightened by text.adjustAngle attribute. (#2512)

Transformations

  • Fixed the bug that was triggered when transformations get cleared while nodes were selected. (#2511)

Documentation

Documentation

  • Tutorials are now using the interractive Playground. (#2375)
  • Now the Playground supports JSX files. (#2375)
  • Tutorials are now using the interractive Playground. (#2507)
  • Now the Playground supports JSX files. (#2507)

3.3.8

API changes

API

  • Deprecated ogma.fetch method. It will be removed from the API on 3.4.0. (#2479)

Improvements

Export

  • CSV export now uses double separator rather than \separator to escape separators. It allows to handle more complicated cases. (#2488)

Bug fixes

Export

  • Fixed the overlapping texts on image export. (#2430)

Font

  • Fixed the bug that was preventing the custom icon fonts to load on firefox. (#2470)

Geo

  • Fixed the vector shapes example for geo mode. (#2473)

Layers

  • Fixed the bug that was preventing layers from being on below the ogma layer. (#2469)

Layouts

  • Fixed a bug in layouts causing texts to be hidden after the layouts have been run concurrently. (#2495)

Texts

  • Fixed a long-existing bug that was causing edge and node labels alignment to be ignored and repeated after the existing labels in some cases. (#2492)

Transformations

  • Fixed the bug that prevents from dragging a group that just switched from visual to non visual. (#2484)

Documentation

TypeScript

  • Improved declarations for ZoomBoundaryFunction types. (#2496)

3.3.7

Bug fixes

Lasso

  • Restore cursor on lasso disable. (#2463)

3.3.6

Bug fixes

Geo mode

  • Fixed resetting of the node dragging after geo mode was toggled. (#2458)

Lasso

  • Fixed the regression which was ignoring the cursorStyle option. (#2456)

Transformations

  • Transformations were not sending events when updating after a nodeAdd, nodeDelete, dataUpdate etc. Now they send thoose events. It allows you to create more consistent behaviour with transformations events. (#2445)
  • Fixed corrupt topology when nodes and edges were removed and then re-added in combination with the edge grouping. (#2455)

3.3.5

Bug fixes

Layout

  • Fixed the edge case when the force layout would end up spreading the surroundings of the nodes of very high degree over a too large surface, rendering them unreadable. (#2431)

Tooltip

  • Fixes tooltip z-index so that it shows correctly in geo mode. (#2429)

Transformations

  • Fixed a bug in grouping topology synchronization. (#2425)

Documentation

  • Typos in the quick-start documentation. (#2382)

Documentation

  • Improved searchbar in the examples section: you can now search by API used in the examples eg addNodeGrouping will return the examples where this function is used. (#2428)

Layers

  • Added an example showing how to add interactive editable tooltips to your nodes using layers. (#2432)
  • Improved layers API: methods now return instances and the base Layer class has setPosition and setSize methods. (#2432)

3.3.4

This release contains internal fixes and improvements## 3.3.3

Bug fixes

Bug

  • Fixed the bug with text overlapping on geo mode. (#2407)
  • Fixed the rendering bugs introduced in v3.3.0 with the rewiring tool and the resizing tool. (#2414)

Selection

  • Fixed the default minVisibleSize value that prevented the selection stroke from showing up when zoomed out. (#2415)

Style rules

  • Fixed the bug that was happening when you remove a style rule that was using a mapping utility. (#2403)

Texts

  • Removes the debugging messages left by mistake. (#2406)

Documentation

Documentation

  • Enhancements on the Clustering example: now it uses the annotation layers to display informations about the loading advancement of the graph. (#2400)
  • Examples section now provides a searchbar. (#2411)

3.3.2

This release contains internal fixes and improvements## 3.3.1

Bug fixes

Lasso

  • Fixed a bug preventing lasso from stopping normally on mouse button release. (#2389)

Documentation

Documentation

  • Added an example for addNodeClustering. (#2388)

3.3.0

API changes

API

  • Ogma now provides an addNode, addEdge middleware which clusters new nodes into groups. This transformation allows to import huge amount of nodes and edges very fast by reducing the size of the graph. It is accessible via ogma.transformations.addNodeClustering. Here is an example with the Arctic Web Dataset being loaded and clustered within a second. (#2339)
  • Added the new annotation layers API: Ogma.layers. Now you can create custom annotation layers in your visualisation, that will remain in sync with your graph when you move and zoom around. There are 3 types of layers available: Layer that can be an HTMLElement that is just positioned at a coordinate in your visualisation, CanvasLayer that allows you to render custom elements on top or underneath the graph, using HTML5 Canvas API, and the Overlays, that are HTMLElements, positioned relatively to the graph items, that are scaled and moved together with your visualisation. Check out the API reference and the examples. (#2346)

API Transformations

  • We now provide events for transformations: ogma.events.onTransformationEnabled(), ogma.events.onTransformationDisabled(), ogma.events.onTransformationDestroyed(), ogma.events.onTransformationSetIndex(), ogma.events.onTransformationRefresh(). (#2341)

Improvements

Rendering

  • Improved the rendering of self edges: scales the loop depending on the edge width. (#2348)

Bug fixes

Export

  • Fixed the bug with view.getImageData on WebGL that was exporting the pixels without clearing them from the previous frame image. (#2371)

Geo mode

  • Fixed a bug with passing attribution options to geo mode in ogma.geo.enable(). (#2377)

Documentation

Doc

  • Improved UX on local layouts examples: now you can try them out multiple times without reloading the page. (#2338)

Documentation

  • Highlight the current section in the left pannel. (#2349)

3.2.5

Bug fixes

Docs

  • Fixed broken node grouping example. (#2364)

Events

  • Added missing Typescript definitions for the transformation events introduced in v3.2.4. (#2366)

Typescript

  • Fixed missing declarations for the transformations-related event listener methods. (#2365)

3.2.4

New features

Layouts

  • Force layout has been improved to respect the 'layoutable' parameter in a more efficient and readable way. (#2350)

Bug fixes

Geo mode

  • Fix a bug causing an exception when you are hovering the newly added nodes while in geo mode. (#2347)
  • Fixes the bug with dragging the nodes in geo mode, caused by an unnecessary update loop. (#2355)

Geo mode

  • Fix a bug causing an exception when you are hovering the newly added nodes while in geo mode. (#2347)

PNG export

  • You can now export with high resolution, so on retina screens the exported image is 2x sized. (#2352)

Texts

  • Significant improvements in text overlap removal, both performance and quality-wise. No more flickering of the texts in the corners of the screen. (#2344)

Documentation

Docs

  • Added import/export functionality and hover/selected modes to the "All styles" playground example. Now you can experiment with your unique graph styles there. (#2358)

3.2.3

Bug fixes

Grouping

  • Fixed the bug with reset attributes on open groups. (#2319)
  • We optimized the grouping computation: now the whole topology is not recomputed on each run/undo but kept in cache. (#2325)
  • Fixed the bug on setAttributes on a group (it used to trigger unecessary translations). (#2325)

Documentation

Docs

  • Added an example covering all the node attributes at once. Helpful to develop your application styles. (#2321)

3.2.2

Improvements

Layouts

  • Now we reuse instantiated web-workers to save time on initialization. (#2272)

Bug fixes

  • Fixed a critical bug in layouts that was breaking visual grouping. If you are using Visual grouping, you are advised to update to v3.2.2 and skip v3.2.1. (#2315)

3.2.1

Improvements

Geo mode

  • Now you can set geo coordinates of Nodes and NodeLists using .setData(...) method. (#2301)

Bug fixes

Layouts

  • Fixed an internal bug causing an exception in the force layout when the coordinates are exceeding the number precision. (#2309)

Styling

  • Optimised the computation of mapping rules: update only the concerned rules. (#2296)

Documentation

Docs

  • Added 'Save' button to the code editor. (#2298)
  • Added Ctrl/Cmd + S keyboard shortcut to save and refresh the state of the edited code. (#2298)
  • Your code in the playground is now saved in your browser, so you wouldn't lose your progress if you forgot to save the link. (#2298)

3.2.0

New features

Typescript

  • Ogma now has an option to type Node and Edge data with TypeScript generics. You can define the shape of all the Node/Edge/NodeList/EdgeList simply by adding type parameters to Ogma like that: new Ogma<NodeDataType, EdgeDataType>. (#2132)

API changes

API

  • Legend.disable now returns Promise<void> for consistency. (#1834)
  • Remove deprecated node attributes text.backgroundMargin, text.backgroundArrowBaseSize, text.secondary.backgroundMargin, text.secondary.backgroundArrowBaseSize, text.threshold, halo.size, innerStroke.threshold, outerStroke.threshold, image.duplicate, image.threshold, image.rescale, badge.threshold. (#2169)
  • Removed deprecated edge attributes hidden, strokewidth, threshold, halo.size. (#2169)
  • Removed deprecated methods ogma.addEdgeFilter(), ogma.addNodeFilter(), ogma.getEdgeFilters(), ogma. clearEdgeFilters(), ogma.getNodeFilters(), ogma. clearNodeFilters() - use ogma.transformations namespace instead. (#2169)
  • Removed deprecated alias ogma.createClass and ogma.updateClass, use ogma.styles.createClass and ogma.styles.updateClass instead. (#2169)
  • Removed deprecated method ogma.geo.updateCoordinates, use data methods instead. (#2169)
  • Removed deprecated geo mode options: detectRetina, tileBuffer, tileUrlSubdomains. You can pass these settings according to the Leaflet API to the tiles options. (#2169)
  • Removed deprecated ogma.layouts.incremental, instead, use incremental option on the layouts that support it. (#2169)
  • Removed pathfinding methods, use ogma.algorithms.shortestPath() instead. More graph theory algorithms will be added to the algorithms namespace. (#2169)
  • Removed deprecated alias StyleRule.delete(), use .destroy() instead. (#2169)
  • Removed deprecated alias Transformation.delete(), use .destroy() instead. (#2169)
  • Removed deprecated aliases objectPropertyWatcher.kill() and nonObjectPropertyWatcher.kill(), use .destroy() instead. (#2169)
  • Removed the deprecated alias AdjacencyOptions.includeSources, use policy field instead. (#2169)

Typescript

  • Added missing exports for the primitive types Size, Filter, Point. Fixed declarations for lasso, legend, geo API. (#2169)

Improvements

Interaction

  • Made the hover of node labels more precise. (#2267)

Documentation

Documentation

  • All example pages now have an interactive code editor. And you can use the playground section to start your experiments and proof of concepts with Ogma. You can also share links to your experiments. Each example is now downloadable and you can start a new project with them as a boilerplate, using your API key. (#2170)

TypeScript

  • VS code will now be able to pull the layout methods documentation while you are typing. (#2288)

Other

Geo mode

  • Changed the default tile source to OpenStreetMap. Wikimedia tiles are no longer supported. (#2284)

3.1.5

Bug fixes

RTL texts

  • Fixed the linebreaks problems and stoped cutting RTL words. (#2269)

Texts

  • Fixed multi-line texts in Arabic and Hebrew. (#2273)

3.1.4

Bug fixes

Edge Grouping

  • Fix problems with deleting nodes while edges are grouped. (#2263)
  • Fixed problems with deleting nodes while edges are grouped. (#2265)

Edge Grouping

  • Fixed problems with deleting nodes while edges are grouped. (#2264)

3.1.3

Bug fixes

Browser compatibility

  • We were using some text API which does not work on Mozilla ESR on windows 10. Now we don't use it anymore and the compatibility is back. (#2245)

Geo

  • Fixes a bug that obstructed camera maxZoom and minZoom after geo mode was toggled with the different values. (#2251)

Geo mode

  • Fixes a bug in geo mode that was affecting ogma.destroy() while in geo mode. (#2247)
  • ogma.view.zoomIn() and ogma.view.zoomOut() are now working in geo mode. (#2247)
  • ogma.geo.setZoom() now correctly waits for the animation end for the promise to resolve. (#2247)
  • Fixed the animation when re-entering geo mode. (#2253)
  • Fixed lasso and rectangular select usage in geo mode that was broken since 2.8.0. (#2256)

Grouping

  • Fixed bug causing adjacency data being corrupt during the transformation. (#2255)

Styling

  • Now the badge colors will appear up the same way as the colors of nodes. Also, a badge with an inherited color from a piechart will get the right color. (#2240)

Transformations

  • Fixed a bug causing transformation duration parameters to be ignored. (#2249)

3.1.2

New features

Edges rendering

  • Changed the edge text behaviour. Setting text.adjustAngle to false on an edge now hides it if there is not enough room to display it. (#2221)

API changes

API

  • Undeprecated ogma.geo.getUnprojectedCoordinates(): It will no longer issue a console warning. (#2242)

Improvements

Transformations

  • We simplified the transformation pipeline. API remains the same but the Transformation object is slightly modified. The overall transfomation feature is now more solid. (#2190)

Bug fixes

Geo mode

  • Fixes a bug causing an exception on node hover after the mode is disabled. (#2229)

Radial Layout

  • Fixed the bug for onSync option. Now you can use renderSteps and onSync wihtout troubles on big graphs. (#2226)

Selection

  • When an element gets hidden, ogma will now unselect it. It is more consistent with the general behaviour of tools, which cannot select hidden elements. (#2238)

Geo mode

  • Fixed a bug that prevented ogma to clean up if ogma.destroy() was called while in geo mode. (#2239)
  • Fixed the behavior that locked the map initially if the disableNodeDragging was set to false. (#2239)

Documentation

  • Updated the toJSON documentation, which was not reflecting the default behaviour for attributes. (#2227)

3.1.1

New features

Interactions

  • Added Ogma.view.moveTo() an Ogma.view.moveToBounds() methods for animating smoothly between the views without losing the overview of the graph. (#2214)

Documentation

Docs

  • Added a full-featured example of using Ogma to visualise supply chains. (#2217)

3.1.0

Improvements

Layouts

  • Added autoStop feature to the force layout that allows the algorithm to stop automatically when the layout is stable. It results in up to 2x performance boost for the majority of the graphs and up to 10x speed-up when the layout is called repeatedly. (#2195)

Bug fixes

  • Fixed the 'all' option for nodeAttributes and edgeAttributes in ogma.export.json() API. (#2171)

Grouping

  • Allows modifying a grouping function or selector on the fly. It helps for performances as you can declare only one tranformation for multiple purposes. (#2194)

Documentation

Doc

  • Exposed the BoundingBox.computeForZoom() method. (#2104)

3.0.6

Improvements

Grouping

  • Now grouped nodes and related edges can be removed directly, without undoing the transformations and an exception "Attempting to remove virtual nodes ..." thrown. (#2168)
  • Improved grouped nodes animations, so now it's possible to run layouts or setAttributes(..., duration) on the grouped nodes with hiding their contents. (#2168)

Typescript

  • Added missing exports for the primitive types Size, Filter, Point. Fixed declarations for lasso, legend, geo API. (#2181)

Badges

  • Added paddingTop and paddingLeft for node badges to position some font icons more precisely. (#2172)

Bug fixes

Edge grouping

  • Fixed the bug causing edges to duplicate after removal of one grouped edge and re-grouping. (#2164)

Text

  • Fixed the align:left property on texts. It was ignored in Canvas and SVG renderers and for secondary texts. (#2154)

XLSX

  • Fixes inconsistency between CSV and XLSX export that prevented from exporting both nodes and edges ids and data fields named id. (#2167)

Dom

  • Fixed a bug causing an exception when detaching the container by using ogma.setContainer(null). (#2183)

3.0.5

API changes

Styles

  • StyleClass API now takes filter into account so that the classes can be queried or cleared also on the hidden nodes and edges. (#2116)

Improvements

Layouts

  • Better edge crossing avoidance heuristic in the hierarchical layout. (#2140)
  • Removed the edgeStrength value limitation in the force layout, that was caused by a problem in the physical model. Now you can use higher values for edgeStrength producing more compact shapes of the graph components. (#2153)

Bug fixes

  • Use a collision algorithm to prevent texts from overlapping for more clarty. (#2146)

Edge grouping

  • Fixed the references to metaEdges that were sometimes left over after the edge grouping was cancelled. (#2158)

Geo

  • Fixed the bug that caused map zoom to overflow when there is only one node in the visualization. (#2152)

Transformations

  • Fixed the racing condition in the transformation pipeline that led to the promise resolution before the pipeline was actually cleared. (#2142)
  • Fixed the bug in node grouping that resulted in orphaned virtual nodes left in the graph after the transformation is undone. (#2148)
  • Fixed bug with grouping feature that caused nodes and edges to keep a reference to deleted groups. (#2151)

Documentation

API

  • Added new API function ogma.view.getElementsInside to query nodes and edges within a rectangle. (#2141)

View

  • Modified the getElementAt API function to be consistent with getElementsInside - added a projection argument. (#2141)

3.0.4

Improvements

  • Added more spacing options to Hierarchical and Sequential layout. (#2037)
  • Improved text quality by changing the texture rendering algorithm. (#2054)

Layouts

  • Added componentDistance parameter to the hierarchical (and sequential) layout API to control the distance between the weakly connected components. (#2019)

Bug fixes

Bug

  • Fixed the bug preventing from going into the full-screen mode after it has been disabled by Esc button. (#2122)
  • Fixed a bug causing the visual group containing only disconnected nodes, to hide its contents on hover. (#2123)

Texts

  • Fixed long lines overflow in WebGL text rendering. (#1577)

WebGL

  • Improved letter spacing in node and edge texts. (#1555)

Documentation

API

  • Added Ogma.view.getElementsInside() method. (#2078)

Doc

  • Updated the Angular 8 tutorial files. (#2114)
  • Added geo mode to Angular 9 integration. (#2121)

Documentation

  • New GraphQL example. (#2099)

Grouping

  • Added an example of creating visual groups manually. (#2078)

3.0.3

Bug fixes

Fix

  • Fix readonly type override. (#2094)
  • Updated xlsx optional dependency to 0.11.12 to fix Webpack build errors. (#2101)

Bug fixes

  • Fix missing edges transformation bug. (#2096)

Typescript

  • Fix TS definition file compatibility for older engines. (#2095)

Documentation

Documentation

  • New Data lineage example. (#2082)
  • Improved getting started guide and covered offline installing scenario guide. (#2092)

3.0.2

Improvements

Imports

  • Added a custom transform function slot to ogma.imports.json and ogma.imports.jsonFromUrl functions to re-shape the json input before passing it to Ogma. (#2072)

Layout

  • force layout stability and performance improvements. (#2074)

Feature

  • Add new edges parameter for the concentric, force, forceLink, hierarchical, sequential layouts to better filter subgraph to layout. (#2061)

Bug fixes

  • Fixed a bug that prevented dragging of nodes and camera outside of an <iframe> in Firefox. (#2064)

Texts

  • Fixed a bug that caused multiline texts with different line line lengths to overlap. (#1920)

Typescript

  • Fixed an error breaking the adjacency edge direction setting. (#2065)

Bug

  • Fixed the critical bug that caused index clashing while adding/removing nodes and edges. (#2067)

Fix

  • Fix scaling behaviour of edges labels when in Geo mode. (#2051)

Documentation

Doc

  • Extended our CSV and Excel import demos to showcase how to handle custom data. (#2075)

3.0.1

Bug fixes

Canvas

  • Fixed inconsistent starting angle for the node pie charts between the renderers. (#2057)

Bug

  • Fixed the bug that would sometimes cause the isVirtual() and getTransformation() methods return wrong results. (#2048)

Layouts

  • Updated the default precision value in force layout to match the documentation value. Performance improvement up to 50%. (#2052)

Transformations

  • Fixed a bug causing edges and nodes to disappear after the transformation re-run due to index collision. (#2042)

Documentation

Doc

  • Fixed visual grouping example code UX issue. (#2047)

3.0.0

New features

Bug fixes

  • Updated ogma.events.onRendererStateChange listener to support documented event types. (#1985)

Bug

  • Fixed IE11 support for force layout with useWebWorker option. (#2025)

Documentation

  • Updated the neo4j example using an online instance. (#1979)
  • Improved IT management demo using Visual Grouping. (#2002)

Docs

  • Added s SPARQL example. (#1998)

2.9.5

Bug fixes

Fix

  • Firefox font loader issue with Font Awesome 5. (#1972)
  • Fix for the fontloader for the FF browser with FontAwesome 5 font. (#2009)

Documentation

Doc

  • Improved Hierarchical advanced demo with interactive layout options. (#2004)
  • More examples for the attributes related methods. (#2012)
  • Mark as deprecated some very old methods. (#2012)

2.9.4

Improvements

Added HTML5 drop event listener detect files being dropped on Ogma canvas

  • ogma.events.onDrop(). (#1968)

Bug fixes

  • Fix xlsx export tab argument to pass the documented value rather than raw versions, ported from v2.7.11. (#1989)
  • Fixed a regression blocking dragging or panning outside of the Ogma container. (#1990)

Fix

  • Hit detection algorithm has been improved for big graphs using transformations, up to 400% times faster for better interactivity. (#1988)

Transformations

  • Fixed a bug resulting in some 'ghost' edges being creating in node grouping on the first run. (#1963)

Documentation

  • Added example project into the "Node.js export" tutorial. (#1959)

2.9.3

Improvements

TypeScript

  • Ogma source code is now 100% written in TypeScript. (#1956)

Feature

  • Make pie slices from 12h. (#1927)

Bug fixes

Integration

  • Fixed the eslint-disable message that would allow to build sources properly even if Ogma was not installed with npm. (#1931)

Layouts

  • Fixes a conflict that cause the hierarchical layout to trigger transformations internally. (#1950)

Bug

  • Fixed the bug causing texts to disappear permanently if the interaction.zoom.hideNodeTexts flag was set to true. (#1943)

Geo mode

  • OnGeoLoaded event now correctly triggered on tiles loaded. (#1913)

Documentation

  • Added "Draw your graph" example. (#1928)
  • Added new performance demo. (#1954)

2.9.2

Improvements

Janusgraph

  • Made JanusGraph parser understand more loose GraphSON format. (#1908)

Bug fixes

Bug

  • Fixes broken canvas panning. (#1907)

Pulses

  • Fixed the pulses input options interpretation broken in v2.9.1. (#1898)

2.9.1

Bug fixes

Bug

  • Node collapsing now throws an error when node chains are collapsed. (#1887)
  • Fixed a bug in grid layout, making it ignore nodes parameter, if it was a NodeList. (#1894)

Documentation

  • Added warning for multiple node collapsing. (#1887)

Documentation

Documentation

  • Removed old ShortestPath demos with deprecated API. (#1889)
  • New ShortestPath interactive demo with algorithms.shortestPath API. (#1889)

2.9.0

Bug fixes

Docs

  • Fixed the geo mode example with vector tiles. (#1869)

Documentation

  • Dropped Internet Explorer 10 support. (#1864)

Docs

  • New landing page. (#1862)

2.8.2

Documentation

  • Added a tutorial for icon fonts use. (#1140)
  • Added missing documentation for Ogma.getOptions() method. (#1708)
  • Updated Angular tutorial for Angular 8. (#1808)

2.8.1

Bug fixes

Geo

  • Fixed the critical bug causing Ogma to freeze in geo mode if the tooltip is used. (#1819)

Layouts

  • Addresses the problem with pinned nodes being moved by the hierarchical layout. (#1815)

Typescript

  • Applied the same patch as v2.7.9, fixing the issue with union types in attribute setter functions. (#1816)

2.8.0

New features

Geo

  • Added vector layers support + GeoJSON shapes. (#412)
  • Added support for Esri geo services via esri-leaflet: demo. (#1463)

Improvements

Geo

  • Added WMS services support. (#411)
  • Added export functionality for new types of basemaps and layers. (#1692)
  • Added support for custom and non-geographical projections: demo. (#1729)
  • Added experimental support for vector tiles services. (#1730)
  • Added support for vector layers and GeoJSON: demo. (#1731)
  • New geo mode version using Leafet. (#1775)

Bug fixes

Geo

  • Removed the ignored duration parameter from the Node/NodeList.setGeoCoordinates signature. (#1710)

Documentation

  • Fixed Getting Started code snippets. (#1789)

2.7.15

This release contains internal fixes and improvements## 2.7.8

Bug fixes

Typescript

  • Fixed typings for the nested attribute functions on Node/Edge/Lists. (#1795)

2.7.7

Improvements

Texts

  • Fixed text overlap removal while zooming out: now overlaps are removed at the start of animation to avoid overcrowding during the transition. (#1767)

Bug fixes

Docs

  • Updated the "React with hooks" tutorial to avoid the WebGL renderer crash. (#1768)

Layouts

  • Fixed the levelDistance support in hierarchical layout. (#1755)

Transformations

  • Fixed the regression introduced by an attempt to animate the removal of transformations that are not on the top of the transformation stack. (#1769)

2.7.6

Bug fixes

Typescript

  • Fixed signatures for Node.getAdjacentNodes(), NodeList.getAdjacentEdges(), Edge|EdgeList|NodeList.toJSON(). (#1726)
  • Fixed regression bug that removed events namespace signature typings. (#1747)

2.7.5

Improvements

Exports

  • Added nodeData and edgeData callbacks for data fields processing in gexf, graphml and csv exports. (#1719)

Bug fixes

Export

  • SVG export was not able to embed fonts properly when <base/> tag was used on the page. (#1714)

Layouts

  • Fixed the bug that would require the nodes parameter to be of type NodeList, if the incremental behavior is chosen for the force or forceLink layout. (#1715)

Texts

  • Fixes a critical bug with edge text overlap removal when all nodes are stacked at the same coordinate. (#1718)

2.7.4

Bug fixes

Gexf

  • Added attribute string sanitation to gexf export. (#1705)

Shapes

  • Fixed the bug causing texts to disappear when new node shape is added via style rules. (#1583)

Texts

  • Fixed a false positive in text overlap removal algorithm. Fixed the wrong boundary box calculation for loop edges texts. (#1684)

Documentation

Texts

  • Deprecated the 'none' FontStyle in favor of 'normal'. (#1707)

2.7.3

Bug fixes

TypeScript

  • Fixed some more missing types and method signatures: NodeAttribute.text and several Ogma.tools.tooltip methods dealing with edges. Fixed typings for text styling methods. (#1694)

Layouts

  • Fixes critical bug that allowed Webpack@>=4.x 'production' builds to interfere with the Web Workers (default) mode of running the layouts. (#1693)

Documentation

Docs

  • Fixed NodeList/EdgeList.getAttributes() return type. (#1567)

2.7.2

Bug fixes

  • Fixed the Critical dependency warning with Webpack builds. (#1660)

Render

  • Fixed the critical bug that was breaking Ogma in IE10. (#1670)

Typescript

  • Added missing types for badges, texts and sryles on Nodes and Edges. (#1665)

Documentation

Tutorials

  • Added an integration tutorial for Vue.js. (#1639)
  • Improved the React (with hooks) tutorial. (#1661)

2.7.1

Improvements

Lasso

  • Added bothExtremites option to filter edges that have both endpoints in selection polygon. (#1622)

RectangleSelect

  • Added bothExtremites option to filter edges that have both endpoints in selection rectangle. (#1622)

Bug fixes

Exports

  • Fixed the bug with edges that inherit their color from one of the endpoints, that caused an error in gexf and graphml export. (#1644)

Layouts

  • Fixed the bug in hierarchical layout causing it to go into infinite recursion on some topologies. (#1645)

2.7.0

Improvements

Layouts

  • Deprecate incremental layout in favour of an option on both force and forceLink layouts. (#1619)

Documentation

Doc

  • Fixed the examples links in the sequential layout tutorial. (#1630)

Exports

  • Added the note about the tab naming conventions in Excel. (#1549)

2.6.5

Improvements

Layouts

  • Fixed the alignment in the hierarchical layout algorithm that was affecting the shapes of the tree-like graphs. (#1603)

Bug fixes

Transformations

  • Fixed the bug in fading animation, causing the node background to appear black during the animation. (#1563)

Documentation

Doc

  • Fixed the documentation of default values and return types in the transformations API. (#1551)
  • Documented the use of groupIdFunction and generated ids in ogma.transformations.addEdgeGrouping. (#1552)
  • Corrected a typo in transformations API documentation. (#1560)
  • Removed deprecated syntax for ogma.styles.setHoveredNodeAttributes. (#1566)

Docs

  • Added transformation tutorials. (#1417)

Transformations

  • Added a warning about the situation when during the grouping the new edge created by the edgeGenerator has an id that is already present in the graph. (#1550)

Tutorials

  • Added a demo for integration with React (with hooks). (#1575)

2.6.4

New features

Layouts

  • Ported the alignSiblings behaviour from ForceLink to Force layout. (#1535)

Bug fixes

Webgl renderer

  • Fixed an issue that was contributing to potential WebGL context loss. (#1576)
  • Fixed some regression bugs on nodes and edges rendering (#1574)

Exports

  • Fixed faulty typescript definition for xlsx export. (#1572)

Geo

  • Fixed a bug that caused a fatal crash after leaving the geo-mode with 0 nodes in the viualisation. (#1592)

Layouts

  • Fixed the bug in weakly connected components breaking the radial layout. (#1569)
  • Fixed a bug causing a fatal error when calling a layout with locate option with no nodes present. (#1578)

Shapes

  • Fixed the bug causing texts to disappear when new node shape is added via style rules. (#1583)

Documentation

Docs

  • Fixed the missing interactions property on Ogma options in TypeScript declaration file. (#1581)

2.6.3

Bug fixes

Data

  • Fixed the bug that prevented user from setting data on the group nodes. (#1517)

Interactions

  • Fixed a bug when the false mouse click events being triggered between different mouse actions. (#1537)

Texts

  • Character rendering improved on screens with non-integer pixel ratio. (#1466)

Interactions

  • Fixed the regression that prevented user from stopping the dragging if mouseup was triggered outside of Ogma's container. (#1538)

2.6.2

Improvements

Exports

  • XLSX exports API has been extended to help customize tabs and content format. (#1480)

Layouts

  • Force layout quality improved for the nodes with massive surroundings. Cosmetic changes to the default simulation values. (#1514)

Bug fixes

Interactions

  • Fixed a bug that prevented focus and blur event to trigger. (#1504)

Layouts

  • Fixed the edge case in incremental expand, when there's enough space to expand the node where it is. (#1526)
  • Fixed a bug in force layout in legacy IE11. (#1528)

Documentation

Added an example for sequential layout

  • Data-flow analysis. (#1489)

Docs

  • Grouped the transformation examples. (#1516)

Layout

  • Improved the documentation and added a tutorial. (#1492)

Layouts

  • Added short tutorials on layouts. (#1491)

2.6.1

Bug fixes

View

  • Fixed the bug with type checking in ogma.view.setSize(). (#1495)

Documentation

Layout

  • Improved the documentation and added a tutorial. (#1492)

2.6.0

New features

Layouts

  • New force-directed layout algorithm with improved performance and customization. (#1421)

Improvements

Layouts

  • New hierarchical layout with moro options: root selection, arbitrary layer assignment from the data attributes and increased performance. (#1472)

Bug fixes

SVG

  • Fixed export document namespace bug in IE11. (#1486)

2.5.6

Bug fixes

Mouse

  • Fixed the bug when the right click was incorrectly reported as the left click. (#1476)

Selection

  • Fixed the bug when the ctrl or other modifier keys were released to quickly, breaking the selection behaviour. (#1481)

2.5.5

Improvements

Renderers

  • Fixed a regression causing slow boot-up in Edge and Internet Explorer. (#1455)

Bug fixes

  • Fixed the bug with minimum canvas size being fixed at 300px. (#1451)
  • Fixed a memory leak in touch/mouse event handling. (#1458)

UI

  • Normalized scroll wheel zoom speed across the browsers. (#1448)
  • Unified gesture control through PointerEvents. Enabled gesture zooming/rotation with trackpad in IE/Edge. (#1452)
  • Fixed gesture zooming/panning on touch devices. (#1456)
  • Made mousewheel zooming smoother in FireFox. (#1459)

Geo

  • Fixed the bug that would keep Ogma stuck in geo mode after removal of a node. (#1453)

2.5.4

Improvements

Export

  • Fixed occasional clipping of the texts on export. (#1432)

Bug fixes

Import

  • Fixed bug with node/edge duplicates in neo4j parser. (#1434)

Keyboard

  • Fixed the glitch that would prevent some shortcuts from being released. (#1446)

Layout

  • Fixed critical error in incremental layout. (#1428)

Layouts

  • Fixed a bug in radial layout that would sometimes lead to random node positions. (#1426)
  • Fixed a bug in incremental layout that caused it to break when there's only one node in the visualisation. (#1435)

Legend

  • Added support for image shorthand. (#1433)

Locate

  • Fixed the bug that would cause wrong positioning when nodes are added, that should be immediately filtered out. (#1438)

Resizing

  • Fixes the bug that made node resizing handle inactive. (#1445)

Webgl

  • Fixed the bug causing text rendering quality regression. (#1158)

2.5.3

Improvements

  • Updated the version of Arabic text plugin so that it could be loaded from the separate source. (#1408)

Layouts

  • Improved the incremental layout placement strategy and animation. (#1418)

Bug fixes

Imports

  • Fixed neo4j parser breaking bug. (#1424)

Renderers

  • Fixed the bug with WebGL to Canvas fallback. (#1422)

Documentation

Docs

  • Added a tutorial on testing with Ogma. (#1410)

2.5.2

Improvements

Styles

  • Added the following edge extremity shapes (head and tail): short-arrow, sharp-arrow, circle-hole-arrow, triangle-hole-arrow, circle, square. (#1405)

Bug fixes

Styles

  • Fixed bug where Ogma would crash after a rule was refreshed, if some nodes or edges were removed before. (#1404)

Documentation

  • Added tutorial on how to do PNG/SVG export on Node.js. (#1394)

2.5.1

New features

Algorithms

  • Added three methods for cycle detection in the algorithms namespace: hasCycle(), getAllSimpleCycles() and detectCycle(). (#1351)

Improvements

General

  • Added option bothExtremities in the method getAdjacentEdges() that allows to retrieve only edges for whith both extremities are in the source NodeList. (#1392)
  • Significant speed up of the initialization, especially in the case where nodes and edges are not added in the graph right after the instance is created. (#1398)

Interactions

  • The lasso callback now takes an edges parameter that indicates the edges surrounded by the lasso. (#1392)
  • The rectangle select callback doesn't have at least nodes or edges empty; all surrounded nodes and edges are always passed to the callback. (#1392)

Rendering

  • Badge texts that are too long for the badge are now truncated to fit the badge, and an ellipsis is added to indicate the text is not displayed in full. (#1357)

Styles

  • New attribute pulse that can be used to control pulses. (#1350)

Transformations

  • Added the removed node to the generator function in node collapsing. (#1374)

Bug fixes

Exports

  • Fixed incorrect behavior of parameter margin in PNG and SVG export. (#1402)

Interactions

  • Fixed bug where the interactions.zoom.minZoom global option would not be taken into account if there was one single node in the graph. (#1385)
  • Fixed bug where lasso and rectangle select would select nodes and edges that were filtered out. (#1393)

Rendering

  • Fixed bug where characters in scaled texts would have the wrong offset in WebGL. (#1378)
  • Fixed bug where a change in the graph would trigger 4 calls to requestAnimationFrame instead of 1. (#1381)
  • Fixed bug where texts would always be hidden in headless mode if text overlap removal was enabled. (#1401)

Transformations

  • Fixed bug where adding a node filter on top of node grouping, and then refreshing the filter, would cause some nodes/edges to disappear. (#1370)
  • Fixed bug where node collapsing would not properly work if multiple nodes had the same pair of neighbors. (#1376)
  • Fixed bug where meta-nodes would be unselected if the meta-node's data or its sub-nodes' data was updated. (#1395)

Documentation

  • Added an example that combines neighbor generation and node collapsing. (#1363)
  • Fixed generator function signature in neighbor generation documentation. (#1371)
  • Fixed argument names in the node collapsing documentation. (#1373)
  • Added missing parameter margin in PNG export method. (#1400)

Other

  • Added TypeScript definition for Ogma.libraries. (#1372)

2.5.0

New features

Styles

  • New node attribute halo.hideNonAdjacentEdges that makes so the node halo hides edges that don't have at least one extremity with halo.hideNonAdjacentEdges as true. (#690)
  • New attribute scalingMethod for both nodes and edges, which allow to specify if the node/edge size on screen is impacted by the view zoom. Two possible values: "scaled" (default) indicates that the size on screen in pixels is the radius/width multiplied by the zoom, and "fixed" indicates that the size on screen is the radius/width without any additional processing. Similar attributes have also been added for inner stroke, outer stroke, halo and badge stroke (default value matches the current behavior). (#1142)
  • The geo mode doesn't modify the radius/width of nodes/edges anymore, and instead simply changes their scalingMethod attribute to "fixed". (#1142)

Improvements

Geo

  • No longer waits for all the tiles to be rendered to apply text overlap removal. (#1346)

Interactions

  • User interaction callbacks (e.g onClick) are now fired after the builtin Ogma callbacks (e.g selection on click), instead of before. (#1143)

Rendering

  • Animating the removal of a badge now properly fades out the badge. (#1242)
  • Curved edges take less GPU memory than before. (#1257)
  • WebGL renderer is initialized faster. (#1268)
  • If the optional dependency mapbox-gl-rtl-text is included, arabic texts are now properly displayed (correct glyph based on the character's position, text right to left when needed). (#1318)
  • Speed improvement when clearing the graph while using the WebGL renderer. (#1343)
  • If text overlap removal is enabled, all texts are now hidden until the overlap removal is computed, making so texts no longer appear and are removed shortly after. (#1349)

Bug fixes

Geo

  • Fixed bug where, at high zoom level, edges would sometimes be slightly disconnected from their extremities. (#1261)

Interactions

  • Fixed bug where the mouse would end up at a different position relative to the graph after a camera drag. (#1365)
  • Fixed bug where interacting with large graphs would sometimes cause 1-2 seconds lags if the whole graph was in the view. (#1366)

Rendering

  • Fixed bug in WebGL where, when using a lot of icons/images/badge texts, some of them would be replaced by a different one. (#1358)

Documentation

  • Added tutorial that explain how to include optional dependencies (xlsx, dagre, mapbox-gl-rtl-text). (#1323)
  • Added tutorial that explain how to use the onRendererStateChange event. (#1327)
  • Updated texts of some examples that were outdated. (#1333)
  • Added example to illustrate the "halo masking" feature. (#1337)
  • The search bar in the fuzzy search example has now a normal size. (#1362)

2.4.9

Bug fixes

  • Retro-fix the bug with rules and classes crashing on removed nodes/edges. (#1465)

2.4.8

Bug fixes

General

  • Fixed bug in Firefox 61 where fonts where sometimes not detected as loaded even though they were. (#1329)
  • Fixed bug where edges.inverse() would return an invalid result if there were more edges than nodes in the graph. (#1330)
  • Fixed some metthods that didn't work on IE because of missing polyfills. (#1331)
  • Fixed bug where some graph in specific configurations could slow down Ogma a lot. (#1335)

Geo

  • Fixed bug where tiles could not be retrieved if their z component was a floating number. (#1320)

Rendering

  • Fixed bug where removing the last node of the graph would sometimes create a "ghost" node, possibly distorted. (#1336)

Rewiring

  • Fixed bug where edge handles would be too hard to grab. (#1339)
  • Fixed bug where an edge being in the rewirable state would be displayed under its extremities when one of them was hovered. (#1339)

2.4.7

Improvements

Styles

  • Rule selectors are now only called once per element regardless of the number of attributes modified by the rule. (#1312)
  • Significant speed improvements when adding/removing classes to/from a large number of nodes/edges. (#1312)

Bug fixes

Styles

  • Fixed bug where setHoveredEdgeAttributes and setSelectedEdgeAttributes would throw an error if null was passed. (#1317)

2.4.6

Bug fixes

Styles

  • Fixed bug where removing a class from a large number of elements could end up taking more than one second. (#1308)
  • Fixed bug where updating a large number of elemensts (5000+) would sometimes make Ogma freeze during several seconds. (#1310)
  • Fixed bug where using an external font would often make Ogma crash during the first frame. (#1314)

2.4.5

Improvements

Rendering

  • Ogma now correctly manages the transition between two screens with different device pixel ratios. (#1295)

Styles

  • Updating the style of a node now by default triggers the update of its adjacent nodes and edges. (#1302)
  • Significant performance improvement when assigning classes that don't contain any functions in their definition. (#1304)
  • Rules and classes are not only re-computed when necessary, rather than everytime attributes need to be re-computed. (#1304)
  • New optional parameters nodeDependencies, edgeDependencies, nodeOutput and edgeOutput for methods ogma.styles.addRule() and ogma.styles.createClass() - see tutorial. (#1304)

Bug fixes

Legend

  • Fixed bug where ogma.tools.legend.enable() would not show the legend until the user interacts with graph. (#1296)

Documentation

  • Updated styling tutorial. (#1275)
  • Added tutorial on styling optimization. (#1275)
  • Fixed return value of algorithms.shortestPath() in the documentation, now correctly, indicates that it returns a Promise. (#1306)

2.4.4

Improvements

Interactions

  • It's not possible anymore to manually select nodes and edges when an animation is running. (#1276)
  • The hovered element is now un-hovered when the mouse leaves the canvas. (#1283)

Rendering

  • Fixed lag in Safari when enabling bold texts on hover/selection with WebGL. (#1288)

Styles

  • Filtering nodes and edges don't remove the user classes anymore, but filtered nodes and edges are still not returned by class.getNodes() and class.getEdges(). (#1282)

View

  • Parameter maxNodeSize is now available in boundary functions argument, used to configure the min and max zoom. (#1280)

Bug fixes

Rendering

  • Fixed glitch were the intersection of the border of two edges with a transparent background would create darker pixels that expected. (#1253)
  • Fonts are now be properly loaded even if they take a long time to be downloaded by the browser. (#1277)

Typescript

  • Fixed definition of the edge.width attribute, which now correctly accepts strings. (#1279)

View

  • Fixed bug where an infinite loop would sometimes occur if text overlap detection was enabled and an edge with text had a specific position/width. (#1287)

2.4.3

Bug fixes

  • Fixed exception due to font loading detection in Safari. (#1263)

Geo

  • Geo-mode is now using only the geographical coordinates, it's not possible to move a node programmatically through its x and y coordinates. That fixes a ground bug which would flatten the rules for edge widths and radiuses when geo-mode is applied. (#1256)

Interactions

  • Dragging a node very quickly no longer result in the mouse being outside the node while still dragging the node. (#1259)
  • Fixed bug where some nodes/edges were not detected in certain views. (#1260)

Rendering

  • Animating an hovered node/edge now first unhover it before the animation, no longer skipping the animation if it is unhovered. (#1258)
  • Fixed crash when using headless renderer in the browser. (#1266)

2.4.2

New features

Transformations

  • New method ogma.transformations.addNeighborGeneration(). (#1196)
  • New method ogma.transformations.addNeighborMerging(). (#1197)
  • New method ogma.transformations.addVirtualProperties(). (#1198)
  • New method ogma.transformations.addNodeCollapsing(). (#1199)

Improvements

Rendering

  • Animating the position of a node mid-animation now chains it smoothly instead of making the node jump to the end of the first animation. (#1205)
  • New global option texts.hideUntilFontsLoaded which allows to hide the texts and icons until the browser has finished loading the external fonts (true by default). (#1245)

Styles

  • New layer attribute that controls the z-index of nodes and edges. The attribute is an integer value in [-1 ; 3], higher values are displayed on top of lower values. Nodes and edges have the value 0 by default, selected element have the value 2, and hovered elements have the value 3. (#1219)

View

  • Zoom and locate methods now take the interactions.zoom.minValue and interactions.zoom.maxValue options into account. (#1235)
  • New parameter ignoreZoomLimits on zoom and locate methods, false by default. (#1235)

Bug fixes

Geo

  • Fixed bug with base map not showing up in geo-mode. (#1227)
  • Fixed detectRetina option on non retina screens. (#1238)

Interactions

  • The extremity of an arrow edge is now detected by the mouse. (#1229)
  • Fixed bug where edges would sometimes be hoverable during an animation, causing the animation to end. (#1244)
  • Nodes/edges are not hoverable through HTML elements anymore. (#1249)

Rendering

  • Fixed bug where edge halos would not be animated when the edge is animated. (#1223)
  • Fixed bug where there would be a 1 pixel halo around texts or thin edges if the background color was transparent with RGB components different than (0, 0, 0). (#1224)
  • There is no blank space anymore between a node and its outer stroke when the node has no inner stroke. (#1225)
  • Fixed bug where removing a badge if the node is animated would only remove the text and image, not the badge itself. (#1232)
  • Clicking on a mailto: link no longer make the WebGL renderer crash in Chrome. (#1236)
  • Fixed node shape distorsion when switching to geo mode. (#1241)

Styles

  • Assigning null to a badge now removes both its text and image. (#1207)
  • Assining null to the badges attributes now removes the text and image of all badges. (#1207)

Documentation

  • Added one example for each of the new transformations. (#1233)

2.4.1

Bug fixes

Tooltip

  • Fixed bug where an error would be fired when clicking on the background if a tooltip was visible. (#1214)

2.4.0

Improvements

  • Added method getParallelEdges() for Edge and EdgeList. (#1130)
  • Added spatial indexing for faster hit detection and spatial queries. (#1173)

Algorithms

  • The pathfinding namespace is now deprecated. (#999)
  • New namespace algorithms, which contains a single shortest path method. This method has a more consistent definition, and returns nodes and edges instead of just nodes. (#999)

Rendering

  • Animations now wait for the renderer to be initialized before starting, so they're not partially skipped anymore if they are run right after Ogma is instancied. (#1122)

Styles

  • setAttribute(s) can now take a function as parameter. (#1061)
  • It is now possible to have rules/classes define attributes based on other attributes and get a consistent result. (#1078)
  • Attributes objects that describe rules and classes can now have a function at any nesting level, provided that they return an object that contains all the underlying attributes. (#1078)
  • New method ogma.styles.createClass() which returns a class object, allowing to manipulate and update the class. (#1078)
  • Method ogma.createClass() is deprecated. (#1078)
  • New Node/Edge method getClassList() that retreieves the list of classes assigned to the element. (#1078)
  • New methods ogma.styles.getClass() and ogma.styles.getClassList(). (#1078)
  • New methods ogma.styles.addRule() and ogma.styles.getRuleList(). (#1078)
  • New methods getDefinition() and update() on StyleRule. (#1078)
  • Methods ogma.styles.addEdgeRule(), ogma.styles.addNodeRule(), ogma.styles.getNodeRules() and ogma.styles.getEdgeRules() are deprecated. (#1078)
  • Type NodeAttributesRule renamed to NodeAttributesValue. (#1078)
  • All rules are now applied instead of stopping at the first one that retrieve a value for an attribute. (#1078)
  • New second argument fullOverwrite of ogma.styles.setSelectedNodeAttributes() and similar methods. (#1078)
  • Removed hidden limit of 32 classes; any number of classes can now be created. (#1103)
  • A badge with color "inherit" on a pie-chart node will now take the color of the closest slice instead of always the first one. (#1179)

View

  • New method isInView() for Node and Edge. (#419)

Bug fixes

Export

  • Exporting to PNG or SVG with a transparent background and semi-transparent nodes/edges now fade them towards the current background color instead of black. (#1187)

Geo

  • It is now possible to make radius/edge width rules maintain the ratios in geo mode as well. (#998)

Lasso

  • Lasso and rectangle select now ignore nodes and edges for which the detectable attribute is false. (#1183)

Rendering

  • Fixed bug where animating some nodes multiple times in a row would sometimes result in animations being skipped. (#1011)

Documentation

  • Updated styles tutorial. (#1126)

2.3.2

Improvements

Data

  • The second argument of NodeList.setData() and EdgeList.setData() is now checked, to avoid weird behaviors caused by a confusion with fillData(). (#1169)

Interactions

  • Clicks are now registered as such even if there is a small movement between the button press and button release (same for touch interactions). (#1172)

Parse

  • Improved error message when methods parse.jsonFromUrl() and parse.gexfFromUrl() fail to retrieve the file at the specified url. (#1166)

Styles

  • Added the detectable attribute on nodes & edges, which indicates if the node/edge is detectable by the mouse. (#894)

Transformations

  • Methods addNodeFilter(), addEdgeFilter(), addNodeGrouping() and addEdgeGrouping() now accept an optional enabled argument. (#1170)
  • Added option restorePositions to addNodeGrouping(). (#1176)

Bug fixes

Filters

  • Fixed bug where adding multiple filters synchronously would throw an error. (#1162)

Geo

  • Fixed bug where filtered edges' width was not reset when exiting geo mode. (#1167)
  • The rgb component of the background color is now kept when switching to geo mode and setting the background transparent. (#1168)

Neo4j

  • The parser now correctly parse the ids returned by Neo4J as 64 bits integers instead of only keeping the lowest 32 bits. (#1165)

RectangleSelect

  • Fixed bug where curved edges would always be selected by the rectangle select tool if no node was surrounded. (#1177)

Rendering

  • Fixed glitch in WebGL where a very thin white line would sometimes be displayed around node icons. (#1178)

Styles

  • Fixed bug where adjacent edges would not be refreshed if a node's radius changes because of a style rule. (#1160)

Watchers

  • Fixed bug where schema watchers were not properly reset when clearGraph() was called. (#1175)

2.3.1

Improvements

Exports

  • It's now possible to pass "all" to the nodeAttributes and edgeAttributes of the JSON export. (#1141)

General

  • getConnectedComponents can now take a filter parameter. (#1094)

Rendering

  • Edge halo doesn't match the edge head/tail anymore. (#1137)
  • Removed hidden limit of 256 pixels for text width. (#1145)

Transformations

  • New parameter groupEdges available to addNodeGrouping, allowing to choose weather parallel edges that have a meta-node as source/target should be grouped together (true by default). (#1146)
  • Meta-nodes'ids are now deterministic and are no longer random. (#1147)
  • The instance of Node/Edge used to manipulate a meta-node/meta-edge no longer changes when the transformations are refreshed. (#1148)

Bug fixes

Geo

  • Fixed geo mode. (#1151)

Rendering

  • Fixed bug that would sometimes make the WebGL renderer crash if too many different characters were used. (#1131)
  • Fixed bug in WebGL where a node image/pie-chart would leave small blank spaces at the right and bottom of the node. (#1138)

2.3.0

Improvements

General

  • Improved error message when an invalid source or target is specified when adding an edge. (#1125)

Transformations

  • All transformations are now manipulated through objects, not ids. A transformation object has the following methods: getName(), getId(), whenApplied(), isEnabled(), enable(duration), disable(duration), toggle(duration), getIndex(), setIndex(index), destroy(index), refresh(). (#885)
  • Filters and transformations are merged into one single pipeline, allowing for example to have filters based on previous filters, or grouping based on previous filters. (#885)
  • The result of node grouping should now be more consistent and not sometimes lead to visual artifacts. (#885)
  • transformations.addNodeGrouping() parameter ignoreEdgeDirection replaced with separateEdgesByDirection, which has the opposite effect. It means that now, by default parallel edges with opposite direction are grouped together. (#885)
  • transformations.addNodeGrouping() and transformations.addEdgeGrouping() now returns a Transformation instead of a Promise. (#885)
  • transformations.clear() now returns a Promise instead of taking a callback as parameter. (#885)
  • The following methods have been removed from the transformations namespace: getIndex(), setIndex(), remove(), removeNodeGrouping(). (#885)
  • The following methods have been added to the transformations namespace: getList(), afterNextUpdate(), addNodeFilter(), addEdgeFilter(). (#885)
  • The transformations.addNodeFilter() and transformations.addEdgeFilter() methods can now take a duration parameter, which fades the filtered elements over the specified duration. (#885)
  • The following methods of the root namespace have been deprecated: addNodeFilter(), addEdgeFilter(), getNodeFilters(), getEdgeFilters(), clearNodeFilters(), clearEdgeFilters(). (#885)
  • Updated the grouping examples. (#885)

Bug fixes

Rendering

  • Fixed bug where the Canvas and SVG renderers could crash after ~87 different characters were used. (#1127)

Styles

  • Fixed bug where primary and secondary texts could overlap if the scaling attribute was true. (#1129)
  • Fixed bug where calling styles.setNodeTextsVisibility(true) or a similar method would hide the specified elements, if the same method was not called with false before. (#1132)
  • Fixed the "inherit" color value when the node color is an array. (#1135)

2.2.3

Improvements

Exports

  • PNG and SVG exports now have an option to omit node badges. (#575)
  • Several bug fixes in SVG exports, resulting SVG document now has nodes and edges elements grouped and provided with some metadata. (#1091)

Layouts

  • Corrected the animation order in the incremental expansion. (#1068)

Styles

  • Increased maximum class count to 32. (#1102)

Topology

  • getDegree() now takes filters into accounts. (#1111)

Bug fixes

Drag

  • Right and middle mouse buttons cannot drag nodes anymore. (#1119)

Exports

  • Option legend can now be undefined, a boolean or an object to have more control on how and when the legend should be exported. (#1046)

Layouts

  • Added more options to hierarchical layout, removed the graph size limitations. (#1087)

Rendering

  • Improved thin tapered curved edges with canvas rendering. (#1105)

Styles

  • Fixed TypeScript definition of addNodeRule and addEdgeRule, the first parameter (selector) is now correctly optional. (#1095)
  • Fixed bug where styles.setNodeTextsVisibility(false) would also hide halos. (#1101)
  • Fixed bug where the badges.*.image.scale attribute would always use the value of the top left badge. (#1104)
  • Fixed bug where edge rules on the shape with a function retrieving a pre-defined shape (e.g "tapered") would be ignored. (#1116)

Tooltip

  • Fixed bug where enabling connectNodes and dragging over a node with a tooltip on hover would stop the connectNodes. (#1096)

2.2.2

Improvements

Classes

  • Added addClasses and removeClasses methods. (#1064)

Geo

  • Nodes and edges now have a size independant from the zoom. When in geo mode, their radius/width attribute indicates their radius/width in pixels, regardless of the zoom level. The geo setting sizeRatio allows to specify a flat multiplier to the radius/width. (#670)

Interactions

  • Added global option interactions.zoom.easing, which was in the documentation but without any effect. (#670)
  • Interaction events (onClick, onHover, etc) now also provide the source DOM event that triggered them in their payload. (#988)
  • Added global option mouse.doubleClickTimer, which controls the delay before which two consecutive clicks make a double click. (#1089)

Rendering

  • The opacity attribute now refers to background blending as opposed to real transparency. This notably fixes cases where the adjacent edges of a semi-transparent node would be visible under it. (#1071)

Styles

  • Added attribute badges.*.image.scale. (#1090)
  • Badge image url can be specified in badges.*.image.url. (#1090)

Bug fixes

Exports

  • Fixed bug in Gephi export where the rgb values where specified in the range [0-1] in decimal, rather than in the range [0-255] as integers. (#943)
  • Fixed bug when combining clip and width/height options in PNG/SVG export where the height/width options would be ignored. (#1083)

Rendering

  • Fixed bug where the WebGL renderer would crash if an invalid color was specified somewhere. (#1073)
  • If an invalid background color is specified, now defaults to black. (#1073)
  • Fixed bug where very thin edges would end before their final location in WebGL. (#1081)
  • Fixed bug where texts with more than 7 lines would be displayed incorrectly. (#1084)

2.2.1

Bug fixes

Rendering

  • Fixed WebGL error on Ipad. (#1065)
  • onRendererStatusChange -> onRendererStateChange. (#1067)
  • Fixed bug where the font would be incorrectly used if it contained quotes. (#1070)

View

  • Fixed bug where promises returned by view.beforeNextFrame would resolve after the next frame. (#1067)

Documentation

  • Several examples code fixes and improvements. (#1063)

2.2.0

Improvements

ConnectNodes

  • The dashLength parameter is removed, replaced with the isDashed parameter. (#699)

Exports

  • GEXF export now flattern the data properties before exporting them. (#944)

Filters

  • Renamed filter.delete() to filter.destroy() (previous name still valid but deprecated). (#977)
  • filter.whenApplied() now returns a Promise instead of takng a callback as parameter. (#977)

General

  • Init parameter webGlOptions removed. (#699)
  • New global option renderer. (#699)
  • New global option imgCrossOrigin. (#699)
  • Changed signature and default behavior of the getAdjacentNodes method. (#974)
  • New method ogma.destroy(). (#977)
  • The method ogma.reset() now recreates the Ogma instance from scratch. (#977)
  • Added ogma.createNodeList() and ogma.createEdgeList() methods, which return an empty NodeList and EdgeList respectively. (#979)

Layouts

  • Added onLayoutComputed event. (#990)

Rendering

  • Dashed lines no longer cause a major slow down in the rendering, no matter the renderer used. (#631)
  • Massive improvement of the rendering quality in WebGL. (#699)
  • Even more massive improvement of text quality in WebGL. (#699)
  • All renderers now consume way less memory (> 80% less than before). (#699)
  • Added event onRendererStatusChange, which allows to react when the renderer encounters an error, weather it's expected (e.g WebGL not available because IE 10), or unexpected (e.g WebGL shaders fail to compile because of a specific GPU config). (#960)

Styles

  • Renamed all threshold attributes to minVisibleSize. The previous name is deprecated but still valid. (#699)
  • null is now always a valid color (transparent). (#699)
  • Node attribute text.backgroundArrowBaseSize attribute to text.margin. The previous name is deprecated but still valid. (#699)
  • Attribute text.backgroundMargin renamed to text.padding. The previous name is deprecated but still valid. (#699)
  • New attribute opacity for both nodes and edges, which controls the global opacity of the node/edge. (#699)
  • Attribute hidden is deprecated and is now an alias to opacity (false -> 1, true -> 0). (#699)
  • New attribute outline.minVisibleSize for nodes and edges. (#699)
  • Attribute text.color can now be "inherit". (#699)
  • Attribute text.secondary.color can now be "inherit". (#699)
  • All attributes that represent a size can now be expressed in percentage of the default size using a percentage notation (e.g node.setAttribute('radius', '200%') will set the node radius to be two times the default node radius). (#699)
  • Text style value "none" is renamed to "normal". (#699)
  • Attribute halo.size renamed to halo.width. The previous name is deprecated but still valid. (#699)
  • New attribute text.secondary.minVisibleSize. (#699)
  • New node attribute icon.style. (#699)
  • Node shape "equilateral" renamed to "pentagon". (#699)
  • Node attribute image.rescale renamed to image.fit. The previous name is deprecated but still valid. (#699)
  • Node attribute image.duplicate renamed to image.tile. The previous name is deprecated but still valid. (#699)
  • Node attribute icon.scale is now relative to the node diameter rather than the node radius. (#699)
  • Node badge attribute text.scale is now relative to the badge diameter rather than the badge radius. (#699)
  • All node minVisibleSize attributes (previously threshold) are now relative to the node diameter rather than the node radius. (#699)
  • Node attribute innerStroke is now an alias to innerStroke.color if a non-object value is specified. (#699)
  • Node attribute outerStroke is now an alias to outerStroke.color if a non-object value is specified. (#699)
  • New node attribute text.tip that indicates if the small triangle pointing towards the node should be visible or now, rather than always being visible. (#699)
  • Added edge attribute edge.stroke, that contains three fields color, width and minVisibleSize. (#699)
  • Edge attribute strokeWdth is now an alias for stroke.width. (#699)
  • New edge attribute text.adjustAngle that indicates if the text should be shown horizontally if there is not enough space on the edge. (#699)
  • Attribute innerStroke.color can now be "inherit". (#738)
  • Attribute outerStroke.color can now be "inherit". (#738)
  • New attributes text.align and text.secondary.align`. (#739)
  • The setAttribute(s) methods' second parameter can now be an object with the fields duration, easing and chain. The easing field indicates the easing to use for the animation. The chain parameter (boolean) indicates if the attribute change should take place immediately or after the current animation. (#772)
  • New edge attribute adjustAnchors which indicates if the edge should take the extremities' badges and corners (if it's a square) into account, rather than it being the default behavior. (#774)
  • Edges anchors are more accurately positionned when the extremities have badges. (#774)
  • Invalid attribute values are now ignored rather than being replaced with the default value for that attribute. (#946)
  • Renamed rule.delete() to rule.destroy() (previous name still valid but deprecated). (#977)
  • rule.whenApplied() now returns a Promise instead of takng a callback as parameter. (#977)

View

  • ogma.view.get() now also returns the view size. (#699)
  • New method ogma.view.setSize() to set the view size in headless mode (when no container is assigned to Ogma). (#699)
  • Added method ogma.view.getImageData(). (#994)
  • Added method ogma.view.beforeNextFrame(). (#994)
  • Added method ogma.view.afterNextFrame(). (#994)
  • New global option interactions.zoom.minValue which can be specified to prevent the user from zooming out too much. By default, it's not possibe to zoom out if the graph fills less than 20% of the canvas. (#1025)
  • New global option interactions.zoom.maxZoom which can be specified to prevent the user from zooming in too much. By default, it's not possibe to zoom in if a node would end up taking more than 50% of the graph. (#1025)

Watchers

  • Renamed watcher.kill() to watcher.destroy() (previous name still valid but deprecated). (#977)

Bug fixes

Interactions

  • Fixed bug where the click events would sometimes not provide the right target. (#912)

Lasso

  • Fixed bug where the cursor indicator would sometimes incorrectly show up or not show up. (#925)

Layouts

  • Fixes a bug and lack of documentation covering concentric layout sortBy parameter. (#1041)

Rendering

  • Semi-transparent halos are not blended with their stroke color anymore. (#985)

Texts

  • Fixed the delay in showing captions of the hovered nodes and edges. (#1020)

Tooltip

  • Fixed bug that made a tooltip triggered by a hover prevent the node from being selected. (#995)

Typescript

  • Fixed some incorrect signatures. (#1060)

Documentation

  • Added tutorial on interactions. (#778)

2.1.11

Bug fixes

Export

  • Fixed bug in url resolver for the font embedding in SVG export.

2.1.10

API changes

  • #976 Added method toList() on NodeList and EdgeList, which returns themselves.
  • #1002 Added a isVisible() method on nodes/edges to indicate if the element is filtered out or not.

View

  • #971 Added maxNodeSizeOnSize parameter in locate methods.

Bug fixes

General

  • #968 Fixed race condition where moving the view two times back to back with an option to hide text enabled would sometimes cause the text to never show up again.
  • #968 Changed behavior of ogma.view.setNodeTextsVisibility() and similar methods to be more predictable and more easy to use.
  • #982 Fixed bug where edges with source and target at the same location would be visually connected to the top left of the screen during an animation.
  • #1004 The detect.edgeErrorMargin option is now correctly used instead of only using half of the specified value.
  • #1023 Ogma no longer throws an exception if ogma.reset() is called after a style rule is deleted.

Keyboard

  • #929 The keyboard keys are now correctly reset when the page loses focus.
  • #929 New method ogma.keyboard.resetKeys() to manually reset the internal key states.

Layouts

  • #992 Fixed a regression that would hide texts after 2 layouts are attempted to run at the same time.

Mouse

  • #964 Fixed bug where a double click could be triggered at any moment after a single click as long as the mouse didn't move.

Rendering

  • #970 Fixed bug where animating a node with multiple colors on retina screen would not take the pixel ratio into account properly.
  • #972 Fixed bug where nodes would sometimes move to their final position too soon during an animation.
  • #973 Pulses no longer make an edge be displayed on top of nodes.
  • #991 Fixed bug where texts would sometimes jump at their final position immediatly after the start of an animation.
  • #1006 Fixed bug which caused renderer to duplicate all nodes in IE after filters were applied.

Tooltip

  • #975 Fixed bug where the delay parameter would not be taken into account.

View

  • #1001 Locating a set of nodes/edges that all were filtered out no longer breaks the view.

Documentation

  • #986 Fixed outerStroke documentation, it's not possible to assign null to it.

2.1.9

Bug fixes

Render

  • #965 Fixed critical error with wrong canvas size on retina screens.

2.1.8

Bug fixes

General

  • #949 Fixed multiple bugs in Safari.

  • #950 canvas and xmldom packages that are stored in Ogma.libraries are now correctly used by Ogma.

  • #957 - exports: PNG export no longer clips the exported image on retina screens.

Exports

  • #956 Embedded fonts in SVG now have correct URLs to the fonts in case the fonts are not embedded.

Lasso

  • #962 Lasso no longers permanently prevents nodes and edges from being interacted with.

Selection

  • #953 Selection events are no longer triggered with an empty list as payload.

2.1.7

Improvements

Export

  • #927 SVG export now has an option to embed the custom fonts. By default, it now links them, trying to preserve the appearance.

Geo

  • #940 Passing null to setGeoCoordinates will now erase them.

Schema

  • #924 The schema methods now take a filter option which indicates which nodes/edges to take into account to compute the schema.

Bug fixes

General

  • #926 Fixed bug where onMouseButtonDown would always have an empty target.

  • #932 Fixed bug where it wouldn't be possible to specify an attribute name as an array of string in setAttribute and getAttribute.

  • #935 Fixed TS signature or ogma.events.onBeforeEdgesRemoved().

  • #931 - general: fixed bug where specifying a batchSize options to addNodes/addEdges/addGraph/setGraph would make the method not work.

  • #933 - general: onNodesAdded and onEdgesAdded are not triggered anymore when an empty list is provided.

Graph

  • #939 Added a check for deprecated option of passing a function to getNodes() and getEdges.

Keyboard

  • #929 The keyboard keys are now correctly reset when the page loses focus.

Layout

  • #939 Fixed incremental layout example.

Tooltip

  • #921 Fixed conflicts between tooltip and other interactions.

2.1.6

Bug fixes

Locate

  • #920 Locating edges now takes curved edges and self-loops into account.

Selection

  • #919 Fixed the bug when after removal of the selected edge its extremities remained highlighted.

2.1.5

API changes

  • #897 Added method ogma.tooltip.isShown().
  • #897 Added method ogma.tooltip.hide().
  • #897 Added method ogma.getPointerInformation().
  • #898 Added method toList() to both Node and Edge, which convert a Node/Edge into a NodeList/EdgeList of one element.

Improvements

Groups

  • #875 Now node/edgeGenerator functions are receiving NodeList and EdgeList as a parameter to make it easier to store the ids of the underlying nodes and edges in groups. Examples are updated accordingly.

Bug fixes

  • #895 Typescript definitions: fixed the Options type.
  • #895 Typescript definitions: fixed the return type of getId().
  • #895 Typescript definitions: fixed signature of some geo methods.
  • #902 Fixed bug where changing some camera interactions options would raise an exception.
  • #903 Typescript definitions: fixed bug where the first parameter of view.zoomIn() and view.zoomOut() could not be omitted as described in the doc.
  • #904 Fixed bug where the source and target nodes of an edge were not refreshed when the edge was modified.

Exports

  • #819 "all" and "visible" options are now available in image exports so that you could export the visualisation without the filters applied.
  • #910 Fixed image exports when the clip option is passed.

Layouts

  • #907 Fixes the bug when ogma.layouts.stop() didn't interrupt layout animation.

Texts

  • #909 Fixed the bug with text collision detection on curvy edges.

2.1.4

Bug fixes

General

  • #878 Ogma.dist.min now comes with dagre and xlsx plugins preconfigured.

Documentation

  • #889 Fixed TS definitions and documentation for NodeAttributesValue and EdgeAttributesValue.
  • #891 Fixed the NodeFilter and EdgeFilter documentation, which was incomplete.
  • #892 Updated the Angular tutorial.

Other

  • #890 TypeScript definitions file ogma.min.d.ts is now committed in the ogma-release repository.

2.1.3

Improvements

Groups

  • #868 Exposed a method in API to manually refresh the grouping rules.

Bug fixes

Texts

  • #869 Labels for the hovered nodes are now not removed by collision detection algorithm.
  • #871 Fixed the setting toggling text collision detection.

2.1.2

Improvements

Filters

  • #860 Re-added methods .clearNodeFilters(), .clearEdgeFilters().

Interactions

  • #536 Dragging is now possible outside of the visualization container.

Bug fixes

Interactions

  • #839 Fixed bug where using touch events would make the graph disappear from the scene.
  • #848 Keyboard keys are now properly reset when the user changes the browser tab.
  • #862 Fixed bug where onClick, onDoubleClick, onDragStart, onDragProgress and onDragEnd user callbacks would be triggered before Ogma internal callbacks.

Layouts

  • #850 ForceLink now has explicit parameters for randomizing the node positions.

Legend

  • #858 Fixed bug where the legend would display property values that no node/edge in the graph has.

Pulses

  • #846 Fixed bug where passing 'inherit' as value for startColor or endColor when using the pulse() method on a node with multiple colors would throw an error.

2.1.1

API changes

General

  • #812 New method toJSON() for Node/Edge/NodeList/EdgeList.

Tooltip

  • #813 Added methods ogma.events.onTooltipShown() and ogma.events.onTooltipHidden().

Improvements

Exports

  • #832 New parameters nodeAttributes, edgeAttributes, nodeData and edgeData for the export.json() method. They behave the same way as in the toJSON() method.
  • #832 Removed the styles parameter from the export.json() method.
  • #832 Merged the nodes and edges parameters of the export.json() method with the filter parameter.
  • #832 Attributes are now properly exported in the attributes property instead of being exported at the node/edge root when exporting to JSON.

View

  • #810 The view is now automatically redrawn if the screen resolution changes.

Bug fixes

General

  • #814 Fixed bug that caused filtered/grouped nodes to still be detected by the mouse.
  • #822 Fixed bug where nodes & edges would not be hidden when filtered out while using the SVG renderer.
  • #827 Fixed bug that caused a crash on IE 10.

* geo

  • #809 Fixed the initial padding calculation, so that the graph is fully inside the viewport.

Generators

  • #816 Fixed Barabasi-Albert generator scaling and wrong node attributes.

Geo

  • #831 Latitudes and longitudes outside of valid range are now ignored.

Groups

  • #823 Fixed a bug that resulted in resetting of the grouped nodes position after applying layout and then adding/removing rules.

Layouts

  • #815 Fixed bug that made the layoutable attribute ignored by contiuous layouts.

2.1.0

Improvements

General

  • #770 Methods setData and fillData now return the object on which it was called.
  • #792 Added method reverse() on NodeList and EdgeList, which retrieves a new List containing all the nodes that are not in the original list.
  • #797 Added a setAttribute method on the (Node|Edge)(List)? classes, which allows to set a single attribute.

Events

  • #781 New event onViewChanged that trigger after a view zoom, panning or rotation has been completed.
  • #795 Added onBeforeNodesAdded, onBeforeNodesRemoved, onBeforeEdgesAdded, onBeforeEdgesRemoved events to manipulate the nodes and edges data before they are removed from graph storage. onNodesAdded, onNodesRemoved, onEdgesAdded, onEdgesRemoved now trigger after the nodes/edges are added/removed.

Filters

  • #787 Methods addNodeFilter and addEdgeFilter now return a Filter object instead of a Promise. It provides the methods whenApplied(f), refresh(), and delete(). The id of the filter is no longer accessible.
  • #787 Removed methods remove(Node|Edge)Filter and clear(Node|Edge)Filters.
  • #787 New methods getNodeFilters() and getEdgeFilters(), which retrieve the list of node/edge filters currently applied.

Snapping

  • #799 Removed snapping options from global Ogma options and limited it to the tool.

Styles

  • #787 Methods addNodeRule and addEdgeRule now return a StyleRule object instead of a Promise. It provides the methods whenApplied(f), refresh(), getIndex(), setIndex(i) and delete(). The id of the rule is no longer accessible.
  • #787 Removed methods get(Node|Edge)RuleIndex, set(Node|Edge)RuleIndex, remove(Node|Edge)Rule and clear(Node|Edge)Rules.
  • #787 New methods getNodeRules() and getEdgeRules(), which retrieve the list of node/edge rules currently applied.

Bug fixes

General

  • #773 Fixed a glitch when amimating some nodes in WebGL.
  • #802 Fixed bug where edges were not updated when one of their ends' radius changes.

ConnectNodes

  • #784 Fixed bug that made the user only able to create self-loop edges.

Tooltip

  • #798 Fixed bug that prevented tooltips created with tooltip.on*Click methods from being displayed.

Other

General

  • #803 The build is now also available in the ogma-release repository code, not only in the release zips.

2.0.0-beta

This release brings multiple substantial improvements in terms of features, API and performances. It notably reduces memory consumption by 36% on average. It is not backward-compatible with Ogma v1.x.

The main objectives behind this major version are:

  • Make the API easier to use, notably by adding classes to work with collections of nodes/edges
  • Provide a more powerful API for styles
  • Adding an API to manipulate nodes/edges data while preserving consistency across all features.
  • Making so filters have an impact on node/edge collection retrieval
  • Improving performance, especially memory consumption

General

  • The API is reorganized into the following namespaces: events, export, generate, geo, keyboard, layouts, parse, pathfinding, rules, schema, styles, tools, transformations, view.
  • Settings are now mostly limited to configure interaction tools and their display.
  • Settings are now managed through the ogma.setOptions() method.

Graph

  • The NodeList and EdgeList classes have been introduced and allow the user to manipulate collections of nodes/edges.
  • The properties of nodes and edges are not writable anymore (e.g. color = ...). All actions on nodes/edges are now performed through methods (e.g node.setSelected(true) instead of node.active = true).
  • Methods than return a list of nodes/edges (e.g nodes.getAdjacentNodes()) now take filtered nodes/edges into account, and won't return them.

Styling

In Ogma v1, styles could be configured in multiple places and it was often hard to know where to find a specific visual property.

  • All the styling features are now managed in the ogma.styles namespace.
  • Style of a specific node/edge can be manipulated through the node.setStyle() method rather than directly using properties such as color.
  • All visual properties can now be configured individually for each node/edge.
  • No more default value settings. There is now a system (non-modifiable) default value for all visual properties. Users can add rules if they wish to apply their own values.
  • The design module has been removed and is replaced by a generic rule system, that can be used to configure any style property.
  • When adding a node/edge, all of its style properties must be contained in the style property instead of being at the root object (e.g. node.color is illegal, we now use node.styles.color).
  • A concept of "class" has been added in the spirit of CSS classes. Classes can be manipulated through the addClass() and removeClass() methods. Their goal is to provide a way to temporarily alter the visual display of nodes/edges without overriding their original style information.
  • The size property has been renamed to radius for nodes, and width for edges.

Data

Ogma now provides an easy to use API to manipulate the data of nodes & edges instead of just having a data property on the nodes/edges. It allows Ogma to:

  • Keep track of the type and different values for a given data property.
  • Detect when a property is added or removed across the graph.
  • Update the styling rules automatically, instead of the need to trigger the updates manually.

Events

  • Events are no longer named, instead each of them has its own methods in the events namespace (like ogma.events.onNodesSelected()).
  • Removing an event listener is now done through the method ogma.events.removeEventListener(), which unbind the provided function from all events it was bound to.
  • An event payload is now always a single object.

DSL

The Ogma DSL (Domain Specific Language), used for filtering and grouping, has been removed. They now only work with regular JavaScript functions.

Grouping

  • Grouping has been rewritten to fix conflicts with other features.
  • It is now available from the transformations namespace, which will provide similar features.
  • Grouping now work by providing a function that indicate what nodes/edges should be grouped together and how.
  • This feature is not stable yet, and will evolve according to user feedback.

Tools

We’ve added the following graph manipulation tools:

  • Rectangle selection
  • Edge rewiring
  • Node resizing

Performance

Memory consumption and graph loading time have both been reduced by about 36% on average.

2.0.1-beta

Bug fixes

Texts

  • #709 Node secondary texts are now properly detected when hovered by the mouse.

2.0.2-beta

Improvements

General

  • #718 Specifying an id is now optional when adding a node or edge (if ommited, a random id will be assigned).
  • #718 When adding an edge, its source/target can now be indicated using the node object itself rather than its id.
  • #723 Added method ogma.getHoveredElement() to retrieve the currently hovered element.
  • #723 Added method ogma.view.getElementAt({x, y}) to retrieve the element at the specified coordinates.

Grouping

  • #725 Grouping now has an asynchronous API and supports animation for node grouping.

View

  • #728 Added method ogma.view.forceResize() to force Ogma to refresh the view according to the container's visibility and dimensions.

Bug fixes

Parse.neo4j

  • #721 Fixed a crash caused by optional matches.

2.0.3-beta

Improvements

Filters

  • #744 Filter methods addNodeFilter, removeNodeFilter and clearNodeFIlters (same for edges) now returns a Promise, which resolve when the filter is effectively applied/removed.

Styles

  • #752 It is now possible to specify a function in hover/selection/classes styles.

Tooltip

  • #747 Changed behavior of the autoAdjust option, it now makes so the tooltip fits inside the container and does not overlap with the node (when it is a node tooltip).

Bug fixes

Legend

  • #748 Fixed bug where size indicator for nodes and edges would not be displayed properly.
  • #748 Widgets are now ordered by name rather than by height.

Styles

  • #746 Fixed bug where pie-charts with two colors would not be displayed correctly when the graph is rotated.
  • #749 Fixed bug where pie charts rules would not correctly be applied after a filter.

2.0.4-beta

Improvements

General

  • #763 Added options minimumWidth and minimumHeight, which indicate the minimum dimensions of the canvas in case the container is too small. Default is 300x300.
  • #769 Changed setStyle to setAttributes, resetStyle to resetAttributes, getStyle to getAttribute. Introduced new method getAttributes, to retrieve multiple attributes at once. x and y properties are now attributes are are assignable using setAttributes. setPosition is removed, setAttributes can be used instead with the exact same parameters. getPosition is kept, but can be achieved using getAttributes(['x', 'y']). The *Style methods will still work, but are removed from the documentation and deprecated.
  • #769 setAttributes will now by default wait for the current animation to finish before being applied. A skipCurrentAnimation option in the second parameter of setAttributes allow to force the attribute change to take place immediatly.
  • #769 New method getAnimation(), that returns a Promise that resolves when the Node/Edge/NodeList/EdgeList's current animation finishes.

Layouts

  • #764 Added a locate option to all layouts to run centering animation simultaneously with the nodes re-positioning.

Bug fixes

Hover

  • #758 Passing null to ogma.styles.setHoveredNodeAttributes() (and setHoveredNodeAttributes) correctly removes all attribute changes.

Layouts

  • #745 Added a sortFallbackValue option for grid layout.

Legend

  • #755 Now correctly takes the devicePixelRatio into account.
  • #756 Fixed bug where the legend would not show up if it was enabled in a chunk of code asynchronous to Ogma initialization.

Selection

  • #758 Passing null to ogma.styles.setSelectedNodeAttributes() (and setSelectedEdgeAttributes) correctly removes all attribute changes.

1.6.18

Bug fixes

Design

  • #724 When assigning colors based on a quantitative mapping, fixed bug where a string that can be parsed as a number would not be treated as a number.

Neo4j

  • #722 Fixed a bug that caused a crash when response queries contain optional values.

1.6.17

Bug fixes

General

  • #715 Fixed bug that would prevent the imgCrossOrigin property to be handled correctly when exporting.

1.6.16

Improvements

Tooltips

  • #564 Node tooltips position is now calculated based on the node coordinates and size.

Bug fixes

Keyboard

  • #714 Added a 'cmd' key that can be used with keyboard.isPressed and keyboard.bind.
  • #714 'ctrl' no longer identifies the cmd key on Mac.

Touch

  • #708 Fixed bug where user tap would not be detected.

1.6.15

Bug fixes

Coalescence

  • #694 Fixed bug where ungroupNodes() would not work if one node was outside of a group.

Geo

  • #692 Fixed bug when the maximum and minimum zoom levels were not restored after the usage of geo mode.

Groups

  • #679 Fixed the bug which caused jumpy animations of edges while ungrouping.
  • #691 Fixes a bug when removing nodes adjacent to the meta-nodes would make un-grouping impossible.
  • #693 Fixed ogma.groups.reset() method.

Lasso

  • #654 Fixed bug with the lasso outline remaining on the screen if no nodes were selected.

1.6.14

Bug fixes

Badges

  • #618 Fixed circle badge sizes on retina screens.

Layouts

  • #634 Fixed IE11 bug in radial layout regarding the usage of typed arrays.

Legend

  • #559 Fixed the bug when legends layout would cause an exception if the container is hidden and the window is resized.

Pulses

  • #643 Fixed the bug with edges appearing on top of the node in canvas renderer.

Render

  • #627 Fixed bug where straight tapered edges would not be shown when being animated if the source and target are at the same location.
  • #633 Fixed the node icons rendering on Retina displays.

1.6.13

Improvements

Neo4j

  • #610 Variable-length and paths queries are now supported.

Bug fixes

Geo

  • #604 Fixed multiple bugs with coordinate assignment and when resetting the coordinates.

Groups

  • #614 Fixes the bug when user couldn't ungroup the nodes after having removed some of the edges attached to the nodes in the group.

Keyboard

  • #608 Fixed bug where event 'keyboard.keyDown' was fired instead of 'keyboard.keyUp'.

Render

  • #609 Fixed glitch happening during curved tapered edge animation.

1.6.12

Bug fixes

General

  • #606 Fixed bug where the camera wouldn't be adjusted when resizing the container.

Geo

  • #603 Fixed bug where Ogma would crash if exiting the geo mode before all tiles are loaded.

Touch

  • #601 Fixed bug where touch events would be disabled.

1.6.11

Bug fixes

Export

  • #579 Fixed the bug with node icons missing from the export.
  • #588 Fixed SVG export.

Geo

  • #592 Fixes the positioning, when one or more nodes have no geographical coordinates and are therefore hidden.

Groups

  • #549 Now grouped and hidden nodes can safely be removed and the edges, connected to them programmatically, are correctly re-attached to the meta-nodes.

Layouts

  • #591 Fixes ForceLink layout regression that affected incremental layouts, the nodes barycenter takes the pinned nodes into account when calculating the barycenter.

Styles

  • #581 Introduced an option to disregard outer stroke width while positioning the text labels.

1.6.10

Bug fixes

Export

  • #548 SVG badges are now properly exported to png.

Layouts

  • #561 Fixed the bug with disappearing labels when a layout is launched while the previous one is still working.

Texts

  • #578 Fixed bug where the text on nodes would "shift" if the text background switched to null (on hover or selection).

1.6.9

Improvements

Tooltips

  • #565 Tooltips methods now return Promises.

Bug fixes

Export

  • #571 Fixed the bug when Ogma crashed if the .png export was called immediately after initialization.

1.6.8

Bug fixes

Export

  • #552 Overlapping text labels are not exported anymore.

1.6.7

Bug fixes

Export

  • #548 SVG badges are now properly exported to png.
  • #552 Overlapping text labels are not exported anymore.

Geo

  • #541 Geo mode is now reading the geographical coordinates every time it gets enabled.

1.6.6

Improvements

Geo

  • #511 Better zooming and panning performance.

Bug fixes

Locate

  • #543 Hidden and grouped nodes are no more taken into account in auto positioning.

1.6.5

Bug fixes

Brand

  • #531 Brand is now removed as well when ogma.kill() is called.

Mouse

  • #542 Fixed a bug that prevented a double click to be triggered on some browsers.

1.6.4

Bug fixes

Groups

  • #528 Grouped nodes now return correct information about their neighbours.
  • #528 When ungrouped, nodes are now taking positions relative to the group node if it was moved.

Layout

  • #527 Grouped nodes are now working correctly with the layouts.

1.6.3

Bug fixes

* connectNodes

  • #524 Fixed the bug resulting in multiple edges added at once.

* geo

  • #525 Fixed the CartoDB provider example.

1.6.2

Bug fixes

General

  • #521 Fixed bug that made Ogma crash when ogma.kill() was called.

1.6.1

Improvements

Badges

  • #513 Arrow edges which have a node with badges as target don't overlap the badges anymore.
  • #513 Fixed bug that caused the positionScale setting.

1.6.0

New features

* layouts

  • #195 Added radial layout.

* pathfinding

  • #400 Added faster implementation of Dijkstra shortest path algorithm.

* topology

  • #456 Added methods to get weakly connected components of the graph, and a component to which a particular node belongs.

Bug fixes

General

  • #491 Fixed a bug that caused a click to be triggered when the user dragged a node or edge (could cause some accidental selections/deselections).
  • #492 Fixes a bug when the mousewheel zooming is performed around a wrong origin point after user has switched to another tab and then returned to Ogma.

* import

  • #498 Fixed bug in 'gefx' import when the edge attributes were lost in case their class was serialized as 'edge' in the file header.

Design

  • #496 Fixed bug that caused setNodeColor and setNodeShape not to work when used with a function as parameter.

Graph

  • #493 Fixed bug where getNodeIdList and getEdgeIdList returned numerical ids as strings.
  • #494 Fixed TypeScript type of graph.edges.

Render

  • #506 Fixed bug that caused a crash in WebGL if more than 256 different characters were displayed.

Tooltip

  • #510 Fixed a bug that caused a crash when Ogma was cleared and a tooltip was visible.

1.5.3

Improvements

Layouts

  • #475 Layouts now emit events layout.start and layout.end, containing information about the indexes of the affected nodes and their positions before and after the layout was applied.

Bug fixes

Generators

  • #470 Fixed bug that caused the validation of parameters in asynchronous generators to be skipped.

Halo

  • #443 Fixed a bug where the halo of nodes would be displayed on top of edges when exporting to an image.

Hover

  • #467 New value 'inherit' for settings nodeOuterStrokeColor and edgeColor. This value indicates that the outer stroke/shape color must be the same as the main node/edge color when it is hovered.

Layouts

  • #463 Fixed the bug which resulted in a race condition between layout animation and subsequent positioning with locate.center().
  • #471 Fixed a bug which caused ForceLink layout to collapse all the nodes that had no initial positions.

Render

  • #415 Made renderers able to switch between screens with different pixel ratio seamlessly.

Renderer

  • #441 Method ogma.render.resize() was added to force-redraw the canvas if the visibility of container has changed.

Selection

  • #440 Fixed a bug that would cause addNeighbors() to add every connected nodes to the selection rather that direct neighbors.
  • #467 New value 'inherit' for settings nodeOuterStrokeColor and edgeColor. This value indicates that the outer stroke/shape color must be the same as the main node/edge color when it is selected.

Shapes

  • #454 Fixed bug that caused setting edgesAlwaysCurvy to not work.

1.5.2

Improvements

General

  • #439 Replaced multiple any with the right types in the TypeScript definition file.

Drag

  • #433 Event drag.nodes renamed to drag.progress + 2 new events: drag.start and drag.end.

Hover

  • #442 Setting edgeColor can now be null to indicate that the color of edges on hover must not change.

Bug fixes

Geo

  • #427 Fixed bug that preventded geographical maps to be exported as PNG in Edge.
  • #449 Fixed bug that prevented Internet Explorer to use https map providers.

Lasso

  • #448 Fixed bug where clicking on a button inside the div container with the lasso being active would unselect all nodes.

Legend

  • #445 Fixed bug where the legend would sometimes not display colors of nodes that have multiple colors.

Documentation

General

  • #356 Added tutorial to integrate Ogma with Angular2.