Scan overview

read-only · live (refreshes itself)
{{model.eventList.length}} event(s) · {{model.selectedEventId ? 'event #' + model.selectedEventId : 'all events'}} · ended events greyed · times in {{tzLabel}}
{{model.lastError}}
{{model.flow.scannedTickets || 0 | number}}/{{model.flow.activeTickets || 0 | number}}
Scanned / valid ({{model.flow._pct}}%)
{{model.flow.activeTickets || 0 | number}} of {{model.flow.issuedTickets || 0 | number}}
Valid / issued
{{model.flow._recentRate != null ? model.flow._recentRate : '—'}}
Scans / min
{{model.flow.isEventScoped ? etaLabel() : '—'}}
Time left
{{model.flow.entrances.length || 0}}
Entrances
{{model.flow._refused || 0 | number}}
Refused at the door
{{model.flow.isEventScoped ? (model.flow._remaining || 0 | number) : '—'}}
Still to come
{{model.flow.cancelledTickets | number}}
Cancelled
Progress - {{selectedEventTitle()}} {{model.flow.scannedTickets || 0 | number}}/{{model.flow.activeTickets || 0 | number}} valid ({{model.flow._pct}}%) · {{model.flow._remaining || 0 | number}} still to come · {{model.flow.cancelledTickets | number}} cancelled, not counted
Scanner pins are not updating. They are where the handsets last reported, not where they are now. Everything else on this page is current. The page keeps trying by itself.

Scan map — circles = entrances (size = scans) · pins = devices (green online / red offline)

Map unavailable (network). The per-entrance numbers are in the table below.

{{model.flow._refusingOnly.length}} entrance(s) turned people away and let nobody in, so the map has no circle for them: {{e.entrance}} ({{e.refusedCount | number}} refused){{$last ? '' : ', '}}. They are in the table below.

Throughput — per minute, last {{model.flow.sinceMinutes}} min · peak {{model.flow._peak | number}}/min

By entrance

{{model.selectedEventId ? 'Entrance' : 'Event / Entrance'}} Scanned Refused Devices Rate ({{model.flow.rateWindowMinutes}} min) Last scan Status
#{{e.eventId}}/{{e.entrance}} ▲ ▼ {{e.scannedCount || 0 | number}} {{e.refusedCount || 0 | number}} · {{e.refusedWrongGate | number}} wrong gate {{e.deviceCount || 0}} {{e.ratePerMin || 0}}/min {{fmtTime(e.lastScan)}} refusing only - nobody let in stale - {{humanizeSeconds(e.secondsSinceLastScan)}} active no scans in the last {{model.flow.rateWindowMinutes}} min
No scans yet for this selection.

This column counts admissions that marked a ticket, from the scanners' own record, including ones with no answer from the server recorded yet. The Scanned card at the top counts tickets that are marked used right now, however they were marked. The two need not match. Neither is wrong; they answer "what happened here" and "where does the event stand".

Counted here only if the admission marked a ticket. Somebody presenting a ticket that was already used is let past by the handset but marks nothing, so they are left out of this column and counted as got in twice on Reconciliation - whose ADMITTED column counts every admission a handset recorded and is therefore the larger of the two. A gate that admitted only such presentations, and refused nobody, has no row here at all.

↻ refreshing in {{model.countdown}}s