diff --git a/TODO.md b/TODO.md index 4f2dc18..5677b70 100644 --- a/TODO.md +++ b/TODO.md @@ -8,11 +8,11 @@ - [x] Bereichsteil erstellen - [x] Teil ueber nicht zuweisbare Daten - [x] Kosten auf allen Seiten einblenden -- [ ] app.py Code dokumentieren, PEP 8, verschoenern +- [x] app.py Code dokumentieren, PEP 8, verschoenern - [ ] Uebersicht ueber single, double Kopien - [ ] Benutzerseite, wo er selber Filter erstellen kann, z.B. Anzahl Datasets groesser als ... -- [ ] Diagramm für die Department-Verteilung einbauen (Plotly) -- [ ] Export-Button für gefilterte Excel-Dateien hinzufügen +- [x] Diagramm für die Department-Verteilung einbauen (Plotly) +- [x] Export-Button für gefilterte Excel-Dateien hinzufügen ## ⚙️ Node-RED & AD-Skript - [x] Python-Skript auf lokale Datei-Pipes umstellen diff --git a/analytics/Dockerfile b/analytics/Dockerfile index 50b68e1..2da12e4 100644 --- a/analytics/Dockerfile +++ b/analytics/Dockerfile @@ -4,7 +4,7 @@ WORKDIR /app # Erfordert keine schweren Systempakete, das beschleunigt auch den Build! # Wir installieren direkt die benötigten Python-Bibliotheken -RUN pip3 install --no-cache-dir streamlit pandas plotly +RUN pip3 install --no-cache-dir streamlit pandas plotly openpyxl # Port für Streamlit öffnen EXPOSE 8501 diff --git a/analytics/app.py b/analytics/app.py index 162c64f..b06ff52 100644 --- a/analytics/app.py +++ b/analytics/app.py @@ -2,6 +2,7 @@ import streamlit as st import pandas as pd import plotly.express as px import numpy as np +import io # --- Konstanten --- TB2B = 1024**4 # TB in Bytes @@ -89,6 +90,32 @@ if auswahl == "Übersicht & Metriken": }) ) + # --- Export-Buttons --- + export_col1, export_col2 = col2.columns(2) + + # CSV Export + csv_data = df_department_overview.to_csv(index=True).encode('utf-8') + export_col1.download_button( + label="Export als CSV", + data=csv_data, + file_name="department_overview.csv", + mime="text/csv", + ) + + # Excel Export + excel_buffer = io.BytesIO() + with pd.ExcelWriter(excel_buffer, engine='openpyxl') as writer: + df_department_overview.to_excel(writer, index=True, sheet_name='Department Overview') + excel_data = excel_buffer.getvalue() + + export_col2.download_button( + label="Export als XLSX", + data=excel_data, + file_name="department_overview.xlsx", + mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ) + + if "department" in df: fig = px.pie( df,