Remove old editing interface
All checks were successful
/ build (push) Successful in 1m13s
/ deploy (push) Successful in 15s

Remove broken placeholder event editing interface that did not take
account to access permissions or events having multiple solts.
This commit is contained in:
Hornwitser 2025-05-27 17:38:23 +02:00
parent 8d0d2400d3
commit e7dc00db54
5 changed files with 0 additions and 198 deletions

View file

@ -1,113 +0,0 @@
<template>
<details>
<summary>Admin Edit</summary>
<h3>Create Event</h3>
<form method="post" action="/api/create-event">
<label>
Id:
<input type="text" name="id" required />
</label>
<label>
Name:
<input type="text" name="name" required />
</label>
<label>
Description:
<textarea name="description" />
</label>
<label>
Start:
<input type="datetime-local" name="start" required />
</label>
<label>
End:
<input type="datetime-local" name="end" required/>
</label>
<label>
Location
<select name="location">
<option
v-for="location in schedule.locations"
:key="location.id"
:value="location.id"
>{{ location.name }} </option>
</select>
</label>
<button type="submit">Create</button>
</form>
<h3>Edit Event</h3>
<form method="post" action="/api/modify-event">
<label>
Event
<select name="id" @change="onChange" ref="eventSelect">
<option
v-for="event in schedule.events"
:key="event.id"
:value="event.id"
>{{ event.name }}</option>
</select>
</label>
<label>
Name:
<input type="text" name="name" required />
</label>
<label>
Description:
<textarea name="description" />
</label>
<label>
Start:
<input type="datetime-local" name="start" required />
</label>
<label>
End:
<input type="datetime-local" name="end" required />
</label>
<label>
Location
<select name="location">
<option
v-for="location in schedule.locations"
:key="location.id"
:value="location.id"
>{{ location.name }} </option>
</select>
</label>
<button type="submit">Edit</button>
<button type="submit" formaction="/api/delete-event">Delete</button>
</form>
</details>
</template>
<script lang="ts" setup>
const schedule = await useSchedule();
const eventSelect = useTemplateRef("eventSelect");
function onChange(event: any) {
const newEvent = schedule.value.events.find(e => e.id === event.target.value);
if (!newEvent)
return;
const form = event.target.form!;
for (const element of form.elements as any) {
if (element.name === "name") {
element.value = newEvent.name;
} else if (element.name === "description") {
element.value = newEvent.description;
} else if (element.name === "start") {
element.value = newEvent.slots[0].start.replace("Z", "");
} else if (element.name === "end") {
element.value = newEvent.slots[0].end.replace("Z", "");
} else if (element.name === "location") {
element.value = newEvent.slots[0].locations[0];
}
}
}
onMounted(() => {
onChange({ target: eventSelect.value });
})
</script>
<style>
</style>

View file

@ -41,7 +41,6 @@
</select>
</label>
<Timetable :schedule :eventSlotFilter :shiftSlotFilter />
<EventsEdit />
<h2>Events</h2>
<EventCard v-for="event in schedule.events.filter(e => e.slots.some(eventSlotFilter))" :event/>
<h2>Locations</h2>

View file

@ -1,31 +0,0 @@
import { Schedule } from "~/shared/types/schedule";
import { broadcastUpdate } from "~/server/streams";
import { sendPush } from "~/server/web-push";
import { readSchedule, writeSchedule } from "~/server/database";
export default defineEventHandler(async (event) => {
const formData = await readFormData(event);
const schedule: Schedule = await readSchedule();
const id = formData.get("id") as string;
const name = formData.get("name") as string;
const description = formData.get("description") as string;
const start = formData.get("start") as string;
const end = formData.get("end") as string;
const location = formData.get("location") as string;
schedule.events.push({
name,
id,
description,
slots: [
{
id: `${id}-1`,
start: start + "Z",
end: end + "Z",
locations: [location],
}
]
});
await broadcastUpdate(schedule);
await writeSchedule(schedule);
await sendPush(event, "New event", `${name} will start at ${start}`);
});

View file

@ -1,16 +0,0 @@
import { Schedule } from "~/shared/types/schedule";
import { broadcastUpdate } from "~/server/streams";
import { readSchedule, writeSchedule } from "~/server/database";
export default defineEventHandler(async (event) => {
const formData = await readFormData(event);
const schedule: Schedule = await readSchedule();
const id = formData.get("id") as string;
const index = schedule.events.findIndex(event => event.id === id);
if (index === -1) {
throw Error("No such event");
}
schedule.events.splice(index, 1);
await broadcastUpdate(schedule);
await writeSchedule(schedule);
});

View file

@ -1,37 +0,0 @@
import { Schedule } from "~/shared/types/schedule";
import { broadcastUpdate } from "~/server/streams";
import { sendPush } from "~/server/web-push";
import { readSchedule, writeSchedule } from "~/server/database";
export default defineEventHandler(async (event) => {
const formData = await readFormData(event);
const schedule: Schedule = await readSchedule();
const id = formData.get("id") as string;
const name = formData.get("name") as string;
const description = formData.get("description") as string;
const start = formData.get("start") as string;
const end = formData.get("end") as string;
const location = formData.get("location") as string;
const index = schedule.events.findIndex(event => event.id === id);
if (index === -1) {
throw Error("No such event");
}
const timeChanged = schedule.events[index].slots[0].start !== start + "Z";
schedule.events[index] = {
name,
id,
description,
slots: [
{
id: `${id}-1`,
start: start + "Z",
end: end + "Z",
locations: [location],
}
]
};
await broadcastUpdate(schedule);
await writeSchedule(schedule);
if (timeChanged)
await sendPush(event, `New time for ${name}`, `${name} will now start at ${start}`);
});