5.1 KiB
5.1 KiB
🎯 Graf Tooltip Vylepšení - v2.1.1
✨ Co se změnilo
PŘED
Tooltip se zobrazí JEN když najedeš přímo na datový bod (malý kolečko)
❌ Musíš přesně trefit bod
❌ Obtížné na mobilech
❌ Frustrující když je hodně bodů blízko sebe
PO
Tooltip se zobrazí KDEKOLIV na grafu
✅ Stačí najet myší kamkoliv na graf
✅ Automaticky najde nejbližší data
✅ Mnohem lepší UX!
🔧 Technické Řešení
Přidal jsem Chart.js interaction mode:
interaction: {
mode: 'index', // Najde všechny datasety na indexu
intersect: false // Nemusíš trefit přesně bod
}
Vysvětlení:
mode: 'index'- Zobrazí tooltip pro všechny datasety na daném X indexuintersect: false- Tooltip se zobrazí i když nejsi přímo nad čárou
📊 Jak to funguje
Single Dataset Graf (např. Total Data)
Graf: ──────●──────●──────●──────
│ │ │ │
Myš: │ ← zde → │ │
│ │ │ │
└─────┴──────┴──────┘
Tooltip se ukáže u nejbližšího bodu
Multi Dataset Graf (např. Paid vs Unpaid)
Paid: ──────●──────●──────●──────
Unpaid: ──────●──────●──────●──────
│ │ │ │
Myš: │ ← zde → │ │
│ │ │ │
Tooltip ukáže:
Nov 9, 05:52 PM
━━━━━━━━━━━━━━
💰 Paid: 1.234 GB
📡 Unpaid: 0.567 GB
🎨 Bonus - Formátované Hodnoty
Přidal jsem také custom callback pro lepší formátování:
callbacks: {
label: function(context) {
let label = context.dataset.label || '';
if (label) {
label += ': ';
}
if (context.parsed.y !== null) {
label += context.parsed.y.toFixed(3) + ' GB';
}
return label;
}
}
Výsledek:
// PŘED
Paid Data: 1.23456789
// PO
Paid Data: 1.235 GB ← Vždy 3 des. místa + jednotka
📱 Výhody
Desktop
✅ Rychlejší interakce - nemusíš lovit malé body ✅ Přesnější - ukazuje nejbližší hodnotu ✅ Plynulejší - tooltip plynule sleduje myš
Mobile/Touch
✅ Funguje s touch - stačí klepnout kamkoliv ✅ Větší "hit area" - není potřeba trefit malý bod ✅ Lepší UX na menších obrazovkách
🔄 Kde to funguje
Toto vylepšení je aplikováno na VŠECHNY grafy:
Veřejný Dashboard:
- ✅ Total Data Provided (GB)
- ✅ Individual Account Charts
Privátní Dashboard:
- ✅ Paid vs Unpaid Data
- ✅ Delta Chart
- ✅ Combined Chart
- ✅ Individual Account Charts
🧪 Vyzkoušej
- Otevři dashboard
- Najdi graf
- Jeď myší kdekoliv na grafu (nemusíš trefit bod)
- Tooltip se okamžitě ukáže s nejbližšími daty!
Test Multi-Dataset:
Na grafu s více čarami (Paid vs Unpaid):
- Jeď myší horizontálně přes graf
- Tooltip ukáže obě hodnoty najednou
- Vidíš data pro všechny datasety v daném čase
💡 Pro Tipy
Rychlé Porovnání
Na multi-dataset grafu můžeš rychle porovnat hodnoty:
Jeď myší zleva doprava →
Tooltip plynule ukazuje jak se mění obě hodnoty
Přesné Hodnoty
I když jsou body blízko sebe:
[●●●●●] ← Těsně u sebe
Tooltip vždy ukáže správný nejbližší bod
Mobile
Na mobilech:
Klepni kamkoliv na graf
→ Tooltip se ukáže
Jeď prstem po grafu
→ Tooltip sleduje tvůj prst
🎯 Interaction Modes
Pro tvou informaci, Chart.js nabízí různé režimy:
| Mode | Popis | Použití |
|---|---|---|
'point' |
Jen přesný bod | Původní chování ❌ |
'nearest' |
Nejbližší bod | Stále musíš být blízko |
'index' |
Celý index | ← Používáme! ✅ |
'dataset' |
Celý dataset | Pro srovnání |
'x' / 'y' |
Podle osy | Specifické případy |
Proč 'index'?
- Nejlepší pro časové grafy
- Ukáže všechny datasety najednou
- Nejintuitivnější pro uživatele
📊 Příklad Output
Single Chart:
Nov 21, 01:37 PM
━━━━━━━━━━━━━━━━
Total Data: 169.134 GB
Multi Chart:
Nov 21, 01:37 PM
━━━━━━━━━━━━━━━━
💰 Paid (GB): 123.456 GB
📡 Unpaid (GB): 45.678 GB
🚀 Instalace
Už je zahrnuté v main_clean.py v2.1.1!
cd ~/urio
cp /path/to/main_clean.py main.py
pkill -f main.py
python3 main.py
📝 Changelog
v2.1.1 - 2024-11-21
- ✅ Added
interaction.mode = 'index'to all charts - ✅ Added
interaction.intersect = falsefor easier tooltip display - ✅ Added custom tooltip callback for formatted values (3 decimal places)
- ✅ Improved mobile/touch experience
- ✅ Applied to both public and private dashboard charts
Výsledek: Mnohem lepší UX! Tooltip se ukáže kdekoliv najedeš myší na graf! 🎉