All Projects → m-reda → Linker

m-reda / Linker

workflow editor library

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Linker

Litegraph.js
A graph node engine and editor written in Javascript similar to PD or UDK Blueprints, comes with its own editor in HTML5 Canvas2D. The engine can run client side or server side using Node. It allows to export graphs as JSONs to be included in applications independently.
Stars: ✭ 2,735 (+3117.65%)
Mutual labels:  workflow, editor
Diagram Maker
A library to display an interactive editor for any graph-like data.
Stars: ✭ 2,086 (+2354.12%)
Mutual labels:  workflow, editor
Wfd
flowable workflow designer base on @antv/g6
Stars: ✭ 639 (+651.76%)
Mutual labels:  workflow, editor
Vue Blocks
Vue2 dataflow graph editor
Stars: ✭ 201 (+136.47%)
Mutual labels:  workflow, editor
React Design Editor
React Design Editor has started to developed direct manipulation of editable design tools like Powerpoint, We've developed it with reactjs, ant.design, fabricjs
Stars: ✭ 687 (+708.24%)
Mutual labels:  workflow, editor
Setup Msys2
GitHub Action to setup MSYS2 (MSYS, MINGW64 and/or MINGW32)
Stars: ✭ 78 (-8.24%)
Mutual labels:  workflow
Xpiks
Cross-Platform Image Keywording Software for microstock photographers and illustrators
Stars: ✭ 81 (-4.71%)
Mutual labels:  editor
Nipype tutorial
Learn Nipype with these tutorial notebooks - go here to see them online -->
Stars: ✭ 76 (-10.59%)
Mutual labels:  workflow
Gistlyn
Run Roslyn Gists
Stars: ✭ 75 (-11.76%)
Mutual labels:  editor
Fmacs
Emacs clone in Forth.
Stars: ✭ 84 (-1.18%)
Mutual labels:  editor
Flyte
Accelerate your ML and Data workflows to production. Flyte is a production grade orchestration system for your Data and ML workloads. It has been battle tested at Lyft, Spotify, freenome and others and truly open-source.
Stars: ✭ 1,242 (+1361.18%)
Mutual labels:  workflow
Omnia
Stars: ✭ 81 (-4.71%)
Mutual labels:  editor
Goguru
GoGuru is a Golang plugin for SublimeText 3 that integrates the Go guru tool.
Stars: ✭ 78 (-8.24%)
Mutual labels:  editor
Launch Kit
An awesome tool-kit for launching Cosmos-SDK and Tendermint-based projects
Stars: ✭ 82 (-3.53%)
Mutual labels:  workflow
Machine
Machine is a workflow/pipeline library for processing data
Stars: ✭ 78 (-8.24%)
Mutual labels:  workflow
Laravel Whoops Editor
Laravel Whoops Editor helps to open your code editor from exception stack trace.
Stars: ✭ 83 (-2.35%)
Mutual labels:  editor
Agilework
可视化低代码快速开发平台,面向业务、企业管理系统定制开发平台和应用平台,包括设计器、应用端。提供业务配置和集成开发能力,用户通过可视化拖拉拽配置式操作即可快速构建出能同时在PC和移动端运行的各类管理系统,对于企业客户的信息系统在管理模式、业务流程、表单界面、数据可视化展示、IoT管控等个性化需求,可以通过设计器,快速的进行个性化配置。并支持企业微信,公众号,钉钉等移动集成,实现用户跨区域移动办公。从而构建企业个性化的行业应用、集成应用和复杂的业务报表。
Stars: ✭ 76 (-10.59%)
Mutual labels:  workflow
Jbpm
a Business Process Management (BPM) Suite
Stars: ✭ 1,226 (+1342.35%)
Mutual labels:  workflow
Read Only Coding
Automator services to make coding in Xcode easier
Stars: ✭ 82 (-3.53%)
Mutual labels:  workflow
Auto Assign Action
An action which adds reviewers to the pull request when the pull request is opened.
Stars: ✭ 78 (-8.24%)
Mutual labels:  workflow


ScreenShot

Codacy Badge

Linker is Node Editor Library, I built this library for a new project I'm working on, besides I was interested in building one.

Note: This is a beta version.

Installation

1- Required files
<script src="https://code.jquery.com/jquery-3.2.0.min.js"></script>
<script src="linker.min.js"></script>

<link rel="stylesheet" href="linker.min.css">
2- Add the html container
<div id="linker"></div>
3- Initialize the linker
$(document).ready(function () {
	var linker = $('#linker').linker();
});

Demo

demo

You can download the demo files from dist folder

Live Demo

Usage

Add new node
var node = linker.node({id: 'first', name: 'First Node', x: 100, y: 100});

You can pass any data as a node and read it from the events handler

Add new input
var node_in = node.input('input_id', 'Input Name');

You can add multiple inputs

Add new output
var node_out = node.output('output_id', 'Output Name');

You can add multiple outputs

Add path between two nodes
node_out.connect(node2_in);

You can connect the output to multiple inputs

Add path without triggering onConnect event
node_out.connect(node2_in, true);

Node Events

onDrag: When the node position change
node.onDrag = function (x, y) {
	console.log(x, y, this);
	
	// 'x, y' is the new position
	// 'this' is the node object
};
onDragFinish: When the dragging finish
node.onDragFinish = function (x, y) {
	console.log(x, y, this);
	
	// 'x, y' is the new position
	// 'this' is the node object
};
onRemove: When delete the node
node.onRemove = function () {
	console.log(this);
};
onSetting: When setting's icon clicked
node.onSetting = function () {
	alert('Setting ' + this.name);
};

Output Events

onConnect: When this output connect to new input
node_out.onConnect = function (input) {
	console.log(this, input);
	
	// 'this' is the output object
	// 'this.node' is the output parent node object
	// '$(this.el)' is the output DOM element
	
	// 'input' is the input object
	// 'input.node' is the output parent node object
	// '$(input.el)' is the input DOM element
};
onRemove: When this output path remove
node_out.onRemove = function (index) {
	console.log(index)
};

Options

var linker = $('#linker').linker({ 
	// hide setting icons from the nodes
	settingIcon: false
});

Example

$(document).ready(function () {
	var linker = $('#linker').linker();

	// add a node
	var node1 = linker.node({id: 'first', name: 'First Node', x: 100, y: 100});

	// when the node position change
	node1.onDrag = function (x, y) {
		console.log(x, y, this); // print the new position and the node object
	};

	// trigger when delete the node
	node1.onRemove = function () {
		console.log(this); // print the node object
	};

	// trigger when setting icon clicked
	node1.onSetting = function () {
		alert('Setting ' + this.name);
	};

	// add an input
	node1.input('input_id', 'Input Name');

	// add an output
	var node1_out = node1.output('output_id', 'Output Name');

	// trigger when this output connect to new input
	node1_out.onConnect = function (input) {
		console.log(this, input); // print the output and the input objects
	};

	// trigger when this output link remove
	node1_out.onRemove = function (index) {
		console.log(index)
	};

	// add node 2
	var node2 = linker.node({id: 'second', name: 'Second Node', x: 400, y: 200});
	var node2_in = node2.input('input_id', 'Input Name');

	node2.onSetting = function () {
		alert('Setting ' + this.name);
	};

	// add path between two nodes
	node1_out.connect(node2_in);
});

Development environment

nmp install to install required modules

gulp watch to compile sass and javascript files

Credits

Linker is inspired by NEditorJS

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].