-
-
Notifications
You must be signed in to change notification settings - Fork 124
/
Copy pathusage-elements-events.py
69 lines (57 loc) · 1.71 KB
/
usage-elements-events.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import dash
from dash import callback, Input, Output, html
import dash_cytoscape as cyto
import json
app = dash.Dash(__name__)
server = app.server
cyto_elements = [
{"data": {"id": "Node 1", "label": "Node 1"}, "position": {"x": 0, "y": 0}},
{"data": {"id": "Node 2", "label": "Node 2"}, "position": {"x": 50, "y": 50}},
{"data": {"source": "Node 1", "target": "Node 2", "label": ""}},
]
app.layout = html.Div(
[
html.Div(
cyto.Cytoscape(
id="cytoscape",
elements=cyto_elements,
responsive=True,
clearOnUnhover=True,
),
),
html.Div(
[
html.Div(id="mouse-over-node"),
html.Div(id="mouse-over-edge"),
html.Div(id="elements"),
html.Div(id="tap-element"),
]
),
]
)
@callback(
Output("mouse-over-node", "children"),
Output("mouse-over-edge", "children"),
Input("cytoscape", "mouseoverNodeData"),
Input("cytoscape", "mouseoverEdgeData"),
)
def show_mouseoverNodeData(mouseoverNodeData, mouseoverEdgeData):
return (
f"Mouse over node: {str(mouseoverNodeData)}",
f"Mouse over edge: {str(mouseoverEdgeData)}",
)
@callback(
Output("elements", "children"),
Input("cytoscape", "elements"),
)
def show_elements(elements):
return "Updated elements: " + str(elements)
@callback(
Output("tap-element", "children"),
Input("cytoscape", "tapNodeData"),
Input("cytoscape", "tapEdgeData"),
)
def displayTapNode(data, data_):
return f"Tap node: {json.dumps(data, indent=2)}, Tap edge: {json.dumps(data_, indent=2)}"
if __name__ == "__main__":
app.run(debug=True)