Graph theory (network) library for visualisation and analysis

Overview

GitHub repo Twitter updates News and tutorials Questions at StackOverflow Ask a question at StackOverflow Community discussions License DOI Cite npm Download Extensions npm installs master branch tests unstable branch tests

Cytoscape.js

Graph theory (network) library for visualisation and analysis : https://js.cytoscape.org

Description

Cytoscape.js is a fully featured graph theory library. Do you need to model and/or visualise relational data, like biological data or social networks? If so, Cytoscape.js is just what you need.

Cytoscape.js contains a graph theory model and an optional renderer to display interactive graphs. This library was designed to make it as easy as possible for programmers and scientists to use graph theory in their apps, whether it's for server-side analysis in a Node.js app or for a rich user interface.

You can get started with Cytoscape.js with one line:

var cy = cytoscape({ elements: myElements, container: myDiv });

Learn more about the features of Cytoscape.js by reading its documentation.

Documentation

You can find the documentation and downloads on the project website.

Roadmap

Future versions of Cytoscape.js are planned in the milestones of the Github issue tracker. You can use the milestones to see what's currently planned for future releases.

Contributing to Cytoscape.js

Would you like to become a Cytoscape.js contributor? You can contribute in technical roles (e.g. features, testing) or non-technical roles (e.g. documentation, outreach), depending on your interests. Get in touch with us by posting a GitHub discussion.

For the mechanics of contributing a pull request, refer to CONTRIBUTING.md.

Feature releases are made monthly, while patch releases are made weekly. This allows for rapid releases of first- and third-party contributions.

Citation

To cite Cytoscape.js in a paper, please cite the Oxford Bioinformatics issue:

Cytoscape.js: a graph theory library for visualisation and analysis

Franz M, Lopes CT, Huck G, Dong Y, Sumer O, Bader GD

Bioinformatics (2016) 32 (2): 309-311 first published online September 28, 2015 doi:10.1093/bioinformatics/btv557 (PDF)

PubMed Abstract

Build dependencies

Install node and npm. Run npm install before using npm run.

Build instructions

Run npm run <target> in the console. The main targets are:

Building:

  • build: do all builds of the library (umd, min, umd, esm)
  • build:min : do the unminified build with bundled dependencies (for simple html pages, good for novices)
  • build:umd : do the umd (cjs/amd/globals) build
  • build:esm : do the esm (ES 2015 modules) build
  • clean : clean the build directory
  • docs : build the docs into documentation
  • release : build all release artifacts
  • watch : automatically build lib for debugging (with sourcemap, no babel, very quick)
    • good for general testing on debug/index.html
    • served on http://localhost:8080 or the first available port thereafter, with livereload on debug/index.html
  • watch:babel : automatically build lib for debugging (with sourcemap, with babel, a bit slower)
    • good for testing performance or for testing out of date browsers
    • served on http://localhost:8080 or the first available port thereafter, with livereload on debug/index.html
  • watch:umd : automatically build prod umd bundle (no sourcemap, with babel)
    • good for testing cytoscape in another project (with a "cytoscape": "file:./path/to/cytoscape" reference in your project's package.json)
    • no http server
  • dist : update the distribution js for npm etc.

Testing:

The default test scripts run directly against the source code. Tests can alternatively be run on a built bundle. The library can be built on node>=6, but the library's bundle can be tested on node>=0.10.

  • test : run all testing & linting
  • test:js : run the mocha tests on the public API of the lib (directly on source files)
    • npm run test:js -- -g "my test name" runs tests on only the matching test cases
  • test:build : run the mocha tests on the public API of the lib (on a built bundle)
    • npm run build should be run beforehand on a recent version of node
    • npm run test:build -- -g "my test name" runs build tests on only the matching test cases
  • test:modules : run unit tests on private, internal API
    • npm run test:modules -- -g "my test name" runs modules tests on only the matching test cases
  • lint : lint the js sources via eslint
  • benchmark : run all benchmarks
  • benchmark:single : run benchmarks only for the suite specified in benchmark/single

Release instructions

  1. Do each backport patch release before the corresponding current release. This ensures that npm lists the current version as the latest one.
  2. Make sure the docs are updated with the list of releases in documentation/md/intro.md
  3. Update the VERSION environment variable, e.g. export VERSION=1.2.3
  4. Confirm all the tests are passing: npm run test (see also test/index.html for browser testing)
  5. Confirm all the tests are passing in IE9:
    1. npm run watch:umd
    2. Open an IE9 VM
    3. Open http://yourip:8081/test/ie.html in IE
  6. Prepare a release: npm run release
  7. Review the files that were just built in the previous step. Try out the newly-built docs and demos.
  8. Add the the release to git: git add . && git commit -m "Build $VERSION"
  9. Update the package version: npm version $VERSION
  10. Push the release changes: git push && git push --tags
  11. Publish the release to npm: npm publish .
  12. Create a release for Zenodo from the latest tag
  13. For feature releases: Create a release announcement on the blog. Share the announcement on mailing lists and social media.

Tests

Mocha tests are found in the test directory. The tests can be run in the browser or they can be run via Node.js (npm run test:js).

Comments
  • TypeScript Definition for Cytoscape.js - It is being worked on now!

    TypeScript Definition for Cytoscape.js - It is being worked on now!

    For any of you that use or are thinking of using TypeScript to strengthen your JS coding there is s TS definition file project in the works.

    Fabian-Schmidt (not me) is working on it at: https://github.com/Fabian-Schmidt/DefinitelyTyped/tree/master/cytoscape

    I use TypeScript so I'm excited to be able to use cytoscape.js with TypeScript.

    Rick

    opened by Cyberider 55
  • Colloborative Cytoscape.js editor

    Colloborative Cytoscape.js editor

    This project would entail the creation of a functional, alpha -- or perhaps slightly pre-alpha -- app that has the following features:

    • The app shall allow for multiple, simultaneous editors of a graph.
    • The app shall allow for element (node or edge) creation.
    • The app shall allow for element deletion.
    • The app shall allow for user comments.
    • The app shall allow for links to be shared in order to access graphs.

    You can think of the project as something akin to Google Docs but for graphs.

    The technologies involved would include:

    • JS + HTML + CSS
    • Node.js
    • A JS/HTML templating system, like React, Ractive, Angular, or similar
    • Gulp
    • Websockets using a lib like Socket.io
    • Transaction handling, using a lib like ShareJS
    • And more as needed

    Or the project could use Meteor and would function as a nice Meteor-Cytoscape.js demo as well.

    help-wanted 
    opened by maxkfranz 43
  • Cytoscape /React component ?

    Cytoscape /React component ?

    Hi there,

    I am trying to build a Cytoscape React component for one my project. I was wondering if there was anything else out there already or of I should start building one from scratch.

    What I have found so far

    • https://github.com/CyComponent/CyNetwork
    • https://github.com/OAGr/guesstimate/blob/master/src/lib/components/cytoscape.jsx I from the discussion here https://github.com/cytoscape/cytoscape.js/issues/1040
    • Redux : http://stackoverflow.com/questions/36155214/redux-and-libraries-with-state-cytoscape

    @OAGr : you gave up on cytoscape for the latest versions of guesstimate. Is that related to React ? Do you have any feedbacks or guidelines to use Cytoscape + React together ?

    opened by clemsos 33
  • background image sometimes doesn't render until node is clicked

    background image sometimes doesn't render until node is clicked

    Hi,

    I'm using:

    • cytoscape.js version 2.7.8
    • cose-bilkent version1.3.8 to do a nested grid layout
    • Chrome version 52.0.2743.116 and Microsoft Edge 38.14393.0.0 (both on Windows 10)

    ... And I'm encountering what I believe may be a bug regarding the 'background-image' node style. Specifically, sometimes when rendering a graph only some of the nodes properly display the background image. Clicking on the node in question always fixes this (for that individual node).

    I'm receiving no errors or warnings on the debug console of either Chrome or Edge.

    JSBin reproduction link here: https://jsbin.com/zolic/edit?js,console,output

    I suspect that this may be related to the way image caching is handled. Chrome never exhibits this when I pre-load the images before creating the cytoscape object and set the max-age in the caching header to a large value. Edge, on the other hand, seems to always have this issue regardless of pre-load or cache behavior and always issues an http request for each image to see if it might have changed.

    the rendered window (in Edge) ends up looking like this (note that all nodes in "Network Devices" and "USB Controllers" have the same background-image ctyoscape style property set, but only one of each is rendering their background image).

    missing-background-images

    bug 
    opened by JGMarshall 31
  • Relicensing Cytoscape.js to MIT

    Relicensing Cytoscape.js to MIT

    @yuedong2 @gerardohuck @onursumer @ayhun @metincansiper @MissChocoe @bumbu @Trott @ZaWertun @chrtannus @greenify @danielryding @guimeira @mikedias @ktei @robmosca @jfarid27 @Ahsanzia @markov00 @ikavalio @sinansonlu @skasio @JoshTGreenwood @kkirsche @AlexanderPico @grighetto @vojtechkral @furkansahin @randallElliott @ikwattro @nopnop @quatrano @areel @megawebmaster @shakhal

    The Cytoscape Consortium would like to change the license of Cytoscape.js from LGPL3 to MIT. MIT is simpler language than LGPL3; it’s easier to understand. LGPL is more restrictive than MIT, but LGPL suffers from uncertainty and hesitation from developers that MIT does not.

    I don’t think it’s productive to have developers worried about licensing. I think we should make it as easy a choice as possible so developers can just use Cytoscape.js without worry.

    I’d like to thank all our contributors and users for their code and feedback. Cytoscape.js has grown a lot as a result.

    We plan on switching the license by 25 January, unless our contributors object. We hope that the change helps Cytoscape.js to continue to grow, and we hope that our contributors support this decision.

    If you’d like to leave your thoughts in this thread regarding licensing, I’d appreciate it.

    Thanks!

    LGPL3 license (old license) TLDR summary: https://tldrlegal.com/license/gnu-lesser-general-public-license-v3-(lgpl-3)

                       GNU LESSER GENERAL PUBLIC LICENSE
                           Version 3, 29 June 2007
    
     Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.
    
    
      This version of the GNU Lesser General Public License incorporates
    the terms and conditions of version 3 of the GNU General Public
    License, supplemented by the additional permissions listed below.
    
      0. Additional Definitions.
    
      As used herein, "this License" refers to version 3 of the GNU Lesser
    General Public License, and the "GNU GPL" refers to version 3 of the GNU
    General Public License.
    
      "The Library" refers to a covered work governed by this License,
    other than an Application or a Combined Work as defined below.
    
      An "Application" is any work that makes use of an interface provided
    by the Library, but which is not otherwise based on the Library.
    Defining a subclass of a class defined by the Library is deemed a mode
    of using an interface provided by the Library.
    
      A "Combined Work" is a work produced by combining or linking an
    Application with the Library.  The particular version of the Library
    with which the Combined Work was made is also called the "Linked
    Version".
    
      The "Minimal Corresponding Source" for a Combined Work means the
    Corresponding Source for the Combined Work, excluding any source code
    for portions of the Combined Work that, considered in isolation, are
    based on the Application, and not on the Linked Version.
    
      The "Corresponding Application Code" for a Combined Work means the
    object code and/or source code for the Application, including any data
    and utility programs needed for reproducing the Combined Work from the
    Application, but excluding the System Libraries of the Combined Work.
    
      1. Exception to Section 3 of the GNU GPL.
    
      You may convey a covered work under sections 3 and 4 of this License
    without being bound by section 3 of the GNU GPL.
    
      2. Conveying Modified Versions.
    
      If you modify a copy of the Library, and, in your modifications, a
    facility refers to a function or data to be supplied by an Application
    that uses the facility (other than as an argument passed when the
    facility is invoked), then you may convey a copy of the modified
    version:
    
       a) under this License, provided that you make a good faith effort to
       ensure that, in the event an Application does not supply the
       function or data, the facility still operates, and performs
       whatever part of its purpose remains meaningful, or
    
       b) under the GNU GPL, with none of the additional permissions of
       this License applicable to that copy.
    
      3. Object Code Incorporating Material from Library Header Files.
    
      The object code form of an Application may incorporate material from
    a header file that is part of the Library.  You may convey such object
    code under terms of your choice, provided that, if the incorporated
    material is not limited to numerical parameters, data structure
    layouts and accessors, or small macros, inline functions and templates
    (ten or fewer lines in length), you do both of the following:
    
       a) Give prominent notice with each copy of the object code that the
       Library is used in it and that the Library and its use are
       covered by this License.
    
       b) Accompany the object code with a copy of the GNU GPL and this license
       document.
    
      4. Combined Works.
    
      You may convey a Combined Work under terms of your choice that,
    taken together, effectively do not restrict modification of the
    portions of the Library contained in the Combined Work and reverse
    engineering for debugging such modifications, if you also do each of
    the following:
    
       a) Give prominent notice with each copy of the Combined Work that
       the Library is used in it and that the Library and its use are
       covered by this License.
    
       b) Accompany the Combined Work with a copy of the GNU GPL and this license
       document.
    
       c) For a Combined Work that displays copyright notices during
       execution, include the copyright notice for the Library among
       these notices, as well as a reference directing the user to the
       copies of the GNU GPL and this license document.
    
       d) Do one of the following:
    
           0) Convey the Minimal Corresponding Source under the terms of this
           License, and the Corresponding Application Code in a form
           suitable for, and under terms that permit, the user to
           recombine or relink the Application with a modified version of
           the Linked Version to produce a modified Combined Work, in the
           manner specified by section 6 of the GNU GPL for conveying
           Corresponding Source.
    
           1) Use a suitable shared library mechanism for linking with the
           Library.  A suitable mechanism is one that (a) uses at run time
           a copy of the Library already present on the user's computer
           system, and (b) will operate properly with a modified version
           of the Library that is interface-compatible with the Linked
           Version.
    
       e) Provide Installation Information, but only if you would otherwise
       be required to provide such information under section 6 of the
       GNU GPL, and only to the extent that such information is
       necessary to install and execute a modified version of the
       Combined Work produced by recombining or relinking the
       Application with a modified version of the Linked Version. (If
       you use option 4d0, the Installation Information must accompany
       the Minimal Corresponding Source and Corresponding Application
       Code. If you use option 4d1, you must provide the Installation
       Information in the manner specified by section 6 of the GNU GPL
       for conveying Corresponding Source.)
    
      5. Combined Libraries.
    
      You may place library facilities that are a work based on the
    Library side by side in a single library together with other library
    facilities that are not Applications and are not covered by this
    License, and convey such a combined library under terms of your
    choice, if you do both of the following:
    
       a) Accompany the combined library with a copy of the same work based
       on the Library, uncombined with any other library facilities,
       conveyed under the terms of this License.
    
       b) Give prominent notice with the combined library that part of it
       is a work based on the Library, and explaining where to find the
       accompanying uncombined form of the same work.
    
      6. Revised Versions of the GNU Lesser General Public License.
    
      The Free Software Foundation may publish revised and/or new versions
    of the GNU Lesser General Public License from time to time. Such new
    versions will be similar in spirit to the present version, but may
    differ in detail to address new problems or concerns.
    
      Each version is given a distinguishing version number. If the
    Library as you received it specifies that a certain numbered version
    of the GNU Lesser General Public License "or any later version"
    applies to it, you have the option of following the terms and
    conditions either of that published version or of any later version
    published by the Free Software Foundation. If the Library as you
    received it does not specify a version number of the GNU Lesser
    General Public License, you may choose any version of the GNU Lesser
    General Public License ever published by the Free Software Foundation.
    
      If the Library as you received it specifies that a proxy can decide
    whether future versions of the GNU Lesser General Public License shall
    apply, that proxy's public statement of acceptance of any version is
    permanent authorization for you to choose that version for the
    Library.
    

    MIT license (new license) TLDR summary: https://tldrlegal.com/license/mit-license

    Copyright © 2016 The Cytoscape Consortium
    
    Permission is hereby granted, free of charge, to any person obtaining a copy of
    this software and associated documentation files (the “Software”), to deal in
    the Software without restriction, including without limitation the rights to
    use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
    of the Software, and to permit persons to whom the Software is furnished to do
    so, subject to the following conditions:
    
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    
    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.
    
    priority-1-high 
    opened by maxkfranz 31
  • Export to SVG extension

    Export to SVG extension

    Write an extension that builds up svg objects based on the computed style of each of the elements and returns a root svg element.

    Using an automatic canvas-to-svg library will not work.

    Original content follows:

    Would be wonderful to be able to export to SVG, completing this fantastic library that is cytoscapejs. Is an export to SVG perhaps in the roadmap?

    help-wanted 
    opened by acardona 30
  • Suppressing warning messages

    Suppressing warning messages

    Issue type Core Library & Cose Layout.

    Bug report

    Environment info

    • Cytoscape.js: v3.3.1:
    • Browser: Chrome 71.0.3578.98 (Official Build) (64-bit):

    Current (buggy) behaviour

    I think this has to do with both the 'cose' layout as well as the core library. The main concern is adding nodes dynamically (using elements.forEach(function (element) { cy.add(element) })) or adding directly to the graph (using { (..), "elements": elements, (..) }). When adding directly to the graph, the core library has no problems with adding the nodes using the 'cose' layout, but when adding dynamically, a warning is shown in the console that nodes probably overlap and therefore edges are impossible to draw.

    I can imagine edges are impossible to draw when at first they overlap, but in the end, the layout determines the position of the nodes and then they don't overlap anymore. Even when using something like cy.batch(function () {}) to add all nodes (dynamically) at once and then run the layout, the warnings are still shown.

    This does not happen for 'breadthfirst' or 'random' layouts and (as far as I have tested) only for 'bezier' and 'straight' edge styles.

    Desired behaviour

    Some way to suppress these warnings when adding nodes dynamically, while the layout is responsible for the position of nodes.

    NOTE: I did find a workaround: a (random) position when adding nodes solves the warning.

    Minimum steps to reproduce

    https://jsbin.com/manukazata/1/edit?js,console,output

    opened by MatthijsBon 29
  • Update rollup to the latest version 🚀

    Update rollup to the latest version 🚀


    ☝️ Important announcement: Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! Find out how to migrate to Snyk and more at greenkeeper.io


    The devDependency rollup was updated from 1.32.1 to 2.0.0.

    This version is not covered by your current version range.

    If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.


    Publisher: lukastaegert License: MIT

    Find out more about this release.


    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 27
  • Add multi-line label support

    Add multi-line label support

    Project idea: This project would entail the implementation of multiline labels in Cytoscape.js. This would allow for manual breaking of lines using the newline character (i.e. \n), or autobreaking based on some maximum line length.

    Copied from later in the thread, as this is very important to note:

    I'm going to note in this ticket, as it should have been mentioned here explicitly before, that the want for multiline labels itself is very likely indicative of design issues: If you find yourself thinking "Gee, I wish I could wrap these labels", then you should consider that your labels themselves are too long.

    Labels are meant to label elements, not to fully describe them. Long labels are -- more often than not -- bad UI. They clutter the graph and distract the user from the real content, the visual representation of the graph data.

    It's near trivial to clip labels with "..." and show more information elsewhere (e.g. a qtip, a panel, etc.). This, combined with time constraints and performance considerations, has made me hesitant to implement multiline labels.

    priority-3-low help-wanted 
    opened by maxkfranz 27
  • Add overlay-shape property

    Add overlay-shape property

    Minimal possible implementation for #2379

    While default overlay shape remains round-rectangle, this gives users the possibility to use another shape.

    The result is here:

    Screen Shot 2021-06-09 at 11 30 54

    It's clear it's not perfect for certain shapes, but at least it improves the visual look for the basic shapes.

    opened by zakjan 24
  • Feature/relation arrow shapes

    Feature/relation arrow shapes

    Issue type

    Feature request

    New feature that adds two additional arrow shapes to cytoscape's edge points; one and many. This follows the data cardinality model.

    This new feature allows users to better represent data lineage graphs. With the 'one' edge, users can show a one relation, either on the target, source, or both. The same is for the many, crows feet, arrow shape. These styles are based on the business rules of a relation between two database tables. http://www2.cs.uregina.ca/~bernatja/crowsfoot.html

    The motivation for this feature was based on need. For the current project that I am professionally working on, clients want to be able to see the cardinality between two database tables, which are represented by nodes. The edge lines are the relations and the arrow shape is meant to show what kind of relation exists. Since there was not a crows feet option, nor a single line with a gap between it and the node, I decided to make the options instead.

    stale 
    opened by mscale-wmp 22
  • Bg + Animate

    Bg + Animate

    Hi,

    I have a node with a specific bg.

    Doing

    node.data().bg = color ;
    
    

    works fine.

    But when I call the animate function like

     node.animate({
            style: { 'background-color': 'red'  }
     }).delay( 100 ).animate({
        style: { 'background-color': node.data().bg }
      })
    

    node.data().bg = color stop working

    Can anyone tells me what's wrong with my code ?

    Thank's

    bug 
    opened by rac021 0
  • Bump flat and mocha

    Bump flat and mocha

    Bumps flat to 5.0.2 and updates ancestor dependency mocha. These dependencies need to be updated together.

    Updates flat from 4.1.1 to 5.0.2

    Commits
    • e5ffd66 Release 5.0.2
    • fdb79d5 Update dependencies, refresh lockfile, format with standard.
    • e52185d Test against node 14 in CI.
    • 0189cb1 Avoid arrow function syntax.
    • f25d3a1 Release 5.0.1
    • 54cc7ad use standard formatting
    • 779816e drop dependencies
    • 2eea6d3 Bump lodash from 4.17.15 to 4.17.19
    • a61a554 Bump acorn from 7.1.0 to 7.4.0
    • 20ef0ef Fix prototype pollution on unflatten
    • Additional commits viewable in compare view

    Updates mocha from 7.2.0 to 10.2.0

    Release notes

    Sourced from mocha's releases.

    v10.2.0

    10.2.0 / 2022-12-11

    :tada: Enhancements

    • #4945: API: add possibility to decorate ESM name before import (@​j0tunn)

    :bug: Fixes

    :book: Documentation

    v10.1.0

    10.1.0 / 2022-10-16

    :tada: Enhancements

    :nut_and_bolt: Other

    v10.0.0

    10.0.0 / 2022-05-01

    :boom: Breaking Changes

    :nut_and_bolt: Other

    ... (truncated)

    Changelog

    Sourced from mocha's changelog.

    10.2.0 / 2022-12-11

    :tada: Enhancements

    • #4945: API: add possibility to decorate ESM name before import (@​j0tunn)

    :bug: Fixes

    :book: Documentation

    10.1.0 / 2022-10-16

    :tada: Enhancements

    :nut_and_bolt: Other

    10.0.0 / 2022-05-01

    :boom: Breaking Changes

    :nut_and_bolt: Other

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Parallel edges with 'curve-style': 'straight'

    Parallel edges with 'curve-style': 'straight'

    Parallel edges configuration in curve-style: straight

    It will be good having parallel edges in curve-style: straight with configuration, like distance between parallel edges.

    opened by fekkyIS 0
  • Mini viewport that displays where in the over all canvas you are zoomed into

    Mini viewport that displays where in the over all canvas you are zoomed into

    Description of new feature A small viewport on the corner that displays which part of the over all canvas the user is currently looking at

    What should the new feature do? For visual features, include an image/mockup of the expected output. running cy.fit() will show the full network, which is reflected in the mini viewport image

    Zooming in should highlight what is in the main canvas image

    Motivation for new feature

    Describe your use case for this new feature. Allows for users to be able to see the whole network even when zoomed in. This is helpful for more larger networks e.g. in the Tokyo railway network example, it would help if you knew where in the overall Tokyo network the station you are currently zoomed into is

    For reviewers

    Reviewers should ensure that the following tasks are carried out for incorporated issues:

    • [ ] Ensure that the reporter has adequately described their idea. If not, elicit more information about the use case. You should iteratively build a spec together.
    • [ ] Ensure that the issue is a good fit for the core library. Some things are best done in extensions (e.g. UI-related features that aren't style-related). Some things are best done by app authors themselves -- instead of in Cytoscape libraries.
    • [ ] The issue has been associated with a corresponding milestone.
    • [ ] The commits have been incorporated into the unstable branch via pull request. The corresponding pull request is cross-referenced.
    stale 
    opened by Czar-Ec 2
  • Edge selection on Safari

    Edge selection on Safari

    Hi When I try the following example in Safari browser on my mac (macOS version 12.6) https://ivis-at-bilkent.github.io/cytoscape.js-avsdf/demo.html

    When I click on an edge it seems to me that all the edges are selected Screenshot 2022-11-11 at 14 59 15

    Environment info

    • Cytoscape.js version :
    • Browser/Node.js & version :

    Screenshot 2022-11-11 at 14 58 49

    Current (buggy) behavior

    What does the bug do? It highlights all the edges when you click on one edge

    Desired behavior

    What do you expect Cytoscape.js to do instead? only one edge should be selected like on Chrome

    Minimum steps to reproduce

    What do you need to do to reproduce the issue? just open the demo on Safari on mac https://ivis-at-bilkent.github.io/cytoscape.js-avsdf/demo.html

    browser-bug pinned 
    opened by pydrogo 1
  • Connected edge not rendered after hiding and showing node with `display: none`

    Connected edge not rendered after hiding and showing node with `display: none`

    Environment info

    • Cytoscape.js version : 3.23.0
    • Browser/Node.js & version : Google Chrome 104.0.5112.81

    Current (buggy) behaviour

    When you hide nodes with style('display', 'none') and show them again with style('display', 'element') sometimes not all edges are rendered.

    Note: If you move node with invisible edge it will trigger edge rendering and edge will become visible.

    Desired behaviour

    After hiding and showing nodes all connected edges should become visible.

    Minimum steps to reproduce

    What do you need to do to reproduce the issue?

    https://jsbin.com/tucolapoqi

    Attention to the bottom edge: from "ladybug" to "aphid".

    UPD: Also you can reproduce same behavior by doing it in sequence:

    • hide "bird"
    • hide "ladybug"
    • show "bird"
    • show "ladybug"

    For reviewers

    Reviewers should ensure that the following tasks are carried out for incorporated issues:

    • [ ] Ensure that the reporter has included a reproducible demo. They can easily fork this JSBin demo: http://jsbin.com/fiqugiq
    • [ ] The issue has been associated with a corresponding milestone.
    • [ ] The commits have been incorporated into the corresponding branches. Bug-fix patches go on
      • [ ] master,
      • [ ] unstable, and
      • [ ] the previous feature release branch (e.g. 1.1.x if the current release is 1.2).
    • [ ] The issue has been labelled as a bug, if necessary.
    bug pinned 
    opened by drauggres 3
Releases(v3.23.0)
Owner
Cytoscape Consortium
Cytoscape Consortium
A JavaScript PDF generation library for Node and the browser

PDFKit A JavaScript PDF generation library for Node and the browser. Description PDFKit is a PDF document generation library for Node and the browser

null 8.5k Jan 2, 2023
A javascript Bitcoin library for node.js and browsers.

BitcoinJS (bitcoinjs-lib) A javascript Bitcoin library for node.js and browsers. Written in TypeScript, but committing the JS files to verify. Release

bitcoinjs 4.8k Jan 1, 2023
🤖 GPU accelerated Neural networks in JavaScript for Browsers and Node.js

brain.js GPU accelerated Neural networks in JavaScript for Browsers and Node.js About brain.js is a GPU accelerated library for Neural Networks writte

brain.js 13.4k Jan 7, 2023
A pure JavaScript implementation of git for node and browsers!

isomorphic-git isomorphic-git is a pure JavaScript reimplementation of git that works in both Node.js and browser JavaScript environments. It can read

isomorphic-git 6.7k Jan 4, 2023
A full stack for bitcoin and blockchain-based applications

Bitcore Infrastructure to build Bitcoin and blockchain-based applications for the next generation of financial technology. Getting Started Requirement

BitPay 4.5k Jan 4, 2023
Yet another Linux distribution for voice-enabled IoT and embrace Web standards

YodaOS is Yet another Linux Distribution for voice-enabled IoT and embrace Web standards, thus it uses JavaScript as the main application/scripting la

YODAOS Project 1.2k Dec 22, 2022
Mad science p2p pipe across the web using webrtc that uses your Github private/public key for authentication and a signalhub for discovery

webcat Mad science p2p pipe across the web using webrtc that uses your Github private/public key for authentication and a signalhub for discovery We a

Mathias Buus 428 Dec 30, 2022
New tab browser extension (aka startpage) with nord colors and a dancing goose.

Nordic goose Nordic goose is a new tab extension (aka startpage) with nord colors and a dancing goose. Features: ?? Look at a dancing goose ?? Beautif

PrettyCoffee 9 Dec 30, 2022
A personal school project to model the behaviour of the human immune system as a network graph with interactive visualisation.

An educational tool designed to help users understand the immune system. Made using Processing 5 for Java Script

Oscar Bullen 2 Jun 18, 2022
Minimize the amount of walls necessary by graph theory!

minCutWall Minimize the amount of walls necessary by graph theory! I've tried my best to make the code as easy as possible to understand. Feel free to

Josef Wittmann 5 Oct 29, 2022
Composable data visualisation library for web with a data-first approach now powered by WebAssembly

What is Muze? Muze is a free data visualization library for creating exploratory data visualizations (like Tableau) in browser, using WebAssembly. It

Charts.com 1.2k Dec 29, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Lab demonstrating how to share sensitive data, using Basis Theory tokenization.

sendsecure.ly A Basis Theory Lab that enables users to securely share passwords, credentials, or any other sensitive data with another person. The app

Basis Theory Labs 28 Dec 29, 2022
🚧 WIP: Bartosz Milewski's "Category Theory for Programmers" Korean translation 📚

프로그래머를 위한 범주론 본 레파지토리는 Bartosz Milewsk의 Category Theory for Programmers을 번역하며 학습한 레파지토리입니다. ?? 목차 Part 1. 범주:합성의 본질 타입과 함수 크고 작은 범주 Kleisli Categories

Minsu Kim 22 Aug 18, 2022
This Repo Contains projects that demonstrate some concepts / algorithms / implemetation in some form of digital visualisation

Hacktoberfest 2022 OPEN FIRST Pull Request - GET STARTED WITH OPENSOURCE AND WIN SOME AWWSOME SWAGS ?? Contributors of Hacktoberfest 2022 This project

null 5 Nov 7, 2022
Simple but Complete & Fast network monitor for your home network

netmon Netmon is an opensource project for protecting and monitoring your home network. Netmon is written to run on a Raspberry PI and is optimized to

Tommaso Ventafridda 9 Jul 6, 2022
geotiff.js is a small library to parse TIFF files for visualization or analysis. It is written in pure JavaScript, and is usable in both the browser and node.js applications.

geotiff.js Read (geospatial) metadata and raw array data from a wide variety of different (Geo)TIFF files types. Features Currently available function

geotiff.js 649 Dec 21, 2022
An NLP library for building bots, with entity extraction, sentiment analysis, automatic language identify, and so more

NLP.js If you're looking for the version 3 docs, you can find them here Version 3 "NLP.js" is a general natural language utility for nodejs. Currently

AXA 5.3k Dec 29, 2022