From 3a6213d412e5328177ba172b094100187a126f75 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Sun, 1 Jun 2025 13:16:05 +0200 Subject: [PATCH] Backend/Frontend: Added all fields for photography section. --- backend/core/file.go | 37 +++++++++++++++++-- frontend/src/lib/components/hover-card.svelte | 13 +++++-- .../lib/components/popup/hover-card.svelte | 13 ++++--- frontend/src/lib/json/hub.json | 32 +--------------- 4 files changed, 51 insertions(+), 44 deletions(-) diff --git a/backend/core/file.go b/backend/core/file.go index 5564764..07bf7ed 100644 --- a/backend/core/file.go +++ b/backend/core/file.go @@ -2,10 +2,12 @@ package core import ( "backend/util" + "encoding/json" "errors" "io/fs" "os" "path/filepath" + "sort" "strings" "time" ) @@ -21,6 +23,12 @@ type PictureData struct { Description string `json:"description"` } +type PictureJson struct { + Title string `json:"title"` + Localisation string `json:"localisation"` + Description string `json:"description"` +} + var picd []PictureData func listFiles(path string, actualdir string, picd []PictureData) []PictureData { @@ -40,7 +48,7 @@ func listFiles(path string, actualdir string, picd []PictureData) []PictureData picd = listFiles(path+"/"+info.Name(), info.Name(), picd) } else { // fmt.Printf("\uf15b %s: %do\n", entry.Name(), info.Size()) - picd = getFileInfo(info, picd, actualdir) + picd = getFileInfo(path, info, picd, actualdir) } } return picd @@ -56,19 +64,40 @@ func isPicture(s string) bool { return false } -func getFileInfo(info fs.FileInfo, picd []PictureData, actualdir string) []PictureData { +func getFileInfo(path string, info fs.FileInfo, picd []PictureData, actualdir string) []PictureData { if isPicture(info.Name()) { + title := strings.TrimSuffix(info.Name(), filepath.Ext(info.Name())) + file, err := os.Open(filepath.Join(path, title+".json")) + var pictureinfo PictureJson + if err == nil { + decoder := json.NewDecoder(file) + decoder.DisallowUnknownFields() + decoder.Decode(&pictureinfo) + } + defer file.Close() + + // Setting parameters + if pictureinfo.Title != "" { + title = pictureinfo.Title + } + picd = append(picd, PictureData{ Name: info.Name(), Date: info.ModTime(), Album: actualdir, URL: "http://localhost:8085/photo/" + actualdir + "/" + info.Name(), - Title: strings.TrimSuffix(info.Name(), filepath.Ext(info.Name())), - Localisation: "Paris, France", + Title: title, + Localisation: pictureinfo.Localisation, + Description: pictureinfo.Description, }) util.Logformatrn(util.INFO, "Reading %d files...", len(picd)) } + // Ordering by most recent + sort.Slice(picd, func(i, j int) bool { + return picd[i].Date.After(picd[j].Date) // descending: newer dates first + }) + return picd } diff --git a/frontend/src/lib/components/hover-card.svelte b/frontend/src/lib/components/hover-card.svelte index 350bc42..79a5d28 100644 --- a/frontend/src/lib/components/hover-card.svelte +++ b/frontend/src/lib/components/hover-card.svelte @@ -101,10 +101,15 @@ bind:this={divHoverCardMetadata.div} >

{title}

-
- -

{localisation}

-
+ {#if localisation} +
+ +

{localisation}

+
+ {/if} diff --git a/frontend/src/lib/components/popup/hover-card.svelte b/frontend/src/lib/components/popup/hover-card.svelte index 4ff85d3..4e7655c 100644 --- a/frontend/src/lib/components/popup/hover-card.svelte +++ b/frontend/src/lib/components/popup/hover-card.svelte @@ -1,6 +1,6 @@