dash-draggable icon indicating copy to clipboard operation
dash-draggable copied to clipboard

dcc.Store not saving property values on refresh

Open SterlingButters opened this issue 6 years ago • 1 comments

...
dcc.Store(id='position-store', storage_type='session', data={'lastXs': [], 'lastYs': []}),
...
# Commit last known position to memory
@app.callback(
    Output('position-store', 'data'),
    [Input('draggable', 'lastX'),
     Input('draggable', 'lastY')],
    [State('position-store', 'data')]
)
def remember_position(lastX, lastY, data):
    data = data or {}
    x_history = data['lastXs'] or []
    y_history = data['lastYs'] or []
    if lastX is not None:
        x_history.append(lastX)
    if lastY is not None:
        y_history.append(lastY)

    data = {'lastXs': x_history, 'lastYs': y_history}
    return data


@app.callback(
    Output('draggable', 'position'),
    [Input('position-store', 'modified_timestamp')],
    [State('position-store', 'data')]
)
def remember_position(timestamp, data):
    if timestamp is None:
        raise PreventUpdate

    x = data.get('lastXs')
    y = data.get('lastYs')
    print(data)
    if len(x) > 0:
        print(x[-1], y[-1])
        return {'x': x[-1], 'y': y[-1]}
    else:
        return {'x': None, 'y': None}
...

SterlingButters avatar Feb 20 '19 00:02 SterlingButters

Should perhaps consider simplifying returned property from lastX, lastY, ... to moved: Boolean

SterlingButters avatar Feb 22 '19 02:02 SterlingButters