Roadmap

Issues and short-term plan

These are my plans for the coming time, which also involves managing some bugs. You are invited to take part!

  • Have a render function for every node, no matter how it was created.
  • Provide a convenient way to define the custom render functionality via json code.
  • Enhance the overlay property to make it easier to use.(half done 🙂 )
  • Enhance the label property of connections for better readability and automatic text aligning.
  • Attach a click handler to the nodes to distinguish between drag and click events.
  • An option to set a random seed for deterministic layouts.
  • Enhancing the layout algorithm to also work with mostly linear graphs.
  • Address the bug with numeric IDs.
  • Better re-using existing connections.
  • Integer positions for nodes, for better node image representation (e.g. while using PNG icons)
  • Re-introduce “forEach” and maybe other JavaScript functions that don’t exist on every platform.

Future plan

Some of the issues I will address in the future:

  • Some options don’t work on all browsers: Browser testing (Seems to work on most browsers now!)
  • Hide/show nodes (in progress)
  • Tree mode
  • An algorithm showroom, e.g. for search algorithms, binary trees, minimal spanning trees, maximum flows, etc. (working on it)
  • Set fixed positions for some nodes
  • Different layout options
  • Different connection modes and styles
  • Some measurement method to calculate the quality of some randomly created layouts and then picking the best one
  • Use currying wherever it makes sense and results in cleaner code. (I love currying!)
  • default node or edge option
  • Implement chained function calling: g.addNode(“Node one”).addNode(“Node two”).addEdge(“Node two”, “Node three”); (maybe)

11 thoughts on “Roadmap

  1. I am implementing a directed graph using this library on a canvas size of 800 x 400. It has about 8 nodes as ellipses each having labels of about 50 characters. But while rendering using the default renderer, the starting node renders itself at bottom right instead of top left. So the graph flows from bottom right to top left instead of the reverse. How do you change the flow ?

  2. Hi,
    Great work! Please help me with this:


    var elem = document.getElementById(id); // returns an Ellipse Object
    elem.addEventListener('click', function() {
    alert("hello, clicked ellipse with id: " + this.id);
    }, false); //

    Somehow this only works in Firefox. IE you attach EventHandlers differently, but Chrome does not work either. Is there a better way to attach Event handlers (i.e. Raphael double click) to the ellipses?

    Thanks for this great library!
    Julian

  3. Hi Johann,

    your framewok is great! I just began to use it and I’m impressed. One question I have to deal with is grouping of nodes. Is it possible and could a group be surrounded with a rectangle or something silimar?

    I try to visualize a graph, where nodes and edges are connected AND there are also nodes which are only in the group (no connetion to other nodes) and the group has only one edge to another node.

    Here is a painted example, what I try to accomplish: http://dl.dropbox.com/u/30138440/nodes-and-bounding.jpg

    Thanks in advance!

    Best regards,
    Patrick

  4. Great software, thanks for all of your hard work!

    Have you considered adding the ability for a node to have an edge connecting to itself? I would like to use this library to build Markov chains, but most Markov chains have this property which is not currently supported.

Leave a Reply

Your email address will not be published.