UrNetwork-Stats-Dashboard-r.../CHART_INTERACTION.md
2025-11-21 22:39:41 +01:00

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 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í:

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!

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! 🎉