1.x 更新日志

Changes for 1.8.38

Changes for 1.8.37

Changes for 1.8.36

Changes for 1.8.35

  • Fixed a bug with the LayoutCompleted DiagramEvent, which was not always firing when manually calling Diagram.layoutDiagram.
  • Fixed a DraggingTool bug where dragging parts across Diagrams (or Palettes) would snap incorrectly on drop.

Changes for 1.8.34

  • Fixed a bug with geometry string parsing using quadratic bezier shorthand ("T").
  • Fixed setting Part.category of a Part that is not in the Diagram. This simply changes the property value without replacing the visual tree with a new copy of a template.
  • Updated some outdated documentation regarding PathSegment.radiusY matching radiusX.

Changes for 1.8.33

  • Fixed a bug with updating Adornments placed into non-temporary layers. Updating them might modify the parts list of that layer during iteration, causing an error.
  • Documentation corrections for Tool.standardWaitAfter and Tool.doWaitAfter.

Changes for 1.8.32

  • Diagram auto-scrolling now considers the document bounds of the total scrolled-to area during the auto-scroll. This makes it easy to scroll in different directions that might normally reduce the bounds during the drag.
  • Fixed a bug where adornments may appear at the wrong locations when disappearing off-screen and reappearing.
  • Fixed a bug with newly-copied draggable links grid snapping, and not having correct points. Also fixed some jittering while dragging links with grid snapping.

Changes for 1.8.31

  • Fixed a bug rendering to SVG when an arc was the first segment of a figure and it needed an initial straight line to get to the correct starting point.
  • Fixed a bug in Diagram.findObjectsNear where complete inclusions weren't always returning the proper set of objects fully enclosed within the circular area given by the point and distance parameters.

Changes for 1.8.30

  • Fixed a bug with Node.collapseTree: In collapsing a circular subgraph it now correctly set Node.wasTreeExpanded on the original node, and now removes the Node's Adornments.
  • Improved resizing behavior of the Overview.box to be smoother and more accurate.
  • Fixed a bug with adornments not disappearing during deselection, after creating new Parts.
  • Fixed a bug with Group sizing during drag-copy.
  • Fixed the DiagramEvent.subject collection of a "SelectionDeleted" DiagramEvent to include connected Links.
  • Fixed a bug with Group and member positioning during drag-copy, where the copy may sometimes incorrectly place the Parts relative to each other.
  • The map returned by Shape.getFigureGenerators now includes string synonyms, such as "MinusLine" which references "LineH". Previously, it was only including figures directly associated with a generator function.

Changes for 1.8.29

  • Fixed improper updating of Adornments of member Parts after undo or redo of ungrouping a Group.
  • Group.move will not set Link.points to non-real values if the original Link position was not real. It will invalidate the route instead.
  • Improved safety of layer changes during undo/redo if code has been written with layer changing side effects.

Changes for 1.8.28

  • Fixed a Link re-routing bug during drags, when DraggingTool.isComplexRoutingRealtime is set to false. It would incorrectly re-compute AvoidsNodes routes during the drag if a node was crossed, instead of only deciding at the end of drag whether to re-compute.
  • Fixed a drawing bug where the start of Group collapse/expand animations may draw one frame of its ending state.
  • Setting Diagram.scrollMode now correctly updates the Diagram's scrollbars.
  • Fixed a bug where changing the Link.fromNode or Link.toNode in a TreeModel could result in duplicate links.

Changes for 1.8.27

  • Fixed a regression from 1.8.24 where some graduated panels will draw incorrectly.
  • Dragging groups while DraggingTool.isGridSnapEnabled no longer snaps their members separately. This fixes some bugs where dragging a Group might shift group contents during a drag, such as links, or where Group contents may shift the Group as the placeholder is recomputed.
  • Fixed Node.findLinksTo when the other port id is not null.
  • Some fixes for scrollbar customization.

Changes for 1.8.26

  • Fixed a regression from 1.8.24 where the opacity of objects was computed incorrectly.
  • Fixed a bug where some objects resizing would not notify the Diagram.

Changes for 1.8.25

  • Fixed a regression from 1.8.24 where some browsers and mice would use an incorrect wheel delta.
  • Performance improvements when drawing Diagrams with large numbers of GraphObjects out of view.

Changes for 1.8.24

Changes for 1.8.23

  • This bugfix potentially alters a Shape's measurements when a minSize and a strokeWidth are present: GraphObject.minSize now correctly constrains the size of Shapes. Before, the minSize of a shape would incorrectly subtract the strokeWidth.
  • Disconnected Links now respect Part.dragComputation. This can be used to make them snap when dragging, for example with:

    dragComputation: function(part, pt, gridpt) {
    return new go.Point(gridpt.x, gridpt.y);

Changes for 1.8.22

Changes for 1.8.21

  • Fixed an issue setting certain cursors as the Diagram.currentCursor on webkit based browsers.
  • Fixed a bug where updating the Link.fromShortLength or Link.toShortLength weren't properly updating the link's geometry.
  • Self-links that are rendered as bezier loops no longer include resegmenting handles.

Changes for 1.8.20

Changes for 1.8.19

  • Enabled two-finger zooming on MacBook trackpads.
  • Fixed half-disconnected link routing bug involving "...Side" Spots for Nodes that are members of Groups.
  • Improved LayeredDigraphLayout alignment of nodes linked to visible nodes inside groups.

Changes for 1.8.18

Changes for 1.8.17

  • Return values from TextBlock.graduatedFunction will now be converted to strings for safety.
  • Fixed a regression for scroll-wheel zooming that was introduced in 1.8.15.
  • Fixed error about showing a context menu Adornment when that same context menu is being shown in another Diagram.
  • The TextEditingTool now sets its height via the number of textarea.rows, instead of estimating text height and setting CSS height style.
  • Fixes to TextEditingTool, including a positioning fix in IE11.

Changes for 1.8.16

Changes for 1.8.15

  • Link Adornments can now be of any Panel type. They are still forced into the type Panel.Link if the Part.selectionObjectName is unspecified or is an empty string, or if it refers to the Link.path.
  • Using the wheel to scroll while the mouse is over the scroll-bar now correctly scrolls the Diagram.

Changes for 1.8.14

Changes for 1.8.13

  • Fixed DraggingTool.doMouseMove to respect settings of Diagram.currentCursor in GraphObject.mouseDragEnter event handlers.
  • Adding or removing reflexive links at a node when there are multiple such links at that node no longer cause their routes to be invalidated if Link.adjusting is not Link.None.
  • The default text editor's main element no longer erases all CSS Styling on activation. This allows you to set style by writing, for example: TextEditingTool.defaultTextEditor.mainElement.style.backgroundColor = 'red';

Changes for 1.8.12

  • Added search functionality for classes and members in the API documentation.
  • Fix for Geometry.parse when numbers containing alphabet characters (such as 4E-06) are present.
  • Updated Geometry.parse to accept multiple '.'s without spaces to allow for chaining decimals, for example The result would be 1.5 .75 .75, as specified by the SVG grammar.

Changes for 1.8.11

  • Fixed a check for window.navigator.msPointerEnabled that was modified in 1.8.8. This was disabling Pointer Events in IE based browsers.

Changes for 1.8.10

  • Improved wheel events, primarily for Firefox and Firefox for Android. Mac trackpads will now pan and scroll in both directions in Firefox.
  • Fixed a bug with links not rerouting during a drag of a collapsed group. This occurred when a link was connected to a "...Side" Spot of a member node.
  • Fixed a shadow regression introduced in 1.8.9.
  • Some licensing fixes for versions of IE.

Changes for 1.8.9

  • Fixed a bug in Diagram.findObjectsNear in Table Panels using TableRow and TableColumn.
  • Fixed a drawing bug where some GraphObjects with a background set would be shadowed, when they should not be.

Changes for 1.8.8

Changes for 1.8.7

Changes for 1.8.6

Changes for 1.8.5

  • IE: Fixed a regression from 1.8.3 with PointerEvents: Mouse-based events now correctly report their button (left, right middle) and modifier keys (Ctrl, Alt, etc). Additionally, meta keys now work with touches, so users can do actions such as CTRL+touch to select multiple nodes.
  • Fixed a bug with shadows in IE (but not Edge) sometimes causing draw-related errors with the Canvas Context.
  • The user of PointerEvents is additionally limited by window.navigator.msPointerEnabled not being false. This supports the use of IE 11 when embedded within Windows applications.
  • Fixed an animation regression that began with 1.7.0: resizing Diagram DIVs now correctly animates layouts that have Layout.isViewportSized set to true.

Changes for 1.8.4

  • Added Diagram.scrollsPageOnFocus property, to control whether the page scrolls to show the Diagram's HTMLDivElement when the diagram receives focus, if the element is not entirely visible in the window. For compatibility now the default value is true, but the default value will be false in version 2.0.
  • Fixed a regression from 1.7.28/1.7.29 with starting automatic animations.
  • Fixed an animation positioning bug with nested collapsed groups.

Changes for 1.8.3

  • Added the Zoom Pinch sample, demonstrating gesture customization.
  • Internally, browser PointerEvents are now used by default on IE-related browsers, when possible. Other browsers still use Touch and Mouse events.
  • Fixed a measurement bug with GraphObject.maxSize when applied to TextBlocks.
  • Fixed another case of moving Groups not correctly invalidating link routes when the link connects with the group.
  • Fixed having UndoManager.isUndoingRedoing to be consistently true during "StartingUndo", "StartingRedo", "FinishedUndo", and "FinishedRedo" Model ChangedEvents of type Transaction.
  • Fixed hit testing in some edge cases for geometries.

Changes for 1.8.1 and 1.8.2

  • Fixed the measurement of GraphObjects with GraphObject.isPanelMain in Links and Auto panels.
  • Improved documentation and samples for GoCloudStorage.

Changes for 1.8 since 1.7.*

  • Licensing

    Improvements for unlimited-domains OEM customers.

  • Samples and documentation:
    • Added GoCloudStorage classes, in the storage folder, for saving/loading models from various cloud storage provider services plus localStorage.

      An example of using these services is at: Go Cloud Storage Manager.

      The API documentation is at Storage API.

      Load the library from Storage library. You will also need to load the libraries for each of the services themselves (other than localStorage).

      The source code is at GoCloudStorage.ts and in other files in that folder.

    • Typescript definition file (go.d.ts) fixes.
  • Diagram and Model:
  • Parts:
    • Added Part.key and Link.key, as shortcuts for retrieving the Part's key in the Model data, if it exists.
  • Tools:
  • Deprecated features:

    These features will remain in the library until version 2.0, but they will no longer be documented and their use is discouraged.

    • Most Predefined Shape figures

      In order to shrink the size of the GoJS library we will be not be defining most predefined figures in the library. Instead, you can find all of their definitions in the Figures.js file. You can simply load only those figures that you want to use by copying their definitions into your code.

      Until version 2.0 all of the predefined figures remain defined in the GoJS library, so you do not yet have to load any figures from the extensions file. However, a number of very common figures will remain predefined even in version 2.0. The figures that will remain in 2.0 are: "Rectangle", "Square", "RoundedRectangle", "Border", "Ellipse", "Circle", "TriangleRight", "TriangleDown", "TriangleLeft", "TriangleUp", "Triangle", "Diamond", "LineH", "LineV", "BarH", "BarV", "MinusLine", "PlusLine", "XLine".

      Note also that the definitions that are in the Figures.js file are not entirely the same as their current definitions in the library. A number of figures have been improved and some figure parameters have changed meaning.

    • DiagramEvent.cancel

      The only use for this property was with the "SelectionDeleting" DiagramEvent in order to prevent the user from deleting the selection. Where one might have written this Diagram listener:

      "SelectionDeleting": function(e) {
         if (e.diagram.selection.any(function(p) { return p.data.key.indexOf("e") >= 0; })) {
            e.cancel = true;
      one can write the equivalent functionality with this CommandHandler.canDeleteSelection method override:
      "commandHandler.canDeleteSelection": function() {
         return !this.diagram.selection.any(function(p) { return p.data.key.indexOf("e") >= 0; })
               && go.CommandHandler.prototype.canDeleteSelection.call(this);

      Overriding the method supports the updating/enablement of commands that call CommandHandler.deleteSelection. Furthermore not having a "cancel" property on the DiagramEvent avoids any potential problems that might occur if there are multiple listeners for the "SelectionDeleting" event. The "SelectionDeleting" DiagramEvent remains useful, but not for controlling whether or not the deletion should happen.

    • GraphObject.fromEndSegmentDirection and GraphObject.toEndSegmentDirection

      These properties have not been useful. One can override Link.getLinkDirection to achieve the same effects.

    • TextEditingTool.doFocus and TextEditingTool.doBlur

      These undocumented properties were used to modify the default functionality of the TextEditingTool. That is now done by setting TextBlock.defaultTextEditor to an instance of HTMLInfo (new in 1.7).

      For examples, see Custom TextEditingTool sample and Text Editor default implementation extension.

    • TextBlock.textEditor, TextEditingTool.defaultTextEditor, and TextEditingTool.currentTextEditor

      These properties are now primarily used with HTMLInfo values. HTML Elements will still work until version 2.0.

Changes for 1.7.29

  • Fixed a case of missing layout animation.

Changes for 1.7.28

  • Typescript definition fixes.
  • When Part.move is called as Group.move, the method no longer invalidates Link routes inside the group.
  • Fixed regression in 1.7.23 with performing extra layouts involving nested Groups resulting in duplicate Transactions.

Changes for 1.7.27

Changes for 1.7.26

  • Fixed a regression when drawing large images scaled down, introduced in 1.7.21.

Changes for 1.7.25

  • Replaced the Angular 2 project with a newer Angular 4 project, at projects/angular-basic. This projected was created with Angular CLI; we then added a diagram-editor Component consisting of a Diagram and a Palette. That component takes a Model as an Input and produces nodeSelected and modelChanged as Outputs. The main app component shows editable details for the primary selection if it is a Node.
  • Automatically redraw with improved sharpness as the user zooms the page.
  • Fixed a bug where Pictures given a GraphObject.maxSize and no loaded Picture.element or Picture.source would measure incorrectly.

Changes for 1.7.24

  • Fixed a regression introduced in 1.7.18 with pinch-zooming on Microsoft touch devices in IE.
  • Fixed a visibility bug when a non-visible Part switches layers.
  • Events on the Diagram now attempt to find the Event target Diagram differently. This may help in libraries that use a shadow DOM or DOM scoping.

Changes for 1.7.23

  • Fixed a bug with SVG generation. Generated <svg> tags also now specify a viewBox attribute.

Changes for 1.7.22

  • Improved routing of links to non-visible member nodes of collapsed groups, when the spots of the group's default port are different than thespots of the non-visible node that the link is connected with.
  • Diagram mouseOut now appropriately calls Tool.standardMouseOver, and Tool.standardMouseOver uses null as the current object if the mouse is not over the current Diagram.
  • For wrapping, TextBlocks respect the maxSize of their Panel, but also accidentally conformed to their Panel's minSize.
  • Diagram keyDown used to always preventDefault on keyDown events, but this is now overridable via InputEvent.bubbling.

Changes for 1.7.21

  • Drawing fix for HTMLVideoElement sources to Picture.element, which were broken in 1.7.5.
  • Fix for the main element of a Panel (when using GraphObject.isPanelMain) sometimes getting cached incorrectly.

Changes for 1.7.20

  • Fixed Panel.rebuildItemElements not to remove any Links that were connected with item elements that are ports.
  • Fixes for link routing during animation.
  • Fixed slight shifting of Groups that have Group.layout being a CircularLayout after repeated layouts, including after expanding the subgraph.

Changes for 1.7.19

  • Added the Vue.js sample, demonstrating a simple GoJS app in the Vue.js framework.
  • Fixed a bug in DraggingTool.moveParts where it was incorrectly shifting Nodes when Nodes shifted by differing amounts.
  • Extended RotatingTool to work on link labels; the user still cannot rotate whole Links or the Link.path.
  • Restored behavior from 1.6 of Model.fromJson such that linkdata.points property value is of type List. Version 1.7 had allowed that property to remain as an Array of numbers.
  • When a Group.layout> was a CircularLayout, that layout was not respecting the implicit Layout.arrangementOrigin provided by the group by calling and remembering Layout.initialOrigin.
  • Fixed Link arrowhead and Link label positioning when the object to be positioned is scaled.

Changes for 1.7.18

  • Improved multi-finger touch handling while doing single-finger operations, like dragging and panning.
  • Fixed a bug where collapsing a Group in a LayeredDigraphLayout could cause incorrect routes for bezier links to member nodes.
  • Diagram.makeSVG will now wrap the outputted TextBlock <text>s with <g> if the TextBlock has multiple lines of text.

Changes for 1.7.17

  • Fixed a bug in Grid Panel where it might not draw the last horizontal grid line.
  • More extensions translated into TypeScript, at ExtensionsTS.
  • Table Panels now allocate space to elements with a GraphObject.stretch value that also span multiple rows or columns in a more consistent fashion.
  • Shapes inside a Grid Panel now respect GraphObject.opacity values.
  • Label Nodes on labeled Links now are members of the link's containing Group, if any.
  • Fixed a bug where if multiple Diagrams shared a Picture, they might not all be redrawn properly upon the image element loading or erroring.

Changes for 1.7.16

  • Translated and modularized the extensions into TypeScript *.ts files, in the extensionsTS directory. The compiled files are present in that directory as *.js files, which can be required or imported even if you are not using TypeScript. (Caution: all of the script in the HTML samples in the extensions directory have been split out into ...Script.ts files, so try not to be confused by the corresponding *.js files, which will have Script in their names.)
  • Fixed missing calls to Node.linkConnected and Node.linkDisconnected event handlers when connecting or disconnecting reflexive links.
  • Fixed error in Model.applyIncrementalJson adding group nodes.

Changes for 1.7.15

Changes for 1.7.14

  • Avoided undesired side effects of undo and redo after relinking duplicate links.
  • Further improved the dragging between Diagrams that was modified in 1.7.13.

Changes for 1.7.13

  • Fixed a bug with pinch-zooming in some browsers.
  • Fixed a regression with Diagram.makeSVG not including CORS-disabled images.
  • Fixed a bug with the TextEditingTool when using custom HTML text editors. The code attempted to call editor.focus() and editor.setSelectionRange() before the editor was added to the DOM. This problem does not affect HTMLInfo, only HTML Element text editors.
  • Improved dragging of nodes from a Diagram or Palette onto an empty Diagram without a new model.

Changes for 1.7.12

Changes for 1.7.11

Changes for 1.7.10

Changes for 1.7.9

Changes for 1.7.8

Changes for 1.7.7

  • Added the Tri-state CheckBox Tree sample, demonstrating checkboxes for each item in a "tree view".
  • Improved the performance of link routing when groups have a lot of member nodes and links.
  • Fixed shadow scaling when making images.

Changes for 1.7.6

  • Added the RoundedRectangles.js definitions of figures that have rounded corners only at the top or only at the bottom.
  • Added the Rounded Groups sample demonstrating both Nodes and Groups that have rounded headers and rounded footers.
  • Added the Two Halves sample demonstrating a Node template that has both a top half and a bottom half and that has rounded corners overall.
  • Fixed cases where InputEvent.left remained true for mouse move events even after the left mouse button was released.

Changes for 1.7.5

Changes for 1.7.4

  • Added the Sector Reshaping sample, demonstrating a custom Tool that supports interactively changing the angle and breadth (sweep) and depth (radius) of a pie-shaped sector of a circle. The SectorReshapingTool is defined in the SectorReshapingTool.js file in the Extensions directory.
  • Fixed broken Diagram.makeImageData for "blob" return type.

Changes for 1.7.3

  • Added the angular2-minimal project, in the projects subdirectory. This is a copy of the Angular 2 Quick Start example, https://angular.io/docs/ts/latest/quickstart.html, augmented to show the GoJS "minimal" sample.
  • Fixed another declaration in go.d.ts.

Changes for 1.7.2

  • Fixed missing declaration in go.d.ts.

Changes for 1.7.1

  • Fixed some corrupted image files in the samples.
  • Renewed a Leaflet access token for the Leaflet sample.

GoJS version 1.7 brings several new features and samples. Here are some highlights:

Changes for 1.7 since 1.6.*

Changes for 1.6.24

  • Fixed an infinite recursion when a Link with a label Node connects with that same node.
  • Fixed a case of AnimationManager retaining references to Parts that were not cleared by Diagram.clear.

Changes for 1.6.23

  • Fixed a bug with Picture.sourceCrossOrigin setting the CORS flag too late. Some browsers require it be set before an image source is set.
  • Fixed a bug in recent Chrome browsers and Edge where shift-scroll-wheel did not scroll horizontally.

Changes for 1.6.22

  • Fixed lack of jump-over or jump-gap when link routes have only two points.

Changes for 1.6.21

  • Overviews are notified at the end of animations, in case they need to update their bounding box.
  • Fixed a scrollbar issue when using initalAutoScale and resetting the diagram or loading a new model.
  • Fixed link label positioning in certain cases where GraphObject.alignmentFocus and GraphObject.segmentOrientation are both set.

Changes for 1.6.20

  • Fixed a measuring issue with GraphObject.desiredSize when the old size matches the new size.
  • Fixed an animation issue with Group subgraph collapsing, when the member Nodes have a locationSpot set.

Changes for 1.6.19

  • Shapes with a custom Geometry no longer lose their custom geometry when GraphObject.desiredSize is set to NaN. Shapes also rebuild custom geometries more accurately when reshaped or scaled.
  • A Group whose Group.layoutis a LayeredDigraphLayout is less likely to move after repeated cycles of collapsing and expanding.
  • Fixed an animation issue when there are multiple animations bundled together, and the last one does not add any animatable parts.

Changes for 1.6.18

Changes for 1.6.17

Changes for 1.6.16

  • Scrollbar fixes for RTL langauges.
  • TextBlock.textAlign values "start" and "end" now correctly interpret the alignment value when Diagrams divs have direction: RTL set in their CSS.
  • Fix for Table Panel when panel elements had Horizontal or Vertical stretch, but not enough room. The stretch had affected sizing in the wrong direction.
  • Fixed line dash drawing (Use of Shape.strokeDashArray and Shape.strokeDashOffset), a regression from 1.6.13.
  • Fixed routing of links connecting with non-visible ports, a regression from 1.6.12.

Changes for 1.6.15

  • Fixed some image loading scenarios when a Picture had no desiredSize set in a template, but a data-bound desiredSize.
  • Stopped Shape.geometry from being scaled to zero during panel measurement.
  • Fixed a null reference error when pasting a collection of Nodes and orthogonal JumpOver/JumpGap Links where some of the Links were needed to be deleted because they did not have connections on both ends.
  • Fixed an issue where location bindings could potentially have side effects leading to improperly-measured Parts.
  • Disallowed animations from starting when there is nothing to animate.

Changes for 1.6.14

  • Improved the time when a Diagram receives focus, fixing the change made in 1.6.13, so that the ToolManager gives the focus to the diagram just before starting an eligible Tool, rather than just after it. This allows tools and event handlers to give focus to other HTML elements, while still not having the diagram get focus on the mouse down event of a click.
  • Browser mousemove events over the Diagram now bubble appropriately.
  • If a Tooltip or Context Menu Adornment has a Placeholder, the placeholder's scale now changes with the Diagram.scale.

Changes for 1.6.13

  • Renamed the TypeScript definition file from release/goJS.d.ts to release/go.d.ts.
  • Auto panels with a GraphObject.desiredSize set now account for Shape.strokeWidth if their main object is a Shape.
  • Fixed mouseUp erroneously blocking bubbling.
  • Fixed some touchMove events erroneously bubbling, causing the page to pan while. This behavior began in 1.6.5.
  • Improved how often Adornments get updated. They are now removed if the Adornment.adornedObject is removed from the Part. They are now updated during the operation of DraggingTool and other Tools.
  • Changed when Diagrams receive browser focus. Diagram DOM elements are now focused on mouseUp/touchEnd, or when a tool starts. Previously it was on mouseDown/touchStart. This is to ensure clicks and touches occur at the appropriate location before the browser scrolls to focus Diagram elements when the Diagram receives focus.
  • Fixed spurious caution about inability to route the LinkingBaseTool.temporaryLink the first time the user tries to draw a new link.

Changes for 1.6.12

  • Fixed Binding.ofObject to evaluate more frequently when the source property is the empty string. Remember that Bindings with a source property that is an empty string should only used when necessary, because they get evaluated whenever any settable property on the source object is modified, which may include many times when the conversion function returns the same value.
  • Fixed some links incorrectly invalidating at the end of an animation.
  • Corrected some cosmetic animations that were leaving state collapsed when repeated animations were successively called.
  • Reduced NaN errors when trying to route a Link connecting with a port element that is not GraphObject.visible.
  • Overviews will now respect custom pixel ratios.
  • Fixed Picture alignment when Picture.imageStretch is set.

Changes for 1.6.11

  • Improved loading for Pattern Brushes.
  • Diagram.makeSvg now handles Pattern Brushes.
  • Fixed a bug introduced in 1.6.5 where some Key presses unintentionally bubbled.
  • Fixed an issue with setting location not always updating the diagram.
  • Improved event handling on devices that use Pointer events (e.g., Microsoft Surface)
  • Added the OrthogonalLinkReshapingTool extension. See OrthogonalLinkReshapingTool.js for the extension's code. This extension can be used to allow for dragging of an entire orthogonal link segment, allowing for quick reshaping without needing to drag points.
  • Improved orientation of Link Adornments along segments where both endpoints have the same location.

Changes for 1.6.10

Changes for 1.6.9

  • Fixes and improvements to samples.

Changes for 1.6.8

Changes for 1.6.7

  • Extended the ContextMenuTool to work on a right-mouse-down event if the tool is in the ToolManager.mouseDownTools list.
  • Changed how the main Shapes of Links are measured to be more accurate. This may cause Links to have different position and location values than before.
  • Fixed a collapse animation bug when rolling back transactions.

Changes for 1.6.6

Changes for 1.6.5

Changes for 1.6.4

Changes for 1.6.3

  • Fixed an exception in CommandHandler.showContextMenu when passed an argument.
  • Fixed adornment invalidation when a Part switches from a visible layer to an invisible one.
  • Smoothed Diagram.scale animations.
  • On Mac Trackpads, users can now scroll horizontally as well as vertically.
  • Improved some samples.

Changes for 1.6.2

  • Added the Data Inspector sample, a simple drop-in for inspecting and editing Part data.
  • Fixed some cases of testing for points being within quadratic bezier curve geometries.
  • The ContextMenuTool now supports tooltips for all objects in a context menu Adornment.

Changes for 1.6.1

  • Fixed an exception in go-debug.js involving a name conflict caused by minification.

Changes for 1.6 since 1.5.*

GoJS version 1.6 brings several new features and samples. Here are some highlights:

The complete list of changes:

Changes for 1.5.23

Changes for 1.5.22

  • Fixed a zoom bug introduced in 1.5.21.

Changes for 1.5.21

Changes for 1.5.20

Changes for 1.5.19

  • Fixed error when operating in PhantomJS environment.
  • Fixed handling of control characters in text strings by Model.toJson.

Changes for 1.5.18

Changes for 1.5.16 and 1.5.17

  • In CommonJS environments, set module.exports as well as window.module.exports, in case they are different objects.

Changes for 1.5.15

  • Fixed zero-sized Arc PathSegments.
  • Ensured Groups with Placeholders always recalculate their bounds when collapsed or expanded.

Changes for 1.5.14

Changes for 1.5.13

Changes for 1.5.12

Changes for 1.5.11

  • Fixes for location data binding when animation is enabled.
  • Provisional fix for OSX scrollbars when invisible by default. Functionality may change in future releases.
  • Fixed ResizingTool when resizing a Group with reflexive links.
  • The TextEditingTool more accurately predicts the editable area for text.

Changes for 1.5.10

  • Fixed the way PathSegment.Arcs are calculated and approximated. This will change computed bounds and hit-testing, which now correctly reflect drawn arcs, but the bounds changes may cause incompatibilities in apps that depend on the old approximations.

Changes for 1.5.9

Changes for 1.5.8

Changes for 1.5.7

Changes for 1.5.6

Changes for 1.5.5

  • Added the CheckBoxes sample, demonstrating how to define a "check box" and how to customize them.
  • Added the static method GraphObject.takeBuilderArgument, for use by GraphObject.defineBuilder functions for more easily retrieving builder arguments from the arguments passed to GraphObject.make.
  • Added the definitions of the predefined arrowheads to the Arrowheads.js file in the Extensions directory. The predefined arrowheads are still predefined, so you will not need to load this file in order to have those definitions. This file provides information about how each arrowhead is defined, so that you can customize them or copy-and-adapt them.
  • Fixed TextBlock.isStrikethrough to work with all values of TextBlock.textAlign.
  • Adding a Part is now undoable if its layer has changed without notifying the undo manager, such as with a "layerName":"isSelected" binding.
  • Fixed Geometry.scale and Geometry.rotate of PathSegments that are arcs.

Changes for 1.5.4

Changes for 1.5.3

Changes for 1.5.2

  • Updated the TypeScript definition file, go.d.ts, to TypeScript version 1.4.
  • Fixed Brush constructor in Debug mode improperly raising error about string argument not being a valid color string.
  • Fixed a cross-origin error when using Diagram.makeImageData with SVG images in Internet Explorer.

Changes for 1.5.1

  • Added the Kanban Board sample, derived from the Swim Lanes (vertical) sample.
  • Fixed scrollbar clicking on touch-enabled devices in Chrome on Windows.
  • More graceful handling of Picture image errors.
  • Fixed bugs with undo of changed state inside Parts whose Part.category was later changed.
  • Stopped touch events from always calling preventDefault (touch events were impossible to bubble).

Changes for 1.5 since 1.4.*

Changes for 1.4.28

  • Fixed calculation of "Side" port positions when there are multiple ports on a node.
  • More permissive Picture drawing: Will still draw if an image has an error but is complete at a later time (such as from a timeout).

Changes for 1.4.27

  • Fixed TextBlock ellipses when using the undocumented property TextBlock.maxLines

Changes for 1.4.26

Changes for 1.4.25

  • Dragging into a new Diagram now initializes it.
  • Moving collapsed members of Groups now modifies position or location, depending on which is real.
  • Fixed ResizingTool, which could make assumptions expecting a non-null Shape.geometry.

Changes for 1.4.24

  • Fixed routes of dragged Links after temporarily copying when the UndoManager.isEnabled.
  • Fixed DraggingTool to disallow drag-and-drop from another Diagram whose Model.dataFormat is different than its own.
  • Reverting a change from 1.4.14 and 1.4.20, setting Picture.source no longer sets the crossOrigin flag on generated images. This functionality can be customized with the undocumented property Picture.sourceCrossOrigin, a settable function that returns a new value for the image.crossOrigin. This property will be documented in 1.5.

Changes for 1.4.23

Changes for 1.4.22

Changes for 1.4.21

  • Fixed measuring Table Panels that contained only TableRow and TableColumns.
  • Free up DOM elements by setting Diagram.div to null.

Changes for 1.4.20

  • Dynamically adding a RowColumnDefinition now updates its containing Panel.
  • RowColumnDefinition width and height now correctly undo/redo.
  • Fixed some Link routes when ungrouping collapsed Groups.
  • Panel.Viewbox will no longer attempt to set a GraphObject's scale to zero.
  • Setting Picture.source now conditionally sets the crossOrigin flag on the generated image. It is set to "anonymous" unless it is served from a data URI or the local filesystem (it will keep the default null value).
  • Fixed TextBlock.maxLines not always working in some wrapping scenarios.
  • Fixed routing of some Links when copied by DraggingTool.
  • Fixed Link visibility issues when undoing tree collapsing and expanding.
  • Fixed expand/collapse issues when two data-bound diagrams share a model.
  • Group adornments are now correctly updated when collapsing trees.
  • Fixed CommandHandler.ungroupSelection to expand the Group before removing its members and discarding the group, and to select any links in addition to the nodes.

Changes for 1.4.19

  • Improved panning performance on high-density displays.
  • Fixed a bug introduced in 1.4.17 groups were unable to resize after parts were dragged out.
  • Fixes to auto scrolling.

Changes for 1.4.18

  • Fixed some jumpover Links not recalculating their routes at the right time.
  • Diagram.makeImage "parts" option no longer conflicts with "position" option.

Changes for 1.4.17

  • Fixed initialization bug with Diagram.findObject... methods not working right after the inital layout completion.
  • DraggingTool now ignores invisible parts when computing bounds of dragged Parts.
  • Shape.strokeDashArray no longer accepts zeroes as dash values.
  • Fixed expanding moved Groups not to route Links at original locations.
  • Fixed DraggingTool not allowing Nodes to drag out of groups when grid snapping is enabled.

Changes for 1.4.16

  • Calculations for Diagram.zoomPoint values fixed when scroll and keyboard-command zooming.
  • Fixed Picture copying, and Picture now reports draw errors in go-debug.
  • Updated BPMN extension templates.

Changes for 1.4.15

Changes for 1.4.14

  • Text will always draw fully (instead of just a line at very small scales) when calling Diagram.makeImage.
  • Setting Picture.source will now set the crossOrigin property of the created image to "anonymous" by default.

Changes for 1.4.13

  • Fixed hiding Adornments of Links hidden by a connected Node becoming not visible.

Changes for 1.4.12

  • Fixed AvoidsNodes routing of member Links during Group initialization.
  • Fixed Link route invalidation of duplicate links when loading model with Link.points data bound.
  • Fixed Link routing when the port is a TableRow or TableColumn, or element inside one.
  • Fixed incorrect error message when setting Diagram.minScale or Diagram.maxScale to their current values.

Changes for 1.4.11

  • Tweaked how shadows work for Parts that use Spot panels.
  • Fixed line height calculations broken in 1.4.10. This was causing the TextEditingTool's textArea to grow too large.
  • Fixed drawing issues arising from non-visible objects with a GraphObject.opacity set.

Changes for 1.4.10

  • Fixed link calculation when connecting to TableRows and TableColumns, and their immediate elements.
  • Fixed dragging coordinates for Diagrams with pixel ratios other than 1.0.
  • Fixed value for Diagram.isModified after undoing an insertion or removal after setting isModified to false.
  • Fixed some objects not drawing during animation when initially out of view.
  • Fixed TreeLayout.layoutComments to handle comment Nodes that are Groups.

Changes for 1.4.9

Changes for 1.4.8

  • Improved completely disconnected Link geometry not to assume that it must be Bezier curved.
  • Fixed a regression from 1.4.7 with link visibility when connected to Nodes in collapsed Groups.
  • Fixed some starting transactions animating improperly.
  • Fixed DraggingTool to use the Option key (Alt) modifier on a Mac to indicate a copying operation, rather than the Control key.

Changes for 1.4.7

  • Added the Port Shifting sample, with the tool defined in PortShiftingTool.js, demonstrating how a custom Tool can allow the user to move a port within a node.
  • Added a "semantic zoom" slider to the Regrouping sample, for controlling how many nested levels of Groups are expanded.
  • Fixed some animation bugs on iOS/OSX Safari.
  • Potentially Incompatible: Collapsed Groups no longer update their member's positions. They are only updated when they are visible again (when the group is expanded).

Changes for 1.4.6

Changes for 1.4.5

  • Added the Fishbone Layout sample, with the layout defined in FishboneLayout.js, demonstrating how a custom Layout and a custom routed Link can produce a fishbone or Ishikawa or cause-and-effect diagram.
  • GoJS now accounts for window.devicePixelRatio.

Changes for 1.4.4

  • New option for Diagram.makeSvg: elementFinished, a function allowing you to modify the SVG as it is being built.
  • TextBlock ellipsis now works correctly with wrapped text.
  • All GraphObjects now allow opacity: Panel.opacity has been moved to GraphObject.opacity.
  • SVG generated with Diagram.makeSvg now contains the xmlns and xmlns:xlink attributes.

Changes for 1.4.3

  • Animations no longer continuously update the Diagram.documentBounds.
  • Fixed window resizing accidentally invalidating (viewport-sized) layouts on fixed-size diagrams.
  • Diagram.makeSvg now includes a clipping region to fix IE's SVG behavior, which does not clip to its SVG viewport by default.
  • New option for Diagram.makeImage and Diagram.makeSvg: document, which accepts an optional HTML Document in lieu of window.document. This can be useful when opening generated SVG or Images in a new window.

Changes for 1.4.2

  • Reworked transactions for the TextEditingTool. Transactions no longer start when the tool activates, instead they begin and end when the tool commits accepted text.
  • Fixed Firefox's zoom shortcuts, CTRL-plus and CTRL-minus were not properly captured.

Changes for 1.4.1

  • Fixed visibility of Links when changing Layer.visible of connected Nodes.
  • Fixed DraggingTool to allow moving of copied parts even though Diagram.allowMove is false.
  • Improved dragging from Palette to show temporary copy of dragged parts within the Palette.
  • Miscellaneous performance improvements.

Changes for 1.4 since 1.3.*

Changes for 1.3.11

  • Improved re-routing of Links to deeply nested subgraph Nodes upon expanding a subgraph.
  • Fixed potential error in GridLayout when switching template for an existing Group.
  • Brush copies now correctly copy start and end Spot values

Changes for 1.3.10

  • Fixed some bounds calculations of elements inside of TableRow and TableColumn Panels.
  • Fixed the "Modified" DiagramEvent when the UndoManager is not enabled.
  • Improved AvoidsNodes routing of Links when there are Nodes that are not visible.
  • Fixed Diagram background grid issues when an Overview was only partially initialized.

Changes for 1.3.9

  • The TextEditingTool now checks Diagram.allowTextEdit (previously, only CommandHandler.canEditTextBlock did).
  • Changing a drag from a move to a copy (with the control key) now correctly saves any link routes so that an undo/redo does not restore the routes to where the node had been moved to before being copied.
  • Panels with no elements now properly respect all combinations of desiredSize, minSize, maxSize, and padding.
  • Allowed SVG to work with Picture elements on browsers that support drawing SVG to canvas. See the Pictures intro page for details.
  • Fixed internal line-intersection for TableRow and TableColumn Panels.

Changes for 1.3.8

  • Fixed the measurement of some GraphObjects when modifying angle with both a desiredSize and minSize set.
  • Fixed Diagram.addLayerAfter and Diagram.addLayerBefore for re-ordering layers, and improved their error checking.

Changes for 1.3.7

  • Fixed Set.toList.
  • Fixed the Diagram.model property setter to call Diagram.clearSelection before actually replacing the model.
  • Fixed Picture measuring scenarios where it would incorrectly prefer a stretch value over the desiredSize when both were given.
  • The Link.points setter now also accepts an Array of numbers representing point values ([x1, y1, x2, y2, x3, y3], etc.)

Changes for 1.3.6

Changes for 1.3.5

Changes for 1.3.4

  • Added the Robot sample in the extensions directory, demonstrating the simulation of input events.
  • Added the "Ring" figure for Shapes.
  • Added property setters for InputEvent properties: control, shift, alt, meta, left, middle, right, for convenience when initializing to avoid requiring knowledge of the particular flag values.
  • Added Part.LayoutNodeReplaced as a new reason for invalidating Layouts, to fix a bug where a Layout would not be performed when replacing a Node or simple Part by changing its Part.category, because the new Node had a fixed size.
  • Scrolling on uninitialized Diagrams will no longer capture the event and prevent bubbling.
  • Fixed shadows in some Panel scenarios involving Auto panels.
  • Fixed the display of never-arranged Nodes when added to an invisible Layer that is later made visible.
  • Fixed data binding on the first elements of "Spot", "Auto", and "Link" Panels that hold Panel.itemArrays.
  • Margin.parse now parses strings with only zero, one, or two numbers in them, as if calling the Margin constructor.
  • Fixed the Diagram.grid setter, which was not always updating the grid immediately.
  • Potentially Incompatible: Fixed Table Panel's allocation of cell size in some complex settings, such as with multiple rows or columns stretching. Some complex Table Panels may size differently now.

Changes for 1.3.3

  • Added CommandHandler.defaultScale property, initially 1.0.
  • When AMD Module define capability is present, go is still exposed to the global object, which avoids problems with undefined go when explicitly loading "go.js" instead of using your framework's require mechanisms.
  • Reduced possible errors with zero-sized images used as Picture sources.
  • Fixed default value of scale for Diagram.makeImage (Default should be null, was erroneously NaN).
  • Zero is now an allowed value in the array of Shape.strokeDashArray

Changes for 1.3.2

  • Fixed exception when Diagram.makeImage generates very large images.
  • Fixed Layouts maintaining custom link routing in nested groups.
  • Fixed tree collapsing causing some links to not update when the tree is expanded after moving the node.
  • Fixed the drawing of strokes when Shape.strokeWidth is zero.

Changes for 1.3.1

Changes for 1.3 since 1.2.*

Changes for 1.2.8

  • Fixed some relinking bugs with undo/redo.
  • Some table panel measurement fixes.

Changes for 1.2.7

Changes for 1.2.6

  • Fixed the setter for Shape.strokeDashArray, which incorrectly discarded null as a value.
  • Fixed a divide-by-zero scenario in link routing.
  • Stopped Table Panel rows and columns with only stretch elements from taking up inappropriate space.
  • Other minor Table Panel fixes.

Changes for 1.2.5

  • Fixed context menu clicks on touch-capable devices when a mouse-right click was performed on an object with no available context menu.
  • Fixed some areaBackgrounds when they used shared brushes with objects of identical size, when those objects are rotated at different angles.
  • Fixed object picking after calling Diagram.makeImage with a non-default viewport.

Changes for 1.2.4

Changes for 1.2.3

  • Fixed shadow drawing on Parts that had a non-real position.
  • Fixed Diagram.isEnabled failing to disable scrollbars.
  • Fixed some issues with dynamic Picture loading, and decreased time between tests for loaded images.
  • Fixed some errors with odd Diagram sizes, including disallowing negative-sized Diagrams in Internet Explorer.
  • Fixed Panel.findRowForLocalY and Panel.findColumnForLocalX when the input was a negative number.
  • Auto Panels now correctly measure main Shape elements that have a Shape.geometryStretch of Uniform, such as the figures 'Circle' and 'Square'.
  • Auto Panels now correctly re-measure TextBlock elements when the Panel's size changes dynamically (ie, desiredSize).

Changes for 1.2.2

Changes for 1.2.1

  • 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.*

Changes for 1.1.12

  • Dragging a selection over a foreign Diagram no longer selects the objects until they are successfully dropped.
  • Allowed Diagram and model listeners to modify the listener collection during execution.
  • Fixes for Diagram.makeImage. Regardless of the Diagram.documentBounds value, inputting a size and position that are analogous to a Node's actualBounds will always print that node.

Changes for 1.1.11

Changes for 1.1.10

Changes for 1.1.9

  • Fixed route invalidation of not visible Links.
  • Created a workaround for an IE10 bug that disallowed double clicking.
  • Fixed the initialization of Node.isTreeLeaf when changing the category of a Node.
  • Fixed Diagram.grid's updating when toggling GraphObject.visible.

Changes for 1.1.8

  • Fixed Diagram.findObjectsAt and Diagram.findObjectsIn not to throw away the argument results collection.
  • Fixed the ResizingTool Adornment location on Shapes with large strokeWidths.
  • Fixed some nested objects (Panels, Picture, and Shapes) with a scale and a stretch value measuring incorrectly.
  • Changed Links to be not seen when a connected Node is not seen, if the Link is a member of a Group, rather than appear to connect with the Group that contains it.

Changes for 1.1.7

  • Fixed addition and removal of Parts from the temporary layers causing the diagram's bounds to update.
  • Initial Diagram setup such as Diagram.initialContentAlignment now occurs at the end of the first transaction, not at the transaction's start.
  • Fixed GraphObject.alignment so that it correctly re-measures the GraphObject in all cases.
  • Fixed updating of tooltips when the viewport changes without any mouse move.
  • Fixed TableRow and TableColum visibility within Table Panels.
  • TwoWay Bindings now update data properties by calling Model.setDataProperty, thereby updating other bindings on the same property.

Changes for 1.1.6

Changes for 1.1.5

  • Fixed Arcs with negative radii made using Geometry.parse.
  • Corrected NaN locations when copying Parts under certain conditions.
  • Fixed Diagram.makeImage padding and background grid rendering, and padding can no longer be negative.

Changes for 1.1.4

Changes for 1.1.3

Changes for 1.1.2

Changes for 1.1.1

  • Many enhancements to the Pipes sample.
  • Improved "AvoidsNodes" link routing within groups.
  • Double-click implemented on touch devices.
  • Fixed copying collections declared to hold Objects.
  • Fixed un-handled mouseup events not bubbling.
  • Fixed updating Nodes that are modified in the middle of a Diagram update.
  • Fixed positioning of asymmetric background Grid Panel patterns.

Changes for 1.1 since 1.0.*

Changes for 1.0.8

Changes for 1.0.7

  • Fixed asynchronous Picture loading failing to update the Diagram.documentBounds.
  • Fixed DraggingTool to move Parts to the mouse-up location, not the last mouse-move location.
  • Use Array.isArray(x) instead of x instanceof Array to check for Arrays created in different frames.
  • Fixed replacing the model not respecting Diagram.contentAlignment.

Changes for 1.0.6

  • Added "Links to Links" sample.
  • Added "Shop Floor Monitor" sample.
  • Changed a Link to have a jump-over or a jump-gap with another link if they do not share the same start points or the same end points, even if they connect with the same node.
  • Improved Diagram.add to check that the argument Part is not already a part of a different Diagram.
  • Fixed copy and paste not to copy partly or fully disconnected Links.
  • Fixed the updating of jump-overs or jump-gaps in other links after adding or removing links.
  • Fixed undo/redo changes of Z-ordering of Panel elements.
  • Fixed Group Z-ordering when adding groups or switching layers.
  • Fixed link validation check of GraphObject.fromMaxLinks or GraphObject.toMaxLinks when links were already connected in both directions.
  • Fixed an issue with Table Panels not accounting for GraphObject.padding properly.

Changes for 1.0.5

Changes for 1.0.4

  • Improved API documentation for some classes.
  • Improved error message when running in browsers without support for Canvas.
  • Fixed hit testing of individual Panel.Grid Panels
  • Fixed the default touch context menu to no longer scroll to the top of the page when a button was pressed.
  • Changed the way GoJS handles event coordinates, increasing accuracy on complex HTML pages.

Changes for 1.0.3

Changes for 1.0.2

Changes for 1.0.1