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:
@@ -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("<link rel=\"stylesheet\" href=\"/style.css\">");
|
||||||
html.push_str("</head><body>");
|
html.push_str("</head><body>");
|
||||||
html.push_str(&format!("<h1>Item #{}</h1>", id));
|
html.push_str(&format!("<h1>Item #{}</h1>", id));
|
||||||
|
|
||||||
|
// Single table for all details
|
||||||
html.push_str("<table>");
|
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><th>ID</th><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><th>Timestamp</th><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><th>Size</th><td>{}</td></tr>", item.size.unwrap_or(0)));
|
||||||
html.push_str(&format!("<tr><td>Compression:</td><td>{}</td></tr>", item.compression));
|
html.push_str(&format!("<tr><th>Compression</th><td>{}</td></tr>", item.compression));
|
||||||
html.push_str("</table>");
|
|
||||||
|
|
||||||
// Tags section
|
// Tags row
|
||||||
html.push_str("<h2>Tags</h2>");
|
html.push_str("<tr><th>Tags</th><td>");
|
||||||
if tags.is_empty() {
|
if tags.is_empty() {
|
||||||
html.push_str("<p>No tags</p>");
|
html.push_str("No tags");
|
||||||
} else {
|
} else {
|
||||||
html.push_str("<ul>");
|
let tag_links: Vec<String> = tags.iter()
|
||||||
for tag in tags {
|
.map(|t| format!("<a href=\"/?tags={}\">{}</a>", t.name, t.name))
|
||||||
html.push_str(&format!("<li>{}</li>", tag.name));
|
.collect();
|
||||||
}
|
html.push_str(&tag_links.join(", "));
|
||||||
html.push_str("</ul>");
|
|
||||||
}
|
}
|
||||||
|
html.push_str("</td></tr>");
|
||||||
|
|
||||||
// Metadata section
|
// Metadata rows
|
||||||
html.push_str("<h2>Metadata</h2>");
|
|
||||||
if metas.is_empty() {
|
if metas.is_empty() {
|
||||||
html.push_str("<p>No metadata</p>");
|
html.push_str("<tr><th>Metadata</th><td>No metadata</td></tr>");
|
||||||
} else {
|
} else {
|
||||||
html.push_str("<table>");
|
|
||||||
html.push_str("<tr><th>Name</th><th>Value</th></tr>");
|
|
||||||
for meta in metas {
|
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
|
// Links
|
||||||
html.push_str("<h2>Actions</h2>");
|
html.push_str("<h2>Actions</h2>");
|
||||||
|
|||||||
Reference in New Issue
Block a user