1.0.2 • Published 1 year ago

graph-engine v1.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

Graph

中文README: https://github.com/aiyojun/graph-engine/blob/main/README_ZH.md

Graph is a GUI tool that describes a model of things using nodes and lines. Node data visualization, modular editing, data import and export and other functions. Written in Typescript and rendered by the native DOM api, with no front-end framework intrusion and maximum performance. The subproject graph-engine is the core rendering engine of Graph and can be imported as node_module. Provide concise api invoking. Can be Integrated with any front-end framework (react/vue). Support electron localization deployment.

electron version(machine vision algorithm application, my another opensource project):

image

Usage

import { Graph } from 'graph-engine'

// Create and mount the default theme graph:
const graph = new Graph()
    .mount(document.getElementById('root'))

// Create a node without any in/out ports:    
const node = graph.createNode({ x: 0, y: 0, w: 100, h: 40 })

// More functions please refer to documentation ...
    

Application

Any problem that can be described using nodes and wires can be described using Graph for data visualization, model manipulation, JSON generation, and more. Graph does not constrain your imagination and creativity, it can bring your wild ideas to life.

The functions that can be completed include but are not limited to the following:

  1. Visualize topology data
  2. Construction flow chart
  3. Flow model simulation
  4. ...

Features

Currently, the project provides the following features:

Function points related to Graph (basic function)

NoFunction descriptionDegree of completionTime point
1Graph Node creation2023-03-11
2Operate Node2023-03-11
3Drag Node2023-03-11
4Graph zoom2023-03-11
5Connect nodes2023-03-11
6Wire delete-
7Frame selection50%2023-03-11
8Graph layer management50%2023-03-11
9Edit operation record and withdraw-
10Full snapshot functionality
11Node Incremental Dragging-
12Adsorption alignment-
13Automatic node arrangement-
14Mass node folding with one key-
15Grid background-
16Bright and dark theme2023-03-12
17Dynamic Theme switching2023-03-12

Function points associated with Node

NoFunction descriptionDegree of completionTime point
1Node folding-
2Move node to the top2023-03-11
4Compose nodes to Group2023-03-12
5Group decomposing2023-03-12
6Group folding-
7Group background-
8Move nodes by group2023-03-12
9Generate different Node layer by requirements2023-03-13
10Events management optimization on node layer

Function points associated with Wire

NoFunction descriptionDegree of completionTime point
1Port generation by config2023-03-11
2dynamic ports binding2023-03-13
3Different kinds of wire(optimized bessel,bessel curve,square broken line)2023-03-11
4Dynamic connection wire2023-03-11
5Port and connection validation2023-03-11
6Wire color switching2023-03-11
7Text attach to wire-
8Wire with arrow2023-03-15
9Arrow style switching-

Other functions

NoFunction descriptionDegree of completionTime point
1Cross-end (browser) copy-
2Supports multiple browsers, has been tested in Chrome, Firefox2023-03-11
3Model runtime state simulation2023-03-11
4Customize partial shortcuts10%2023-03-11
5Node graph data import and export2023-03-11
6Status bar prompt5%2023-03-11
7Toggle background-
8Added support for electron (rewrite electron section)2023-03-11
9electron Cross-domain http request
10Publish module library2023-03-16
11Manage with parent-child projects2023-03-16
12Provide ui panels for manipulation2023-03-17
13Switch between Chinese and English2023-03-19
14Thumbnail (generate sketch)-
15Graphic export picture-

Node exists only as a drag-and-drop container, and you can put any element, no matter how complex, into the created Node.

Advantages and characteristics

  • You can leave drag-and-drop nodes, module wiring, etc. to graph-engine and focus on the data logic itself.
  • Very smooth operation experience; Concise api invoking; Seamless integration of any model; Super extensibility...
  • Achieve browser native performance without any framework intrusion. There is no limit to the number of loaded nodes, and the performance depends entirely on the performance of your browser and the computer you are using.
  • Up to the browser console performance monitor, no script invoking time cost unless necessary.
  • Can be integrated with any framework! You can create a node for a Vue component, a node for a React component, or even your own framework with a simple call to the mount interface.
  • If you choose Graph, then don't consider using any flow-chart-graph related projects (not necessarily, I'm shallow)! The performance and architecture beat all flow engines...

If you want to know more about other flow projects, do some research and comparison, etc., similar projects are:

  1. react-flow(react)
  2. vue-flow(vue)
  3. flowy-vue
  4. flowy
  5. WireFlow
  6. react-flow-chart
  7. uber/react-digraph
1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago