feat: delete #62
@@ -85,9 +85,17 @@ export function haversineDistance(
|
||||
return radius * 2 * Math.asin(Math.sqrt(e1));
|
||||
}
|
||||
|
||||
export function collectTimings(study_space_hours: Table<"study_space_hours">[]) {
|
||||
export function collectTimings(
|
||||
study_space_hours: Omit<
|
||||
Table<"study_space_hours">,
|
||||
"id" | "created_at" | "updated_at" | "study_space_id"
|
||||
>[]
|
||||
) {
|
||||
// Collect all timing entries
|
||||
const timingsPerDay: Record<number, Table<"study_space_hours">[]> = {
|
||||
const timingsPerDay: Record<
|
||||
number,
|
||||
Omit<Table<"study_space_hours">, "id" | "created_at" | "updated_at" | "study_space_id">[]
|
||||
> = {
|
||||
0: [],
|
||||
1: [],
|
||||
2: [],
|
||||
|
||||
@@ -87,6 +87,12 @@
|
||||
isFavourite = true;
|
||||
}
|
||||
}
|
||||
|
||||
async function deleteSpace() {
|
||||
if (!confirm("Are you sure you want to delete this study space?")) return;
|
||||
await supabase.from("study_spaces").delete().eq("id", space.id);
|
||||
window.location.href = "/";
|
||||
}
|
||||
</script>
|
||||
|
||||
<Navbar>
|
||||
@@ -192,7 +198,10 @@
|
||||
|
||||
<div class="actions">
|
||||
{#if adminMode}
|
||||
<div class="buttonContainer">
|
||||
<Button href="/space/{space.id}/edit" type="link">Edit</Button>
|
||||
<Button type="button" style="red" onclick={deleteSpace}>Delete</Button>
|
||||
</div>
|
||||
{:else}
|
||||
<Button onclick={() => (isReportVisible = true)} style="red">Report</Button>
|
||||
{/if}
|
||||
@@ -355,4 +364,9 @@
|
||||
width: 3.75rem;
|
||||
height: 3.75rem;
|
||||
}
|
||||
.buttonContainer {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 0.5rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
volumeTags,
|
||||
gmapsLoader,
|
||||
daysOfWeek,
|
||||
timeToMins
|
||||
timeToMins,
|
||||
collectTimings
|
||||
} from "$lib";
|
||||
import { onMount } from "svelte";
|
||||
import type { Json } from "$lib/database.js";
|
||||
@@ -61,6 +62,19 @@
|
||||
function checkTimings() {
|
||||
let cannotExist = [] as number[];
|
||||
|
||||
let hasAllDays = Object.values(collectTimings(studySpaceData.opening_times)).every(
|
||||
(item) => !(Array.isArray(item) && item.length === 0)
|
||||
);
|
||||
|
||||
if (
|
||||
(allDays.closes_at === "" || allDays.opens_at === "") &&
|
||||
allDays.open_today_status === null &&
|
||||
!hasAllDays
|
||||
) {
|
||||
alert(`No opening time provided for all other days.`);
|
||||
return false;
|
||||
}
|
||||
|
||||
const opensAtMinsAll = timeToMins(allDays.opens_at);
|
||||
const closesAtMinsAll = timeToMins(allDays.closes_at);
|
||||
if (opensAtMinsAll >= closesAtMinsAll) {
|
||||
@@ -200,6 +214,7 @@
|
||||
// Nothing is provided
|
||||
if (
|
||||
(allDays.closes_at != "" && allDays.opens_at != "") ||
|
||||
studySpaceData.opening_times.length === 7 ||
|
||||
allDays.open_today_status != null
|
||||
) {
|
||||
const { error: hoursErr } = await supabase
|
||||
|
||||
Reference in New Issue
Block a user