diff --git a/modules/boersenchecker/assets/boersenchecker.css b/modules/boersenchecker/assets/boersenchecker.css index 6a1bfb2..da5ab8d 100644 --- a/modules/boersenchecker/assets/boersenchecker.css +++ b/modules/boersenchecker/assets/boersenchecker.css @@ -1,4 +1,4 @@ -.bc-app { +.bc-page { --bc-accent: var(--brand-accent); --bc-accent-strong: var(--brand-accent-2); --bc-ink: var(--text); @@ -12,73 +12,9 @@ color: var(--bc-text); } -.bc-grid-bg { - position: relative; - padding: 0 0 8px; -} - -.bc-grid-bg::before { - content: ""; - position: absolute; - inset: 0; - pointer-events: none; - background: - radial-gradient(circle at top right, color-mix(in srgb, var(--brand-accent-2) 10%, transparent), transparent 28%), - radial-gradient(circle at bottom left, color-mix(in srgb, var(--brand-accent-3) 10%, transparent), transparent 30%), - linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0)); -} - -.bc-shell { - position: relative; - display: grid; -} - -.bc-stack { - display: grid; -} - -.bc-hero { - display: grid; - gap: 18px; - padding: 28px; - border-radius: 28px; - background: - radial-gradient(circle at top right, rgba(94, 234, 212, 0.18), transparent 28%), - radial-gradient(circle at bottom left, rgba(121, 215, 255, 0.14), transparent 32%), - linear-gradient(145deg, rgba(15, 23, 42, 0.9), rgba(15, 23, 42, 0.78)); - border: 1px solid var(--bc-line); - box-shadow: 0 18px 40px rgba(2, 6, 23, 0.22); -} - -.bc-hero-top { +.bc-page { display: grid; gap: 16px; - grid-template-columns: minmax(0, 1.6fr) minmax(240px, 0.7fr); - align-items: start; -} - -.bc-hero-copy { - display: grid; - gap: 10px; -} - -.bc-eyebrow { - display: inline-flex; - align-items: center; - width: fit-content; - padding: 8px 12px; - border-radius: 999px; - background: color-mix(in srgb, var(--bc-accent) 18%, transparent); - border: 1px solid color-mix(in srgb, var(--bc-accent) 28%, transparent); - color: var(--bc-text); - font-size: 0.86rem; - font-weight: 700; -} - -.bc-title { - margin: 0; - font-size: clamp(2rem, 3vw, 2.8rem); - line-height: 1.05; } .bc-text { @@ -86,10 +22,23 @@ margin: 0; } -.bc-hero-controls { - display: grid; - gap: 12px; - justify-items: stretch; +.bc-section-head { + display: flex; + align-items: start; + justify-content: space-between; + gap: 16px; +} + +.bc-section-title { + margin: 0; + font-size: 1.45rem; + line-height: 1.15; +} + +.bc-section-head p, +.bc-section-copy { + color: var(--bc-muted); + margin: 8px 0 0; } .bc-form-card, @@ -128,10 +77,10 @@ .bc-button, .bc-tabs a, -.bc-app button, -.bc-app input, -.bc-app select, -.bc-app textarea { +.bc-page button, +.bc-page input, +.bc-page select, +.bc-page textarea { font: inherit; } @@ -352,14 +301,14 @@ background: rgba(255,255,255,0.04); } -.bc-app .setup-field { +.bc-page .setup-field { display: grid; gap: 6px; } -.bc-app input, -.bc-app select, -.bc-app textarea { +.bc-page input, +.bc-page select, +.bc-page textarea { width: 100%; border: 1px solid var(--bc-line); border-radius: 14px; @@ -368,16 +317,16 @@ color: var(--bc-text); } -.bc-app input::placeholder, -.bc-app textarea::placeholder { +.bc-page input::placeholder, +.bc-page textarea::placeholder { color: color-mix(in srgb, var(--bc-muted) 70%, transparent); } -.bc-app a { +.bc-page a { color: inherit; } -.bc-app .muted { +.bc-page .muted { color: var(--bc-muted); } diff --git a/modules/boersenchecker/assets/boersenchecker.js b/modules/boersenchecker/assets/boersenchecker.js index 5a098aa..b53063f 100644 --- a/modules/boersenchecker/assets/boersenchecker.js +++ b/modules/boersenchecker/assets/boersenchecker.js @@ -115,7 +115,13 @@ } currentPayload = payload; renderChart(pointsForRange(payload, activeRange)); - if (statusNode) statusNode.textContent = `Quelle: Alpha Vantage | Symbol ${payload.symbol || ''}`; + if (statusNode) { + const sourceLabel = payload.source_label || payload.source || 'Lokale Kurshistorie'; + const instrumentRef = payload.symbol || payload.isin || ''; + statusNode.textContent = instrumentRef + ? `Quelle: ${sourceLabel} | ${instrumentRef}` + : `Quelle: ${sourceLabel}`; + } } catch (error) { currentPayload = null; chartShell.innerHTML = `
Depots anderer Benutzer sind nur fuer `appadmin` sichtbar und bearbeitbar.
-Stammdaten und Berichtswahrung fuer ein Depot pflegen.
-Kurs- und Waehrungsdaten zentral aktualisieren.
-- Die Umrechnung liest gespeicherte FX-Daten zentral aus dem Modul fx-rates. Eine Aktualisierung wird nur manuell - angestossen und respektiert die dortige Max-Age- und Reuse-Logik. -
-- Aktienkurse werden ueber Alpha Vantage anhand des hinterlegten Symbols abgerufen. Die ISIN bleibt als Stammdatum erhalten. -
-Depots anderer Benutzer sind nur fuer `appadmin` sichtbar und bearbeitbar.
+Aktienpositionen fuer ein Depot mit Kaufdaten und Kurswaehrung verwalten.
-Alpha-Vantage-Suchergebnisse pruefen und Daten direkt ins Positionsformular uebernehmen.
-| Symbol | -Name | -Typ | -Region | -Waehrung | -Match | -Aktion | -
|---|---|---|---|---|---|---|
| = e((string) ($result['symbol'] ?? '')) ?> | -= e((string) ($result['name'] ?? '')) ?> | -= e((string) ($result['type'] ?? '')) ?> | -= e((string) ($result['region'] ?? '')) ?> | -= e((string) ($result['currency'] ?? '')) ?> | -= e((string) ($result['match_score'] ?? '')) ?> | -- - In Formular uebernehmen - - | -
Kurse mit Uhrzeit und Quelle direkt in die Historie schreiben.
-Uebersicht aller Depots mit Kennzahlen und Schnellaktionen.
-Alle Positionen mit Kaufdaten, letztem Kurs und aktuellen Werten.
-Stammdaten und Berichtswahrung fuer ein Depot pflegen.
| Depot | -Aktie | -ISIN / WKN | -Stueck | -Kauf | -Letzter Kurs | -Wert | -Delta | -Aktion | -
|---|---|---|---|---|---|---|---|---|
| = e((string) ($portfolioById[(int) $position['portfolio_id']]['name'] ?? '')) ?> | -
- = e((string) $position['instrument_name']) ?>
-
- = e((string) $position['symbol']) ?>
-
- |
-
- = e((string) ($position['isin'] ?: '-')) ?>
- = e((string) ($position['wkn'] ?: '-')) ?>
- |
- = e($fmtNumber((float) $position['quantity'], 6)) ?> | -
- = e($fmtNumber((float) $position['purchase_price'], 4)) ?> = e((string) $position['purchase_currency']) ?>
- = e((string) $position['purchase_date']) ?>
- |
-
-
- = e($fmtNumber((float) $position['latest_price'], 4)) ?> = e((string) $position['latest_currency']) ?>
- = e($fmtDateTime((string) $position['latest_quoted_at'], (string) ($position['latest_source'] ?? ''))) ?>
-
- kein Kurs
-
- |
- - - = e($fmtNumber((float) $position['current_total_base'])) ?> = e((string) $position['base_currency']) ?> - - n/a - - | -- - = e($fmtNumber((float) $position['gain_base'])) ?> = e((string) $position['base_currency']) ?> - - n/a - - | -
-
- Bearbeiten
- Kurs erfassen
-
-
-
- |
-
Historische Kurse pro Aktie mit Zeitstempel und Quelle.
-Kurs- und Waehrungsdaten zentral aktualisieren.
| Zeitpunkt | -Kurs | -Quelle | -Aktion | -
|---|---|---|---|
| = e($fmtDateTime((string) $quote['quoted_at'], (string) ($quote['source'] ?? ''))) ?> | -= e($fmtNumber((float) $quote['price'], 4)) ?> = e((string) $quote['currency']) ?> | -= e((string) $quote['source']) ?> | -- - | -
+ Die Umrechnung liest gespeicherte FX-Daten zentral aus dem Modul fx-rates. Eine Aktualisierung wird nur manuell + angestossen und respektiert die dortige Max-Age- und Reuse-Logik. +
++ Aktienkurse werden ueber Alpha Vantage anhand des hinterlegten Symbols abgerufen. Die ISIN bleibt als Stammdatum erhalten. +
+Aktienpositionen fuer ein Depot mit Kaufdaten und Kurswaehrung verwalten.
+Alpha-Vantage-Suchergebnisse pruefen und Daten direkt ins Positionsformular uebernehmen.
+| Symbol | +Name | +Typ | +Region | +Waehrung | +Match | +Aktion | +
|---|---|---|---|---|---|---|
| = e((string) ($result['symbol'] ?? '')) ?> | += e((string) ($result['name'] ?? '')) ?> | += e((string) ($result['type'] ?? '')) ?> | += e((string) ($result['region'] ?? '')) ?> | += e((string) ($result['currency'] ?? '')) ?> | += e((string) ($result['match_score'] ?? '')) ?> | ++ + In Formular uebernehmen + + | +
Kurse mit Uhrzeit und Quelle direkt in die Historie schreiben.
+Uebersicht aller Depots mit Kennzahlen und Schnellaktionen.
+Alle Positionen mit Kaufdaten, letztem Kurs und aktuellen Werten.
+| Depot | +Aktie | +ISIN / WKN | +Stueck | +Kauf | +Letzter Kurs | +Wert | +Delta | +Aktion | +
|---|---|---|---|---|---|---|---|---|
| = e((string) ($portfolioById[(int) $position['portfolio_id']]['name'] ?? '')) ?> | +
+ = e((string) $position['instrument_name']) ?>
+
+ = e((string) $position['symbol']) ?>
+
+ |
+
+ = e((string) ($position['isin'] ?: '-')) ?>
+ = e((string) ($position['wkn'] ?: '-')) ?>
+ |
+ = e($fmtNumber((float) $position['quantity'], 6)) ?> | +
+ = e($fmtNumber((float) $position['purchase_price'], 4)) ?> = e((string) $position['purchase_currency']) ?>
+ = e((string) $position['purchase_date']) ?>
+ |
+
+
+ = e($fmtNumber((float) $position['latest_price'], 4)) ?> = e((string) $position['latest_currency']) ?>
+ = e($fmtDateTime((string) $position['latest_quoted_at'], (string) ($position['latest_source'] ?? ''))) ?>
+
+ kein Kurs
+
+ |
+ + + = e($fmtNumber((float) $position['current_total_base'])) ?> = e((string) $position['base_currency']) ?> + + n/a + + | ++ + = e($fmtNumber((float) $position['gain_base'])) ?> = e((string) $position['base_currency']) ?> + + n/a + + | +
+
+ Bearbeiten
+ Kurs erfassen
+
+
+
+ |
+
Historische Kurse pro Aktie mit Zeitstempel und Quelle.
+| Zeitpunkt | +Kurs | +Quelle | +Aktion | +
|---|---|---|---|
| = e($fmtDateTime((string) $quote['quoted_at'], (string) ($quote['source'] ?? ''))) ?> | += e($fmtNumber((float) $quote['price'], 4)) ?> = e((string) $quote['currency']) ?> | += e((string) $quote['source']) ?> | ++ + | +
Depotauswahl, Aktienfokus und aktueller Kursabruf in einem Bereich.
Schlusskurse ueber mehrere Zeitfenster fuer das aktuell gewaehlte Instrument.
Stueckzahl, Kaufdaten, letzter Kurs und Performance auf einen Blick.
Systemweit vorhandene Aktie aus allen Depots auswaehlen.
-Alpha-Vantage-Suchergebnisse finden und direkt fuer die Aktie uebernehmen.
-| Symbol | -Name | -Region | -Waehrung | -Aktion | -
|---|---|---|---|---|
| = e((string) ($result['symbol'] ?? '')) ?> | -= e((string) ($result['name'] ?? '')) ?> | -= e((string) ($result['region'] ?? '')) ?> | -= e((string) ($result['currency'] ?? '')) ?> | -- - Uebernehmen - - | -
Systemweit vorhandene Aktie aus allen Depots auswaehlen.
+Stammdaten, Markt und Kurswaehrung zentral fuer die Aktie pflegen.
-Alpha-Vantage-Suchergebnisse finden und direkt fuer die Aktie uebernehmen.
Einzelne Kurse mit Zeitstempel und Quelle fuer die ausgewaehlte Aktie speichern.
-Gespeicherte Kursdaten der ausgewaehlten Aktie mit Quelle und Loeschoption.
-| Symbol | +Name | +Region | +Waehrung | +Aktion | +||||
|---|---|---|---|---|---|---|---|---|
| Zeitpunkt | -Kurs | -Quelle | -Aktion | += e((string) ($result['symbol'] ?? '')) ?> | += e((string) ($result['name'] ?? '')) ?> | += e((string) ($result['region'] ?? '')) ?> | += e((string) ($result['currency'] ?? '')) ?> | ++ + Uebernehmen + + |
| = e($fmtDateTime((string) $quote['quoted_at'], (string) ($quote['source'] ?? ''))) ?> | -= e(number_format((float) $quote['price'], 4, ',', '.')) ?> = e((string) $quote['currency']) ?> | -= e((string) $quote['source']) ?> | -- - | -
Stammdaten, Markt und Kurswaehrung zentral fuer die Aktie pflegen.
+Einzelne Kurse mit Zeitstempel und Quelle fuer die ausgewaehlte Aktie speichern.
+Gespeicherte Kursdaten der ausgewaehlten Aktie mit Quelle und Loeschoption.
+| Zeitpunkt | +Kurs | +Quelle | +Aktion | +
|---|---|---|---|
| = e($fmtDateTime((string) $quote['quoted_at'], (string) ($quote['source'] ?? ''))) ?> | += e(number_format((float) $quote['price'], 4, ',', '.')) ?> = e((string) $quote['currency']) ?> | += e((string) $quote['source']) ?> | ++ + | +