## status: str ## stream_status: Optional[Status] ## event: EventType ## messages: List[Dict] <%! from typing import List from ooresults.otypes.result_type import ResultStatus from ooresults.utils.globals import MAP_STATUS from ooresults.utils.globals import minutes_seconds from ooresults.utils.globals import STREAMING_STATUS from ooresults.utils.globals import streaming_status_ok from ooresults.utils.rental_cards import format_card def format(time: int) -> str: if time is not None and time > 0: return minutes_seconds(time) + " min" else: return "" def color(status: ResultStatus) -> str: if status == ResultStatus.OK: return "#70ff70" # green elif status in (ResultStatus.MISSING_PUNCH, ResultStatus.DID_NOT_FINISH, ResultStatus.OVER_TIME): return "#ff7070" # red else: return "#ffff00" # yellow def missing(status: ResultStatus, missing_controls: List[str]) -> str: if status == ResultStatus.OK: if missing_controls: if len(missing_controls) == 1: return "1 control" else: return str(len(missing_controls)) + " controls" else: if missing_controls: if "FINISH" in missing_controls: return "Finish time" elif "START" in missing_controls: return "Start time" elif len(missing_controls) == 1: return missing_controls[0] elif len(missing_controls) == 2: return missing_controls[0] + ", " + missing_controls[1] elif len(missing_controls) == 3: return missing_controls[0] + ", " + missing_controls[1] + ", " + missing_controls[2] elif len(missing_controls) >= 4: return str(len(missing_controls)) + " controls" %>
| Event name: | ${event.name if event else ""} |
|---|---|
| Event date: | ${event.date.isoformat() if event and event.date else ""} |
| Read | Control card | Status | Time | Name | Class | Missing controls | |||
|---|---|---|---|---|---|---|---|---|---|
| ${result.get("entryTime", "")} | ${format_card(result.get("controlCard"))} | ${MAP_STATUS[result.get("status")]} | ${format(result.get("time", 0))} | % if result.get("status") in (ResultStatus.OK, ResultStatus.MISSING_PUNCH, ResultStatus.DID_NOT_FINISH, ResultStatus.OVER_TIME):${result.get("lastName", "")}, ${result.get("firstName", "")} | ${result.get("class", "")} | ${missing(result.get("status"), result.get("missingControls", []))} | % else:${result.get("error", "")} | % endif||
| Card reader status: | Offline |
|---|---|
| Card reader status: | Connected |
| Card reader status: | Disconnected |
| Card reader status: | Reading card |
| Stream status: | ${STREAMING_STATUS[stream_status]} |
| Stream status: | ${STREAMING_STATUS[stream_status]} |