Roadmap

Issues and short-term plan

These are my plans for the next months (July-October 2010), which also involves managing some bugs. You are invited to take part!

  1. Have a render function for every node, no matter how it was created.
  2. Provide a convenient way to define the custom render functionality via json code.
  3. Enhance the overlay property to make it easier to use.(half done :) )
  4. Enhance the label property of connections for better readability and automatic text aligning.
  5. Attach a click handler to the nodes to distinguish between drag and click events.
  6. An option to set a random seed for deterministic layouts.
  7. Enhancing the layout algorithm to also work with mostly linear graphs.
  8. Address the bug with numeric IDs.
  9. Better re-using existing connections.
  10. Integer positions for nodes, for better node image representation (e.g. while using PNG icons)
  11. 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!)
  • A web site (working on it)
  • Hide/show nodes (in progress)
  • Tree mode (in progress)
  • An algorithm showroom, e.g. for search algorithms, binary trees, minimal spanning trees, maximum flows, etc. (working on it), like all those educational Java applets from the 90′s out there…
  • Set fixed positions for some nodes
  • Different layout options
  • Animations (maybe)
  • Data adaptors
  • Different connection modes and styles
  • As this library is growing, and not everyone might need everything, some kind of a really basic dependency management would be nice..
  • 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)

14 Responses to Roadmap

  1. Gautama Dude says:

    Are there any plans to allow multiple edges between nodes? – http://en.wikipedia.org/wiki/Multigraph

    • Johann Philipp says:

      Currently there’s no such plan, though I’ve thought about it… I’m not quite sure how to implement it here.

  2. John Campbell says:

    Hi Johann,
    I’m working on a project and i want to integrate your plugin within my site.
    In order to do so, some features are really missing for, at least, using it normally.
    I can’t use your plugin till these features will be added.

    These features are:
    # Set fixed positions for some nodes
    # Tree mode

    There is one more feature which I don’t really need, but it will be nice if it will be added to:
    # Integer positions for nodes, for better node image representation (e.g. while using PNG icons)

    Do you have any estimation when a new version with these features will be publish?
    I’m very looking for these features and I will be very happy if you can add them for me.
    I’m sure I’m not the only one who needs them :)

    Thanks allot,
    John

    • Johann Philipp says:

      John, there’s a Tree mode in process, check out the news! I’ll make my mind up for the fixed nodes. When do you need it? The integer positions shouldn’t be too hard…

  3. Lars says:

    Hello,
    Let me second the vote for “fixed positions for some nodes”. Some of our users need that, especially when the graphs are complex: they can get oriented much faster if they can expect certain nodes to be in predefined areas. It doesn’t necessarily have to be a fixed coordinate; it might instead be “anchor to south” or “anchor to middle” or “anchor to northeast”.

    This library looks good! I was considering using canvas instead of SVG, but you have given me reason to reconsider.

  4. Rajnatar says:

    Hi,this page says code works on all browsers . but the below link does not work on IE 7.

    http://dracula.ameisenbar.de/0.0.3alpha/dracula_algorithms.html

    Any clue.

    • Johann Philipp says:

      Well, I said “Browser” ;-) Just kidding. It’s only a minor flaw, try adding this:

      if (!Array.prototype.forEach)
      {
        Array.prototype.forEach = function(fun /*, thisp*/)
        {
          var len = this.length;
          if (typeof fun != "function")
            throw new TypeError();
       
          var thisp = arguments[1];
          for (var i = 0; i < len; i++)
          {
            if (i in this)
              fun.call(thisp, this[i], i, this);
          }
        };
      }
      • Rajnatar says:

        Hi,Thanks a lot.It works in IE now with your suggested changes.How about the DAG graph in IE.I am trying to get object nodes in a collection and iterating over
        and adding edges.I am modifying the index.html i got from download to do that.But it doesn’t display the graph in firefox.If I hard code the values it works fine. I do println in the java object when I iterate it shows the values
        var g = new Graph();

        g.addEdge( , , {directed:true});

        …..

        • Rajnatar says:

          Hi ,I got it working with small number of nodes in firefox.But when there are more nodes ,the graph is not readable .any suggestions on this. Thanks a lot

  5. Steve Meyfroidt says:

    Hi, using this library for some visualisation that needs to run on various desktop browsers and on mobile safari. All works well except dragging,: Dracula intercepts any mousedown (dracula_graph.js line 271) whether it’s a drag start or not.

    The RaphaelJS examples do dragging a different way by invoking a drag method and passing some handler functions. Those examples do work on mobile safari so I guess that’s the way Dracula ought to implement DnD?

    I might revisit this to fix it, but meanwhile, commenting line 271 to disable Dracula’s mousedown handler allows my click handler to work.

    Thanks for releasing Dracula in any case!
    Steve

    • Johann Philipp says:

      Hi there, you’re totally right. Actually, I was using the code from the Raphael examples, but that was some time ago (like one year or even more) and I guess they’ve changed a few things in the meantime. Using “drag” instead of “mousedown” is definitely a lot cleaner! I’ll change it soon accordingly. For now, I have just implemented the other fix mentioned in the other comment on the main page. You can use it now from GitHub or Launchpad!

  6. Alex says:

    Hi,
    it would be good to have a forum for this.

    regards
    -Alex

  7. Jeff says:

    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.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">