Quantcast
Channel: Northwoods Software - Latest topics
Viewing all articles
Browse latest Browse all 7425

Layered Digraph with Custom Layers and Bands

$
0
0

@vander wrote:

I have a layered digraph with ~350 nodes. It was taking about 3 secs to load previously. However when I overwrote assignLayers and commitLayers my performance dropped to more like 20 secs. I am not sure if this is because of added complexity to the internal layout algorithms, or if I inadvertently caused the computations to run multiple times. Any ideas?

MyLayout.prototype.assignLayers = function() {

	go.LayeredDigraphLayout.prototype.assignLayers.call(this);
	
	var it = this.network.vertexes.iterator;
	while (it.next()) {
		var v = it.value;
		if (v.node !== null) {
			var lay = v.node.data.level;			
			if (typeof lay === "number" && lay >= 0) {
				v.layer = lay;
			}
		}
	}
};

MyLayout.prototype.commitLayers = function(layerRects, offset) {
      // update the background object holding the visual "bands"
      var bands = this.diagram.findPartForKey("_BANDS");
      if (bands) {
        var model = this.diagram.model;
        bands.location = this.arrangementOrigin.copy().add(offset);

        // make each band visible or not, depending on whether there is a layer for it
        for (var it = bands.elements; it.next();) {
          var idx = it.key;
          var elt = it.value;  // the item panel representing a band
          elt.visible = idx < layerRects.length;
        }

        // set the bounds of each band via data binding of the "bounds" property
        var arr = bands.data.itemArray;
        for (var i = 0; i < layerRects.length; i++) {
          var itemdata = arr[i];
          if (itemdata) {
            model.setDataProperty(itemdata, "bounds", layerRects[i]);
          }
        }
      }
    };

Posts: 5

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 7425

Latest Images

Trending Articles



Latest Images