summaryrefslogtreecommitdiff
path: root/Pages
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2023-08-19 00:36:30 +1000
committerJake Mannens <jake@asger.xyz>2023-08-19 00:36:30 +1000
commitdfff79815acc86c02dd94716098d409d3fe46ab7 (patch)
treeefb5d4176a9b094b3b40b1a968789931cc861d54 /Pages
parenta57b6ea2e174cedb04a422a05a180f377ed4c448 (diff)
Added basic search engine functionality
Diffstat (limited to 'Pages')
-rw-r--r--Pages/Gallery.razor52
-rw-r--r--Pages/Gallery.razor.css (renamed from Pages/Index.razor.css)0
-rw-r--r--Pages/Index.razor17
-rw-r--r--Pages/Upload.razor21
-rw-r--r--Pages/Upload.razor.css28
-rw-r--r--Pages/_Host.cshtml1
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>