From 27354b8d081c896e8a856af3353d0a17dd8aafea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aaron=20D=C3=B6tsch?= <aaron@fsmpi.rwth-aachen.de>
Date: Thu, 26 Sep 2024 08:42:46 +0200
Subject: [PATCH] update

---
 src/routes/admin/mr-x/[id=number]/+page.svelte         |  4 ++--
 src/routes/admin/mr-x/[id=number]/Entry.svelte         |  4 ++--
 src/routes/admin/rabatte/[id=number]/+page.server.ts   |  2 +-
 src/routes/admin/rabatte/[id=number]/+page.svelte      |  3 +++
 .../admin/rabatte/[id=number]/OpeningHoursInput.svelte | 10 +++++-----
 5 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/routes/admin/mr-x/[id=number]/+page.svelte b/src/routes/admin/mr-x/[id=number]/+page.svelte
index 4cd88ee..b26e029 100644
--- a/src/routes/admin/mr-x/[id=number]/+page.svelte
+++ b/src/routes/admin/mr-x/[id=number]/+page.svelte
@@ -1,6 +1,6 @@
 <script lang="ts">
 	import H1 from "$lib/components/H1.svelte";
-	import { Breadcrumb, BreadcrumbItem, Button, Card, Input, Textarea } from "flowbite-svelte";
+	import { Breadcrumb, BreadcrumbItem, Button, Card, Fileupload, Input, Textarea } from "flowbite-svelte";
 	import Entry from "./Entry.svelte";
 	import { enhance } from "$app/forms";
 	import { invalidateAll } from "$app/navigation";
@@ -28,7 +28,7 @@
 		}}>
 			<Input name="time" type="datetime-local" class="mb-2" required />
 			<Textarea name="text" class="mb-2" />
-			<Input name="image" type="file" accept="image/png, image/jpeg" class="mb-2" />
+			<Fileupload name="image" accept="image/png, image/jpeg" class="mb-2" />
 			<Button type="submit" class="w-full">Erstellen</Button>
 		</form>
 	</Card>
diff --git a/src/routes/admin/mr-x/[id=number]/Entry.svelte b/src/routes/admin/mr-x/[id=number]/Entry.svelte
index 69ae9a2..b04bb07 100644
--- a/src/routes/admin/mr-x/[id=number]/Entry.svelte
+++ b/src/routes/admin/mr-x/[id=number]/Entry.svelte
@@ -1,5 +1,5 @@
 <script lang="ts">
-	import { Card, Textarea, Button, ButtonGroup, Input } from "flowbite-svelte";
+	import { Card, Textarea, Button, ButtonGroup, Fileupload, Input } from "flowbite-svelte";
 	import type { MrXData } from "../../../(non-admin)/mr-x/[id=number]/data/+server";
 	import { enhance } from "$app/forms";
 	import Image from "$lib/components/Image.svelte";
@@ -39,7 +39,7 @@
 		<input bind:this={imageInput} name="image" type="file" accept="image/png, image/jpeg" class={removeImage ? "mb-2" : "hidden"} onchange={()=>removeImage=true} />
 		<input type="hidden" name="removeImage" value={removeImage ? "true" : null} />
 		{:else}
-		<Input name="image" type="file" accept="image/png, image/jpeg" class="mb-2" />
+		<Fileupload name="image" accept="image/png, image/jpeg" class="mb-2" />
 		{/if}
 		<div class="flex gap-2">
 			<Button type="submit" class="w-full">Speichern</Button>
diff --git a/src/routes/admin/rabatte/[id=number]/+page.server.ts b/src/routes/admin/rabatte/[id=number]/+page.server.ts
index 87d7c9a..c9f33dc 100644
--- a/src/routes/admin/rabatte/[id=number]/+page.server.ts
+++ b/src/routes/admin/rabatte/[id=number]/+page.server.ts
@@ -72,7 +72,7 @@ export const actions = {
 			}
 			const day = data.get(`openingHours[${currentDay}]`);
 			if(typeof day !== "string" || !(["1","2","3","4","5","6","7"].includes(day) || day==="holiday" || (day.match(/^\d{4}-\d{2}-\d{2}$/) && !isNaN(Date.parse(day))))) error(400, `Invalid day: ${day}`);
-			openingHours[day as keyof Discount["openingHours"]] = hours;
+			openingHours[day as keyof Discount["openingHours"]] = hours.sort((a,b)=>a[0][0]*60+a[0][1]-b[0][0]*60-b[0][1]);
 			currentDay++;
 		}
 		await Discount.update(id, {
diff --git a/src/routes/admin/rabatte/[id=number]/+page.svelte b/src/routes/admin/rabatte/[id=number]/+page.svelte
index 0c8255e..435ad4d 100644
--- a/src/routes/admin/rabatte/[id=number]/+page.svelte
+++ b/src/routes/admin/rabatte/[id=number]/+page.svelte
@@ -51,6 +51,9 @@
 	function roundTo5Digits(num: number): number{
 		return Math.round(num * 1e5) / 1e5;
 	}
+	// somehow got compilation errors when building with this
+	//function refocusMap(address: string): void;
+	//function refocusMap(latitude: number, longitude: number): void;
 	async function refocusMap(){
 		if(arguments.length === 1){
 			const [address] = arguments;
diff --git a/src/routes/admin/rabatte/[id=number]/OpeningHoursInput.svelte b/src/routes/admin/rabatte/[id=number]/OpeningHoursInput.svelte
index 50a89ef..6eff713 100644
--- a/src/routes/admin/rabatte/[id=number]/OpeningHoursInput.svelte
+++ b/src/routes/admin/rabatte/[id=number]/OpeningHoursInput.svelte
@@ -2,7 +2,7 @@
 	import type { Discount } from "$lib/server/database/entities/Discount.entity";
 	import { Button, CloseButton, Input, Table, TableBody, TableBodyCell, TableBodyRow, TableHead, TableHeadCell } from "flowbite-svelte";
 	
-	let { openingHours }: { openingHours: Discount["openingHours"] } = $props();
+	let { openingHours = $bindable() }: { openingHours: Discount["openingHours"] } = $props();
 	
 	for(const day of [1,2,3,4,5,6,7] as const){
 		if(!openingHours[day]) openingHours[day] = [];
@@ -38,14 +38,14 @@
 			<TableBodyCell class="px-3 py-1">
 				{#each openingHours[day as keyof typeof openingHours]||[] as [start, end], j}
 				<div class="w-min mx-1 inline-block rtl:text-right px-2 py-[0.15rem] border focus-within:ring-1 focus-within:border-primary-500 focus-within:ring-primary-500 dark:focus-within:border-primary-500 dark:focus-within:ring-primary-500 bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white border-gray-300 dark:border-gray-600 text-sm rounded-lg">
-					<input name="openingHours[{i}][{j}][sh]" class="w-[2em] p-1 border-none focus:ring-0 [appearance:textfield] bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white" type="number" step="1" min="0" max="23" bind:value={start[0]} required />
+					<input name="openingHours[{i}][{j}][sh]" class="w-[2.5em] p-1 border-none focus:ring-0 [appearance:textfield] bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white" type="number" step="1" min="0" max="23" bind:value={start[0]} required />
 					:
-					<input name="openingHours[{i}][{j}][sm]" class="w-[2em] p-1 border-none focus:ring-0 [appearance:textfield] bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white" type="number" step="1" min="0" max="59" bind:value={start[1]} required />
+					<input name="openingHours[{i}][{j}][sm]" class="w-[2.5em] p-1 border-none focus:ring-0 [appearance:textfield] bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white" type="number" step="1" min="0" max="59" bind:value={start[1]} required />
 					bis
 					<!-- no max on this input, 25 o'clock is 1 o'clock of the next day -->
-					<input name="openingHours[{i}][{j}][eh]" class="w-[2em] p-1 border-none focus:ring-0 [appearance:textfield] bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white" type="number" step="1" min="0" max="47" bind:value={end[0]} required />
+					<input name="openingHours[{i}][{j}][eh]" class="w-[2.5em] p-1 border-none focus:ring-0 [appearance:textfield] bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white" type="number" step="1" min="0" max="47" bind:value={end[0]} required />
 					:
-					<input name="openingHours[{i}][{j}][em]" class="w-[2em] p-1 border-none focus:ring-0 [appearance:textfield] bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white" type="number" step="1" min="0" max="59" bind:value={end[1]} required />
+					<input name="openingHours[{i}][{j}][em]" class="w-[2.5em] p-1 border-none focus:ring-0 [appearance:textfield] bg-gray-50 text-gray-900 dark:bg-gray-700 dark:text-white" type="number" step="1" min="0" max="59" bind:value={end[1]} required />
 					<CloseButton name="entfernen" class="p-1 my-0" on:click={()=>openingHours = Object.assign(openingHours, {[day]: openingHours[day as keyof typeof openingHours]?.filter((_,k)=>k!==j)})} />
 				</div>
 				{/each}
-- 
GitLab