{{ template "base.html" .Base }}
<h2>Machine {{ .Machine.ID }}</h2>

{{ $sessions := .Sessions }}

<table>
    <tr>
        <td><b>Machine ID</b></td>
        <td class="mono">{{ .Machine.ID }}</td>
    </tr>
    <tr>
        <td><b>Created</b></td>
        <td>{{ .Machine.Created }}</td>
    </tr>
    <tr>
        <td><b>Active Backoffs</b></td>
        <td>{{ len .Machine.ActiveBackoffs }}</td>
    </tr>
    <tr>
        <td><b>Active Work</b></td>
        <td>{{ len .Machine.Work }}</td>
    </tr>
</table>

<div class="vsplit">
    <div class="column">
        <h2>Tags</h2>
        {{ range $name, $tag := .Machine.Tags }}
        <table>
            <tr>
                <th colspan="2">
                    {{ template "fragment_tag.html" $tag }}
                </th>
            </tr>
            {{ range $tag.Fields }}
            <tr>
                <td>
                    <b>{{ .Type.NativeName }}:</b>
                </td>
                <td class="mono">
                    <pre>{{ .HumanValue }}</pre>
                </td>
            </tr>
            {{ end }}
        </table>
        {{ else }}
        <i>No tags.</i>
        {{ end }}
        <h2>Work</h2>
        {{ range $name, $work := .Machine.Work }}
        <table>
            <tr>
                <th colspan="3">
                    <b>{{ $work.Process }}</b>
                </th>
            </tr>
            <tr>
                <td><b>Process:</b></td>
                <td class="mono" colspan="2">
                    {{ $work.Process }}
                </td>
            </tr>
            {{ $sessionOrErr := index $sessions $name }}
            {{ if ne $sessionOrErr.Error "" }}
            <tr>
                <td colspan="3" class="error">
                    Could not retrieve session information: {{ $sessionOrErr.Error }}
                </td>
            </tr>
            {{ else }}
            {{ $session := $sessionOrErr.Session }}
            <tr>
                <td rowspan="5" style="vertical-align: top;"><b>Session</b></td>
                <td><b>ID:</b></td>
                <td class="mono" colspan="2">
                    <a href="/session/{{ $session.SessionID }}">{{ $session.SessionID }}</a>
                </td>
            </tr>
            <tr>
                <td><b>Component:</b></td>
                <td class="mono">{{ $session.SessionComponentName }}</td>
            </tr>
            <tr>
                <td><b>Runtime:</b></td>
                <td class="mono">{{ $session.SessionRuntimeInfo }}</td>
            </tr>
            <tr>
                <td><b>Created At:</b></td>
                <td>{{ $session.SessionCreatedAt }}</td>
            </tr>
            <tr>
                <td><b>Liveness:</b></td>
                <td>Interval {{ $session.SessionIntervalSeconds }}s, deadline {{ $session.SessionDeadline }}</td>
            </tr>
            {{ end }}
        </table>
        {{ else }}
        <i>No active work.</i>
        {{ end }}
        <h2>Backoffs</h2>
        <h3>Active</h3>
        {{ range $name, $backoff := .Machine.ActiveBackoffs }}
        <table>
            <tr>
                <th colspan="2">
                    <b>{{ $backoff.Process }}</b>
                </th>
            </tr>
            <tr>
                <td><b>Process:</b></td>
                <td class="mono">{{ $backoff.Process }}</td>
            </tr>
            <tr>
                <td><b>Until:</b></td>
                <td class="mono">{{ $backoff.Until }}</td>
            </tr>
            <tr>
                <td><b>Cause:</b></td>
                <td class="mono">{{ $backoff.Cause }}</td>
            </tr>
        </table>
        {{ else }}
        <i>No active backoffs.</i>
        {{ end }}
        <h3>Expired</h3>
        {{ range $name, $backoff := .Machine.ExpiredBackoffs }}
        <table style="opacity: 0.4">
            <tr>
                <th colspan="2">
                    <b>{{ $backoff.Process }}</b>
                </th>
            </tr>
            <tr>
                <td><b>Process:</b></td>
                <td class="mono">{{ $backoff.Process }}</td>
            </tr>
            <tr>
                <td><b>Until:</b></td>
                <td class="mono">{{ $backoff.Until }}</td>
            </tr>
            <tr>
                <td><b>Cause:</b></td>
                <td class="mono">{{ $backoff.Cause }}</td>
            </tr>
        </table>
        {{ else }}
        <i>No expired backoffs.</i>
        {{ end }}
    </div>
    <div class="column">
        <h2>Work History</h2>
        {{ if ne .HistoryError "" }}
        <b class="error">Unavailable: {{ .HistoryError }}</b>
        {{ else }}
        <i>Note: reverse chronological order.</i>
        <table>
            <tr>
                <th>Time</th>
                <th>Process</th>
                <th>Event</th>
            </tr>
            {{ range .History }}
            <tr class="Event{{.Event}}">
                <td>{{ .Timestamp }}</td>
                <td><b>{{ .Process }}</b></td>
                {{ if eq .Event "Failed" }}
                <td>{{ .Event }}: <span class="mono">{{ .FailedCause.String }}</span></td>
                {{ else }}
                <td>{{ .Event }}</td>
                {{ end }}
            </tr>
            {{ end }}
        </table>
        {{ end }}
    </div>
</div>