from dash import Dash, html, dash_table, dcc, callback, Output, Input, State
import pandas as pd
import plotly.express as px
df = pd.read_csv('test-input_.csv', delimiter=';')
for col in df.columns:
df[col]=df[col].astype(str)
processes = ['CHAT','VOICE']
rynki = ['KNW','MB']
segmenty = ['POSTPAID','PREPAID']
skills = ['MM_CHAT_TECH_ASN','MM_KNW_MULTI_CHAT_ASN']
programy_ids = [5022,5023]
programy_ids_str = (str(x) for x in programy_ids)
dropdown_columns = ["processes", "rynki", "segmenty", "skills", "program_id"]
data_cols = ["2026-01","2026-02","2026-03","2026-04","2026-05","2026-06","2026-07","2026-08","2026-09","2026-10","2026-11","2026-12"]
app = Dash(__name__)
app.layout = [html.Div(children="Hello World"),
dash_table.DataTable(id='adding-rows-table',
data=df.to_dict('records'),
columns=[
{"name": "processes", "id": "processes", "presentation" : "dropdown","editable": True},
{"name": "rynki", "id": "rynki", "presentation": "dropdown", "editable": True},
{"name": "segmenty", "id": "segmenty", "presentation": "dropdown", "editable": True},
{"name": "skills", "id": "skills", "presentation": "dropdown", "editable": True},
{"name": "program_id", "id": "program_id", "presentation": "dropdown", "editable": True}] +[
{"name": c, "id": c, "editable": True} for c in data_cols],
page_size=20,
editable=True,
row_deletable=True,
cell_selectable = True,
dropdown={
"processes": {
"options": [{"label": x, "value": x} for x in processes]
},
"rynki": {
"options": [{"label": x, "value": x} for x in rynki]
},
"segmenty": {
"options": [{"label": x, "value": x} for x in segmenty]
},
"skills": {
"options": [{"label": x, "value": x} for x in skills]
},
"program_id": {
"options": [{"label": x, "value": x} for x in programy_ids_str]
}}
),
html.Button('Add Row', id='editing-rows-button', n_clicks=0)]
# dcc.Graph(id="figure1")]
@callback(
Output('adding-rows-table', 'data'),
Input('editing-rows-button', 'n_clicks'),
State('adding-rows-table', 'data'),
State('adding-rows-table', 'columns'),
prevent_initial_call=True)
def add_row(n_clicks, rows, columns):
if n_clicks > 0:
rows.append({c: '' for c in df.columns})
return rows
if __name__ == '__main__':
app.run(debug=True)
Wyświetlenia: 20