$def with (status, event, messages) $ date = event.get('date', '') if event is not None else '' $code def format(time: int) -> str: if time is not None and time > 0: return '{:d}:{:02d} min'.format(time // 60, time % 60) 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 format_cardreader_status(status: str) -> str: if status is None or status == 'offline': return '

Card reader offline

' elif status in ['readerConnected', 'cardRead', 'cardRemoved']: return '

Card reader connected

' elif status in ['online', 'readerDisconnected']: return '

Card reader disconnected

' elif status == 'cardInserted': return '

Reading card

'
Event name: $(event.get('name', '') if event is not None else '')
Event date: $(date.isoformat() if date != '' else '')

$for result in messages: $if event.get('id', -1) == result.get('eventId', '-2'): $if result.get('status') in (ResultStatus.OK, ResultStatus.MISSING_PUNCH, ResultStatus.DID_NOT_FINISH, ResultStatus.OVER_TIME): $else:
Read Control card Status Time Name Class
$result.get('entryTime', '') $result.get('controlCard') $MAP_STATUS[result.get('status')] $format(result.get('time', 0))$result.get('lastName', ''), $result.get('firstName', '') $result.get('class', '')$result.get('error', '')

$:format_cardreader_status(status)