Dash components¶
The dpd-components package contains Dash components. This package is installed as a
dependency of django-plotly-dash.
The Pipe component¶
Each Pipe component instance listens for messages on a single channel. The value member of any message on that channel whose label matches
that of the component will be used to update the value property of the component. This property can then be used in callbacks like
any other Dash component property.
An example, from the demo application:
import dpd_components as dpd
app.layout = html.Div([
...
dpd.Pipe(id="named_count_pipe", # ID in callback
value=None, # Initial value prior to any message
label="named_counts", # Label used to identify relevant messages
channel_name="live_button_counter"), # Channel whose messages are to be examined
...
])
The value of the message is sent from the server to all front ends with Pipe components listening
on the given channel_name. This means that this part of the message should be small, and it must
be JSON serialisable. Also, there is no guarantee that any callbacks will be executed in the same Python
process as the one that initiated the initial message from server to front end.
The Pipe properties can be persisted like any other DashApp instance, although it is unlikely
that continued persistence of state on each update of this component is likely to be useful.
This component requires a bidirectional connection, such as a websocket, to the server. Inserting
a plotly_message_pipe template tag is sufficient.