diff options
| author | Jake Mannens <jake@asger.xyz> | 2023-08-19 00:36:30 +1000 |
|---|---|---|
| committer | Jake Mannens <jake@asger.xyz> | 2023-08-19 00:36:30 +1000 |
| commit | dfff79815acc86c02dd94716098d409d3fe46ab7 (patch) | |
| tree | efb5d4176a9b094b3b40b1a968789931cc861d54 /Pages | |
| parent | a57b6ea2e174cedb04a422a05a180f377ed4c448 (diff) | |
Added basic search engine functionality
Diffstat (limited to 'Pages')
| -rw-r--r-- | Pages/Gallery.razor | 52 | ||||
| -rw-r--r-- | Pages/Gallery.razor.css (renamed from Pages/Index.razor.css) | 0 | ||||
| -rw-r--r-- | Pages/Index.razor | 17 | ||||
| -rw-r--r-- | Pages/Upload.razor | 21 | ||||
| -rw-r--r-- | Pages/Upload.razor.css | 28 | ||||
| -rw-r--r-- | Pages/_Host.cshtml | 1 |
6 files changed, 102 insertions, 17 deletions
diff --git a/Pages/Gallery.razor b/Pages/Gallery.razor new file mode 100644 index 0000000..fb58ca0 --- /dev/null +++ b/Pages/Gallery.razor @@ -0,0 +1,52 @@ +@page "/" +@page "/Gallery" +@inject IDbContextFactory<HBContext> dbFactory +@inject ISearchService searchService + +<PageTitle>@(Query is null ? "Gallery" : "Search Results")</PageTitle> + +<link rel="stylesheet" href="@(nameof(HyperBooru)).styles.css"/> + +<form id="upload" action="/media" method="post" enctype="multipart/form-data"> + <input type="file" id="myFile" name="filename"/> + <input type="submit" /> +</form> + +@foreach(var media in Media) { + <a href="/ViewMedia?m=@(media.Guid)"> + <img src="/media/thumb/@(media.Guid)?h=200" /> + </a> +} + +@code { + [Parameter] + [SupplyParameterFromQuery(Name = "q")] + public string? Query { get; set; } + + [Parameter] + [SupplyParameterFromQuery] + public bool? Ingest { get; set; } + + private Media[] Media; + + protected override void OnParametersSet() => LoadMedia(); + + private void LoadMedia() { + using var db = dbFactory.CreateDbContext(); + + if(Ingest is not null && Ingest == true) { + Media = db.Media + .OrderByDescending(m => m.ObjectId) + .ToArray() + .Where(m => m.IsIngest) + .ToArray(); + } else { + if(Query is null) + Media = db.Media + .OrderByDescending(m => m.ObjectId) + .ToArray(); + else + Media = searchService.Search(Query); + } + } +} diff --git a/Pages/Index.razor.css b/Pages/Gallery.razor.css index d1750b4..d1750b4 100644 --- a/Pages/Index.razor.css +++ b/Pages/Gallery.razor.css diff --git a/Pages/Index.razor b/Pages/Index.razor deleted file mode 100644 index 4719530..0000000 --- a/Pages/Index.razor +++ /dev/null @@ -1,17 +0,0 @@ -@page "/" -@inject HBContext db; - -<PageTitle>Gallery</PageTitle> - -<link rel="stylesheet" href="@(nameof(HyperBooru)).styles.css"/> - -<form id="upload" action="/media" method="post" enctype="multipart/form-data"> - <input type="file" id="myFile" name="filename"/> - <input type="submit" /> -</form> - -@foreach(var media in db.Media.OrderByDescending(m => m.ObjectId)) { - <a href="/ViewMedia?m=@(media.Guid)"> - <img src="/media/thumb/@(media.Guid)?h=200" /> - </a> -} diff --git a/Pages/Upload.razor b/Pages/Upload.razor new file mode 100644 index 0000000..33153d2 --- /dev/null +++ b/Pages/Upload.razor @@ -0,0 +1,21 @@ +@page "/Upload" + +<link rel="stylesheet" href="@(nameof(HyperBooru)).styles.css"/> + +<div id="dropzone" class="@((dropHover ? "drop-hover" : ""))"> + <InputFile + multiple + title="" + accept="image/*" + OnChange=FileInputChange + @ondragenter=@(() => dropHover = true) + @ondragleave=@(() => dropHover = false)/> + <p>Drag a file to upload it</p> +</div> + +@code { + private bool dropHover = false; + + private void FileInputChange(IFileListEntry[] files) { + } +}
\ No newline at end of file diff --git a/Pages/Upload.razor.css b/Pages/Upload.razor.css new file mode 100644 index 0000000..4064467 --- /dev/null +++ b/Pages/Upload.razor.css @@ -0,0 +1,28 @@ +div#dropzone { + border-radius: 10px; + border: 3px dashed #aaa; + height: 400px; + left: 50%; + position: relative; + top: 50%; + transform: translate(-50%, -50%); + width: 700px; +} + +div#dropzone p { + color: #aaa; + display: inline-block; + left: 50%; + margin: 0; + position: relative; + top: 50%; + transform: translate(-50%, -50%); +} + +div#dropzone.drop-hover { + border: 3px dashed white; +} + +div#dropzone.drop-hover p { + color: white; +}
\ No newline at end of file diff --git a/Pages/_Host.cshtml b/Pages/_Host.cshtml index e01b94d..e519d57 100644 --- a/Pages/_Host.cshtml +++ b/Pages/_Host.cshtml @@ -12,6 +12,7 @@ <link href="/styles/global.css" rel="stylesheet" /> <link href="/favicon.ico" rel="icon" /> <link href="/manifest.webmanifest" rel="manifest" /> + <script src="~/_content/BlazorInputFile/inputfile.js"></script> <component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" /> </head> <body> |
