We are pleased to announce the release of version 1.2.1.
- Version 1.2 includes a lot of performance improvements – everything takes a lot less memory than before, and many things should be a bit faster too.
- We have added support for drawing separator lines between some or all rows and/or columns of a Table Panel.
- You can now customize Links in more ways than before.
- There are additional ways to navigate or operate on trees.
- We have added several new samples.
- We have added an “extensions” folder: Extensions. This holds several sample apps which depend on the regular GoJS library plus extension classes inheriting from Layout, Tool, or CommandHandler.
- We now supply a type definition file for TypeScript: GoJS.d.ts.
Changes for 1.2.1 since 1.2.0
- Fixed non-routing of the original Links after they have been copied.
- Fixed positioning of link label nodes that are Groups.
Changes for 1.2 since 1.1.*
- Added a TypeScript definition file:
release/GoJS.d.ts
for better type-checking when using TypeScript and for Intellisense support in Visual Studio. - Added Extensions of Tool, Layout, and CommandHandler:
- Added Drag Zooming Tool, with the tool defined in DragZoomingTool.js.
- Added Freehand Drawing Tool, with the tool defined in FreehandDrawingTool.js.
- Added Polygon Drawing Tool, with the tool defined in PolygonDrawingTool.js.
- Added Polyline Linking Tool, with the tool defined in PolylineLinkingTool.js.
- Added Serpentine Layout, with the layout defined in SerpentineLayout.js.
- Added Floor Plan Editor and Floor Plan Monitor, demonstrating several tools and a command handler:
- Samples:
- Added Euler Diagram sample.
- Added Grafcet Diagrams sample.
- Added Network Configuration sample.
- Added Recentering Radial Layout sample.
- Added Regrouping sample.
- Selection and Tool Adornments are now virtualized:
- Adornments are only created automatically when viewed.
- The “Adornment” Layer's part count will only reflect Adornments created so far.
- Part.adornments will be empty for Parts that should have Adornments (i.e., are selected) but have yet to be viewed. (Part.adornments will never be null.)
- If your app needs Adornments that should exist but are off-screen you can call Part.updateAdornments to create them.
- Trees:
- Added a parameter to Node.findTreeParts to control how much of a subtree is returned.
- Added a parameter to Node.collapseTree and Node.expandTree for controlling how much of a tree is collapsed or expanded.
- Added Node.findTreeRoot method for walking up the chain of tree parent links.
- Added Diagram.findTreeRoots method for finding all root Nodes of trees.
- Added Link.isTreeLink property; set to false to have tree-oriented methods ignore such Links, which is convenient when you want a tree-structured diagram using a GraphLinksModel with additional links connecting the nodes.
- Fixed Node.collapseTree not causing the Diagram to redraw.
- TreeLayout.roots collection now holds TreeVertexes, although Nodes in that collection are still supported for compatibility.
- Added overridable TreeLayout.initializeTreeVertexValues method.
- Added overridable TreeLayout.addComments and TreeLayout.layoutComments methods.
- Added overridable TreeLayout.arrangeTrees method.
- Links:
- Added Link.isOrthogonal read-only property, for convenience in checking the kind of routing a Link does.
- Added Link.getLinkPointFromPoint, Link.getLinkPoint, and Link.getLinkDirection overridable methods, to help customize the computation of link routes where a link connects with a port.
- Added Link.resegmentable and LinkReshapingTool.midHandleArchetype properties for allow users to add and remove straight segments from links.
- Added LinkingBaseTool.portTargeted functional property as an event handler that is called during a linking or relinking operation.
- Added LinkingBaseTool.copyPortProperties and LinkingBaseTool.setNoTargetPortProperties overridable methods, for customizing the behavior during linking and relinking operations, when setting LinkingBaseTool.portTargeted is not enough.
- The LinkingTool and RelinkingTool now autoscroll when dragging the end of a link just inside the edge of the viewport.
- Added Row and Column separators in Table Panels:
- RowColumnDefinition.separatorPadding
- RowColumnDefinition.separatorStroke
- RowColumnDefinition.separatorStrokeWidth
- RowColumnDefinition.separatorDashArray
- RowColumnDefinition.background
- RowColumnDefinition.coversSeparators
- RowColumnDefinition.total
- Panel.defaultSeparatorPadding
- Panel.defaultRowSeparatorStroke
- Panel.defaultRowSeparatorStrokeWidth
- Panel.defaultRowSeparatorDashArray
- Panel.defaultColumnSeparatorStroke
- Panel.defaultColumnSeparatorStrokeWidth
- Panel.defaultColumnSeparatorDashArray
- Diagrams and Layers:
- Added Diagram.findTopLevelGroups method for finding all unnested Groups.
- Added a partialInclusion argument to Diagram.findObjectsNear and Layer.findObjectsNear.
- Added Layer.pickable and GraphObject.pickable properties, to permit visual objects to be ignored by methods such as Diagram.findObjectAt, which in turn allows one to create Parts such as the background grid that cannot get mouse events but are still visible.
- Added Diagram.zoomPoint property, for controlling where to “focus” the diagram contents when changing the Diagram.scale.
- Added Overview.drawsTemporaryLayers property to disable drawing temporary layers.
- Fixed Overview’s div setter when changing the div to null and back.
- Fixed the drawing of grid on Overviews.
- Diagram.makeImage now correctly includes or excludes the grid based on showGrid and showTemporary when a parts list is used.
- The viewport now changes size appropriately on browser window maximize and restore.
- When a Diagram’s div is hidden in such a way that its clientWidth or clientHeight go to zero, the old viewport width and height are kept at their old values until they are changed to nonzero values again.
- Parts and GraphObjects:
- Added Layer.pickable and GraphObject.pickable properties, to permit visual objects to be ignored by methods such as Diagram.findObjectAt, which in turn allows one to create Parts such as the background grid that cannot get mouse events but are still visible.
- Added methods for finding links between nodes: Node.findLinksTo (in one direction) and Node.findLinksBetween (in either direction).
- Added support for row and column separators in Table Panels – see paragraph above.
- Added Panel.findColumnForLocalX and Panel.findRowForLocalY.
- Fixed the Panel.data binding of tooltip Adornments for GraphObjects created for items in a Panel.itemArray.
- Fixed Placeholder positioning when a Placeholder has a padding or the Group has a non-default locationSpot.
- Added TextBlock.isUnderline and TextBlock.isStrikethrough.
- Fixed some geometric arc calculations on Geometries with more than one Figure.
- Fixed deletion of label Nodes from Links to remove the key reference in the link data.
- Layouts:
- Added Layout.isRealtime property, to control whether an invalid layout is performed during some tool operations before a transaction is completed.
- Improved LayeredDigraphLayout detection whether links need to be routed around the “from” node or the “to” node.
- TreeLayout.roots collection now holds TreeVertexes, although Nodes in that collection are still supported for compatibility.
- Added overridable TreeLayout.initializeTreeVertexValues method.
- Added overridable TreeLayout.addComments and TreeLayout.layoutComments methods.
- Added overridable TreeLayout.arrangeTrees method.
- Tools and CommandHandler:
- Added ToolManager.dragSize property, for controlling the distance at which the mouse may move before it is no longer considered a click but a drag.
- Added ToolManager.WheelNone; set ToolManager.mouseWheelBehavior to this value to ignore mouse wheel events without disabling scrolling or zooming by other means.
- Stopped Tool.standardMouseOver from being called with the initial Diagram.lastInput.
- On touch-supported devices, the default context menu no longer appears if the right-click was initiated with a mouse.
- Fixed ActionTool to work on a Parts when the whole Part has GraphObject.isActionable set to true.
- Improved ToolManager.positionToolTip and ContextMenuTool.positionContextMenu not to position it left of the left edge of the viewport.