TopsFlops/Index
Globale Leaderboards mit den groessten Gewinnern und Verlierern ueber alle Workspaces hinweg.
Route: /tops-flops
View: resources/views/livewire/tops-flops/index.blade.php
Location: app/Livewire/TopsFlops/Index.php
Public Properties
| Property | Typ | Default | Beschreibung |
|---|---|---|---|
$period | string | '7d' | Zeitraum (fix 7 Tage) |
$metric | string | 'followers' | Ausgewaehlte Metrik |
$platform | string | 'all' | Plattform-Filter: 'all', 'youtube', 'instagram' (zeigt Profilanzahl im Dropdown) |
$platformCounts | array | [] | Profil-Counts pro Plattform aus ungefilterten Snapshot-Daten |
$favoritesFilter | string | 'all' | Favoriten-Filter: 'all', 'favorites' |
$hasFavorites | bool | false | Ob der User Favoriten hat |
$tier | string | 'all' | Follower-Tier Filter |
$leadersMax | int | 25 | Max. Eintraege pro Liste (Seitengroesse) |
$winners | array | [] | Gewinner-Liste mit Tracking-Flags |
$losers | array | [] | Verlierer-Liste mit Tracking-Flags |
$chartData | array | [] | Aggregierte Chart-Daten fuer die Metrik |
$chartXTickValues | array | [] | X-Achsen-Ticks |
$chartYTickValues | array | [] | Y-Achsen-Ticks |
$chartMax | int | 0 | Maximaler Wert fuer Y-Achsen-Skalierung |
$hasSnapshot | bool | false | Ob Snapshot-Daten vorhanden sind |
$rangeEndDate | string|null | null | End-Datum der Ansicht |
$rangeLabel | string | '' | Formatiertes Datum-Label (z.B. "02.02.2026 bis 08.02.2026") |
$canGoPrevious | bool | false | Navigation rueckwaerts moeglich |
$canGoNext | bool | false | Navigation vorwaerts moeglich |
$loadError | bool | false | Lade-Fehler aufgetreten |
Verfuegbare Metriken
| Key | Label |
|---|---|
followers | Follower |
views | Views |
videos | Videos |
posts | Beitraege |
following | Following |
score | Postbox Score |
Actions
| Method | Beschreibung |
|---|---|
updatedMetric() | Daten fuer geaenderte Metrik laden |
updatedPlatform() | Plattform-Filter aendern, Daten neu laden |
updatedFavoritesFilter() | Favoriten-Filter aendern, Daten neu laden |
updatedTier() | Tier-Filter aendern, Daten neu laden |
goPreviousRange() | 7 Tage zurueck navigieren |
goNextRange() | 7 Tage vor navigieren |
addToWorkspace(int $profileId, int $workspaceId) | Profil aus Leaderboard zum Workspace hinzufuegen |
countByPlatform(array, array) | Zaehlt Profile pro Plattform aus Winners+Losers (vor Platform-Filter) |
getAvailableMetrics() | Alle verfuegbaren Metriken als Array |
getUserWorkspaces() | User-Workspaces ohne Favoriten und Admin |
periodLabel() | "7 Tage" |
chartMetricLabel() | Lokalisierter Label der aktuellen Metrik |
Datenarchitektur
Tops & Flops laedt Daten ausschliesslich aus dashboard_global_snapshots -- vorberechnete taeglich aggregierte Snapshots.
Snapshot-Tabelle
dashboard_global_snapshots
├── period: '7d'
├── metric: 'followers' | 'views' | ...
├── tier: 'all' | 'micro' | 'small' | ...
├── end_date: date
├── winners: JSON (Array of profile data)
├── losers: JSON (Array of profile data)
└── chart: JSON (Zeitreihe)
Lade-Logik
- Snapshot fuer exaktes
end_datesuchen - Fallback: Neuester Snapshot mit
end_date <= end_date - Fallback: Neuester Snapshot insgesamt (nur bei Standard-Ansicht)
Tracking-Flags
Winners/Losers werden mit is_tracking- und watcher_id-Flags angereichert. Diese werden lazy berechnet: Erst werden die Snapshot-Daten geladen (max ~50 Profile), dann werden nur fuer diese Profile-IDs die Tracking-Relationen aufgeloest. Das verhindert OOM bei Usern mit vielen Watchern.
// Nur fuer angezeigte Profile pruefen (max ~50 IDs)
resolveTrackingFlags($userId)
// Statt: Alle User-Profile in Memory laden
Datum-Navigation
| Aktion | Ergebnis |
|---|---|
goPreviousRange() | rangeEndDate -= 7 Tage |
goNextRange() | rangeEndDate += 7 Tage |
Begrenzungen:
- Rueckwaerts: Nicht vor dem fruehesten Datenpunkt (
2026-01-08) - Vorwaerts: Nicht nach gestern
Chart-Rendering
Der Chart zeigt die aggregierten Tagesdaten ueber den gewaehlten 7-Tage-Zeitraum. Y-Achsen-Formatierung wechselt je nach Magnitude automatisch:
>= 1M: Kompakte Notation (z.B. "1,2M")< 1M: Gruppierte Ganzzahlen (z.B. "150.000")
Events
| Richtung | Event | Beschreibung |
|---|---|---|
| dispatch | show-toast | Fehlermeldungen |