Pornește cronometrul live al meciului

Ecranul de meci live transformă o partidă programată într-un joc în desfășurare: un ceas pe care îl pornești la lovitura de start, îl oprești la pauză și îl reiei pentru repriza a doua, în timp ce golurile, cartonașele și schimbările sunt înregistrate raportat la timpul scurs. În 4league, serverul ține ceasul — timpul pe care îl vezi este citit din backend, nu de pe telefonul tău — astfel încât același meci arată identic pe orice dispozitiv. Acest ghid acoperă cine poate gestiona cronometrul, cum îl pornești, îl oprești și îl reiei și ce se întâmplă când închei meciul.

ℹ️
Disponibil și pe web

Ecranul de meci live nu este doar pentru mobil. Poți gestiona cronometrul și înregistra evenimente de pe iOS, Android și din aplicația web 4league. Singurul loc unde web-ul diferă este unde te trimite după ce închei — vezi După ce închei.

Cine poate gestiona cronometrul

Gestionarea cronometrului live este protejată de aceeași regulă care apără orice altă acțiune de meci — userCanManageMatch în backend (middleware/ownership.js), aplicată pe startMatch, logMatchTime și endMatch. Trei categorii de utilizatori au acces:

Cine Condiție
Organizator / co-organizator Un administrator sau proprietar al competiției poate gestiona oricând meciul live.
Arbitrul desemnat Un arbitru desemnat la acel meci — o intrare în lista referees a meciului, legată de utilizator — îl poate gestiona.
Managerul unei echipe care joacă Doar când competiția are managersCanAddScore activat. Cu acesta pornit, un manager al oricăreia dintre echipele care joacă poate gestiona meciul live.

Oricine din afara acestor trei roluri este blocat: controalele nu apar, iar backend-ul respinge cererea cu noRights. Este aceeași regulă folosită pentru introducerea unui scor final.

Pornește ceasul meciului

Din meciul programat, deschide ecranul de meci live și pornește ceasul când echipele dau lovitura de start.

1

Deschide ecranul de meci live

Din programul competiției, deschide meciul și intră în modul live. Înainte de ora programată a meciului vei vedea un mesaj „meciul nu a început încă” și un cronometru cu numărătoare inversă.

2

Așteaptă apropierea loviturii de start

Butonul Start rămâne dezactivat până când se atinge ora programată a loviturii de start. Nu poți porni un meci mai devreme — asta păstrează corect timpul de joc înregistrat.

3

Apasă Start

Apasă Start. Aplicația apelează GET /competition/startMatch/:matchId; backend-ul marchează meciul inProgress, scrie prima intrare LiveScoreTime și trimite o notificare „meciul a început” tuturor celor care urmăresc competiția. Ceasul începe să curgă.

Pauză & reluare

Ceasul în mișcare are un control Stop și, odată pus pe pauză, unul de Reluare. Folosește Stop la pauza dintre reprize și Reluare pentru repriza a doua.

Acțiune Ce trimite
Stop / pauză GET /competition/logMatchTime/:matchId/:time/1 — un eveniment de timp cu indicatorul stop setat. Ceasul îngheață.
Reluare GET /competition/logMatchTime/:matchId/:time — un eveniment de timp fără indicatorul de stop. Ceasul continuă de unde l-a lăsat serverul.

Fiecare pauză și reluare este un rând în cronologia LiveScoreTime a meciului. Backend-ul adună intervalele dintre marcajele de reluare și cele de oprire pentru a ști exact cât timp s-a jucat efectiv — nu cât timp a stat ecranul deschis.

Serverul păstrează timpul

ℹ️
LiveScoreTime este sursa oficială

Ceasul pe care îl vezi este calculat de server din cronologia LiveScoreTime, nu ticăit local de dispozitivul tău. La încărcarea ecranului se citesc timpul scurs și starea de pauză de pe server; memoria cache locală este doar o soluție de rezervă când răspunsul serverului lipsește. De aceea, două persoane care urmăresc același meci live văd același ceas.

Dacă competiția este configurată cu reprize (matchRoundDuration setat), cronometrul se oprește automat la finalul fiecărei reprize. Când pui pauză și timpul jucat a depășit durata reprizei, serverul marchează acea întrerupere ca final de repriză, iar timpul scurs se aliniază la limita reprizei. Ceasul pentru repriza următoare pornește curat de acolo, în loc să care câteva secunde rătăcite.

După ce închei

Când jocul s-a terminat, închei meciul din cronometru (POST /competition/endMatch/:matchId). Backend-ul finalizează rezultatul folosind evenimentele înregistrate și timpul scurs calculat pe server, apoi aplicația te scoate din modul live.

ℹ️
Pe web ajungi în alt loc

Pe iOS și Android, aplicația se întoarce pur și simplu la ecranul din care ai venit. În aplicația web, navighează în schimb la ecranul Editare meci al meciului. Este intenționat: un deep-link web direct în modul live nu are adesea istoric la care să se întoarcă, așa că întoarcerea te-ar scoate complet din competiție — direcționarea către Editare meci te păstrează în competiție, cu datele finale de după meci încărcate.

⏱️
Scenariu: arbitrul ține ceasul de pe margine

O arbitră deschide meciul pe telefon cu un minut înainte de lovitura de start — Start este încă inactiv. La fluier, butonul se activează; apasă Start și ceasul pornește. La pauză apasă Stop, iar pentru repriza a doua Reluare. Între timp, organizatorul gazdă urmărește același meci în aplicația web și vede un ceas identic, pentru că ambii îl citesc de pe server. Când sună fluierul final, ea încheie meciul; telefonul ei revine la program, în timp ce aplicația web a organizatorului deschide ecranul de editare al meciului încheiat.