Skip to content

Commit baa5ec8

Browse files
author
jacquesbach
committed
Gridstack Layout changes
1 parent 10b8c50 commit baa5ec8

3 files changed

Lines changed: 23 additions & 19 deletions

File tree

routes.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,16 +1052,14 @@ def shap_summary():
10521052

10531053
@api_bp.route('/api/layout', methods=['GET'])
10541054
def get_layout():
1055-
# Jeder darf das Layout sehen (auch nicht angemeldete)
1056-
conn = sqlite3.connect('solar_data.db')
1055+
conn = get_db_connection()
10571056
c = conn.cursor()
10581057
c.execute("SELECT value FROM user_settings WHERE key = 'dashboard_layout'")
10591058
row = c.fetchone()
10601059
conn.close()
1061-
10621060
if row:
10631061
return jsonify({"layout": json.loads(row[0])}), 200
1064-
return jsonify({"layout": None}), 404
1062+
return jsonify({"layout": None}), 200
10651063

10661064
@api_bp.route('/api/layout', methods=['POST'])
10671065
def save_layout():
@@ -1076,7 +1074,7 @@ def save_layout():
10761074
if not layout_json:
10771075
return jsonify({"error": "Kein Layout gesendet"}), 400
10781076

1079-
conn = sqlite3.connect('solar_data.db')
1077+
conn = get_db_connection()
10801078
c = conn.cursor()
10811079
# Speichern oder Überschreiben
10821080
c.execute("INSERT OR REPLACE INTO user_settings (key, value) VALUES (?, ?)",

static/js/layout.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
let dashboardGrid;
2+
let currentPw = sessionStorage.getItem('admin_pw') || "";
23

34
// 1. Grid initialisieren
45
function initGridstack() {
@@ -63,26 +64,28 @@ async function loadLayout() {
6364
let savedLayout = null;
6465

6566
try {
66-
// Zuerst versuchen, aus der Datenbank zu laden
67-
const authResponse = await fetch('/api/auth');
68-
if (authResponse.ok) {
69-
const layoutResponse = await fetch('/api/layout');
70-
if (layoutResponse.ok) {
71-
const data = await layoutResponse.json();
72-
if (data.layout) savedLayout = data.layout;
67+
// Wir versuchen es direkt beim API-Endpunkt
68+
const response = await fetch('/api/layout');
69+
if (response.ok) {
70+
const data = await response.json();
71+
if (data && data.layout) {
72+
savedLayout = data.layout;
73+
console.log("Layout aus DB geladen");
7374
}
74-
} else {
75-
throw new Error("Nicht angemeldet");
7675
}
7776
} catch (error) {
78-
// Fallback: Aus dem LocalStorage laden
77+
console.warn("API Layout nicht verfügbar, versuche LocalStorage...");
78+
}
79+
80+
// Wenn DB nicht ging oder leer war, schau im LocalStorage nach
81+
if (!savedLayout) {
7982
const localData = localStorage.getItem('balkonkraftwerk_layout');
8083
if (localData) {
8184
savedLayout = JSON.parse(localData);
85+
console.log("Layout aus LocalStorage geladen");
8286
}
8387
}
8488

85-
// Wenn ein Layout gefunden wurde, anwenden
8689
if (savedLayout && dashboardGrid) {
8790
dashboardGrid.load(savedLayout);
8891
}

static/js/script.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ let myChart;
22
let panelChart;
33
let dcDonutChart;
44
let activeDonutIndex = null; // null = Gesamtansicht, 0 = Panel 1, 1 = Panel 2
5-
let currentPw = "";
65

76
const ROI_DEBUG_FORCE_COMPLETE = false;
87

@@ -585,8 +584,12 @@ async function updateROI() {
585584
roiCard.classList.remove('roi-complete');
586585
badgeContainer.innerHTML = '';
587586
}
588-
updateROIForecast();
589-
} catch (e) {
587+
if (typeof updateROIForecast === "function") {
588+
updateROIForecast();
589+
} else {
590+
console.log("updateROIForecast ist noch nicht implementiert.");
591+
}
592+
} catch (e) {
590593
console.error("ROI Fehler", e);
591594
}
592595

0 commit comments

Comments
 (0)