Still moving along and still more questions. For a move event of a single node there can be a lot of changes. Iterating over all these and updating our data is a lot of overhead when really I just care about the last one. Is it safe to just get the last change? If multiple nodes and links are selected is it always the last change for each one? This seems like a lot more work than just using the SelectionMoved event, but since you said most people just the single ModelChange event, I’m trying to do that best practice. If the ModelChange event object has what I need w/o having to iterate over all the changes please let me know.
* CommittedTransaction: Move
{"change":"ChangedEvent.Transaction","propertyName":"CommittedTransaction","modelChange":"","newParam":null,"newValue":null,"oldParam":null,"oldValue":"Move"}
{"change":"!d position: Node#1312(Node 1) old: Point(90,60) new: Point(90.5,60.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(90,60) new: Point(90.5,60.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(90.5,60.5) new: Point(120.5,90.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(90.5,60.5) new: Point(120.5,90.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(120.5,90.5) new: Point(135.5,105.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(120.5,90.5) new: Point(135.5,105.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(135.5,105.5) new: Point(165.5,135.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(135.5,105.5) new: Point(165.5,135.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(165.5,135.5) new: Point(195.5,150.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(165.5,135.5) new: Point(195.5,150.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(195.5,150.5) new: Point(225.5,180.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(195.5,150.5) new: Point(225.5,180.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(225.5,180.5) new: Point(270.5,210.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(225.5,180.5) new: Point(270.5,210.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(270.5,210.5) new: Point(315.5,240.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(270.5,210.5) new: Point(315.5,240.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(315.5,240.5) new: Point(360.5,255.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(315.5,240.5) new: Point(360.5,255.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(360.5,255.5) new: Point(390.5,285.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(360.5,255.5) new: Point(390.5,285.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(390.5,285.5) new: Point(435.5,300.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(390.5,285.5) new: Point(435.5,300.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(435.5,300.5) new: Point(450.5,315.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(435.5,300.5) new: Point(450.5,315.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(450.5,315.5) new: Point(495.5,330.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(450.5,315.5) new: Point(495.5,330.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(495.5,330.5) new: Point(510.5,345.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(495.5,330.5) new: Point(510.5,345.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(510.5,345.5) new: Point(540.5,360.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(510.5,345.5) new: Point(540.5,360.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(540.5,360.5) new: Point(570.5,375.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(540.5,360.5) new: Point(570.5,375.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(570.5,375.5) new: Point(600.5,405.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(570.5,375.5) new: Point(600.5,405.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(600.5,405.5) new: Point(660.5,420.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(600.5,405.5) new: Point(660.5,420.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(660.5,420.5) new: Point(705.5,435.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(660.5,420.5) new: Point(705.5,435.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(705.5,435.5) new: Point(750.5,450.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(705.5,435.5) new: Point(750.5,450.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(750.5,450.5) new: Point(795.5,465.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(750.5,450.5) new: Point(795.5,465.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(795.5,465.5) new: Point(840.5,480.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(795.5,465.5) new: Point(840.5,480.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(840.5,480.5) new: Point(885.5,480.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(840.5,480.5) new: Point(885.5,480.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(885.5,480.5) new: Point(900.5,495.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(885.5,480.5) new: Point(900.5,495.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(900.5,495.5) new: Point(930.5,495.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(900.5,495.5) new: Point(930.5,495.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(930.5,495.5) new: Point(945.5,495.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(930.5,495.5) new: Point(945.5,495.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(945.5,495.5) new: Point(960.5,495.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(945.5,495.5) new: Point(960.5,495.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(960.5,495.5) new: Point(960.5,510.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(960.5,495.5) new: Point(960.5,510.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(960.5,510.5) new: Point(975.5,510.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(960.5,510.5) new: Point(975.5,510.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location
{"change":"!d position: Node#1312(Node 1) old: Point(975.5,510.5) new: Point(990.5,510.5)","propertyName":"position","modelChange":""}
Node 126:WPDS ChangedEvent.Property position
{"change":"!d location: Node#1312(Node 1) old: Point(975.5,510.5) new: Point(990.5,510.5)","propertyName":"location","modelChange":""}
Node 126:WPDS ChangedEvent.Property location