BI Dashboard
A flat, server-free dashboard for the Brandize BI webhook
(Summe je Abgangsland). It shows the gross revenue (Brutto inkl. USt) per
departure country for a selected period, with KPI cards, a bar chart and a
detail table.
Run
Just open index.html in a browser (double-click it). No server, no build step.
The page calls the webhook directly:
https://brandize.app.n8n.cloud/webhook/bi-dashboard
The webhook sends CORS headers (it reflects the request Origin, including
null for file://), so a direct browser call works.
Navigation
The left sidebar groups reports by topic:
- Amazon → Umsatz je Abgangsland (Brutto inkl. USt je Abgangsland)
- Amazon → VAT Summary (USt-Übersicht je Land)
- ODOO → Dashboard (placeholder, to follow)
Both groups start collapsed, so no submenu is visible when the page opens. Clicking a topic expands its submenu; clicking a submenu item switches the view.
Authentication
The webhooks are protected with HTTP Basic Auth. The dashboard asks for the
credentials when they are needed: the first request is sent without them, and
when the webhook answers 401, a login prompt appears. The entered
credentials are sent as an Authorization: Basic ... header on every request
and kept in sessionStorage for the rest of the browser session (so a reload
does not prompt again). If the webhook rejects them (401), the prompt
reappears. Storage is best-effort: on file:// it may be unavailable, in which
case credentials are kept in memory only.
CSV export
The header has a CSV button that downloads the data of the currently displayed dashboard, as a semicolon-delimited UTF-8 file (with BOM) including a Gesamt row:
- Umsatz je Abgangsland →
umsatz-je-abgangsland_YYYY-MMM.csv - VAT Summary →
vat-summary_YYYY-MMM.csv
The button is disabled on dashboards without data (e.g. the ODOO placeholder).
Filter
A shared filter bar sits above every dashboard (labelled Filter with a
funnel icon and the hint gilt für alle Dashboards). It holds the Zeitraum
month + year selector (e.g. 2026-SEP) and the reload button, and stays visible
across all views. The previous month is preselected. The selected period is
sent to the webhook as ?month=YYYY-MMM, matching the %(month)s parameter
used in ../sql/Summe_je_Abgangsland.sql.
Data sources
One request to the webhook returns both datasets, which are read by key:
Summe je Abgangsland→ the Umsatz je Abgangsland reportVAT Summary→ the VAT Summary report
Files
| File | Purpose |
|---|---|
index.html |
Dashboard markup |
styles.css |
Styling |
app.js |
Data loading, parsing and rendering |