Implement async manual CSV ingest, unified UI pagination/filters, and serial placeholder strategy

This commit is contained in:
2026-02-21 22:14:04 +03:00
parent ca762a658b
commit c84102d2f1
44 changed files with 3314 additions and 342 deletions

View File

@@ -9,7 +9,6 @@
<section class="card">
<h2>Registry Snapshot</h2>
<div class="stats">
<div class="stat"><span>Projects</span><strong>{{.ProjectCount}}</strong></div>
<div class="stat"><span>Assets</span><strong>{{.AssetCount}}</strong></div>
<div class="stat"><span>Components</span><strong>{{.ComponentCount}}</strong></div>
</div>
@@ -24,24 +23,21 @@
<th>Status</th>
<th>Name</th>
<th>Vendor Serial</th>
<th>Project</th>
<th>Created</th>
</tr>
</thead>
<tbody>
{{range $i, $item := .Assets}}
{{if lt $i 5}}
{{range $item := .Assets}}
<tr class="clickable" onclick="navigateToRow('/ui/assets/{{$item.ID}}')">
<td><span class="badge {{assetStatusClass (index $.AssetStatusByID $item.ID)}}">{{assetStatusText (index $.AssetStatusByID $item.ID)}}</span></td>
<td>{{$item.Name}}</td>
<td>{{$item.VendorSerial}}</td>
<td>{{projectName $item.ProjectID $.ProjectByID}}</td>
<td title="{{formatTimeFull $item.CreatedAt}}">{{formatTime $item.CreatedAt}}</td>
</tr>
{{end}}
{{end}}
</tbody>
</table>
{{template "pagination" .AssetsPager}}
{{else}}
<div class="meta">No assets yet.</div>
{{end}}
@@ -61,8 +57,7 @@
</tr>
</thead>
<tbody>
{{range $i, $item := .Components}}
{{if lt $i 5}}
{{range $item := .Components}}
<tr class="clickable" onclick="navigateToRow('/ui/components/{{$item.ID}}')">
<td><span class="badge {{componentStatusClass (index $.ComponentStatusByID $item.ID)}}">{{componentStatusText (index $.ComponentStatusByID $item.ID)}}</span></td>
<td>{{componentLabelByID $item.ID $.ComponentLabelByID}}</td>
@@ -70,9 +65,9 @@
<td title="{{formatTimeFull $item.CreatedAt}}">{{formatTime $item.CreatedAt}}</td>
</tr>
{{end}}
{{end}}
</tbody>
</table>
{{template "pagination" .ComponentsPager}}
{{else}}
<div class="meta">No components yet.</div>
{{end}}