diff --git a/app/app_db/app.db b/app/app_db/app.db index cc90c59..0ef9bfa 100644 Binary files a/app/app_db/app.db and b/app/app_db/app.db differ diff --git a/app/pages/dashboards.py b/app/pages/dashboards.py index b1ef416..41a14ba 100644 --- a/app/pages/dashboards.py +++ b/app/pages/dashboards.py @@ -6,6 +6,7 @@ from pathlib import Path from tools.load_css import load_css from app_db.app_db import get_list, send_cmd from ui.selectboxes import get_groups, get_id +from tools.numgen import get_num, update_num import bcrypt @@ -41,48 +42,88 @@ def sidebar(): dashborad() +#------------------------------------------------------------------------------------- +# Dialog Dashboard anlegen +#------------------------------------------------------------------------------------- + @st.dialog("Dashboard anlegen") -def dialog_create_dashboard(): - txt_username = st.text_input("Benutzername") - txt_firstname = st.text_input("Vorname") - txt_lastname = st.text_input("Nachname") - txt_email = st.text_input("Email") - txt_pwd = st.text_input("Kennwort", type="password") - cmb_role = st.selectbox("Rolle", get_roles(), index=None) +def dialog_create_dashboard(dash_id): + + dash_types = ["page", "url"] + df_groups = get_groups() + groups = df_groups["group"].tolist() + + txt_dash_id = st.text_input("Dash-Id", value=dash_id, disabled=True) + col1, col2 = st.columns([2,1],vertical_alignment="center") + with col1: + txt_dash_text = st.text_input(label="Dashboard") + with col2: + is_active = st.checkbox(label="Aktiv", value=1) + txt_dash_description = st.text_area(label="Beschreibung") + cmb_dash_type = st.selectbox(label="Typ", options=dash_types) + txt_page_file = st.text_input(label="Page") + cmb_group = st.selectbox(label="Gruppe", options=groups, placeholder="Gruppe auswählen") + txt_order_no = st.text_input(label="Order-Nr") + if st.button("Save"): - if create_user( - username=txt_username, - firstname=txt_firstname, - lastname=txt_lastname, - email=txt_email, - role_id=get_id(cmb_role), - password=txt_pwd - ): - st.session_state.save_msg = f"✅ Benutzer '{txt_username}' erfolgreich gespeichert" + + sql = """ + insert into dashboards ( + dash_id, + dash_text, + dash_description, + group_id, + page_file, + dash_type, + active, + order_no + ) + values (?, ?, ?, ?, ?, ?, ?, ?) + """ + params = ( + txt_dash_id, + txt_dash_text, + txt_dash_description, + get_id(cmb_group), + txt_page_file, + cmb_dash_type, + is_active, + txt_order_no, + ) + + if send_cmd(sql, params): + st.session_state.save_msg = f"✅ Dashboard '{txt_dash_text}' erfolgreich gespeichert" + update_num(dash_id,1,"numgen_dashboard") else: st.session_state.save_msg = "❌ Fehler beim Speichern" st.rerun() + +#------------------------------------------------------------------------------------- +# Dialog Dashboard löschen +#------------------------------------------------------------------------------------- + @st.dialog("Dashboard löschen") -def dialog_delete_dashboard(id): - if id == None: - st.write("kein Benutzer ausgewählt") +def dialog_delete_dashboard(dash_id): + if dash_id == None: + st.write("kein Dashboard ausgewählt") else: - df = get_list("select username from users where id = ?",(id,)) - username = df.iloc[0]["username"] - st.write(f"Der Benutzer {username} wird gelöscht! Sind Sie sicher?") + df = get_list("select dash_text from dashboards where dash_id = ?",(dash_id,)) + dash_text = df.iloc[0]["dash_text"] + st.write(f"Das Dashboard {dash_text} wird gelöscht! Sind Sie sicher?") if st.button("Löschen"): - if username != "admin": - if send_cmd("delete from users where id = ?",(id,)): - st.session_state.delete_msg = f"✅ Benutzer '{username}' erfolgreich gelöscht!" - else: - st.session_state.delete_msg = f"❌ Benutzer '{username}' konnte nicht gelöscht werden!" + if send_cmd("delete from dashboards where dash_id = ?",(dash_id,)): + st.session_state.delete_msg = f"✅ Dashboard '{dash_text}' erfolgreich gelöscht!" else: - st.session_state.delete_msg = f"❌ Benutzer '{username}' darf nicht gelöscht werden!" + st.session_state.delete_msg = f"❌ Daschboard '{dash_id}' konnte nicht gelöscht werden!" st.rerun() +#------------------------------------------------------------------------------------- +# Dialog Dashboard bearbeiten +#------------------------------------------------------------------------------------- + @st.dialog("Dashboard bearbeiten") def dialog_edit_dashboard(dash_id): if dash_id == None: @@ -104,7 +145,7 @@ def dialog_edit_dashboard(dash_id): on d.group_id = g.group_id where d.dash_id = ? - """ + """ df = get_list(sql,(dash_id,)) # Index für Gruppe aus DB für selectbox ermitteln @@ -189,7 +230,7 @@ def dashborad(): with col_create_dashboard: if st.button(label="Dashboard anlegen", use_container_width=True, icon=":material/add:"): - dialog_create_dashboard() + dialog_create_dashboard(get_num("numgen_dashboard")) if "save_msg" in st.session_state: st.toast(st.session_state.save_msg) del st.session_state.save_msg