Modify the order of the sidebar, remove tabs from users
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
[client]
|
[client]
|
||||||
showSidebarNavigation = false
|
showSidebarNavigation = false
|
||||||
toolbarMode = "minimal"
|
toolbarMode = "minimal"
|
||||||
|
# toolbarMode = "auto"
|
||||||
|
|
||||||
|
[theme]
|
||||||
|
# primaryColor = "blue"
|
||||||
|
# backgroundColor = "black"
|
||||||
|
# secondaryBackgroundColor = "blue"
|
||||||
|
# borderColor = "blue"
|
||||||
|
|||||||
Binary file not shown.
14
app/auth.py
14
app/auth.py
@@ -97,7 +97,9 @@ def get_sidebar(role_text: str, username: str):
|
|||||||
d.dash_id,
|
d.dash_id,
|
||||||
d.dash_text,
|
d.dash_text,
|
||||||
d.page_file,
|
d.page_file,
|
||||||
d.dash_type
|
d.dash_type,
|
||||||
|
d.order_no as dash_order,
|
||||||
|
g.order_no as group_order
|
||||||
from
|
from
|
||||||
groups g
|
groups g
|
||||||
left join dashboards d
|
left join dashboards d
|
||||||
@@ -105,6 +107,7 @@ def get_sidebar(role_text: str, username: str):
|
|||||||
where
|
where
|
||||||
g.active = 1
|
g.active = 1
|
||||||
and d.active = 1
|
and d.active = 1
|
||||||
|
order by g.order_no, d.order_no
|
||||||
"""
|
"""
|
||||||
else:
|
else:
|
||||||
sql = """
|
sql = """
|
||||||
@@ -114,7 +117,9 @@ def get_sidebar(role_text: str, username: str):
|
|||||||
p.dash_id,
|
p.dash_id,
|
||||||
d.dash_text,
|
d.dash_text,
|
||||||
d.page_file,
|
d.page_file,
|
||||||
d.dash_type
|
d.dash_type,
|
||||||
|
d.order_no as dash_order,
|
||||||
|
g.order_no as group_order
|
||||||
FROM
|
FROM
|
||||||
users u
|
users u
|
||||||
left join permissions p
|
left join permissions p
|
||||||
@@ -129,13 +134,10 @@ def get_sidebar(role_text: str, username: str):
|
|||||||
and d.active = 1
|
and d.active = 1
|
||||||
and p.active = 1
|
and p.active = 1
|
||||||
and u.username = ?
|
and u.username = ?
|
||||||
order by
|
order by g.order_no, d.order_no
|
||||||
g.order_no,
|
|
||||||
d.order_no
|
|
||||||
"""
|
"""
|
||||||
params = (username,) if "?" in sql else None
|
params = (username,) if "?" in sql else None
|
||||||
df = get_list(sql, params)
|
df = get_list(sql, params)
|
||||||
|
|
||||||
return df
|
return df
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|||||||
0
app/pages/roles.py
Normal file
0
app/pages/roles.py
Normal file
@@ -350,86 +350,86 @@ def user():
|
|||||||
if "selected_user_id" not in st.session_state:
|
if "selected_user_id" not in st.session_state:
|
||||||
st.session_state.selected_user_id = None
|
st.session_state.selected_user_id = None
|
||||||
|
|
||||||
tab_user, tab_role, tab_permission = st.tabs(["Benutzer", "Rollen", "Berechtigungen"])
|
# tab_user, tab_role, tab_permission = st.tabs(["Benutzer", "Rollen", "Berechtigungen"])
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------
|
||||||
# Benutzerverwaltung
|
# Benutzerverwaltung
|
||||||
#--------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
with tab_user:
|
# with tab_user:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
df = get_list("""
|
df = get_list("""
|
||||||
select
|
select
|
||||||
u.id,
|
u.id,
|
||||||
u.username,
|
u.username,
|
||||||
u.firstname,
|
u.firstname,
|
||||||
u.lastname,
|
u.lastname,
|
||||||
u.role_id || ' | ' || r.role_text as role,
|
u.role_id || ' | ' || r.role_text as role,
|
||||||
u.new_pwd,
|
u.new_pwd,
|
||||||
u.active
|
u.active
|
||||||
from
|
from
|
||||||
users u
|
users u
|
||||||
left join roles r
|
left join roles r
|
||||||
on u.role_id = r.role_id
|
on u.role_id = r.role_id
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
col_find_user, col_create_user, col_modify_user, col_delete_user = st.columns([3,2,2,2], vertical_alignment="bottom")
|
col_find_user, col_create_user, col_modify_user, col_delete_user = st.columns([3,2,2,2], vertical_alignment="bottom")
|
||||||
|
|
||||||
with col_find_user:
|
with col_find_user:
|
||||||
txt_search = st.text_input(label="Suche", label_visibility="hidden", placeholder="Benutzer, Vorname, ...", icon=":material/search:")
|
txt_search = st.text_input(label="Suche", label_visibility="hidden", placeholder="Benutzer, Vorname, ...", icon=":material/search:")
|
||||||
|
|
||||||
with col_create_user:
|
with col_create_user:
|
||||||
if st.button(label="Benutzer anlegen", use_container_width=True, icon=":material/person_add:"):
|
if st.button(label="Benutzer anlegen", use_container_width=True, icon=":material/person_add:"):
|
||||||
dialog_create_user()
|
dialog_create_user()
|
||||||
if "save_msg" in st.session_state:
|
if "save_msg" in st.session_state:
|
||||||
st.toast(st.session_state.save_msg)
|
st.toast(st.session_state.save_msg)
|
||||||
del st.session_state.save_msg
|
del st.session_state.save_msg
|
||||||
|
|
||||||
with col_modify_user:
|
with col_modify_user:
|
||||||
if st.button(label="Benutzer bearbeiten", use_container_width=True, icon=":material/person:"):
|
if st.button(label="Benutzer bearbeiten", use_container_width=True, icon=":material/person:"):
|
||||||
if not st.session_state.selected_user_id is None:
|
if not st.session_state.selected_user_id is None:
|
||||||
dialog_modify_user(st.session_state.selected_user_id)
|
dialog_modify_user(st.session_state.selected_user_id)
|
||||||
else:
|
else:
|
||||||
st.toast("❌ Bitte erst eine Zeile auswählen")
|
st.toast("❌ Bitte erst eine Zeile auswählen")
|
||||||
if "save_msg" in st.session_state:
|
if "save_msg" in st.session_state:
|
||||||
st.toast(st.session_state.save_msg)
|
st.toast(st.session_state.save_msg)
|
||||||
del st.session_state.save_msg
|
del st.session_state.save_msg
|
||||||
|
|
||||||
with col_delete_user:
|
with col_delete_user:
|
||||||
if st.button(label="Benutzer löschen", use_container_width=True, icon=":material/person_remove:"):
|
if st.button(label="Benutzer löschen", use_container_width=True, icon=":material/person_remove:"):
|
||||||
if not st.session_state.selected_user_id is None:
|
if not st.session_state.selected_user_id is None:
|
||||||
dialog_delete_user(st.session_state.selected_user_id)
|
dialog_delete_user(st.session_state.selected_user_id)
|
||||||
else:
|
else:
|
||||||
st.toast("❌ Bitte erst eine Zeile auswählen")
|
st.toast("❌ Bitte erst eine Zeile auswählen")
|
||||||
if "delete_msg" in st.session_state:
|
if "delete_msg" in st.session_state:
|
||||||
st.toast(st.session_state.delete_msg)
|
st.toast(st.session_state.delete_msg)
|
||||||
del st.session_state.delete_msg
|
del st.session_state.delete_msg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if txt_search.strip():
|
if txt_search.strip():
|
||||||
txt_search_norm = txt_search.strip().lower()
|
txt_search_norm = txt_search.strip().lower()
|
||||||
mask = (
|
mask = (
|
||||||
df["username"].fillna("").str.lower().str.contains(txt_search_norm)
|
df["username"].fillna("").str.lower().str.contains(txt_search_norm)
|
||||||
| df["firstname"].fillna("").str.lower().str.contains(txt_search_norm)
|
| df["firstname"].fillna("").str.lower().str.contains(txt_search_norm)
|
||||||
| df["lastname"].fillna("").str.lower().str.contains(txt_search_norm)
|
| df["lastname"].fillna("").str.lower().str.contains(txt_search_norm)
|
||||||
)
|
)
|
||||||
df_view = df.loc[mask].copy()
|
df_view = df.loc[mask].copy()
|
||||||
else:
|
else:
|
||||||
df_view = df.copy()
|
df_view = df.copy()
|
||||||
|
|
||||||
event = st.dataframe(df_view,key="data", on_select="rerun", selection_mode="single-row")
|
event = st.dataframe(df_view,key="data", on_select="rerun", selection_mode="single-row")
|
||||||
rows = event.selection.rows
|
rows = event.selection.rows
|
||||||
if rows:
|
if rows:
|
||||||
row_idx = rows[0]
|
row_idx = rows[0]
|
||||||
st.session_state.selected_user_id = int(df_view.iloc[row_idx]["id"])
|
st.session_state.selected_user_id = int(df_view.iloc[row_idx]["id"])
|
||||||
else:
|
else:
|
||||||
st.session_state.selected_user_id = None
|
st.session_state.selected_user_id = None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ def build_sidebar():
|
|||||||
st.info("Keine Einträge zum Suchbegriff gefunden.")
|
st.info("Keine Einträge zum Suchbegriff gefunden.")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
# --- Gruppiert durchlaufen ---
|
# --- Gruppiert durchlaufen ---
|
||||||
for group_text, df_group in df_view.groupby("group_text"):
|
# df_view = df_view.sort_values(["group_order", "dash_order"]) # vorher noch sortieren
|
||||||
|
for group_text, df_group in df_view.groupby("group_text", sort=False): # und beim gruppieren nicht nach der Gruppe sortieren!
|
||||||
# Expander offen, wenn:
|
# Expander offen, wenn:
|
||||||
# - aktuelle Seite in dieser Gruppe liegt
|
# - aktuelle Seite in dieser Gruppe liegt
|
||||||
group_open = any(
|
group_open = any(
|
||||||
|
|||||||
Reference in New Issue
Block a user