diff --git a/app/config/channels.json b/app/config/channels.json index f545396..85a72a0 100644 --- a/app/config/channels.json +++ b/app/config/channels.json @@ -6,7 +6,7 @@ "country": "", "language": "", "enabled": true, - "favorite": false, + "favorite": true, "number": 10, "group": "Österreich" }, @@ -17,7 +17,7 @@ "country": "", "language": "", "enabled": true, - "favorite": false, + "favorite": true, "number": 20, "group": "Österreich" }, diff --git a/app/public/assets/css/main.css b/app/public/assets/css/main.css index 620026f..384eb6a 100644 --- a/app/public/assets/css/main.css +++ b/app/public/assets/css/main.css @@ -469,3 +469,97 @@ color: var(--muted); font-size: .95rem; } + +.dashboard-hero { + display: flex; + justify-content: space-between; + align-items: center; + gap: 1rem; + margin-bottom: 1.5rem; + padding: 1.5rem; + background: var(--panel); + border: 1px solid var(--border); + border-radius: 18px; +} + +.dashboard-hero h2 { + margin: 0; + font-size: 2rem; +} + +.dashboard-hero p { + margin: 0.35rem 0 0; + color: var(--muted); +} + +.dashboard-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1.25rem; +} + +.dashboard-panel { + background: var(--panel); + border: 1px solid var(--border); + border-radius: 18px; + padding: 1rem; +} + +.dashboard-panel h3 { + margin: 0 0 0.9rem; +} + +.dashboard-item { + display: grid; + grid-template-columns: 52px 1fr; + gap: 0.75rem; + align-items: center; + padding: 0.65rem; + border-radius: 12px; + color: var(--text); + text-decoration: none; +} + +.dashboard-item:hover { + background: var(--panel-2); +} + +.dashboard-item img { + width: 52px; + height: 36px; + object-fit: contain; + background: var(--panel-2); + border: 1px solid var(--border); + border-radius: 0.5rem; + padding: 3px; +} + +.dashboard-item strong { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dashboard-item span { + display: block; + margin-top: 0.2rem; + color: var(--muted); + font-size: 0.88rem; +} + +.empty.compact { + padding: 0.8rem; + font-size: 0.9rem; +} + +@media (max-width: 900px) { + .dashboard-grid { + grid-template-columns: 1fr; + } + + .dashboard-hero { + align-items: flex-start; + flex-direction: column; + } +} diff --git a/app/templates/home.php b/app/templates/home.php index 5354235..1ac6800 100644 --- a/app/templates/home.php +++ b/app/templates/home.php @@ -1,13 +1,124 @@ - -
- Keine Sender gefunden. Prüfe /opt/tvguide-docker/epg/guide.xml. -
- + $channel): ?> - $channelId, - 'channel' => $channel, - 'programmes' => $programmes[$channelId] ?? [] - ]); ?> - +$now = new DateTimeImmutable('now', new DateTimeZone('Europe/Vienna')); +$upcoming = []; +$primetime = []; + +foreach ($programmes as $channelId => $items) { + $channel = $channels[$channelId] ?? null; + + if (!$channel) { + continue; + } + + foreach ($items as $p) { + $start = $p['start']; + $stop = $p['stop']; + + if ($start >= $now && $start <= $now->modify('+30 minutes')) { + $upcoming[] = [ + 'channel_id' => $channelId, + 'channel' => $channel, + 'programme' => $p, + ]; + } + + if ($start->format('Y-m-d') === $now->format('Y-m-d') + && $start->format('H:i') >= '20:00' + && $start->format('H:i') <= '23:00') { + $primetime[] = [ + 'channel_id' => $channelId, + 'channel' => $channel, + 'programme' => $p, + ]; + } + } +} + +usort($upcoming, fn($a, $b) => $a['programme']['start'] <=> $b['programme']['start']); +usort($primetime, fn($a, $b) => $a['programme']['start'] <=> $b['programme']['start']); + +$favoritesNow = array_values(array_filter( + $currentProgrammes, + fn($item) => !empty($item['favorite']) +)); +?> + +
+
+

TVGuide

+

Dein Überblick für jetzt, gleich und heute Abend.

+
+ Tagesansicht öffnen +
+ +
+
+

🔥 Jetzt läuft

+ + + + +
+ + · noch Min. +
+
+ +
+ +
+

⏰ Beginnt gleich

+ + + + +
+ + format('H:i') ?> · +
+
+ + + +
In den nächsten 30 Minuten beginnt keine Sendung.
+ +
+ +
+

⭐ Favoriten jetzt

+ + + + +
+ + · % +
+
+ + + +
Aktuell läuft auf deinen Favoriten nichts.
+ +
+ +
+

📺 Heute Abend

+ + + + +
+ + format('H:i') ?> · +
+
+ + + +
Für heute Abend wurden keine Sendungen gefunden.
+ +
+
diff --git a/app/templates/now.php b/app/templates/now.php index 8148022..0308202 100644 --- a/app/templates/now.php +++ b/app/templates/now.php @@ -21,7 +21,7 @@ $isFavoritesView = ($view ?? '') === 'favorites'; -
+
>