feat: add clickable tags to item details table

Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-08-29 13:16:20 -03:00
parent 86dbf0c568
commit 9d9f98dc54

View File

@@ -334,37 +334,35 @@ fn build_item_details(conn: &Connection, id: i64) -> Result<String> {
html.push_str("<link rel=\"stylesheet\" href=\"/style.css\">");
html.push_str("</head><body>");
html.push_str(&format!("<h1>Item #{}</h1>", id));
// Single table for all details
html.push_str("<table>");
html.push_str(&format!("<tr><td>ID:</td><td>{}</td></tr>", item.id.unwrap_or(0)));
html.push_str(&format!("<tr><td>Timestamp:</td><td>{}</td></tr>", item.ts.format("%Y-%m-%d %H:%M:%S")));
html.push_str(&format!("<tr><td>Size:</td><td>{}</td></tr>", item.size.unwrap_or(0)));
html.push_str(&format!("<tr><td>Compression:</td><td>{}</td></tr>", item.compression));
html.push_str("</table>");
html.push_str(&format!("<tr><th>ID</th><td>{}</td></tr>", item.id.unwrap_or(0)));
html.push_str(&format!("<tr><th>Timestamp</th><td>{}</td></tr>", item.ts.format("%Y-%m-%d %H:%M:%S")));
html.push_str(&format!("<tr><th>Size</th><td>{}</td></tr>", item.size.unwrap_or(0)));
html.push_str(&format!("<tr><th>Compression</th><td>{}</td></tr>", item.compression));
// Tags section
html.push_str("<h2>Tags</h2>");
// Tags row
html.push_str("<tr><th>Tags</th><td>");
if tags.is_empty() {
html.push_str("<p>No tags</p>");
html.push_str("No tags");
} else {
html.push_str("<ul>");
for tag in tags {
html.push_str(&format!("<li>{}</li>", tag.name));
}
html.push_str("</ul>");
let tag_links: Vec<String> = tags.iter()
.map(|t| format!("<a href=\"/?tags={}\">{}</a>", t.name, t.name))
.collect();
html.push_str(&tag_links.join(", "));
}
html.push_str("</td></tr>");
// Metadata section
html.push_str("<h2>Metadata</h2>");
// Metadata rows
if metas.is_empty() {
html.push_str("<p>No metadata</p>");
html.push_str("<tr><th>Metadata</th><td>No metadata</td></tr>");
} else {
html.push_str("<table>");
html.push_str("<tr><th>Name</th><th>Value</th></tr>");
for meta in metas {
html.push_str(&format!("<tr><td>{}</td><td>{}</td></tr>", meta.name, meta.value));
html.push_str(&format!("<tr><th>{}</th><td>{}</td></tr>", meta.name, meta.value));
}
html.push_str("</table>");
}
html.push_str("</table>");
// Links
html.push_str("<h2>Actions</h2>");