DiagramModel
23 Sep 202524 minutes to read
Interface for a class Diagram
Properties
animationComplete EmitType<Object>
Triggers after animation is completed for the diagram elements.
click EmitType<IClickEventArgs>
Triggers when a node, connector or diagram is clicked
collectionChange EmitType<ICollectionChangeEventArgs>
Triggers when a node/connector is added/removed to/from the diagram.
commandExecute EmitType<ICommandExecuteEventArgs>
Triggers when a command executed.
connectionChange EmitType<IConnectionChangeEventArgs>
Triggers when the connection is changed
contextMenuBeforeItemRender EmitType<MenuEventArgs>
Triggers before rendering the context menu item
contextMenuClick EmitType<MenuEventArgs>
Triggers when a context menu item is clicked
contextMenuOpen EmitType<BeforeOpenCloseMenuEventArgs>
Triggers before opening the context menu
created EmitType<Object>
Triggered when the diagram is rendered completely.
dataLoaded EmitType<IDataLoadedEventArgs>
Triggers after diagram is populated from the external data source
doubleClick EmitType<IDoubleClickEventArgs>
Triggers when a node, connector or diagram model is clicked twice
dragEnter EmitType<IDragEnterEventArgs>
Triggers when a symbol is dragged into diagram from symbol palette
dragLeave EmitType<IDragLeaveEventArgs>
Triggers when a symbol is dragged outside of the diagram.
dragOver EmitType<IDragOverEventArgs>
Triggers when a symbol is dragged over diagram
drop EmitType<IDropEventArgs>
Triggers when a symbol is dragged and dropped from symbol palette to drawing area
elementDraw EmitType<IElementDrawEventArgs>
Triggered when an element is drawn using drawing Tool
expandStateChange EmitType<IExpandStateChangeEventArgs>
Triggers when the state of the expand and collapse icon change for a node.
fixedUserHandleClick EmitType<FixedUserHandleClickEventArgs>
Triggers when a node/connector fixedUserHandle is clicked in the diagram.
historyChange EmitType<IHistoryChangeArgs>
Triggers when a change is reverted or restored(undo/redo)
historyStateChange EmitType<IBlazorCustomHistoryChangeArgs>
Triggers when a custom entry change is reverted or restored(undo/redo)
keyDown EmitType<IKeyEventArgs>
Triggers when a user is pressing a key.
keyUp EmitType<IKeyEventArgs>
Triggers when a user releases a key.
layoutUpdated EmitType<ILayoutUpdatedEventArgs>
Triggers when the layout rendering process in the diagram has either started or completed.
load EmitType<ILoadEventArgs>
This event triggers before the diagram load.
loaded EmitType<ILoadedEventArgs>
This event triggers after the diagram elements finished loading using loadDiagram method
mouseEnter EmitType<IMouseEventArgs>
Triggered when mouse enters a node/connector.
mouseLeave EmitType<IMouseEventArgs>
Triggered when mouse leaves node/connector.
mouseOver EmitType<IMouseEventArgs>
Triggered when mouse hovers a node/connector.
mouseWheel EmitType<IMouseWheelEventArgs>
Event triggers whenever the user rotate the mouse wheel either upwards or downwards
onFixedUserHandleMouseDown EmitType<FixedUserHandleEventsArgs>
Triggers when a mouseDown on the fixed user handle.
onFixedUserHandleMouseEnter EmitType<FixedUserHandleEventsArgs>
Triggers when a mouseEnter on the fixed user handle.
onFixedUserHandleMouseLeave EmitType<FixedUserHandleEventsArgs>
Triggers when a mouseLeave on the fixed user handle.
onFixedUserHandleMouseUp EmitType<FixedUserHandleEventsArgs>
Triggers when a mouseUp on the fixed user handle.
onImageLoad EmitType<IImageLoadEventArgs>
Triggers when the image node is loaded.
onUserHandleMouseDown EmitType<UserHandleEventsArgs>
Triggers when a mouseDown on the user handle.
onUserHandleMouseEnter EmitType<UserHandleEventsArgs>
Triggers when a mouseEnter on the user handle.
onUserHandleMouseLeave EmitType<UserHandleEventsArgs>
Triggers when a mouseLeave on the user handle.
onUserHandleMouseUp EmitType<UserHandleEventsArgs>
Triggers when a mouseUp on the user handle.
positionChange EmitType<IDraggingEventArgs>
Triggers while dragging the elements in diagram
propertyChange EmitType<IPropertyChangeEventArgs>
Triggers once the node or connector property changed.
rotateChange EmitType<IRotationEventArgs>
Triggers when the diagram elements are rotated
scrollChange EmitType<IScrollChangeEventArgs>
Triggers when the diagram is zoomed or panned
segmentChange EmitType<ISegmentChangeEventArgs>
This event is triggered when we drag the segment thumb of Orthogonal/ Straight /Bezier connector
segmentCollectionChange EmitType<ISegmentCollectionChangeEventArgs>
Triggers when a segment is added/removed to/from the connector.
selectionChange EmitType<ISelectionChangeEventArgs>
Triggers when the selection is changed in diagram
sizeChange EmitType<ISizeChangeEventArgs>
Triggers when a node is resized
sourcePointChange EmitType<IEndChangeEventArgs>
Triggers when the connector’s source point is changed
targetPointChange EmitType<IEndChangeEventArgs>
Triggers when the connector’s target point is changed
textEdit EmitType<ITextEditEventArgs>
Triggers when editor got focus at the time of node’s label or text node editing.
addInfo Object
Allows the user to save custom information/data about diagram
annotationTemplate string|Function
Customizes the annotation template
backgroundColor string
Defines the background color of the diagram
bridgeDirection BridgeDirection
Defines the direction of the bridge that is inserted when the segments are intersected
- Top - Defines the direction of the bridge as Top
- Bottom - Defines the direction of the bridge as Bottom
- Left - Sets the bridge direction as left
- Right - Sets the bridge direction as right
commandManager CommandManagerModel
Defines a set of custom commands and binds them with a set of desired key gestures
connectorDefaults ConnectorModel
Helps to assign the default properties of connector
connectors ConnectorModel[]
Defines a collection of objects, used to create link between two points, nodes or ports to represent the relationships between them
<div id='diagram'></div> let connectors: ConnectorModel[] = [{
id: 'connector1',
type: 'Straight',
sourcePoint: { x: 100, y: 300 },
targetPoint: { x: 200, y: 400 },
}];
let diagram: Diagram = new Diagram({
...
connectors: connectors,
...
});
diagram.appendTo('#diagram');constraints DiagramConstraints
Constraints are used to enable/disable certain behaviors of the diagram.
- None - Disables DiagramConstraints constraints
- Bridging - Enables/Disables Bridging support for connector
- UndoRedo - Enables/Disables the Undo/Redo support
- Tooltip - Enables/Disables Tooltip support
- UserInteraction - Enables/Disables editing diagram interactively
- ApiUpdate - Enables/Disables editing diagram through code
- PageEditable - Enables/Disables editing diagrams both interactively and through code
- Zoom - Enables/Disables Zoom support for the diagram
- PanX - Enables/Disable PanX support for the diagram
- PanY - Enables/Disable PanY support for the diagram
- Pan - Enables/Disable Pan support the diagram
contextMenuSettings ContextMenuSettingsModel
Defines type of menu that appears when you perform right-click operation
An object to customize the context menu of diagram
<div id='diagram'></div>let diagram: Diagram = new Diagram({
...
contextMenuSettings: { show: true },
...
});
diagram.appendTo('#diagram');customCursor CustomCursorActionModel[]
A collection of JSON objects where each object represents a custom cursor action. Layer is a named category of diagram shapes.
dataSourceSettings DataSourceModel
Configures the data source that is to be bound with diagram
diagramSettings DiagramSettingsModel
Represents the diagram settings
<div id='diagram'></div>let diagram: Diagram = new Diagram({
...
diagramSettings: { inversedAlignment: true }
...
});
diagram.appendTo('#diagram');drawingObject NodeModel|ConnectorModel
Defines the object to be drawn using drawing tool
<div id='diagram'></div>let diagram: Diagram = new Diagram({
...
drawingObject : {id: 'connector3', type: 'Straight'},
...
});
diagram.appendTo('#diagram');enableConnectorSplit boolean
Split the connector, when the node is dropped onto it and establish connection with that dropped node.
enablePersistence boolean
Enable or disable persisting component’s state between page reloads.
enableRtl boolean
Enable or disable rendering component in right to left direction.
fixedUserHandleTemplate string|Function
This property allows us to define HTML elements for fixed user handle
getConnectorDefaults Function|string
Helps to return the default properties of connector
<div id='diagram'></div> let connectors: ConnectorModel[] = [{
id: 'connector1',
sourcePoint: { x: 100, y: 300 },
targetPoint: { x: 200, y: 400 },
}];
let diagram: Diagram = new Diagram({
...
connectors: connectors,
getConnectorDefaults: (connector: ConnectorModel, diagram: Diagram) => {
let connObj: ConnectorModel = {};
connObj.targetDecorator ={ shape :'None' };
connObj.type = 'Orthogonal';
return connObj;
},
...
});
diagram.appendTo('#diagram');getCustomCursor Function|string
<div id='diagram'></div>function getCursor(action: string, active: boolean): string {
let cursor: string;
if (active && action === 'Drag') {
cursor = '-webkit-grabbing';
} else if (action === 'Drag') {
cursor = '-webkit-grab'
}
return cursor;
}
let nodes: NodeModel[] = [{
id: 'node1', width: 100, height: 100, offsetX: 100, offsetY: 100,
},
{
id: 'node2', width: 100, height: 100, offsetX: 300, offsetY: 100,
shape: { type: 'Basic', shape: 'Ellipse' },
}];
let handle: UserHandleModel[] = [
{ name: 'handle', margin: { top: 0, bottom: 0, left: 0, right: 0 }, offset: 0,
pathData: 'M 376.892,225.284L 371.279,211.95L 376.892,198.617L 350.225,211.95L 376.892,225.284 Z',
side: 'Top', horizontalAlignment: 'Center', verticalAlignment: 'Center',
pathColor: 'yellow' }];
let diagram: Diagram = new Diagram({
...
nodes: nodes,
selectedItems: { constraints: SelectorConstraints.All, userHandles: handle },
getCustomCursor: getCursor
...
});
diagram.appendTo('#diagram');getCustomProperty Function|string
Allows to get the custom properties that have to be serialized
<div id='diagram'></div>let nodes: NodeModel[] = [{
id: 'node1', width: 100, height: 100, offsetX: 100, offsetY: 100,
annotations: [{ content: 'Default Shape' }]
},
{
id: 'node2', width: 100, height: 100, offsetX: 300, offsetY: 100,
shape: { type: 'Basic', shape: 'Ellipse' },
annotations: [{ content: 'Path Element' }]
}
];
let connectors: ConnectorModel[] = [{
id: 'connector1', type: 'Straight',
sourcePoint: { x: 100, y: 300 }, targetPoint: { x: 200, y: 400 },
}];
let diagram: Diagram = new Diagram({
...
connectors: connectors, nodes: nodes,
getCustomProperty: (key: string) => {
if (key === 'nodes') {
return ['description'];
}
return null;
}
...
});
diagram.appendTo('#diagram');getCustomTool Function|string
<div id='diagram'></div>function getTool(action: string): ToolBase {
let tool: ToolBase;
if (action === 'userHandle1') {
tool = new CloneTool(diagram.commandHandler, true);
}
return tool;
}
class CloneTool extends ToolBase {
public mouseDown(args: MouseEventArgs): void {
super.mouseDown(args);
diagram.copy();
diagram.paste();
}
}
let nodes: NodeModel[] = [{
id: 'node1', width: 100, height: 100, offsetX: 100, offsetY: 100,
},
{
id: 'node2', width: 100, height: 100, offsetX: 300, offsetY: 100,
shape: { type: 'Basic', shape: 'Ellipse' },
}];
let connectors: ConnectorModel[] = [{
id: 'connector1', type: 'Straight',
sourcePoint: { x: 100, y: 300 }, targetPoint: { x: 200, y: 400 },
}];
let handles: UserHandleModel[] = [
{ name: 'handle', margin: { top: 0, bottom: 0, left: 0, right: 0 }, offset: 0,
pathData: 'M 376.892,225.284L 371.279,211.95L 376.892,198.617L 350.225,211.95L 376.892,225.284 Z',
side: 'Top', horizontalAlignment: 'Center', verticalAlignment: 'Center',
pathColor: 'yellow' }];
let diagram: Diagram = new Diagram({
...
connectors: connectors, nodes: nodes,
selectedItems: { constraints: SelectorConstraints.All, userHandles: handles },
getCustomTool: getTool
...
});
diagram.appendTo('#diagram');getDescription Function|string
<div id='diagram'></div>let connector1: ConnectorModel = {
id: 'connector1', type: 'Straight',
sourcePoint: { x: 100, y: 100 },targetPoint: { x: 200, y: 200 },
annotations: [{ 'content': 'label', 'offset': 0, 'alignment': 'Center' }]
};
let connector2: ConnectorModel = {
id: 'connector2', type: 'Straight',
sourcePoint: { x: 400, y: 400 }, targetPoint: { x: 600, y: 600 },
};
let diagram: Diagram;
diagram = new Diagram({
width: 1000, height: 1000,
connectors: [connector1, connector2],
snapSettings: { constraints: SnapConstraints.ShowLines },
getDescription: getAccessibility
});
diagram.appendTo('#diagram');
function getAccessibility(obj: ConnectorModel, diagram: Diagram): string {
let value: string;
if (obj instanceof Connector) {
value = 'clicked on Connector';
} else if (obj instanceof TextElement) {
value = 'clicked on annotation';
}
else if (obj instanceof Decorator) {
value = 'clicked on Decorator';
}
else { value = undefined; }
return value;
}getNodeDefaults Function|string
Helps to return the default properties of node
<div id='diagram'></div>let nodes: NodeModel[] = [{
id: 'node1', height: 100, offsetX: 100, offsetY: 100,
annotations: [{ content: 'Default Shape' }]
},
{
id: 'node2', width: 100, height: 100, offsetX: 300, offsetY: 100,
shape: {
type: 'Basic', shape: 'Ellipse'
},
annotations: [{ content: 'Ellipse' }]
}
];
let diagram: Diagram = new Diagram({
...
nodes: nodes,
getNodeDefaults: (node: NodeModel) => {
let obj: NodeModel = {};
if (obj.width === undefined) {
obj.width = 145;
}
obj.style = { fill: '#357BD2', strokeColor: 'white' };
obj.annotations = [{ style: { color: 'white', fill: 'transparent' } }];
return obj;
},
...
});
diagram.appendTo('#diagram');height string|number
Defines the height of the diagram model.
historyManager History
Customizes the undo redo functionality
layers LayerModel[]
A collection of JSON objects where each object represents a layer. Layer is a named category of diagram shapes.
layout LayoutModel
Layout is used to auto-arrange the nodes in the Diagram area
locale string
Overrides the global culture and localization value for this component. Default global culture is ‘en-US’.
mode RenderingMode
Defines the diagram rendering mode.
- SVG - Renders the diagram objects as SVG elements
- Canvas - Renders the diagram in a canvas
model UmlSequenceDiagramModel
Defines the model for the diagram.
<div id='diagram'></div>const model: UmlSequenceDiagramModel = {
participants: [
{
id: 'User', content: 'User', width: 100, height: 50,
showDestructionMarker: true,
isActor: true,
activationBoxes: [
{ id: 'act1', startMessageID: 'MSG1', endMessageID: 'MSG3' }
]
},
{
id: 'Server', content: 'Server', width: 100, height: 50,
showDestructionMarker: true,
isActor: false,
activationBoxes: [
{ id: 'act2', startMessageID: 'MSG1', endMessageID: 'MSG3' }
]
}
],
messages: [
{ id: 'MSG1', content: 'User sends request', fromParticipantID: 'User', toParticipantID: 'Server' },
{ id: 'MSG2', content: 'Processing', fromParticipantID: 'Server', toParticipantID: 'Server' },
{ id: 'MSG3', content: 'Server sends response', fromParticipantID: 'Server', toParticipantID: 'User' }
],
fragments: [
{
id: 'frag1', type: 'Optional',
conditions: [
{ content: 'Interactions', messageIds: ['MSG1', 'MSG2', 'MSG3'] }
]
}
]
};
const diagram: Diagram = new Diagram({
// Other properties
model: model
});
diagram.appendTo('#diagram');nodeDefaults NodeModel
Helps to assign the default properties of nodes
nodeTemplate string|Function
Customizes the node template
nodes NodeModel[]
Defines the collection of nodes
<div id='diagram'></div>let nodes: NodeModel[] = [{
id: 'node1', width: 100, height: 100, offsetX: 100, offsetY: 100,
annotations: [{ content: 'Default Shape' }]
},
{
id: 'node2', width: 100, height: 100, offsetX: 300, offsetY: 100,
shape: {
type: 'Basic', shape: 'Ellipse'
},
annotations: [{ content: 'Path Element' }]
}
];
let diagram: Diagram = new Diagram({
...
nodes: nodes,
...
});
diagram.appendTo('#diagram');pageSettings PageSettingsModel
Page settings enable to customize the appearance, width, and height of the Diagram page.
<div id='diagram'></div>let diagram: Diagram = new Diagram({
...
pageSettings: { width: 800, height: 600, orientation: 'Landscape',
background: { color: 'blue' }, boundaryConstraints: 'Infinity'},
...
});
diagram.appendTo('#diagram');rulerSettings RulerSettingsModel
Defines the properties of both horizontal and vertical guides/rulers to measure the diagram area.
<div id='diagram'></div>let arrange: Function = (args: IArrangeTickOptions) => {
if (args.tickInterval % 10 == 0) {
args.tickLength = 25;
}
}
let diagram: Diagram = new Diagram({
...
rulerSettings: { showRulers: true,
horizontalRuler: { segmentWidth: 50, orientation: 'Horizontal', interval: 10, arrangeTick: arrange },
verticalRuler: {segmentWidth: 200,interval: 20, thickness: 20,
tickAlignment: 'LeftOrTop', segmentWidth: 50, markerColor: 'red' }
},
...
});
diagram.appendTo('#diagram');scrollSettings ScrollSettingsModel
Defines the current zoom value, zoom factor, scroll status and view port size of the diagram
segmentThumbShape SegmentThumbShapes
Defines the segmentThumbShape
segmentThumbSize number
Specifies the size of the segment thumb. When not set, it defaults to matching the underlying path data.
selectedItems SelectorModel
Defines the collection of selected items, size and position of the selector
serializationSettings SerializationSettingsModel
Defines the serialization settings of diagram.
<div id='diagram'></div>let diagram: Diagram = new Diagram({
...
serializationSettings: { preventDefaults: true },
...
});
diagram.appendTo('#diagram');setNodeTemplate Function|string
setNodeTemplate helps to customize the content of a node
<div id='diagram'></div>let getTextElement: Function = (text: string) => {
let textElement: TextElement = new TextElement();
textElement.width = 50;
textElement.height = 20;
textElement.content = text;
return textElement;
};
let nodes: NodeModel[] = [{
id: 'node1', height: 100, offsetX: 100, offsetY: 100,
annotations: [{ content: 'Default Shape' }]
},
{
id: 'node2', width: 100, height: 100, offsetX: 300, offsetY: 100
}
];
let diagram: Diagram = new Diagram({
...
nodes: nodes,
setNodeTemplate : setNodeTemplate,
...
});
diagram.appendTo('#diagram');function setNodeTemplate() {
setNodeTemplate: (obj: NodeModel, diagram: Diagram): StackPanel => {
if (obj.id === ‘node2’) {
let table: StackPanel = new StackPanel();
table.orientation = ‘Horizontal’;
let column1: StackPanel = new StackPanel();
column1.children = [];
column1.children.push(getTextElement(‘Column1’));
addRows(column1);
let column2: StackPanel = new StackPanel();
column2.children = [];
column2.children.push(getTextElement(‘Column2’));
addRows(column2);
table.children = [column1, column2];
return table;
}
return null;
}
…
}
snapSettings SnapSettingsModel
Defines the gridlines and defines how and when the objects have to be snapped
<div id='diagram'></div>let horizontalGridlines: GridlinesModel = {lineColor: 'black', lineDashArray: '1,1' };
let verticalGridlines: GridlinesModel = {lineColor: 'black', lineDashArray: '1,1'};
let diagram: Diagram = new Diagram({
...
snapSettings: { horizontalGridlines, verticalGridlines, constraints: SnapConstraints.ShowLines,
snapObjectDistance: 5, snapAngle: 5 },
...
});
diagram.appendTo('#diagram');tool DiagramTools
Defines the precedence of the interactive tools. They are,
- None - Disables selection, zooming and drawing tools
- SingleSelect - Enables/Disables single select support for the diagram
- MultipleSelect - Enables/Disable MultipleSelect select support for the diagram
- ZoomPan - Enables/Disable ZoomPan support for the diagram
- DrawOnce - Enables/Disable ContinuousDraw support for the diagram
- ContinuousDraw - Enables/Disable ContinuousDraw support for the diagram
tooltip DiagramTooltipModel
Defines the tooltip that should be shown when the mouse hovers over a node or connector
An object that defines the description, appearance and alignments of tooltip
updateSelection Function|string
Helps to set the undo and redo node selection
<div id='diagram'></div> let connectors: ConnectorModel[] = [{
id: 'connector1',
sourcePoint: { x: 100, y: 300 },
targetPoint: { x: 200, y: 400 },
}];
let diagram: Diagram = new Diagram({
...
connectors: connectors,
updateSelection: (object: ConnectorModel | NodeModel, diagram: Diagram) => {
let objectCollection = [];
objectCollection.push(obejct);
diagram.select(objectCollection);
},
...
});
diagram.appendTo('#diagram');userHandleTemplate string|Function
This property represents the template content of a user handle. The user can define any HTML element as a template.
width string|number
Defines the width of the diagram model.
<div id='diagram'/>let diagram: Diagram = new Diagram({
width:'1000px', height:'500px' });
diagram.appendTo('#diagram');