Source code for dtale.dash_application.lock_zoom
import plotly.graph_objs as go
from dash.dependencies import Input, Output, State
from dash.exceptions import PreventUpdate
from dtale.charts.utils import MAX_GROUPS
[docs]def init_callbacks(dash_app):
def lock_zoom(clicks, relayout_data, figure):
if not clicks:
raise PreventUpdate
figure = go.Figure(figure)
if relayout_data:
figure.update_layout(scene_camera=relayout_data["scene.camera"])
return figure
for i in range(1, MAX_GROUPS + 1):
dash_app.callback(
Output("chart-{}".format(i), "figure"),
[Input("lock-zoom-btn", "n_clicks")],
[
State("chart-{}".format(i), "relayoutData"),
State("chart-{}".format(i), "figure"),
],
)(lock_zoom)