blob: e6875298b931c888ce78f179723bca749adcb160 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
@inject IDbContextFactory<HBContext> dbFactory
@inject ITagService tagService
<link rel="stylesheet" href="@(nameof(HyperBooru)).styles.css"/>
<table class="data-table">
<tr>
<th>Namespace</th>
<th>Tag Name</th>
<th></th>
</tr>
@foreach(var e in tagDefs) {
<tr>
<td>
@if(e.isImplicit) {
<i>@e.tagDef.Namespace</i>
} else {
@e.tagDef.Namespace
}
</td>
<td>
<a href="/Gallery?t=@(e.tagDef.Guid)" class="nondecorated">
@if(e.isImplicit) {
<i>@e.tagDef.Name</i>
} else {
@e.tagDef.Name
}
</a>
</td>
<td>
@if(!e.isImplicit) {
<a href="javascript:;" @onclick=@(() => Delete(e.tagDef))>Delete</a>
} else {
<a href="javascript:;" @onclick=@(() => MakeExplicit(e.tagDef))>Make Explicit</a>
}
</td>
</tr>
}
</table>
@code {
[Parameter]
public Media Media { get; set; }
private (TagDefinition tagDef, bool isImplicit)[] tagDefs;
protected override void OnInitialized() => LoadTagDefs();
public void Refresh() {
LoadTagDefs();
StateHasChanged();
}
private void Delete(TagDefinition tagDef) {
tagService.RemoveTag(Media.Guid, tagDef.Guid);
Refresh();
}
private void LoadTagDefs() {
using var db = dbFactory.CreateDbContext();
var media = db.Media.First(m => m.ObjectId == Media.ObjectId);
tagDefs = tagService.GetAllTags(Media)
.Where(e => e.tagDefinition.Source == TagSource.UserTag)
.ToArray();
}
private void MakeExplicit(TagDefinition tagDef) {
tagService.AddTag(Media, tagDef);
Refresh();
}
}
|