UNPKG

jsnetworkx

Version:

A graph processing and visualization library for JavaScript (port of NetworkX for Python).

155 lines (102 loc) 4.32 kB
# Changlog ## v0.3.4 ### New #### API/Algorithms Binary graph operators: - union / genUnion - disjointUnion / genDisjointUnion - intersection / genIntersection - difference / genDifference - symmetricDifference / genSymmetricDifference - compose / genCompose ### Fixed - Issue with zoom on double click since d3 v3.5.5 (#51) ## v0.3.3 ### Changes It is now possible to require individual modules and still get the benefits of async code execution through workers. Example: ``` var completeGraph = require('jsnetworkx/node/generators/classic').completeGraph; var cluster = require('jsnetworkx/node/algorithms/cluster'); var WorkerSettings = require('jsnetworkx/node/WorkerSettings'); var initializeBrowserWorker = require('jsnetworkx/node/initializeBrowserWorker'); global.genClustering = cluster.genClustering; global.completeGraph = completeGraph; WorkerSettings.methodLookupFunction = function(name) { return cluster[name]; }; initializeBrowserWorker(); ``` This is a custom module which only exposes `completeGraph` and `genClustering`. `WorkerSettings.methodLookupFunction` This function is used by the worker (and `delegateToSync`!) to resolve the method name the worker receives, to the actual function. E.g. the prebuilt version of JSNetworkX uses `name => jsnx[name]`. `initializeBrowserWorker` This function tests whether we are in a worker environment and if yes, sets up the event handlers and takes care of (de)serializing the data. This function should be called in the worker script. Given the example above, the custom bundle could be created with JSNETWORKX_BUNDLE='bundle.js' browserify test.js > bundle.js ## v0.3.2 ### New #### API/Algorithms - eigenvectorCentrality (genEigenvectorCentrality) ## v0.3.1 ### New #### API/Algorithms Weighted and generic shortest path algorithms. The "generic" functions provide a single interface for weighted and unweighted algorithms. - allPairsDijkstraPath - allPairsDijkstraPathLength - dijkstraPath - dijkstraPathLength - singleSourceDijkstra - singleSourceDijkstraPath - singleSourceDijkstraPathLength - shortestPath - shortestPathLength - hasPath including async (gen\*) versions. ## v0.3.0 ### New #### API - Many algorithms are now available as asynchronous methods. E.g. `clustering` is available as `genClustering`. Those methods return a `Promise` and will delegate to a web worker in browsers. In Node.js, a new process will be spawned. Note that in both cases the data has to be serialized, which happens synchronously and may also take some time, depending on the size of the graph. #### Drawing - New drawing option `stickyDrag`. If set to `true`, the dragged node will keep its new position after dragging and is not subject to the force layout. [D3 example](http://bl.ocks.org/mbostock/3750558/5093e88c0462173a3d7b5859d7db75fbf5a7d8b8). ### Changes #### API - Moved from `underscore_method_names` to `camelCaseMethodNames`. - makeSmallUndirectedGraph and makeSmallGraph now accept an object of the form `{type, name, n, list}` as first argument instead of an array `[type, name, n, list]`. - Objects are not considered as "NodeContainers" anymore. Previously, any function that accepted a list of nodes also accepted an object of the form `{n1: ..., n2: ..., ...}` and `n1`, `n2`, ... would have been treated as nodes. Instead, any object that implements the [ES6 iterator protocol][iterator] can be used. This includes (by default) arrays and generator functions. - Graph classes cannot be instantiated without `new` anymore. I.e. you have to use `var G = new jsnx.Graph();` instead of `var G = jsnx.Graph();`. That's because ES6 classes cannot be called without `new`. - The utility methods `cumulative_sum`, `generate_unique_node` and `is_list_of_ints` have been removed, since there was no need for them. ### Algorithms - `balancedTree` doesn't set the height to `2` anymore if the branching factor is `1`. So `balancedTree(1, 4)` is equivalent to `pathGraph(4)`. #### Drawing - Like with method names, drawing options are `camelCase` now instead of `under_score`. ### Fixed #### Drawing - Fixed dragging (canvas doesn't pan while node is dragged). [iterator]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols