1. INCLUDE JS AND CSS FILES
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/alyssaxuu/flowy/flowy.min.css">
<script src="https://cdn.jsdelivr.net/gh/alyssaxuu/flowy/flowy.min.js"></script>
2. HTML
<div class="create-flowy">The block to be dragged</div>
<div id="canvas"></div>
3. JAVASCRIPT
var spacing_x = 40;
var spacing_y = 100;
// Initialize Flowy
flowy(document.getElementById("canvas"), onGrab, onRelease, onSnap, onRearrange, spacing_x, spacing_y);
function onGrab(block){
// When the user grabs a block
}
function onRelease(){
// When the user releases a block
}
function onSnap(block, first, parent){
// When a block snaps with another one
}
function onRearrange(block, parent){
// When a block is rearranged
}
4. Methods
Get the flowchart data
// As an object
flowy.output();
// As a JSON string
JSON.stringify(flowy.output());
The JSON object that gets outputted looks like this:
{
"html": "",
"blockarr": [],
"blocks": [
{
"id": 1,
"parent": 0,
"data": [
{
"name": "blockid",
"value": "1"
}
],
"attr": [
{
"id": "block-id",
"class": "block-class"
}
]
}
]
}
Here's what each property means:
Key |
Value type |
Description |
html |
string |
Contains the canvas data |
blockarr |
array |
Contains the block array generated by the library (for import purposes) |
blocks |
array |
Contains the readable block array |
id |
integer |
Unique value that identifies a block |
parent |
integer |
The id of the parent a block is attached to (-1 means the block has no parent) |
data |
array of objects |
An array of all the inputs within a certain block |
name |
string |
The name attribute of the input |
value |
string |
The value attribute of the input |
attr |
array of objects |
Contains all the data attributes of a certain block |
Delete all blocks
To remove all blocks at once use:
Currently there is no method to individually remove blocks. The only way to go about it is by splitting branches manually.
5. Callbacks
In order to use callbacks, you need to add the functions when initializing Flowy, as explained before.On grab
function onGrab(block){
// When the user grabs a block
}
Gets triggered when a user grabs a block with the class create-flowy
Parameter |
Type |
Description |
block |
javascript DOM element |
The block that has been grabbed |
On release
function onRelease(){
// When the user lets go of a block
}
Gets triggered when a user lets go of a block, regardless of whether it attaches or even gets released in the canvas.
On snap
function onSnap(block, first, parent){
// When a block can attach to a parent
return true;
}
Gets triggered when a block can attach to another parent block. You can either prevent the attachment, or allow it by using return true;
Parameter |
Type |
Description |
block |
javascript DOM element |
The block that has been grabbed |
first |
boolean |
If true, the block that has been dragged is the first one in the canvas |
parent |
javascript DOM element |
The parent the block can attach to |
On rearrange
function onRearrange(block, parent){
// When a block is rearranged
return true;
}
Gets triggered when blocks are rearranged and are dropped anywhere in the canvas, without a parent to attach to. You can either allow the blocks to be deleted, or prevent it and thus have them re-attach to their previous parent using return true;
Parameter |
Type |
Description |
block |
javascript DOM element |
The block that has been grabbed |
parent |
javascript DOM element |
The parent the block can attach to |