{%TEMPLATE->struct/head%} {%TEMPLATE->struct/menu%}

Health Check [[check.getId()]]

{%TEMPLATE->struct/messages%}
Time Created [[date([[config.getVal([[$DConfig::TIME_FORMAT]])]], [[check.getTime()]])]]
Status {{IF [[check.getStatus()]] == [[$DHealthCheckStatus::PENDING]]}} Running {{ENDIF}} {{IF [[check.getStatus()]] == [[$DHealthCheckStatus::COMPLETED]]}} Completed {{ENDIF}} {{IF [[check.getStatus()]] == [[$DHealthCheckStatus::ABORTED]]}} Aborted {{ENDIF}}
Report

Checked Agents ([[sizeof([[checkAgents]])]])

{{FOREACH checkAgent;[[checkAgents]]}} {{ENDFOREACH}} {{IF [[sizeof([[checkAgents]])]] == 0}} {{ENDIF}}
ID Agent Status Time Required # Devices Cracked Errors  
[[checkAgent.getId()]] [[agentSet.getVal([[checkAgent.getAgentId()]])->getAgentName()]] {{IF [[checkAgent.getStatus()]] == [[$DHealthCheckAgentStatus::PENDING]]}} Running / Waiting {{ENDIF}} {{IF [[checkAgent.getStatus()]] == [[$DHealthCheckAgentStatus::COMPLETED]]}} Completed {{ENDIF}} {{IF [[checkAgent.getStatus()]] == [[$DHealthCheckAgentStatus::FAILED]]}} Failed {{ENDIF}} {{IF [[checkAgent.getStatus()]] != [[$DHealthCheckAgentStatus::PENDING]]}} [[Util::calculate([[checkAgent.getEnd()]] - [[checkAgent.getStart()]])]] seconds {{ELSE}} N/A {{ENDIF}} {{IF [[checkAgent.getStatus()]] != [[$DHealthCheckAgentStatus::PENDING]]}} [[checkAgent.getNumGpus()]] {{ELSE}} N/A {{ENDIF}} {{IF [[checkAgent.getStatus()]] != [[$DHealthCheckAgentStatus::PENDING]]}} [[checkAgent.getCracked()]] of [[check.getExpectedCracks()]] {{ELSE}} N/A {{ENDIF}} {{IF [[checkAgent.getStatus()]] != [[$DHealthCheckAgentStatus::PENDING]]}}
[[json_encode(json_decode([[checkAgent.getErrors()]], true), JSON_PRETTY_PRINT)]]
{{ELSE}} N/A {{ENDIF}}
{{IF [[checkAgent.getStatus()]] != [[$DHealthCheckAgentStatus::PENDING]]}}
{{ENDIF}}
---------------------
{%TEMPLATE->struct/foot%}