plotly / dash-cytoscape

Interactive network visualization in Python and Dash, powered by Cytoscape.js
https://dash.plot.ly/cytoscape
MIT License
595 stars 120 forks source link

BUG: layout not reset in callback when no edges present in graph #142

Open ManInFez opened 3 years ago

ManInFez commented 3 years ago

Description

Steps/Code to Reproduce

remove line 14, edge in graph, from demos/usage-reset-layoyt.py see https://github.com/plotly/dash-cytoscape/pull/141

Expected Results

Layout should still be updated when pressing reset

Actual Results

nothing happens

Versions

Dash 1.20.0 Dash Core Components 1.1.3 Dash HTML Components 1.16.0 Dash Renderer 1.9.1 Dash HTML Components 0.2.0

Farkites commented 7 months ago

This issue seems to be solved now in master branch:

https://github.com/plotly/dash-cytoscape/assets/35932204/bd14629e-1678-4540-a7bf-b2164bf09ad4

Can we close this @alexcjohnson?

alexcjohnson commented 7 months ago

This bug still exists. When I run usage-reset-button.py exactly as given, both the node positions and the zoom/pan reset. When I remove the edge as in #141, there are three problems:

Two more observations:

  1. It does seem like the precise wording of the bug is correct, the behavior changes when there are no edge present. If for example I add another node that's not connected to anything (but the connection between nodes 1 and 2 is still there) the behavior is as expected, then when I again remove the edge we see the same problems.

  2. The demo uses the grid layout. If I change to the cose layout, on initial draw the layout is applied (moving the nodes away from the given positions) but breadthfirst behaves the same as grid - so there are at least two categories of behavior depending on layout type. After clicking the reset button none of these layout types are applied, ie the nodes keep the positions given.