UNPKG

gojs

Version:

Interactive diagrams, charts, and graphs, such as trees, flowcharts, orgcharts, UML, BPMN, or business diagrams

955 lines (909 loc) 184 kB
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="GoJS changelog." /> <meta http-equiv="cache-control" content="no-cache"> <title>GoJS Change Log</title> <!-- Copyright 1998-2017 by Northwoods Software Corporation. --> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-1506307-5', 'auto'); ga('send', 'pageview'); </script> <link rel="stylesheet" href="../assets/css/bootstrap.min.css"> <!-- custom CSS after bootstrap --> <link href="../assets/css/main.css" rel="stylesheet" type="text/css"/> <script src="../release/go.js"></script> <script src="../assets/js/goDoc.js"></script> </head> <body onload="goDoc()"> <!-- fixed navbar --> <nav id="fixed-nav" class="navbar navbar-inverse navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-header"> <div class="navheader-container"> <div class="navheader-collapse" data-toggle="collapse" data-target="#navbar"> <a id="toplogo" class="navbar-brand" href="../index.html">GoJS</a> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> </div> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav navbar-right"> <li><a href="../index.html">Home</a></li> <li><a href="../learn/index.html">Learn</a></li> <li><a href="../samples/index.html">Samples</a></li> <li><a href="../intro/index.html">Intro</a></li> <li><a href="../api/index.html">API</a></li> <li><a href="https://www.nwoods.com/components/evalform.htm">Register</a></li> <li><a href="../doc/download.html">Download</a></li> <li><a href="https://forum.nwoods.com/c/gojs">Forum</a></li> <li><a href="https://www.nwoods.com/contact.html" onclick="ga('send','event','Outbound Link','click','contact');">Contact</a></li> <li class="buy"><a href="https://www.nwoods.com/sales/index.html" onclick="ga('send','event','Outbound Link','click','buy');">Buy</a></li> <li class="activate"><a href="https://www.nwoods.com/app/activate.aspx?sku=gojs">Activate</a></li> </ul> </div><!--/.nav-collapse --> </div> </nav> <div class="container-fluid mt70 plr15"> <h2>GoJS Change Log</h2> <p id="ver"></p> <script> if (go && go.version) { var p = document.getElementById('ver'); if (p !== null) p.textContent = ("Version: " + go.version); } </script> <h4>Changes for 1.7.11</h4> <ul> <li> Fixed a bug in the <a>TextEditingTool</a> when editing TextBlocks with a non-default <a>TextBlock.textAlign</a> value. </li> <li> Fixed some Diagram construction orders not respecting screen pixel ratios. </li> <li> Fixed a <a>DraggingTool</a> bug when dragging disconnected links between Diagrams, when the destination Diagram had <a>Diagram.allowCopy</a> set to false. </li> <li> Fixed faulty locations when <a>Part.locationSpot</a> or <a>Part.locationObjectName</a> were modified when a Part was transformed (angle or scale). </li> </ul> <h4>Changes for 1.7.10</h4> <ul> <li> Fixed routing of <a>Link</a>s to rotated nodes with "...Side" Spots. </li> <li> Fixed routing of <a>Link.AvoidsNodes</a> Links that also had <a>Link.adjusting</a> set to <a>Link.End</a>. </li> </ul> <h4>Changes for 1.7.9</h4> <ul> <li> Added the <a href="../extensions/ParallelRoute.html" target="_blank">Parallel Route</a> sample, demonstrating a custom <a>Link.computePoints</a> method in order to have multiple links between the same two ports have parallel segments. This makes use of the <a href="../extensions/ParallelRouteLink.js" target="_blank">ParallelRouteLink.js</a> extension. </li> <li> Fixed some instances of ticks not rendering on Graduated Panels with small <a>Panel.graduatedTickUnit</a> values. </li> </ul> <h4>Changes for 1.7.8</h4> <ul> <li> Added the <a href="../extensions/LinkLabelOnPathDragging.html" target="_blank">Link Label On Path Dragging</a> sample, demonstrating how to restrict the dragging of link labels to remain on the path of the link. This makes use of the <a href="../extensions/LinkLabelOnPathDraggingTool.js" target="_blank">LinkLabelOnPathDraggingTool.js</a> extension. </li> <li> TableRows and TableColumns now update their ports correctly when scrolling by setting <a>Panel.topIndex</a> or <a>Panel.leftIndex</a>. </li> <li> <a>Link</a>s that have TwoWay Bindings of <a>Link.points</a> now copy faithfully between different Diagrams. </li> <li> When the <a>DraggingTool.dragsLink</a> is true, a drag of a Link that reconnects one or both ends of the Link will now raise one or two "LinkRelinked" <a>DiagramEvent</a>s. Just as with a "LinkRelinked" event raised by the <a>RelinkingTool</a>, the <a>DiagramEvent.parameter</a> will be the old port with which the Link had been connected. </li> </ul> <h4>Changes for 1.7.7</h4> <ul> <li> Added the <a href="../samples/triStateCheckBoxTree.html" target="_blank">Tri-state CheckBox Tree</a> sample, demonstrating checkboxes for each item in a "tree view". </li> <li> Improved the performance of link routing when groups have a lot of member nodes and links. </li> <li> Fixed shadow scaling when making images. </li> </ul> <h4>Changes for 1.7.6</h4> <ul> <li> Added the <a href="../extensions/RoundedRectangles.js" target="_blank">RoundedRectangles.js</a> definitions of figures that have rounded corners only at the top or only at the bottom. </li> <li> Added the <a href="../samples/roundedGroups.html" target="_blank">Rounded Groups</a> sample demonstrating both Nodes and Groups that have rounded headers and rounded footers. </li> <li> Added the <a href="../samples/twoHalves.html" target="_blank">Two Halves</a> sample demonstrating a Node template that has both a top half and a bottom half and that has rounded corners overall. </li> <li> Fixed cases where <a>InputEvent.left</a> remained true for mouse move events even after the left mouse button was released. </li> </ul> <h4>Changes for 1.7.5</h4> <ul> <li> Added the <a href="../samples/minimalSVG.html" target="_blank">Minimal SVG Download</a> sample, demonstrating <a>Diagram.makeSvg</a> and "downloading" the resulting SVG file. </li> </ul> <h4>Changes for 1.7.4</h4> <ul> <li> Added the <a href="../extensions/SectorReshaping.html" target="_blank">Sector Reshaping</a> sample, demonstrating a custom <a>Tool</a> 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 <a href="../extensions/SectorReshapingTool.js">SectorReshapingTool.js</a> file in the Extensions directory. </li> <li> Fixed broken <a>Diagram.makeImageData</a> for "blob" return type. </li> </ul> <h4>Changes for 1.7.3</h4> <ul> <li> Added the <code>angular2-minimal</code> 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. </li> <li> Fixed another declaration in <code>go.d.ts</code>. </li> </ul> <h4>Changes for 1.7.2</h4> <ul> <li> Fixed missing declaration in <code>go.d.ts</code>. </li> </ul> <h4>Changes for 1.7.1</h4> <ul> <li> Fixed some corrupted image files in the samples. </li> <li> Renewed a Leaflet access token for the Leaflet sample. </li> </ul> <div style="border: 2px solid #1F4963; padding: 6px; margin-top: 30px; margin-bottom: 30px;"> <p><strong>GoJS version 1.7</strong> brings several new features and samples. Here are some highlights:</p> <ul> <li> From GoJS 1.7 onward there is a new method of licensing that does not require a separate <code>go.js</code> file download, instead it uses a license key. Read more on the <a href="../intro/deployment.html">Deployment Intro page</a>. </li> <li> Added a new sample: <a href="../extensions/FloorPlanner.html" target="_blank">Floor Planner</a> in the extensions folder. </li> <li> More intelligent link routing: GoJS now attempts to preserve Link routes when elements of a Node resize or move, but do not affect the link ports. </li> <li> Improved support for customizing tooltips, context menus and the <a>TextEditingTool</a> using a new class: <a>HTMLInfo</a>, which contains methods to show and hide custom HTML. HTMLInfo can be assigned as a value of <a>GraphObject.contextMenu</a>, <a>Diagram.contextMenu</a>, <a>GraphObject.toolTip</a>, <a>Diagram.toolTip</a>, or <a>TextBlock.defaultTextEditor</a>. Read more on the <a href="../intro/HTMLInteraction.html">HTML Interaction Intro page</a>. </li> <li> New <a>Panel.type</a>: <a>Panel.Graduated</a>, used to draw regular tick marks and text along a main <a>Shape</a> element. Read more on the <a href="../intro/graduatedPanels.html">Graduated Panels Intro page</a>. </li> <li> Added the <a>Panel.isEnabled</a> property, the <a>GraphObject.isEnabledObject</a> method, and the <a>GraphObject.enabledChanged</a> event. </li> <li> Added the <a>Panel.isClipping</a> property, which allows Spot Panels to designate their main Shape element as a clipping region instead of a drawn Shape. </li> <li> Added <a>Brush</a> methods for computing lighter or darker colors or Brushes. </li> <li> Added <a>Binding.ofModel</a> method, to support data binding of <a>GraphObject</a> properties to data properties that are on the <a>Model.modelData</a> shared JavaScript Object. </li> </ul> </div> <h4>Changes for 1.7 since 1.6.*</h4> <ul> <li> <b>Samples and documentation:</b> <ul> <li> Copied definitions for all <a>Shape.figure</a> figures to the <a href="../extensions/Figures.js" target="_blank">Figures.js</a> file. All of the old figures are still predefined, so you will not need to load any section of this file. This file provides information about how each figure is defined, so that you can customize them or copy-and-adapt them. </li> <li> Copied definitions for all predefined templates to the <a href="../extensions/Templates.js" target="_blank">Templates.js</a> file in the Extensions directory. The predefined templates are still predefined, so you will not need to load this file in order to use those definitions. This file provides information about how each template is defined, so that you can customize them or copy-and-adapt them. </li> <li> Added a new sample: <a href="../extensions/FloorPlanner.html" target="_blank">Floor Planner</a> in the extensions folder. </li> <li> Added the <a href="../samples/customExpandCollapse.html" target="_blank">Custom Expand Collapse</a> sample, demonstrating an alternative to the "TreeExpanderButton" and the use of the <a>Node.isTreeExpanded</a>. This sample is tolerant of cycles in the graph. </li> <li> Added the <a href="../extensions/Hyperlink.html" target="_blank">Hyperlink</a> sample, demonstrating a "HyperlinkText" GraphObject builder that implements a standard hyperlink or "HTML anchor" control. The "HyperlinkText" builder is defined in the <a href="../extensions/HyperlinkText.js" target="_blank">HyperlinkText.js</a> file in the Extensions directory. </li> <li> Added the <a href="../samples/orgChartAssistants.html" target="_blank">Org Chart Assistants</a> sample, demonstrating a custom <a>TreeLayout</a> that positions "assistant" child nodes to the side, above the regular child nodes. </li> <li> Added the <a href="../extensions/RadialLayout.js" target="_blank">Radial Layout</a> extension class, used by the <a href="../samples/radial.html" target="_blank">Recentering Radial</a> sample and the <a href="../samples/radialPartition.html" target="_blank">Radial Partition</a> sample. </li> <li> Added several new HTML pages that showcase existing extensions as standalone samples: <a href="../extensions/DrawCommandHandler.html" target="_blank">Draw CommandHandler</a> <a href="../extensions/GeometryReshaping.html" target="_blank">Geometry Reshaping</a>, <a href="../extensions/GuidedDragging.html" target="_blank">Guided Dragging</a>, <a href="../extensions/HyperLink.html" target="_blank">HyperLink</a>, <a href="../extensions/LocalStorageCommandHandler.html" target="_blank">Local Storage CommandHandler</a>, <a href="../extensions/ResizeMultiple.html" target="_blank">Resize Multiple</a>, <a href="../extensions/RotateMultiple.html" target="_blank">Rotate Multiple</a>. </li> <li> Added the <a href="../samples/htmlLightBoxContextMenu.html" target="_blank">HTML Light Box Context Menu</a> sample, a re-implementation of the default touch context menu using <a>HTMLInfo</a>, and references <a href="../extensions/LightBoxContextMenu.js" target="_blank">LightBoxContextMenu.js</a> and <a href="../extensions/LightBoxContextMenu.css" target="_blank">LightBoxContextMenu.css</a>. </li> <li> Added the <a href="../extensions/TextEditor.html" target="_blank">Text Editor</a> sample, a re-implementation of the default text editor using <a>HTMLInfo</a>. It uses the <a href="../extensions/TextEditor.js" target="_blank">TextEditor.js</a> extension. </li> <li> Reworked the <a href="../samples/customTextEditingTool.html" target="_blank">CustomTextEditingTool</a> sample to use two <a>HTMLInfo</a> instances, defined in <a href="../extensions/TextEditorRadioButtons.js" target="_blank">TextEditorRadioButtons.js</a> and <a href="../extensions/TextEditorSelectBox.js" target="_blank">TextEditorSelectBox.js</a>. </li> <li> Reworked the <a href="../samples/timeline.html" target="_blank">Timeline</a> sample to use a Graduated Panel. Added several samples demonstrating Graduated Panels: <a href="../samples/thermometer.html" target="_blank">Thermometer</a>, <a href="../samples/instrumentGauge.html" target="_blank">Instrument Gauge</a>, <a href="../samples/ruleredDiagram.html" target="_blank">Rulered Diagram</a>, </li> </ul> </li> <li> <b>Diagram and Layer:</b> <ul> <li> Enhanced the "ViewportBoundsChanged" <a>DiagramEvent</a> to provide the previous <a>Diagram.scale</a> as the "scale" property of the <a>DiagramEvent.subject</a>; the previous <a>Diagram.position</a> is available as the "position" property of that subject, and the previous <a>Diagram.viewportBounds</a> is also available as the "bounds" property of that same subject. </li> <li> Enhanced <a>Diagram.computePartsBounds</a> to take optional argument whether to include the bounds of all <a>Link</a>s in the given collection. </li> <li> <a>Diagram.makeImageData</a> has a new option, <code>returnType</code>, which allows you to specify a <code>string</code> (default), <code>ImageData</code> (new), or <code>Blob</code> (new) as the returned type. <a>Diagram.makeImageData</a> also has a new option <code>callback</code> which is used in conjunction with <code>returnType: "Blob"</code>. See the <a href="../samples/minimalBlob.html">Minimal Image Blob Download sample</a> for usage details. </li> <li> <a>Part</a>s that are added and selected or highlighted, and then are removed upon an undo, no longer remain selected or highlighted. This policy avoids having non-existent nodes and links (due to undo of their insertion) remaining in the <a>Diagram.selection</a> or <a>Diagram.highlighteds</a> collections. </li> <li> Extended <a>Diagram.findPartForKey</a> to return <a>Link</a>s if the <a>Diagram.model</a> is a <a>GraphLinksModel</a> that is keeping keys for link data. If <a>GraphLinksModel.findLinkDataForKey</a> returns a link data object, <a>Diagram.findPartForKey</a> may return the corresponding Link. </li> </ul> </li> <li> <b>Parts:</b> <ul> <li> Added <a>Node.findTreeParentChain</a> method, to return a collection of the <a>Node</a>s and <a>Link</a>s following links up to a root node. </li> <li> GoJS now attempts to preserve Link routes when elements of a Node resize or move but do not affect the absolute position of ports. </li> <li> Improved Orthogonal <a>Link</a> routing for links coming out of and going into the same port. </li> <li> <a>Link.AvoidsNodes</a> routing when <a>Link.adjusting</a> is <a>Link.End</a> now tries to preserve earlier routing not near the end(s) of the route that were adjusted. </li> <li> <a>Link.AvoidsNodes</a> routing may be more likely to turn immediately when <a>Node.avoidable</a> Nodes overlap either or both ports. </li> <li> Added <a>Part.highlightedChanged</a>, when one wants to modify the appearance of a Part in a manner that is inconvenient to implement using data Binding. </li> </ul> </li> <li> <b>Panels</b> <ul> <li> Added the <a>Panel.isEnabled</a> property, the <a>GraphObject.isEnabledObject</a> method, and the <a>GraphObject.enabledChanged</a> functional property, for use by <a>Panels</a> such as "Button"s that are <a>GraphObject.isActionable</a>, to control whether or not the user may click them. </li> <li> Added the <a>Panel.isClipping</a> property, which allows Spot Panels to designate their main Shape element as a clipping region instead of a drawn Shape. </li> <li> Added the <a>Panel.isOpposite</a> property, which allows Horizontal and Vertical panels to arrange their contents from the right and bottom side (respectively) instead of the top and left side. </li> <li> Added the <a>Panel.alignmentFocusName</a> property, which allows elements of Spot Panels to name a nested Element to be the alignment object instead of the Panel. </li> <li> Added the new <a>Panel.type</a>: <a>Panel.Graduated</a>, used to draw regular tick marks and text along a main <a>Shape</a> element. Read more on the <a href="../intro/graduatedPanels.html">Graduated Panels Intro page</a>. </li> <li> Added <a>Panel.graduatedMin</a>, <a>Panel.graduatedMax</a>, <a>Panel.graduatedRange</a>, <a>Panel.graduatedTickUnit</a>, <a>Panel.graduatedTickBase</a>, <a>Panel.graduatedPointForValue</a>, <a>Panel.graduatedValueForPoint</a>, <a>Shape.graduatedStart</a>, <a>Shape.graduatedEnd</a>, <a>TextBlock.interval</a>, <a>TextBlock.graduatedStart</a>, <a>TextBlock.graduatedEnd</a>, and <a>TextBlock.graduatedFunction</a>, all for use with Graduated Panels. </li> <li> Improved the "PanelExpanderButton" to work in nested <a>Panel.itemTemplates</a>. </li> </ul> </li> <li> <b>GraphObjects and Geometry:</b> <ul> <li> Added <a>Picture.successFunction</a>, a function called when the Picture's image loads successfully. </li> <li> Added <a>Picture.imageAlignment</a>, a Spot to align the source image to, when the source image is smaller than the Picture. </li> <li> Added <a>TextBlock.verticalAlignment</a>, which controls the vertical position of the glyphs when the TextBlock has more available vertical space than it needs for drawing. </li> <li> Added <a>TextBlock.textEdited</a>, a settable function that is called on a TextBlock when the <a>TextEditingTool</a> is completing. </li> <li> Added <a>TextBlock.choices</a>, a settable/bindable Array that can help implement custom <a>TextEditingTool</a>s. See the <a href="../samples/customTextEditingTool.html">Custom TextEditingTool Sample</a>. </li> <li> Added <a>TextBlock.interval</a>, <a>TextBlock.graduatedFunction</a>, <a>TextBlock.graduatedStart</a>, <a>TextBlock.graduatedEnd</a> for use in "Graduated" Panels to implement scales, gauges, rulers, and similar devices. </li> <li> Added <a>Shape.graduatedStart</a> and <a>Shape.graduatedEnd</a> for use in "Graduated" Panels. </li> <li> Added <a>Brush.lightenBy</a> and <a>Brush.darkenBy</a> instance and static methods, which lighten or darken colors in a Brush or a CSS color string. There are also convenience methods <a>Brush.lighten</a> and <a>Brush.darken</a> which provide default behavior. </li> <li> Extended <a>Placeholder.padding</a> to allow negative values. </li> <li> Extended <a>GraphObject.getDocumentPoint</a> to take a <a>Point</a> in local coordinates, as well as a <a>Spot</a> in this GraphObject. This is for convenience and clarity the opposite transformation performed by <a>GraphObject.getLocalPoint</a>. </li> <li> Added support for zero-width spaces and soft hyphens wrapping lines in <a>TextBlock</a>. </li> </ul> </li> <li> <b>Models:</b> <ul> <li> Added <a>Binding.ofModel</a> method, to support data binding of <a>GraphObject</a> properties to data properties that are on the <a>Model.modelData</a> shared JavaScript Object. </li> <li> Enhanced <a>Diagram.updateAllRelationshipsFromData</a> to also add and remove <a>Node</a>s and <a>Link</a>s for any additional and missing data in the model. Remember that it is more efficient to call methods on the model to modify it and also notify all diagrams about the change than it is to call <a>Diagram.updateAllRelationshipsFromData</a>. Calling methods such as <a>Model.addNodeData</a> and <a>Model.setDataProperty</a> also have the benefit of supporting undo/redo -- the "update..." methods do not. </li> <li> It is now possible for a TwoWay <a>Binding</a> in an item template to replace an item in the <a>Panel.itemArray</a>. For an example, please see the updated documentation for the <a>Binding</a> class. </li> <li> A third argument, the <a>Model</a>, is now passed to back-converter (source-to-target) functions in TwoWay <a>Binding</a>s. This permits access to the model from the data object without having to explicitly add a reference to the model in each data object. Such an argument is not needed for the regular source-to-target converters because one can always walk up the visual tree of <a>GraphObject</a>s via <a>GraphObject.part</a>, <a>GraphObject.panel</a>, or <a>GraphObject.diagram</a>. </li> <li> Fixed a call to <a>Model.removeNodeData</a> not potentially invalidating a <a>Layout</a>. </li> </ul> </li> <li> <b>Layouts:</b> <ul> <li> Added the <a>Layout.collectParts</a> method, a convenience method to be called by overrides of <a>Layout.doLayout</a> to process the argument in order to get a collection of <a>Part</a>s that should be laid out by that custom <a>Layout</a>, when <em>not</em> using a <a>LayoutNetwork</a>. </li> </ul> </li> <li> <b>Tools and Commands:</b> <ul> <li> Added new class <a>HTMLInfo</a>, which contains methods to show and hide custom HTML. HTMLInfo can be assigned as a value of <a>GraphObject.contextMenu</a>, <a>Diagram.contextMenu</a>, <a>GraphObject.toolTip</a>, or <a>Diagram.toolTip</a>. Read more on the <a href="../intro/HTMLInteraction.html">HTML Interaction Intro page</a>. For examples, see: <ul> <li>Text Editors: <a href="../samples/customTextEditingTool.html">Custom Text Editors sample</a> and <a href="../extensions/TextEditor.html">Re-implementation of the default Text Editor</a> <li>Context Menus: <a href="../samples/customContextMenu.html">Custom Context Menu</a> and <a href="../samples/htmlLightBoxContextMenu.html">HTML Lightbox Context Menu</a> (a re-implementation of the default touch context menu) <li>Tooltips: <a href="../samples/dataVisualization.html">Data Visualization Tooltip</a> </ul> </li> <li> Added <a>TextEditingTool.state</a> and <a>TextEditingTool.measureTemporaryTextBlock</a> that can be used by custom <a>HTMLInfo</a> text editors. </li> <li> Added the <a>ContextMenuTool.defaultTouchContextMenu</a> property, which is an instance of <a>HTMLInfo</a> by default. This may be set to another instance of HTMLInfo, or may be set to null to disable the default touch context menu. </li> <li> Extended the <a>DragSelectingTool</a> to auto-scroll when the mouse point is just within the edge of the viewport. </li> <li> Added the overridable method <a>LinkingTool.doNoLink</a>, which is called when a mouse up during a linking operation does <em>not</em> actually draw a new Link. </li> <li> Added the overridable method <a>RelinkingTool.doNoRelink</a>, which is called when a mouse up during a relinking operation does <em>not</em> actually reconnect the Link. </li> <li> Improved the <a>LinkingTool</a> and <a>RelinkingTool</a> to auto-scroll during a linking operation even when snapped to a valid target port. </li> <li> Added the overridable method <a>ResizingTool.computeReshape</a>, to make it easier to change when the user may change the aspect ratio of the object being resized. </li> <li> Fixed the <a>ResizingTool</a> to work better when resizing rotated parts. <span style="color:red;">Potentially Incompatible:</span> Previously the <a>Part.locationSpot</a> would determine where an resizing object expanded or contracted from. Now, resizing objects always resize from their dragged handle, so that the opposite handle always stays in place. </li> <li> Added <a>TextEditingTool.DoubleClick</a> as an additional option for <a>TextEditingTool.starting</a>. </li> <li> <span style="color:red;">CSS Style incompatibility:</span> The <a>TextEditingTool.defaultTextEditor</a> Input element is no longer given the CSS class "start". This CSS class had been undocumented and unsupported. </li> <li> <span style="color:red;">CSS Style incompatibility:</span> The default context menu used the classes "defaultCXul", "defaultCXli", and "defaultCXa", they have been renamed "goCXul", "goCXli", and "goCXa", respectively. These CSS classes had been undocumented and unsupported. </li> </ul> </li> <li> <b style="color:red;">Deprecated features:</b> <p> These features will remain in the library until version 2.0, but they will no longer be documented and their use is discouraged. </p> <ul> <li> <b>Most Predefined Shape figures</b> <p> 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 <a href="../extensions/Figures.js" target="_blank">Figures.js</a> file. You can simply load only those figures that you want to use by copying their definitions into your code. <p> 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". <p> Note also that the definitions that are in the <a href="../extensions/Figures.js" target="_blank">Figures.js</a> file are <em>not</em> entirely the same as their current definitions in the library. A number of figures have been improved and some figure parameters have changed meaning. </li> <li> <b>DiagramEvent.cancel</b> <p> The only use for this property was with the "SelectionDeleting" <a>DiagramEvent</a> in order to prevent the user from deleting the selection. Where one might have written this Diagram listener: <pre>"SelectionDeleting": function(e) { if (e.diagram.selection.any(function(p) { return p.data.key.indexOf("e") >= 0; })) { e.cancel = true; } },</pre> one can write the equivalent functionality with this <a>CommandHandler.canDeleteSelection</a> method override: <pre>"commandHandler.canDeleteSelection": function() { return !this.diagram.selection.any(function(p) { return p.data.key.indexOf("e") >= 0; }) && go.CommandHandler.prototype.canDeleteSelection.call(this); },</pre> Overriding the method supports the updating/enablement of commands that call <a>CommandHandler.deleteSelection</a>. 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" <a>DiagramEvent</a> remains useful, but not for controlling whether or not the deletion should happen. </li> <li> <b>GraphObject.fromEndSegmentDirection</b> and <b>GraphObject.toEndSegmentDirection</b> <p> These properties have not been useful. One can override <a>Link.getLinkDirection</a> to achieve the same effects. </li> <li> <b>TextEditingTool.doFocus</b> and <b>TextEditingTool.doBlur</b> <p> These undocumented properties were used to modify the default functionality of the TextEditingTool. That is now done by setting <a>TextBlock.defaultTextEditor</a> to an instance of <a>HTMLInfo</a> (new in 1.7). <p>For examples, see <a href="../samples/customTextEditingTool.html">Custom TextEditingTool sample</a> and <a href="../extensions/TextEditor.html">Text Editor default implementation extension</a>. </li> <li> <b>TextBlock.textEditor</b>, <b>TextEditingTool.defaultTextEditor</b>, and <b>TextEditingTool.currentTextEditor</b> <p> These properties are now primarily used with <a>HTMLInfo</a> values. HTML Elements will still work until version 2.0. </p> </li> </ul> </li> </ul> <hr class="changelog" /> <h4>Changes for 1.6.24</h4> <ul> <li> Fixed an infinite recursion when a <a>Link</a> with a label <a>Node</a> connects with that same node. </li> <li> Fixed a case of <a>AnimationManager</a> retaining references to Parts that were not cleared by <a>Diagram.clear</a>. </li> </ul> <h4>Changes for 1.6.23</h4> <ul> <li> Fixed a bug with <a>Picture.sourceCrossOrigin</a> setting the CORS flag too late. Some browsers require it be set before an image source is set. </li> <li> Fixed a bug in recent Chrome browsers and Edge where shift-scroll-wheel did not scroll horizontally. </li> </ul> <h4>Changes for 1.6.22</h4> <ul> <li> Fixed lack of jump-over or jump-gap when link routes have only two points. </li> </ul> <h4>Changes for 1.6.21</h4> <ul> <li> Overviews are notified at the end of animations, in case they need to update their bounding box. </li> <li> Fixed a scrollbar issue when using initalAutoScale and resetting the diagram or loading a new model. </li> <li> Fixed link label positioning in certain cases where <a>GraphObject.alignmentFocus</a> and <a>GraphObject.segmentOrientation</a> are both set. </li> </ul> <h4>Changes for 1.6.20</h4> <ul> <li> Fixed a measuring issue with <a>GraphObject.desiredSize</a> when the old size matches the new size. </li> <li> Fixed an animation issue with Group subgraph collapsing, when the member Nodes have a locationSpot set. </li> </ul> <h4>Changes for 1.6.19</h4> <ul> <li> <a>Shape</a>s with a custom <a>Geometry</a> no longer lose their custom geometry when <a>GraphObject.desiredSize</a> is set to NaN. Shapes also rebuild custom geometries more accurately when reshaped or scaled. </li> <li> A <a>Group</a> whose <a>Group.layout</a>is a <a>LayeredDigraphLayout</a> is less likely to move after repeated cycles of collapsing and expanding. </li> <li> Fixed an animation issue when there are multiple animations bundled together, and the last one does not add any animatable parts. </li> </ul> <h4>Changes for 1.6.18</h4> <ul> <li> Fixed <a>CommandHandler.scrollToPart</a> exception when called both before and after calling <a>CommandHandler.deleteSelection</a>. </li> <li> Fixed rare infinite loop in <a>LayeredDigraphLayout</a> involving multiple links between nodes with multiple ports. </li> <li> Updated <a href="../extensions/TableLayout.js">TableLayout.js</a> extension to take the <a>Layout.arrangementOrigin</a> into account. </li> </ul> <h4>Changes for 1.6.17</h4> <ul> <li> Fixed a <a>InputEvent.clickCount</a> values during mouseDown operations in IE10 and 11. This was already correct for mouseUp. </li> <li> Fixed an issue with Table Panel spacing when <a>Panel.defaultRowSeparatorStroke</a> and <a>Panel.defaultColumnSeparatorStroke</a> were set, and there is not enough room to display all rows/columns. </li> </ul> <h4>Changes for 1.6.16</h4> <ul> <li> Scrollbar fixes for RTL langauges. </li> <li> <a>TextBlock.textAlign</a> values "start" and "end" now correctly interpret the alignment value when Diagrams divs have direction: RTL set in their CSS. </li> <li> 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. </li> <li> Fixed line dash drawing (Use of <a>Shape.strokeDashArray</a> and <a>Shape.strokeDashOffset</a>), a regression from 1.6.13. </li> <li> Fixed routing of links connecting with non-visible ports, a regression from 1.6.12. </li> </ul> <h4>Changes for 1.6.15</h4> <ul> <li> Fixed some image loading scenarios when a <a>Picture</a> had no desiredSize set in a template, but a data-bound desiredSize. </li> <li> Stopped <a>Shape.geometry</a> from being scaled to zero during panel measurement. </li> <li> 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. </li> <li> Fixed an issue where location bindings could potentially have side effects leading to improperly-measured Parts. </li> <li> Disallowed animations from starting when there is nothing to animate. </li> </ul> <h4>Changes for 1.6.14</h4> <ul> <li> Improved the time when a Diagram receives focus, fixing the change made in 1.6.13, so that the <a>ToolManager</a> gives the focus to the diagram just before starting an eligible <a>Tool</a>, 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. </li> <li> Browser mousemove events over the Diagram now bubble appropriately. </li> <li> If a Tooltip or Context Menu <a>Adornment</a> has a <a>Placeholder</a>, the placeholder's scale now changes with the <a>Diagram.scale</a>. </li> </ul> <h4>Changes for 1.6.13</h4> <ul> <li>Renamed the TypeScript definition file from <code>release/goJS.d.ts</code> to <code>release/go.d.ts</code>.</li> <li>Auto panels with a <a>GraphObject.desiredSize</a> set now account for <a>Shape.strokeWidth</a> if their main object is a Shape.</li> <li>Fixed mouseUp erroneously blocking bubbling.</li> <li>Fixed some touchMove events erroneously bubbling, causing the page to pan while. This behavior began in 1.6.5.</li> <li> Improved how often <a>Adornment</a>s get updated. They are now removed if the <a>Adornment.adornedObject</a> is removed from the <a>Part</a>. They are now updated during the operation of <a>DraggingTool</a> and other Tools. </li> <li> 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. </li> <li> Fixed spurious caution about inability to route the <a>LinkingBaseTool.temporaryLink</a> the first time the user tries to draw a new link. </li> </ul> <h4>Changes for 1.6.12</h4> <ul> <li> Fixed <a>Binding.ofObject</a> 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. </li> <li> Fixed some links incorrectly invalidating at the end of an animation. </li> <li> Corrected some cosmetic animations that were leaving state collapsed when repeated animations were successively called. </li> <li> Reduced NaN errors when trying to route a <a>Link</a> connecting with a port element that is not <a>GraphObject.visible</a>. </li> <li><a>Overview</a>s will now respect custom pixel ratios.</li> <li>Fixed Picture alignment when <a>Picture.imageStretch</a> is set.</li> </ul> <h4>Changes for 1.6.11</h4> <ul> <li>Improved loading for Pattern Brushes.</li> <li><a>Diagram.makeSvg</a> now handles Pattern Brushes.</li> <li>Fixed a bug introduced in 1.6.5 where some Key presses unintentionally bubbled.</li> <li>Fixed an issue with setting location not always updating the diagram.</li> <li>Improved event handling on devices that use Pointer events (e.g., Microsoft Surface)</li> <li> Added the <a href="../extensions/OrthogonalLinkReshaping.html" target="_blank">OrthogonalLinkReshapingTool</a> extension. See <a href="../extensions/OrthogonalLinkReshapingTool.js" target="_blank">OrthogonalLinkReshapingTool.js</a> 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. </li> <li>Improved orientation of Link Adornments along segments where both endpoints have the same location.</li> </ul> <h4>Changes for 1.6.10</h4> <ul> <li>Fixed an SVG rendering bug that was introduced in 1.6.8.</li> <li><a>Shape.geometryString</a> setter no longer offsets the position, instead it sets it, always overwriting the old position.</li> <li>Extended <a>Tool.standardMouseClick</a> to return a boolean, true if <a>InputEvent.handled</a> had been set to true by an event handler.</li> <li>Fixed <a>ContextMenuTool</a> not to show a context menu <a>Adornment</a> if a <a>GraphObject.contextClick</a> or <a>Diagram.contextClick</a> event handler set <a>InputEvent.handled</a> to true.</li> <li>Fixed mouse move events on IE9.</li> <li>Fixed an infrequent scrolling issue sometimes seen at the edges of a Diagram.</li> </ul> <h4>Changes for 1.6.9</h4> <ul> <li>Fixes and improvements to samples.</li> </ul> <h4>Changes for 1.6.8</h4> <ul> <li>Fixed how <a>Diagram.findNodesByExample</a> and <a>Diagram.findLinksByExample</a> compared Arrays</li> <li>Fixed link routing in some cases where there was a TwoWay <a>Binding</a> on <a>Link.points</a> with non-trivial conversions.</li> <li>Improved link routing when <a>Link.adjusting</a> is <a>Link.Scale</a> after the route is computed to be less than one unit long.</li> <li>Fixed unintended modification of model data involving TwoWay <a>Binding</a>s upon an undo after calling or causing <a>Diagram.rebuildParts</a>.</li> <li>Fixed rare cases of wrong link routes after undo of a drag.</li> </ul> <h4>Changes for 1.6.7</h4> <ul> <li>Extended the <a>ContextMenuTool</a> to work on a right-mouse-down event if the tool is in the <a>ToolManager.mouseDownTools</a> list.</li> <li>Changed how the main <a>Shape</a>s of <a>Link</a>s are measured to be more accurate. This may cause Links to have different position and location values than before.</li> <li>Fixed a collapse animation bug when rolling back transactions.</li> </ul> <h4>Changes for 1.6.6</h4> <ul> <li>Fixed a bug with text measurement when using <a>TextBlock.OverflowEllipsis</a>.</li> <li>Fixed a bug with Link geometry construction when switching templates.</li> <li>Groups no longer try to update their own bounds when containing links are modified, so long as <a>Group.computesBoundsIncludingLinks</a> is set to false.</li> </ul> <h4>Changes for 1.6.5</h4> <ul> <li>Fixed updating of a link geometry when modifying <a>Link.curve</a> or <a>Link.curviness</a>.</li> <li>MouseMove events now bubble by default, unless a tool other than the <a>ToolManager</a> is the <a>Diagram.currentTool</a>.</li> <li>Fixed the invalidation of custom geometries of <a>Shape</a>s.</li> <li>Reduced the shifting of <a>Group</a>s that have a <a>LayeredDigraphLayout</a> as the <a>Group.layout</a> upon repeated collapse/expand.</li> </ul> <h4>Changes for 1.6.4</h4> <ul> <li>Wheel scrolling now respects <a>Diagram.allowHorizontalScroll</a> and <a>Diagram.allowVerticalScroll</a> in all code paths.</li> </ul> <h4>Changes for 1.6.3</h4> <ul> <li>Fixed an exception in <a>CommandHandler.showContextMenu</a> when passed an argument.</li> <li>Fixed adornment invalidation when a Part switches from a visible layer to an invisible one.</li> <li>Smoothed <a>Diagram.scale</a> animations.</li> <li>On Mac Trackpads, users can now scroll horizontally as well as vertically.</li> <li>Improved some samples.</li> </ul> <h4>Changes for 1.6.2</h4> <ul> <li>Added the <a href="../extensions/DataInspector.html" target="_blank">Data Inspector</a> sample, a simple drop-in for inspecting and editing Part data.</li> <li>Fixed some cases of testing for points being within quadratic bezier curve geometries.</li> <li>The <a>ContextMenuTool</a> now supports tooltips for all objects in a context menu <a>Adornment</a>.</li> </ul> <h4>Changes for 1.6.1</h4> <ul> <li>Fixed an exception in <code>go-debug.js</code> involving a name conflict caused by minification.</li> </ul> <h4>Changes for 1.6 since 1.5.*</h4> <div style="border: 2px solid #1F4963; padding: 6px; margin-bottom: 30px;"> <p>GoJS version 1.6 brings several new features and samples. Here are some highlights:</p> <ul> <li>Z-ordering within <a>Layer</a>s by setting or binding the new <a>Part.zOrder</a> property.</li> <li>Animations for tree and <a>Group</a> collapse, and animation of <a>Diagram.position</a> with <a>CommandHandler.scrollToPart</a>.</li> <li><a>Link</a>s can now have automatically determined keys if you set the <a>GraphLinksModel.linkKeyProperty</a>.</li> <li>You can now send and receive incremental changes to a database instead of sending the whole model, with <a>Model.toIncrementalJson</a> and <a>Model.applyIncrementalJson</a>.</li> <li>Tooltips are now shown on touch devices when the user clicks on an object with a <a>GraphObject.toolTip</a> or in the diagram background when <a>Diagram.toolTip</a> is an <a>Adornment</a>.</li> </ul> </div> <p>The complete list of changes:</p> <ul> <li> <b>Samples and documentation:</b> <ul> <li> Changed the <a href="../extensions/CheckBoxes.html" target="_blank">CheckBoxes</a> sample to make use of the newly predefined "CheckBox" panel. Note the renaming from the old sample's "CheckBoxPanel" to the predefined "CheckBox". Another change is that "CheckBox" now respects <a>Diagram.isReadOnly</a> and <a>Model.isReadOnly</a>. </li> <li> Added the <a href="../samples/leaflet.html" target="_blank">Leaflet and GoJS</a> sample, demonstrating how to integrate GoJS Diagrams with a mapping library (LeafletJS). The sample shows nodes placed at latitude and longitude locations, depicting train stations and connections on the map. </li> <li> Added the <a href="../samples/absolute.html" target="_blank">Absolute Positioning</a> sample, demonstrating how a diagram can be made <em>not</em> to scroll or pan or zoom, and to disallow dragging parts outside of a fixed area. </li> <li> Added the <a href="../samples/adornmentButtons.html" target="_blank">Adornment Buttons</a> sample, demonstrating showing buttons when a node is selected. The buttons can invoke commands with clicks or start tools with drags. </li> <li> Added the <a href="../samples/doubleCircle.html" target="_blank">Double Circle</a> sample, demonstrating how to use repeated <a>CircularLayout</a>s to arrange any number of concentric circles of nodes. </li> <li> Added the <a href="../samples/dragUnoccupied.html" target="_blank">Drag Unoccupied</a> sample, demonstrating how to customize the <a>Part.dragComputation</a> property so that the user cannot drag nodes to overlap any stationary nodes. </li> <li> Added the <a href="../samples/faultTree.html" target="_blank">Fault Tree</a> sample. </li> <li> Added the <a href="../samples/pathAnimation.html" target="_blank">Path Animation</a> sample, demonstrating how to animate the traversal of some number of Parts along straight Links. <