import dash
import dash_table
import dash_html_components as html
from dash.dependencies import Input, Output, State
import pandas as pd
magic = pd.DataFrame(data=[[1,2,3,4],[1,2,3,4]],columns=["abra","ka","da","bra"])
app = dash.Dash()
app.layout = html.Div([
dash_table.DataTable(
id='table',
columns=[{"name": i, "id": i} for i in magic.columns],
data=magic.to_dict('records'),
editable=True,
row_deletable=True
),
html.Button('Add Row', id='editing-rows-button', n_clicks=0)
])
app.clientside_callback(
"""
function (selected,n_clicks,data,columns) {
if (n_clicks > 0) {
newRow = {}
for (i in columns) {
newRow[columns[i]['name']] = null
}
data.push(newRow)
}
console.log(n_clicks)
console.log(data)
return data
}
""",
Output('table', 'data'),
[Input('table', 'active_cell'), Input('editing-rows-button', 'n_clicks')],
[State('table', 'data'), State('table', 'columns')]
)
if __name__ == '__main__':
app.run_server(debug=True)