Maintain existing graph shape when appending items

Hi Walter,

just to let you know that your suggested change to use a custom ForceDirectedLayout has worked perfectly.

I created a custom layout with the minimum additional support that I needed, and added the ‘isExistingNode’ to the data bound to the node

    function StableForceDirectedLayout() {
        go.ForceDirectedLayout.call(this);
    }
    go.Diagram.inherit(StableForceDirectedLayout, go.ForceDirectedLayout);
    StableForceDirectedLayout.prototype.isFixed = function (v) {
        return v.node.data.hasOwnProperty("isExistingNode") && v.node.data.isExistingNode === true;
    }

The end result is a nice stable force directed graph. Newly added nodes are aware of the existing items, but the existing items keep their original position during the layout phase.

Thank you again for your help.