GH GambleHub

Progresul și indicatorii de stare

1) Principii

1. Răspuns instantaneu (≤ 100 ms). Orice acțiune este imediat confirmată vizual: apăsarea → „ocupat ”/schelet/microanimație.
2. Onestitate şi predictibilitate. Procentele reflectă progresul real, nu „eternul 99%”. Dacă evaluarea nu este posibilă, utilizați o variantă nedeterminată și o explicație.
3. Contextul de lângă activitate. Indicatorul este în cazul în care utilizatorul este în căutarea/acționează (buton, card, bloc), nu în colțul îndepărtat.
4. Stealth după succes. Succesul este o scurtă verificare/estompare și asta este. Eroare - explicație ușor de înțeles și repetare sigură.
5. Disponibilitate implicită. 'role = „progressbar”', 'aria-valuenow', regiuni vii, contrast ≥ AA.

2) Tipuri de indicatori și când să le utilizați

Progresul liniar (determinați/nedeterminați). Încărcare/importare/export, pași cu domeniu de aplicare clar.
Progresul circular (de obicei nedeterminat). Operațiuni locale scurte în locuri compacte.
Pas cu pas (pas cu pas). Pași secvențiali („Pasul 2 din 4”), KYC, procese master.
Schelet (dopuri schelet). Pentru a substitui structura de conținut în loc de spinners; evita „shimmer” pentru utilizatorii cu „preferă-redus-mişcare”.
Insigne de stare (succes/avertizare/pericol/info). Starea obiectului (În proces, Respins, Gata).
Banner/stare pâine prăjită. Evenimente globale: offline, eșec server, sincronizare coadă.
Încărcător inline (buton/linie). Operațiuni locale: „Salvați”..., „Trimiteți”....

3) Progresul definitiv vs incert

Determinați: cantitatea de muncă este cunoscută → arătăm %/etape.
Nedeterminat: volum necunoscut → „Procesarea în curs”... + context („De obicei până la 1-2 minute”).
Starea de tranziție - Puteți începe cu nedeterminate → du-te pentru a determina când apare evaluarea.
ETA cu atenție: afișați intervalul („~ 30-60 secunde”) și evitați „promisiunile”.

4) Plasarea și modele

Local la acțiune: „aria-ocupat” buton, spinner în rândul de masă, progresul cărții.
Deasupra blocului/listei: bara liniară de sub antetul secțiunii în timpul operațiunilor lotului.
Global: progres subtil de top (schimbare de traseu), bannere de sistem.
Panou lipicios (mobil): confirmare/progres pe CTA în docul inferior.

5) Disponibilitate (A11y)

Progress:
html
<div role = "progressbar" aria-valuemin =" 0" aria-valuemax =" 100" aria-valuenow =" 42" aria-label = "Load Report "> </div>

Indeterminate: set 'rol = „progressbar”' fără 'aria-valuenow', adăugați text explicativ la 'rol = „stare”'.
Regiuni vii: 'aria-live =' politicos '' pentru actualizări regulate, 'asertive' doar pentru cele critice.
'aria-ocupat = "adevărat" "pe un container care este blocat temporar de acțiuni.
Focus nu „sari”: la schimbarea etapei, mutați focalizarea la antetul pas pas pas cu pas.

6) Copywriting și semantică vizuală

Pe scurt și în cazul: „Încărcare în curs de desfășurare”..., „Procesarea plății”....
Adăugați "ce urmează": "Făcut. Să reîmprospătăm pagina automat.
Culori: verde - succes, portocaliu - avertizare/atenție, roșu - eroare. Culoarea ≠ singurul mediu de semnificație: dați o pictogramă/text.

7) Upbeat actualizări și pullback-uri

Optimist: schimbăm interfața UI imediat (de exemplu, marca „Favorite”) și o confirmăm în liniște cu serverul.
În caz de eroare - rollback moale + explicație și 'Retry'.
Operațiuni critice (rată/plată): opțional „soft optimist” (fixați „Sent → Waiting for confirmation”...), dar fără a modifica condiția monetară înainte de confirmare.

8) Cozi și sarcini de fundal

Afișați coada: „n” sarcini în procesare, carduri individuale cu progres.
Pauză/anulare pentru operații lungi, dacă este posibil.
Procesare fundal: „În fundal” insigna, pâine prăjită la finalizare, „Istoricul sarcinii” secțiune.

9) Performanță și calendare

Prima reacție ≤ 100ms: utilizați scheletul/inline-ocupat în loc de gol.
Animații: 120-180 ms (in), 80-140 ms (out), numai „transformare/opacitate”.
Procese lungi: actualizarea progresului nu mai mult de 10-15 ori/sec; Modificări de grup.

10) Fragmente

Progresul local la buton

html
<button id="export" class="btn" aria-busy="false">Экспорт CSV</button>
<script>
const btn = document. getElementById('export');
btn. addEventListener('click', async () => {
btn. setAttribute('aria-busy','true'); btn. disabled = true;
try {
const r = await fetch('/api/export', { method:'POST' });
if(!r.ok) throw new Error();
//show toast "Export has begun. We will notify upon readiness"
} catch {
//toast with cause and Retry
} finally {
btn. disabled = false; btn. setAttribute('aria-busy','false');
}
});
</script>

Determinarea liniară

html
<div class="progress">
<div class="bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"></div>
</div>
<style>
.progress{height:4px; background:var(--bg-muted); border-radius:999px; overflow:hidden}
.progress. bar{height:100%;width:0%;background:var(--accent); transition:width. 16s}
</style>
<script>
const bar = document. querySelector('.progress. bar');
let n=0; const t=setInterval(()=>{ n=Math. min(100, n+5); bar. style. width=n+'%'; bar. setAttribute('aria-valuenow',n); if(n===100) clearInterval(t); },160);
</script>

Stepper

html
<nav aria-label = "Progress">
<ol class="steps">
<li class = "done "> <span> 1 </span> Data </li>
<li class = "current" aria-current = "step "> <span> 2 </span> Documents </li>
<li> <span> 3 </span> Confirmation </li>
</ol>
</nav>

11) Scheletul corect

Utilizați forma conținutului viitor (carduri/linii), fără strălucire nesfârșită (sau dezactivați cu „preferă reducerea mișcării”).
Limita de timp: dacă se încarcă> 300-500 ms, scheletul este justificat; cu întârzieri mai mici, „micro-decolorare” este suficient.

12) Insigne de stare (stări de obiect)

Exemple sunt draft, în proces, confirmare în așteptare, gata, respins.

Text scurt, pictogramă stabilă/culori de fundal, contrast ≥ AA.
Icon' aria-ascuns =” adevărat”' + etichetă text (pentru SR).
Click - dezvăluie detalii sau deschide „Istorie”.

13) Specificul iGaming

Tarif:
  • Apăsând CTA → „Trimis”..., cu o întârziere de> 3 secunde - „Așteptând confirmarea”... (nedeterminat).
  • Succes - „Pariu acceptat” + cec; eroare - explicație onestă („perioada de piață închisă/raportul schimbat”) și Retry sigur.
Depunere/retragere:
  • Determinați pe etape: „Metoda de verificare → Trimiteți → Confirmați PSP”.
  • Pentru ieșire - În procesul de insignă, ecran de stare în profil, gama ETA; împinge la finalizare.
Turnee/clasamente:
  • Înregistrarea pas cu pas (pași), progresul de a acorda (N/puncte), „Participant” insigna de stare.
  • Actualizare în timp real - curat, fără clipiri, cu 'aria-live = „politicos”'.
KYC:
  • Stepper + insigna "Sub revizuire. "Arată ce este deja acceptat (bifați) și ce a mai rămas.

14) Culori, contrast și text

Succes/Info/Avertizare/Pericol - patru tonuri stabile în sistemul de proiectare.
Contrast text la fundal insigna ≥ AA.
Nu utilizați aceeași culoare pentru „în proces” și „avertizare”.

15) Măsurători

Time-to-First-Feedback (TTFF): faceți clic pe primul răspuns vizual.
Timp de finalizare pe operațiuni și rata de scădere/avort pentru sarcini lungi.
Încercați din nou rata de succes pentru operațiunile de progres.
% dintre optimiștii care au finalizat cu succes (și ponderea rollback-urilor).
Schelet vizibil de timp/spinner (obiectiv: cât mai puțin posibil).

16) Anti-modele

Buton silențios (fără spinner)> 100 ms.
Infinite spinners fără explicații sau alternative.
Procent fals/cursor atârnat 99%.
Resetează conținutul pe eșec și nu poate fi rejudecat.
Numai culoare fără text/pictograme pentru stare.
Progresul este departe de acțiune (utilizatorul nu vede).

17) Proiectarea tokenurilor sistemului (exemplu)

json
{
"progress": {
"barHeight": 4,
"radius": 999,
"inMs": 160,
"outMs": 120,
"pollHz": 10
},
"status": {
"tones": { "success": "#", "info": "#", "warning": "#", "danger": "#" },
"badge": { "radius": 8, "px": "6 10", "icon": 14 }
},
"skeleton": {
"rowHeight": 16,
"gap": 8,
"reduceMotion": true
},
"a11y": {
"useAriaBusy": true,
"live": "polite",
"contrastAA": true
}
}
Presetări CSS:
css
.badge{display:inline-flex; gap:6px; align-items:center; padding:6px 10px; border-radius:8px; font-size:.875rem}
.badge--success{background:var(--bg-success); color:var(--on-success)}
.skeleton{background:linear-gradient(90deg, var(--sk1), var(--sk2), var(--sk1)); border-radius:8px}
@media (prefers-reduced-motion: reduce){.skeleton{background:var(--sk1)} }

18) Lista de verificare QA

Răspuns și onestitate

  • TTFF ≤ 100 ms; există un local ocupat/schelet.
  • Determina - real%; nedeterminată - cu o explicație.

Disponibilitate

  • 'rol = „progressbar” '/' aria-valuenow' corect; regiuni vii pe actualizări.
  • Contrastul insigne/text ≥ AA; culoarea nu este singurul purtător de sens.

Comportament

  • Optimist cu rollback corect și explicație.
  • Cozile sunt afișate; există o anulare/pauză (dacă este cazul).
  • Progresul în apropierea scenei nu se suprapune CTA.

Performanță

  • Actualizări nu mai mult de 10-15 ori/sec; animații „transform/opacitate”.
  • Scheletul nu tachinează strălucirea cu 'reduce-motion'.

Texte

  • Scurt, fără jargon tehnic; „Ce urmează” după finalizare.
  • Nici o „promisiune” de timp exact, cu excepția cazului garantat.

19) Documentația în sistemul de proiectare

Компоненты: 'ProgressBar', 'ProgressCircle', 'Stepper', 'StatusBadge', 'InlineLoader', 'Skeleton'.
Reguli pentru selectarea tipului, copywriting și culori pentru stări.
Modele: optimist, cozi, procesare fundal, sincronizare offline.
Do/Don' t gallery: „perpetuu spinner”, procente false, „mute” CTA vs bun TTFF.

Scurt rezumat

Indicatorii de progres și statut ar trebui să ofere feedback la timp, onest și accesibil. Plasați-le alături de acțiune, distingeți între progresul clar și incert, respectați a11y și nu abuzați de animații. În iGaming, acest lucru este deosebit de important pentru pariuri, plăți, turnee și KYC - progresul calm, previzibil crește direct încrederea și conversia.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Telegram
@Gamble_GC
Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.