Files
core/internal/api/ui_assets.tmpl

98 lines
3.7 KiB
Cheetah

{{define "asset"}}
<!DOCTYPE html>
<html lang="en">
{{template "head" .}}
<body>
{{template "topbar" .}}
{{template "breadcrumbs" .}}
<main class="container">
<section class="card">
<h2>Server Card</h2>
<div class="meta-grid">
<div><span>Vendor Serial</span>{{.Asset.VendorSerial}}</div>
<div><span>Vendor</span>{{if .Asset.Vendor}}{{.Asset.Vendor}}{{else}}—{{end}}</div>
<div><span>Model</span>{{if .Asset.Model}}{{.Asset.Model}}{{else}}—{{end}}</div>
<div><span>Asset Tag</span>{{if .Asset.MachineTag}}{{.Asset.MachineTag}}{{else}}—{{end}}</div>
<div><span>Status</span><span class="badge {{assetStatusClass .AssetStatus}}">{{assetStatusText .AssetStatus}}</span></div>
<div><span>Customer</span>{{if .Asset.CustomerID}}{{if .CustomerName}}{{.CustomerName}}{{else}}Assigned{{end}}{{else}}Stock{{end}}</div>
<div><span>Location</span>{{if .Asset.LocationID}}{{if .LocationName}}{{.LocationName}}{{else}}Assigned{{end}}{{else}}—{{end}}</div>
<div><span>Project</span>{{.ProjectName}}</div>
</div>
</section>
<section class="card">
<h2>Current Components</h2>
{{if .Components}}
<table class="table">
<thead>
<tr>
<th>Status</th>
<th>Vendor Serial</th>
<th>Vendor</th>
<th>Model</th>
<th>Lot</th>
<th>First Seen</th>
</tr>
</thead>
<tbody>
{{range .Components}}
<tr class="clickable" onclick="navigateToRow('/ui/components/{{.ID}}')">
<td><span class="badge {{componentStatusClass (index $.ComponentStatusByID .ID)}}">{{componentStatusText (index $.ComponentStatusByID .ID)}}</span></td>
<td>{{.VendorSerial}}</td>
<td>{{if .Vendor}}{{.Vendor}}{{else}}—{{end}}</td>
<td>{{if .Model}}{{.Model}}{{else}}—{{end}}</td>
<td>{{lotCode .LotID $.LotCodes}}</td>
<td title="{{formatTimePtrFull .FirstSeenAt}}">{{formatTimePtr .FirstSeenAt}}</td>
</tr>
{{end}}
</tbody>
</table>
{{else}}
<div class="meta">No active components.</div>
{{end}}
</section>
<section class="card">
<h2>Movement & Events</h2>
{{if .Events}}
<div class="timeline">
{{range .Events}}
<div class="event">
<div>
<div class="time" title="{{formatTimeFull .EventTime}}">{{formatTime .EventTime}}</div>
<div class="pill {{timelineEventClass .EventType}}">{{.EventType}}</div>
</div>
<div>
<div class="detail">Asset {{assetLabel .MachineID $.AssetLabelByID}} · Component {{componentLabel .PartID $.ComponentLabelByID}}</div>
<div class="meta">Firmware {{if .FirmwareVersion}}{{.FirmwareVersion}}{{else}}—{{end}}</div>
</div>
</div>
{{end}}
</div>
{{else}}
<div class="meta">No timeline events.</div>
{{end}}
</section>
<section class="card">
<h2>Linked Tickets</h2>
{{if .Tickets}}
<div class="tickets">
{{range .Tickets}}
<div class="ticket">
<div class="title">{{.Title}}</div>
<div class="meta">{{.Source}} · {{.ExternalID}} · <span class="badge {{ticketStatusClass .Status}}">{{.Status}}</span> · Opened <span title="{{formatTimePtrFull .OpenedAt}}">{{formatTimePtr .OpenedAt}}</span></div>
{{if .URL}}<div class="meta"><a href="{{.URL}}" target="_blank" rel="noreferrer">Ticket link</a></div>{{end}}
</div>
{{end}}
</div>
{{else}}
<div class="meta">No linked tickets.</div>
{{end}}
</section>
</main>
</body>
</html>
{{end}}