You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
More edge styling options (Bezier). CytoscapeRender renders edges as "Haystack" edges, a simple line from one node to another. Cytoscape supports more complex edges such as Bezier curves. They don't work (an internal error is thrown) possibly due to incompatibility between cytoscape js/react-cytoscape. Edge labels are supported but could do with styling.
Hover tooltips. Though Cytoscape does not appear to support them, likely because they aren't mobile friendly. Same for double click listeners.
Node & Edge dialogs. Nodes and edges can be selected but other than highlighting them no other behaviour is built in out the box.
We could add a option to display a dialog (either commitd/components dialog or a cytoscape Overlay) on click
Nodes and edges have attributes but they are not displayed anywhere. There is not currently a notion of attribute renderers/parsers. Attribute values are just arbitrary javascript values.
Selection modes. Multi select / bounding box selection is supported by the CytoscapeRenderer. We could add controls/keyboard shortcuts for e.g.:
Select All
Select nodes/edges between
Select just nodes or just edges
Adding nodes and edges to the graph. This is supported by the model and the renderer, there just isn't a react component that triggers it.
Could add to the existing GraphToolbar
Could add context menu support (iVis-at-Bilkent/cytoscape.js-context-menus)
Performance optimisation for >1000 nodes and edges (probably less than 1000 on an old laptop or on mobile)
Dont layout automatically, at least when the graph is large
Avoid per-element selectors where possible - have tried to mitigate this but it still warns - I think due to the labels
Fallback to haystack edges (when we start using bezier curves)
Don't draw labels when zoomed out. min-zoomed-font-size
Web workers might allow layout calculation without locking the browser window
Ontology. Nothing preventing someone rolling their own currently, the model is flexible enough - just that the library does not provide any help currently.
Undo/redo stacks. GraphModel has been designed with them in mind .e.g. model.getCurrentContent(). GraphModel could store past ContentModel instances.
Cytoscape supports undo/redo so we could push it into the renderer, it just wouldn't be controllable programmatically
Expand/collapse. There is a cytoscape plugin for it. Would require changes to the GraphModel.
Test mobile support. Cytoscape supports touch events and I think the event listeners I'm using are generic enough for it to just work, but this is untested.
Node icons. Nodes have an icon property (string). Cytoscape supports urls to images / data urls. We could look into how an icon library could be wired up (potentially non-trivial).
Read Only mode (disable selection)
Add features that cytoscape already supports (potentially quick wins):
min-zoomed-font-size