From dfff79815acc86c02dd94716098d409d3fe46ab7 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Sat, 19 Aug 2023 00:36:30 +1000 Subject: Added basic search engine functionality --- Pages/Gallery.razor | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ Pages/Gallery.razor.css | 8 ++++++++ Pages/Index.razor | 17 ---------------- Pages/Index.razor.css | 8 -------- Pages/Upload.razor | 21 ++++++++++++++++++++ Pages/Upload.razor.css | 28 ++++++++++++++++++++++++++ Pages/_Host.cshtml | 1 + 7 files changed, 110 insertions(+), 25 deletions(-) create mode 100644 Pages/Gallery.razor create mode 100644 Pages/Gallery.razor.css delete mode 100644 Pages/Index.razor delete mode 100644 Pages/Index.razor.css create mode 100644 Pages/Upload.razor create mode 100644 Pages/Upload.razor.css (limited to 'Pages') 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 dbFactory +@inject ISearchService searchService + +@(Query is null ? "Gallery" : "Search Results") + + + +
+ + +
+ +@foreach(var media in Media) { + + + +} + +@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/Gallery.razor.css b/Pages/Gallery.razor.css new file mode 100644 index 0000000..d1750b4 --- /dev/null +++ b/Pages/Gallery.razor.css @@ -0,0 +1,8 @@ +img { + margin-right: 5px; + max-height: 200px; +} + +form#upload { + padding-bottom: 30px; +} \ No newline at end of file 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; - -Gallery - - - -
- - -
- -@foreach(var media in db.Media.OrderByDescending(m => m.ObjectId)) { - - - -} diff --git a/Pages/Index.razor.css b/Pages/Index.razor.css deleted file mode 100644 index d1750b4..0000000 --- a/Pages/Index.razor.css +++ /dev/null @@ -1,8 +0,0 @@ -img { - margin-right: 5px; - max-height: 200px; -} - -form#upload { - padding-bottom: 30px; -} \ No newline at end of file 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" + + + +
+ dropHover = true) + @ondragleave=@(() => dropHover = false)/> +

Drag a file to upload it

+
+ +@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 @@ + -- cgit v1.3