MindFusion.Diagramming for ASP.NET MVC 4.0
Released: Jan 27, 2022
Aggiornamenti in 4.0
Funzionalità
- ECMAScript 6 (ES6) classes and properties (client side / JavaScript) - Client side scripts have been refactored to use ES6 classes, properties and native collections.
- ArrayList, Dictionary and Set classes from MindFusion.Collections namespace have been removed, and replaced by respective JavaScript native Array, Map and Set.
- Get/set functions have been replaced by getter/setter properties, which should help using the diagram API with binding expressions of various JS frameworks.
- Diagram view (client side / JavaScript) - The Diagram JavaScript class has been refactored into separate Diagram and DiagramView classes, matching respective server-side .NET classes that the library already provided in older versions.
- Diagram is now just a model class that defines diagram structure and implements serialization. The new DiagramView class deals with rendering and user interaction.
- You can show the same diagram in several views, each one rendering at different scroll positions and zoom levels.
- TreeView nodes - Added TreeViewNode class for creating nodes that can display hierarchical data.
- Print pagination (client side / JavaScript) - Added printPreview and print methods to DiagramView which let you export the diagram as a list of smaller images in an HTML page.
- Supported options include printArea (defaults to diagram's content bounds) and pageSize (defaults to DiagramView's viewport).
- Microsoft .NET 6 support - Added assemblies and sample projects for .NET 6. The distribution still includes assemblies and samples for .NET 4.5+ and Microsoft .NET Core 3.1.
- Multi-touch support - The control now handles DOM Pointer events to implement multi-touch interactions, such as zooming, node rotation or simultaneous drawing of multiple diagram items:
- If multiTouchZoom property is enabled (default), the view can be zoomed or panned using two-touch pinch / flick gestures.
- If multiTouchModify property is enabled (default), diagram nodes can be moved, scaled and rotated using two-touch pinch / flick gestures.
- If multiTouchZoom property is disabled, each touch draws diagram items corresponding to current behavior.
- If multiTouchModify property is disabled, each touch started from a node draws a diagram link.
- Mouse input improvements
- MouseWheelAction property of DiagramView now lets you choose between Scroll (default) and Zoom as the default behavior of the control in response of a wheel event.
- The MoveNodes behavior now allows you to grab nodes to drag them without using adjustment handles.
- The control now captures mouse events and completes drag / drawing operations even if mouse is released outside the diagram view.
- Added new events
- NodeSelectingScript, LinkSelectingScript, SelectionChangedScript events allow handling of selection interactions.
- NodeTextEditingScript, LinkTextEditingScript and CellTextEditingScript validation events let you prevent users from editing a specific item.
- DataLoadedScript is raised when the diagram data is loaded from JSON or XML.
- MouseWheelScript is raised when the user rotates the mouse wheel while the cursor is positioned over the diagram surface.
- TreeItemTextEditingScript, TreeItemTextEditedScript allow handling of inplace-edit operations in TreeViewNode.
- Miscellaneous
- Client side createDiagramLink method now accepts two, three or four arguments, letting you specify row index for origin or destination TableNode, or TreeViewItem for origin or destination TreeViewNode.
- OrthogonalLayout can now be applied on client-side.
- Clipboard methods now use modern Navigator.clipboard API when their systemClipboard argument is enabled.
- Added the ability to rotate FreeFormNode instances.
- ImageAlign now supports new FitLeft, FitTop, FitRight and FitBottom alignment styles, which resize image to fit node's boundaries and align it to respective border.
- ArrangeAsync method is now available in CoreCLR assemblies (.NET Core 3 and 6 versions).
- The EnumAllPaths method of PathFinder now yields each path immediately when found.
- JavaScript API changes
- getProperty/setProperty function pairs from client-side API have been replaced by ES6 getters/setters. Set CompatConfig.propFunctions to true in order to continue using legacy get/set functions in your code.
- Diagram.find method has been removed. Call DiagramView.find instead, and get the view's diagram property.
- Client-side scroll and zoom properties have been moved from Diagram to DiagramView: autoScroll, scrollZoneSize, autoScrollAmount, scrollX, scrollY, viewport, virtualScroll, zoomFactor.
- Client-side input related properties have been moved from Diagram to DiagramView: allowInplaceEdit, delKeyAction, behavior, tooltipDelay, modificationStart, modifierKeyActions, leftButtonActions, middleButtonActions, rightButtonActions.
- Client-side magnifier properties have been moved from Diagram to DiagramView: magnifierEnabled, magnifierFactor, magnifierWidth, magnifierHeight, magnifierFrameThickness, magnifierShading, magnifierShape,magnifierFrameColor, magnifierSecondaryFrameColor.
- Client-side methods have been moved from Diagram class to DiagramView class: create, find, record, stopRecording, replay, clearTooltip, beginEdit, copyToClipboard, pasteFromClipboard, cutToClipboard, scrollTo, zoomToRect, zoomToFit, setZoomFactorPivot.
- MindFusion.AbstractionLayer class has been removed.
- EventArgs and CancelEventArgs classes have been moved to the MindFusion.Controls namespace.
- ArrayList, Dictionary, ObservableCollection, Set classes have been removed from MindFusion.Collections namespace.
- Due to Navigator.clipboard API being asynchronous, pasted items are not available immediately after calling pasteFromClipboard with systemClipboard enabled. You will be able to access them only after nodePasted and linkPasted events are raised.
- .NET API changes
- Server-side ContainerNode API is now consistent with client-side one. Containment is no longer implemented via a Group object and SubordinateGroup / MasterGroup properties. Instead, child nodes are now stored in the dedicated Children collection, and a node's container is returned by the Container property.
- Suspend and Resume methods have been removed from ILinkRouter. Call Diagram's SuspendLinkRouter and ResumeLinkRouter methods instead.
- Default LinkRouter have been changed from QuickRouter to CompositeRouter instance.
- bool SmartPolylineEnds property of RoutingOptions has been replaced by PolylineRouting enum property, which also provides an option to prevent inclined link segments for Polyline routes.
- Removed ClientSideMode, MsAjaxLocation and JQueryLocation properties.
Correzioni
- Fixed resizeToFitText not calculating correct size when cells have text padding applied.