nope/resources/svgjs/README.md

81 lines
2.9 KiB
Markdown
Raw Normal View History

2020-11-02 16:53:22 +00:00
# ZeMA-SGT
A SVG-Render-Engine based on SVG.JS
## Used Libraries
| Library Name | Link | Functionality |
| ---- | ---- | ---- |
| *SVG.js* | http://svgjs.com/ | Simplify the SVG-Drawings |
| *svg.select.js* | https://svgjs.com/docs/2.7/plugins/svg-select-js/ | Enabling selecting of Elements with a defined shape |
| *svg.draggable.js* | https://github.com/svgdotjs/svg.draggable.js | Enabling dragging of Nodes |
| *svg.resize.js* | https://github.com/svgdotjs/svg.resize.js | Enabling nice interface for resizing Nodes |
## Functionality
A Graph consits of Nodes and Edges. Action-Containers provide functionalities to interact with the Graph.
### Nodes
+ All nodes of a graph are based on a [`IBaseNode`](http://mszema24:8080/m.karkowski/ZeMA-SGT/blob/master/types/IBaseNode.ts).
+ [`ISingleNode`](http://mszema24:8080/m.karkowski/ZeMA-SGT/blob/master/types/ISingleNode.ts) extend the IBaseNode, by adding the Possibility to add [`IConnectors`](http://mszema24:8080/m.karkowski/ZeMA-SGT/blob/master/types/IConnector.ts) to the Node.
+ [`IContainerNode`](http://mszema24:8080/m.karkowski/ZeMA-SGT/blob/master/types/IContainerNode.ts)'s extend a Single-Nodes and allow adding Childs - `IBaseNodes` - to a Node.
The Type-Definitions are located in `./types`.
#### Events of a Base-Node
A Node fires Event on the following actions:
+ onMouseOver
+ onMouseOut
+ onMouseDown
+ onMouseUp
+ onClick
+ onDoubleClick
+ onHover
+ onDragging
+ onDragEnd
+ onResizing
+ onResizingEnd
#### Obersvables of a Base-Node
You can subscribe to the following Content of Elements:
+ the *Events* mentioned above
+ localPosition - The position of the Node in relation to its Parent given as Left-Corner
+ localCenterPosition - The position of the Node's Center in relation to its Parent given as Left-Corner
+ globalPosition - The position of the Node in the Drawing
+ globalCenterPosition - The position of the Node's Center in the Drawing
+ width
+ height
+ style
#### Available-Shapes
At the Current release the following shapes are available by default:
+ Circular-Images
+ Ellipse
+ Hexagons
+ Rectangles
+ Triangles
+ Text
They are located in `./src/nodes/basic/`
##### Adding custom Base-Shapes:
To add custom shapes create a the corresponding class in `./src/nodes/basic/`. Then link the class in the assembly (`./src/assembly/manual-assembly.ts`) Therefore a Template is provided in `./src/nodes/basic/Template.dat`
To define your custom shape, the following methods must be provided by your class:
+ `updateElement`, which will be called on changes of the shape (its `width` and `height` etc).
+ `drawElement`, which will be called during the creation of the Shape
### Customize the Default-Look
To Customize the Default Look edit the `src\DefaultStyle.ts` File. The allowed Structure of a Style is defined in `types\IStyle`. The Default Theme uses the Color-Shapes of the `coperate Theme` (see ngx-admin).