Skip to content
JavaScript diagramming library for interactive flowcharts, org charts, design tools, planning tools, visual languages.
JavaScript TypeScript HTML CSS
Branch: master
Clone or download

Latest commit

WalterNorthwoods 2.1.17
Changes for 2.1.17

* Added the Radial Adornment Buttons sample, showing a selection Adornment, only on one node, that is like a context menu with buttons arranged in a circle around the selected node.
* Added the Donut Charts sample, showing a simple circular bar chart in each node.
* Fixed exporting the Picture.reloadSource and Picture.redraw methods.
* Fixed the LinkingBaseTool.temporaryFromPort and LinkingBaseTool.temporaryToPort property setters to replace the port of the corresponding temporary node. This allows customization of a LinkingTool by setting either or both of those two properties.
* Fixed Diagram.makeImage with a Picture SVG data URI source, in the same manner as in 2.1.16.
* Fixed undo of a Shape.geometry setting, after its GraphObject.desiredSize had been set. This particular sequence of events was discovered in the use of the GeometryReshapingTool extension.
Latest commit 413e08d May 24, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github clearer wording in issue template Jan 25, 2020
api 2.1.17 May 24, 2020
assets 2.1.17 May 24, 2020
extensions 2.1.17 May 24, 2020
extensionsJSM 2.1.17 May 24, 2020
extensionsTS 2.1.17 May 24, 2020
intro 2.1.17 May 24, 2020
learn 2.1.14 Apr 17, 2020
projects 2.1.17 May 24, 2020
release 2.1.17 May 24, 2020
samples 2.1.17 May 24, 2020
samplesTS 2.1.13 Apr 10, 2020
.gitattributes Update .gitattributes Jul 18, 2018
.gitignore safety, people Jul 18, 2018
README.md 2.1.16 May 11, 2020
changelog.html 2.1.17 May 24, 2020
download.html 2.1.6 Jan 15, 2020
index.html 2.1.14 Apr 17, 2020
license.html 2.1.14 Apr 17, 2020
package.json 2.1.17 May 24, 2020

README.md

GoJS, a JavaScript Library for HTML Diagrams

GoJS is a JavaScript and TypeScript library for creating and manipulating diagrams, charts, and graphs.

npm open issues last commit downloads Twitter Follow

See GoJS Samples

Get Started with GoJS

GoJS is a flexible library that can be used to create a number of different kinds of interactive diagrams, including data visualizations, drawing tools, and graph editors. There are samples for flowchart, org chart, business process BPMN, swimlanes, timelines, state charts, kanban, network, mindmap, sankey, family trees and genogram charts, fishbone diagrams, floor plans, UML, decision trees, pert charts, Gantt, and hundreds more. GoJS includes a number of built in layouts including tree layout, force directed, radial, and layered digraph layout, and a number of custom layout examples.

GoJS is rendered with an HTML Canvas element (with export to SVG or image formats). GoJS can run in a web browser, or server side in Node or Puppeteer. GoJS Diagrams are backed by Models, with saving and loading typically via JSON.

Read more about GoJS at gojs.net

This repository contains both the library and the sources for all samples, extensions, and documentation. You can use the GitHub repository to quickly search through all of the sources.

Minimal Sample

Graphs are constructed by creating one or more templates, with desired properties data-bound, and adding model data.

<script src="go.js"></script>

<script id="code">
  function init() {
    var $ = go.GraphObject.make;  // for conciseness in defining templates

    var myDiagram =
      $(go.Diagram, "myDiagramDiv",  // create a Diagram for the DIV HTML element
        { // enable undo & redo
          "undoManager.isEnabled": true
        });

    // define a simple Node template
    myDiagram.nodeTemplate =
      $(go.Node, "Auto",  // the Shape will go around the TextBlock
        $(go.Shape, "RoundedRectangle",
          { strokeWidth: 0, fill: "white" },  // default fill is white
          // Shape.fill is bound to Node.data.color
          new go.Binding("fill", "color")),
        $(go.TextBlock,
          { margin: 8 },  // some room around the text
          // TextBlock.text is bound to Node.data.key
          new go.Binding("text", "key"))
      );

    // but use the default Link template, by not setting Diagram.linkTemplate

    // create the model data that will be represented by Nodes and Links
    myDiagram.model = new go.GraphLinksModel(
    [
      { key: "Alpha", color: "lightblue" },
      { key: "Beta", color: "orange" },
      { key: "Gamma", color: "lightgreen" },
      { key: "Delta", color: "pink" }
    ],
    [
      { from: "Alpha", to: "Beta" },
      { from: "Alpha", to: "Gamma" },
      { from: "Beta", to: "Beta" },
      { from: "Gamma", to: "Delta" },
      { from: "Delta", to: "Alpha" }
    ]);
  }
</script>

The above diagram and model code creates the following graph. The user can now click on nodes or links to select them, copy-and-paste them, drag them, delete them, scroll, pan, and zoom, with a mouse or with fingers.

Click the image to see the interactive GoJS Diagram

Support

Northwoods Software offers a month of free developer-to-developer support for GoJS to help you get started on your project.

Read and search the official GoJS forum for any topics related to your questions.

Posting in the forum is the fastest and most effective way of obtaining support for any GoJS related inquiries. Please register for support at Northwoods Software's registration form before posting in the forum.

For any nontechnical questions about GoJS, such as about sales or licensing, please visit Northwoods Software's contact form.

License

The GoJS software license.

Copyright (c) Northwoods Software Corporation

You can’t perform that action at this time.