ElPierrito commited on
Commit
1cc5547
·
verified ·
1 Parent(s): c6854f4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -1
app.py CHANGED
@@ -56,5 +56,69 @@ def generate_gantt():
56
  return "<i>Keine Kampagnen zum Anzeigen</i>"
57
  df = pd.DataFrame(campaigns)
58
  df["Start"] = pd.to_datetime(df["Start"])
59
- df["Ende"] = pd.to_datetime(df["End_
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
 
 
56
  return "<i>Keine Kampagnen zum Anzeigen</i>"
57
  df = pd.DataFrame(campaigns)
58
  df["Start"] = pd.to_datetime(df["Start"])
59
+ df["Ende"] = pd.to_datetime(df["Ende"])
60
+ try:
61
+ fig = px.timeline(df, x_start="Start", x_end="Ende", y="Name", color="Verantwortlich", title="📊 Kampagnenübersicht")
62
+ fig.update_yaxes(autorange="reversed")
63
+ fig.update_layout(height=400, margin=dict(l=20, r=20, t=30, b=20))
64
+ return pio.to_html(fig, full_html=False, include_plotlyjs='cdn')
65
+ except Exception as e:
66
+ return f"<b>Fehler:</b> {e}"
67
+
68
+ with gr.Blocks() as app:
69
+ # Startseite
70
+ with gr.Column(visible=True) as start_page:
71
+ gr.Markdown("# 👋 Willkommen beim Promo-Planer")
72
+ start_btn = gr.Button("➡️ Starten")
73
+
74
+ # Login-Seite
75
+ with gr.Column(visible=False) as login_page:
76
+ gr.Markdown("## 🔐 Login")
77
+ user = gr.Textbox(label="Benutzer")
78
+ pw = gr.Textbox(label="Passwort", type="password")
79
+ login_btn = gr.Button("Login")
80
+ login_status = gr.Textbox(interactive=False)
81
+
82
+ # Kampagnenplaner-Seite
83
+ with gr.Column(visible=False) as planner_page:
84
+ gr.Markdown("## 📣 Kampagnenplanung")
85
+ with gr.Row():
86
+ name = gr.Textbox(label="Kampagnenname")
87
+ goal = gr.Dropdown(["Verkaufsförderung", "Werbung", "Event"], label="Ziel")
88
+ product = gr.Textbox(label="Produkt")
89
+ with gr.Row():
90
+ channel = gr.Dropdown(["Tisch", "Instagram", "E-Mail", "Plakat"], label="Kanal")
91
+ start = Calendar(type="datetime", label="Startdatum")
92
+ end = Calendar(type="datetime", label="Enddatum")
93
+ with gr.Row():
94
+ budget = gr.Number(label="Budget (CHF)")
95
+ responsible = gr.Dropdown(["Markthalle", "Marketing", "PM", "PED"], label="Verantwortlich")
96
+ suggest_btn = gr.Button("💡 KI-Vorschlag")
97
+ idea = gr.Textbox(label="Kampagnenidee")
98
+ submit_btn = gr.Button("✅ Speichern")
99
+ output_table = gr.Dataframe()
100
+ budget_total = gr.Textbox(label="Budget Gesamt", interactive=False)
101
+ export_btn = gr.Button("📤 Export CSV")
102
+ gr.Markdown("### 📈 Gantt-Visualisierung")
103
+ gantt_html = gr.HTML()
104
+ update_chart = gr.Button("🔄 Visualisierung aktualisieren")
105
+
106
+ # Seitenwechsel-Logik
107
+ def go_to_login():
108
+ return gr.update(visible=False), gr.update(visible=True)
109
+
110
+ def go_to_start():
111
+ return gr.update(visible=True), gr.update(visible=False)
112
+
113
+ start_btn.click(go_to_login, outputs=[start_page, login_page])
114
+ login_btn.click(login, [user, pw], outputs=[start_page, login_page, planner_page, login_status])
115
+ suggest_btn.click(suggest_campaign, [product, goal, channel], idea)
116
+ submit_btn.click(add_campaign, [name, goal, product, channel, start, end, budget, responsible], [output_table, budget_total])
117
+ export_btn.click(export_csv, outputs=None)
118
+ update_chart.click(generate_gantt, outputs=gantt_html)
119
+
120
+ # Optional: Logout oder Reset
121
+ # back_btn = gr.Button("🔙 Zurück")
122
+ # back_btn.click(go_to_start, outputs=[start_page, login_page])
123
 
124
+ app.launch(share=True)