1.2.0 • Published 4 years ago

flowychart v1.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

FlowyChart

A javascript library to create responsive flowcharts with ease.

Demo

Table of contents

Features

Currently, FlowyChart supports the following:

  • Responsive drag and drop
  • Automatic snapping
  • Block rearrangement
  • Delete blocks
  • Automatic block centering
  • Conditional snapping
  • Import saved files
  • Mobile support
  • Vanilla javascript (no dependencies)
  • npm install

Installation

Adding FlowyChart to your WebApp is incredibly simple: 1. Link build/flowyChart.min.js to your project 2. Create a canvas element that will contain the flowchart (for example, <div id="canvas"></div>) 3. Create the draggable blocks with the .create-flowyChart class (for example, <div class="create-flowyChart">Grab me</div>)

Running FlowyChart

Initialization

flowyChart(canvas, ongrab, onrelease, onsnap, spacing_x, spacing_y);
ParameterTypeDescription
canvasjavascript DOM elementThe element that will contain the blocks
ongrabfunction (optional)Function that gets triggered when a block is dragged
onreleasefunction (optional)Function that gets triggered when a block is released
onsnapfunction (optional)Function that gets triggered when a block snaps with another one
spacing_xinteger (optional)Horizontal spacing between blocks (default 20px)
spacing_yinteger (optional)Vertical spacing between blocks (default 80px)

To define the blocks that can be dragged, you need to add the class .create-flowyChart

Example

HTML

<div class="create-flowyChart">The block to be dragged</div>
<div id="canvas"></div>

Javascript

const spacing_x = 40;
const spacing_y = 100;

// Initialize FlowyChart
flowyChart(document.getElementById('canvas'), onGrab, onRelease, onSnap, 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
}

Callbacks

In order to use callbacks, you need to add the functions when initializing FlowyChart, 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-flowyChart

ParameterTypeDescription
blockjavascript DOM elementThe 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;

ParameterTypeDescription
blockjavascript DOM elementThe block that has been grabbed
firstbooleanIf true, the block that has been dragged is the first one in the canvas
parentjavascript DOM elementThe parent the block can attach to

Methods

Get the flowchart data

// As an object
flowyChart.output();

// As a JSON string
JSON.stringify(flowyChart.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:

KeyValue typeDescription
htmlstringContains the canvas data
blockarrarrayContains the block array generated by the library (for import purposes)
blocksarrayContains the readable block array
idintegerUnique value that identifies a block
parentintegerThe id of the parent a block is attached to (-1 means the block has no parent)
dataarray of objectsAn array of all the inputs within a certain block
namestringThe name attribute of the input
valuestringThe value attribute of the input
attrarray of objectsContains all the data attributes of a certain block

Import the flowchart data

flowyChart.import(output)

Allows you to import entire flowcharts initially exported using the previous method, flowyChart.output()

ParameterTypeDescription
outputjavascript DOM elementThe data from flowyChart.output()

Delete all blocks

To remove all blocks at once use:

flowyChart.deleteBlocks()
1.2.0

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago