234 lines
5.1 KiB
Markdown
234 lines
5.1 KiB
Markdown
|
|
# 🎯 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**:
|
||
|
|
|
||
|
|
```javascript
|
||
|
|
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 indexu
|
||
|
|
- **`intersect: 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í:
|
||
|
|
|
||
|
|
```javascript
|
||
|
|
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
|
||
|
|
|
||
|
|
1. **Otevři dashboard**
|
||
|
|
2. **Najdi graf**
|
||
|
|
3. **Jeď myší kdekoliv na grafu** (nemusíš trefit bod)
|
||
|
|
4. **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**!
|
||
|
|
|
||
|
|
```bash
|
||
|
|
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 = false` for 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! 🎉**
|