- Home
- Learn
- Samples
- Intro
- API
- Register
- Download
- Forum
- Contact
- Buy
- Activate

GoJS Class Index

## Diagram Classes

- Adornment
- AnimationManager
- CommandHandler
- Diagram
- DiagramEvent
- GraphObject
- Group
- InputEvent
- Layer
- Link
- Node
- Overview
- Palette
- Panel
- Part
- Picture
- Placeholder
- RowColumnDefinition
- Shape
- TextBlock

## Geometry Classes

- Brush
- Geometry
- Margin
- PathFigure
- PathSegment
- Point
- Rect
- Size
- Spot

## Model Classes

- Binding
- ChangedEvent
- GraphLinksModel
- Model
- Transaction
- TreeModel
- UndoManager

## Layout Classes

- CircularLayout
- ForceDirectedLayout
- GridLayout
- LayeredDigraphLayout
- Layout
- LayoutNetwork
- TreeLayout

## Tool Classes

- ActionTool
- ClickCreatingTool
- ClickSelectingTool
- ContextMenuTool
- DraggingTool
- DragSelectingTool
- LinkingBaseTool
- LinkingTool
- LinkReshapingTool
- PanningTool
- RelinkingTool
- ResizingTool
- RotatingTool
- TextEditingTool
- Tool
- ToolManager

## Collection Classes

- Iterable
- Iterator
- List
- Map
- Set

GoJS® Diagramming Components
version 1.5.20 for JavaScript/HTML
by Northwoods Software®

# Class Transaction

A Transaction holds a list of ChangedEvents collected during a transaction, as the value of the read-only changes property.

Start a transaction by calling UndoManager.startTransaction (or Model.startTransaction or Diagram.startTransaction, which call that method). Be sure to finish a transaction with a matching call to UndoManager.commitTransaction (or Model.commitTransaction or Diagram.commitTransaction), or a call to UndoManager.rollbackTransaction (or the same named methods on Model or Diagram).

If you are performing multiple or repeated changes to a model or diagram, surround all of the code with calls to start and commit the transaction -- do not perform repeated calls to start-commit-start-commit. Typically each change caused by the user, such as a button click or a change of focus or a mouse drag, should perform one transaction in which all changes are made. All of the predefined commands and tools perform transactions.

Undoing or redoing a transaction is done by calling UndoManager.undo or UndoManager.redo. Those methods call the undo or redo methods here.

The UndoManager holds a list of Transactions in its UndoManager.history.

## Constructor Summary Details

Returns | Name | Description
--- | --- | ---
| Transaction() | Construct an object holding an empty list of ChangedEvents and no name.

## Properties Summary Details

Returns | Name | Description
--- | --- | ---
{List.<ChangedEvent>} | changes | This read-only property returns the list of ChangedEvents. More... The changes are stored in order of occurrence. You should not modify this list.
{boolean} | isComplete | Gets or sets whether we can add more ChangedEvents to this list of changes. More... This is initially false. It is set to true by UndoManager.commitTransaction and UndoManager.rollbackTransaction.
{string} | name | Gets or sets the transaction name for this collection of changes. More... This is set by a top-level call to UndoManager.commitTransaction.

## Method Summary Details

Returns | Name | Description
--- | --- | ---

{boolean}

canRedo()

This predicate returns true if you can call redo, namely when isComplete is true.

Returns:
{boolean} true if ready for redo to be called.

{boolean}

canUndo()

This predicate returns true if you can call undo, namely when isComplete is true.

Returns:
{boolean} true if ready for undo to be called.

| clear() | Clear all of the saved changes.
| redo() | Re-perform these changes after an undo. More... This is normally called only by the UndoManager. canRedo must be true for this method to have any effect.
| undo() | Undo all of the changes, in reverse order. More... This is normally called only by the UndoManager. canUndo must be true for this method to have any effect.