Coder Social home page Coder Social logo

wm-drhung / linkurious.js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from linkurious/linkurious.js

0.0 2.0 0.0 3.44 MB

A Javascript toolkit to speed up the development of graph visualization and interaction applications.

License: GNU General Public License v3.0

JavaScript 75.11% HTML 24.51% CSS 0.38%

linkurious.js's Introduction

Codeship Status for Linkurious/linkurious.js Issue Stats Issue Stats

linkurious.js

The linkurious.js toolkit speeds up the development of modern Web applications that leverage the power of graph visualization and interaction.

Graphs are also called networks: they are made of nodes linked by edges. Graphs are a powerful way to represent any relationships in data like social networks (i.e. who likes who), infrastructure (i.e. how devices are connected), flows (i.e. where does the money go), and much more.

Linkurious.js provides a collection of HTML5 features based on Sigma.js, the fastest open source Javascript graph drawing engine on the market. Linkurious.js is published in dual licenses, available under both commercial and GNU GPLv3 licenses (see below).


glyphs-icons edge-shapes filters forceatlas glyphs halo hover-edge designer drag layout-arctic level-of-details-edges-labels node-icons pie-charts self-loop tooltips


Introduction

Linkurious.js is developed in pure Javascript. It uses Sigma.js for its graph data structure and visualization engine, which provides both Canvas, WebGL and SVG renderers for nodes and edges. Sigma.js is highly flexible thanks to its modular architecture, and is extensible by plugins. The linkurious.js toolkit is made of more than 30 Sigma.js plugins, combined to work together and tested for integration into modern Web applications.

Resources

The wiki provides documentation on APIs, and you can start learning how to code with Linkurious.js with the examples and test directories.

Getting started

To use it, clone the repository:

git clone [email protected]:Linkurious/sigma.js.git

To build the code:

  • Install Node.js.
  • Install gjslint.
  • Use npm install to install sigma development dependencies.
  • Use npm run build to minify the code with Uglify. The minified files sigma.min.js and sigma plugins will then be accessible in the build/ folder.

You can also customize the build by adding or removing files from the coreJsFiles array in Gruntfile.js before applying the grunt task.

Why linkurious.js?

At Linkurious SAS we are big fans of Sigma.js. We use it extensively in our applications because it is an efficient graph viewer, but application developers like us need more high level and integration-ready features to create smart graph applications. We have thus developed more than 20 plugins and improved the core of Sigma with enhanced interaction features.

We define our mission as follows:

  1. To work on core fixes and core improvements in collaboration with the Sigma.js team.
  2. To develop integration-ready features such as filters, tooltips, or Excel exporter.
  3. To provide professional support for developers to succeed in their projects.

Benefits

You should consider linkurious.js as your primary toolkit for building graph-based applications on the Web if you need:

  • to ship your solution quickly;
  • to focus on the core value of your application;
  • to display large graphs (i.e. larger than 2000 nodes and 5000 edges);
  • to interact with the graph visualization;
  • development support.

Browser Support

All modern web browsers are supported, including:

  • Internet Explorer 10+
  • Chrome 23+ and Chromium
  • Firefox 15+
  • Safari 6+

Touch events on tablet and mobile are currently supported as beta features.

Performance

Performance depends on the graph size, the graphic renderers, the computer and browser on which the web application runs.

  • Canvas is supported in all modern browsers. It is a great tradeoff between flexibility and performance. Use it to display up to 5 000 nodes and 8 000 edges.
  • WebGL needs a graph card and is thus not suitable to all clients, but it unlocks the graph size boundaries. It is great to display large graph withs a layout previously computed (e.g. from Gephi) because the graphic card memory is loaded only once. Use it to display up to 20 000 nodes and 30 000 edges.
  • SVG is partially supported and is still under active development. It is great for interactivity and animations but performances drop quickly with the number of displayed items. Use it to display up to 500 nodes and 1 000 edges. Notice that an SVG export plugin is available to generate files for Inkscape or Adobe Illustrator.

Different kinds of renderers can be mixed, and automatic fallback from WebGL to Canvas makes adoption wider and smoother. With linkurious.js your application is not bound to a specific rendering technology anymore!

See our performance guide to learn more.

External Dependencies

Linkurious.js comes with no external dependency, making it compatible with any Javascript framework and library. We integrate it with Angular.js in a Linkurious product.

A few plugins may require external dependencies. Please check their README files.

Contributing

You can contribute by submitting issues tickets and proposing pull requests. Make sure that tests and linting pass before submitting any pull request by running the command grunt.

See How to fix bugs and to How to develop plugins.

The whole source code is validated by the Google Closure Linter and JSHint, and the comments are written in JSDoc (tags description is available here).

License

The linkurious.js toolkit is dual-licensed, available under both commercial and open-source licenses. The open-source license is the GNU General Public License v.3 ("GPL"). In addition to GPL, the Linkurious.js toolkit is available under commercial license terms from Linkurious SAS.

GPL has been chosen as the open-source license for linkurious.js, because it provides the following four degrees of freedom:

  1. The freedom to run the program for any purpose.
  2. The freedom to study how the program works and adapt it to specific needs.
  3. The freedom to redistribute copies so you can help your neighbor.
  4. The freedom to improve the program and release your improvements to the public, so that the whole community benefits.

These four degrees of freedom are very important for the success of linkurious.js, and it is important that all users of linkurious.js under GPL adhere to these and fully meet all the requirements set by the GPL. It is recommended that a thorough legal analysis is conducted when choosing to use the GPL or other open-source licenses. If your application restricts any of these freedoms, such as commercial or closed-source applications, then the GPL license is not suited and you must contact us to buy a commercial license at [email protected].

linkurious.js's People

Contributors

sheymann avatar jacomyal avatar yomguithereal avatar martindelataille avatar jbilcke avatar qinfchen avatar josemazo avatar ssidorchik avatar patrickmarabeas avatar yaph avatar jacomyma avatar mattcg avatar flo-sch avatar a---- avatar mef avatar raibaz avatar computermacgyver avatar davidrapin avatar jvilledieu avatar totetmatt avatar tjdett avatar rpeleg1970 avatar callicles avatar mattgu74 avatar luca avatar anirvan avatar alextsg avatar kyontan avatar blcook223 avatar apitts avatar

Watchers

James Cloos avatar Hung Q Tran avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.