From b892d93379046c29491341b948b29b41671a5b9a Mon Sep 17 00:00:00 2001 From: TobiZog Date: Tue, 5 Nov 2024 19:54:14 +0100 Subject: [PATCH] File browser on admin page --- software/backend/routes/api.routes.ts | 26 +++++++++ .../src/components/basics/actionDialog.vue | 2 +- software/src/data/api/mainApi.ts | 4 ++ software/src/locales/de.json | 5 +- software/src/locales/en.json | 5 +- .../pages/admin/categoriesAdminPage/index.vue | 6 -- .../src/pages/admin/dashboardPage/index.vue | 58 ++++++++++++++++--- .../filesAdminPage/filePreviewDialog.vue | 15 +++++ .../src/pages/admin/filesAdminPage/index.vue | 44 ++++++++++++++ software/src/router/admin.routes.ts | 10 ++-- software/src/stores/preferences.store.ts | 16 ++++- 11 files changed, 167 insertions(+), 24 deletions(-) delete mode 100644 software/src/pages/admin/categoriesAdminPage/index.vue create mode 100644 software/src/pages/admin/filesAdminPage/filePreviewDialog.vue create mode 100644 software/src/pages/admin/filesAdminPage/index.vue diff --git a/software/backend/routes/api.routes.ts b/software/backend/routes/api.routes.ts index d55f752..cfa5475 100644 --- a/software/backend/routes/api.routes.ts +++ b/software/backend/routes/api.routes.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction, Router } from 'express' import { deleteAllTables, deleteExerciseProgressTables, prepopulateDatabase, prepopulateExerciseDatabase } from '../scripts/databaseHelper' +import fs from "fs" export const api = Router() @@ -24,4 +25,29 @@ api.get("/resetExerciseProgress", async (req: Request, res: Response, next: Next await prepopulateExerciseDatabase() res.status(200).send() +}) + +/** + * Get all uploaded file names + */ +api.get("/files", async (req: Request, res: Response) => { + let dirNames = fs.readdirSync("./backend/images") + let result = [] + + dirNames.forEach(dir => { + let fileNames = fs.readdirSync("./backend/images/" + dir) + + result.push({ + folder: dir, + files: fileNames.map(file => { + return { + name: file, + size: fs.statSync("./backend/images/" + dir + "/" + file).size, + url: "http://localhost:3000/static/" + dir + "/" + file + } + }) + }) + }) + + res.status(200).json(result) }) \ No newline at end of file diff --git a/software/src/components/basics/actionDialog.vue b/software/src/components/basics/actionDialog.vue index da7c3aa..b483a71 100644 --- a/software/src/components/basics/actionDialog.vue +++ b/software/src/components/basics/actionDialog.vue @@ -29,7 +29,7 @@ defineProps({ -