{{ template "base.gohtml" .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.gohtml" $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>