summaryrefslogtreecommitdiff
path: root/Pages
diff options
context:
space:
mode:
Diffstat (limited to 'Pages')
-rw-r--r--Pages/TagDefinitions.cshtml.cs2
-rw-r--r--Pages/ViewMedia.cshtml27
-rw-r--r--Pages/ViewMedia.cshtml.cs25
-rw-r--r--Pages/ViewMedia.cshtml.css4
4 files changed, 46 insertions, 12 deletions
diff --git a/Pages/TagDefinitions.cshtml.cs b/Pages/TagDefinitions.cshtml.cs
index e2253d6..afbad87 100644
--- a/Pages/TagDefinitions.cshtml.cs
+++ b/Pages/TagDefinitions.cshtml.cs
@@ -5,7 +5,7 @@ namespace HyperBooru.Pages;
public class TagDefinitionsModel : PageModel {
public IEnumerable<DbTagDefinition> TagDefinitions =>
- db.TagDefinitions;
+ db.TagDefinitions.Where(td => td.Source == TagSource.UserTag);
private HyperBooruDbContext db;
diff --git a/Pages/ViewMedia.cshtml b/Pages/ViewMedia.cshtml
index e37bbf1..e77ec22 100644
--- a/Pages/ViewMedia.cshtml
+++ b/Pages/ViewMedia.cshtml
@@ -115,28 +115,41 @@
}
</table>
<div class="button-container">
- <button onclick="showDeleteDialog(true)">Delete</button>
+ <button onclick="showDeleteDialog(true)" id="delete-button">Delete</button>
+ <button>Apply</button>
</div>
</div>
<div id="metadata-tags">
<table class="data-table">
<tr>
- <th>Source</th>
<th>Namespace</th>
<th>Tag Name</th>
<th></th>
</tr>
- @foreach(var tag in Model.Media.Tags.Select(t => t.TagDefinition)) {
+ @foreach(var tag in Model.UserTags) {
+ bool isImplicit = Model.IsImplicit(tag);
<tr>
- <td>@tag.Source</td>
- <td>@tag.Namespace</td>
- <td>@tag.Name</td>
+ <td>
+ @if(isImplicit) {
+ <i>@tag.Namespace</i>
+ } else {
+ @tag.Namespace
+ }
+ </td>
+ <td>
+ @if(isImplicit) {
+ <i>@tag.Name</i>
+ } else {
+ @tag.Name
+ }
+ </td>
<td><a href="javascript:;" onclick="removeTag(this, '@tag.Guid')">Delete</a></td>
</tr>
}
</table>
<div class="button-container">
- <button onclick="showTagDialog(true)">Add Tag</button>
+ <button onclick="showTagDialog(true)" class="secondary">Add Tag</button>
+ <button onclick="show">Tagging Complete</button>
</div>
</div>
</div>
diff --git a/Pages/ViewMedia.cshtml.cs b/Pages/ViewMedia.cshtml.cs
index 476ea40..76c515b 100644
--- a/Pages/ViewMedia.cshtml.cs
+++ b/Pages/ViewMedia.cshtml.cs
@@ -6,8 +6,10 @@ namespace HyperBooru.Pages;
public class ViewMediaModel : PageModel {
public DbMedia Media { get; private set; }
+ public DbTagDefinition[] UserTags { get; private set; }
+
public IEnumerable<DbTagDefinition> TagDefinitions =>
- db.TagDefinitions;
+ db.TagDefinitions.Where(td => td.Source == TagSource.UserTag);
private HyperBooruDbContext db;
@@ -15,12 +17,27 @@ public class ViewMediaModel : PageModel {
this.db = db;
public IActionResult OnGet([FromQuery(Name = "m")] Guid mediaId) {
- var media = db.Media.First(m => m.Guid == mediaId);
- if(media is null)
+ Media = db.Media.First(m => m.Guid == mediaId);
+ if(Media is null)
return NotFound();
- Media = media;
+ UserTags = GetTagRecursive(
+ Media.Tags
+ .Select(t => t.TagDefinition))
+ .OrderBy(td => td.Namespace)
+ .ThenBy(td => td.Name)
+ .ToArray();
return Page();
}
+
+ public bool IsImplicit(DbTagDefinition tagDef) =>
+ !Media.Tags
+ .Select(t => t.TagDefinition.Guid)
+ .Contains(tagDef.Guid);
+
+ private IEnumerable<DbTagDefinition> GetTagRecursive(IEnumerable<DbTagDefinition> tagDefs) =>
+ tagDefs
+ .Concat(tagDefs.SelectMany(td => GetTagRecursive(td.ImplicitTags)))
+ .DistinctBy(td => td.Guid);
} \ No newline at end of file
diff --git a/Pages/ViewMedia.cshtml.css b/Pages/ViewMedia.cshtml.css
index 622de48..29094b8 100644
--- a/Pages/ViewMedia.cshtml.css
+++ b/Pages/ViewMedia.cshtml.css
@@ -52,6 +52,10 @@ div#metadata-fileinfo > table td {
font-size: 8pt;
}
+div#metadata-fileinfo button#delete-button {
+ background: #ff4848;
+}
+
div#metadata-tags > table td {
font-size: 8pt;
}