Added placeholder-text for overview

This commit is contained in:
z1glr
2025-01-30 23:13:42 +00:00
parent 6d965b5a03
commit da06038263
6 changed files with 56 additions and 31 deletions

View File

@@ -1,8 +1,8 @@
"use client"; "use client";
import Loading from "@/components/Loading";
import { apiCall } from "@/lib"; import { apiCall } from "@/lib";
import zustand, { StateUser } from "@/Zustand"; import zustand, { StateUser } from "@/Zustand";
import { Spinner } from "@heroui/react";
import { usePathname, useRouter } from "next/navigation"; import { usePathname, useRouter } from "next/navigation";
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
@@ -58,7 +58,7 @@ export default function Main({ children }: { children: React.ReactNode }) {
switch (auth) { switch (auth) {
case AuthState.Loading: case AuthState.Loading:
return <Spinner label="Loading..." />; return <Loading />;
case AuthState.LoggedIn: case AuthState.LoggedIn:
case AuthState.LoginScreen: case AuthState.LoginScreen:
return children; return children;

View File

@@ -2,6 +2,7 @@
import AssignmentTable from "@/components/Event/AssignmentTable"; import AssignmentTable from "@/components/Event/AssignmentTable";
import Event from "@/components/Event/Event"; import Event from "@/components/Event/Event";
import Loading from "@/components/Loading";
import { apiCall } from "@/lib"; import { apiCall } from "@/lib";
import zustand, { EventData } from "@/Zustand"; import zustand, { EventData } from "@/Zustand";
import { useAsyncList } from "@react-stately/data"; import { useAsyncList } from "@react-stately/data";
@@ -27,17 +28,30 @@ export default function MyEvents() {
}, },
}); });
console.debug(events);
return ( return (
<div className="flex justify-center gap-4"> <div>
{events.items.map((e) => ( <h1 className="mb-4 text-center text-4xl">My Events</h1>
<Event key={e.eventID} event={e}> {events.isLoading ? (
<AssignmentTable <Loading />
className="mt-auto" ) : events.items.length > 0 ? (
tasks={e.tasks} <div className="flex justify-center gap-4">
highlightUser={user?.userName} {events.items.map((e) => (
/> <Event key={e.eventID} event={e}>
</Event> <AssignmentTable
))} className="mt-auto"
tasks={e.tasks}
highlightUser={user?.userName}
/>
</Event>
))}
</div>
) : (
<div className="text-center italic text-gray-400">
No assigned events
</div>
)}
</div> </div>
); );
} }

View File

@@ -2,6 +2,7 @@
import AvailabilitySelector from "@/components/Event/AvailabilitySelector"; import AvailabilitySelector from "@/components/Event/AvailabilitySelector";
import Event from "@/components/Event/Event"; import Event from "@/components/Event/Event";
import Loading from "@/components/Loading";
import { apiCall } from "@/lib"; import { apiCall } from "@/lib";
import { EventAvailability } from "@/Zustand"; import { EventAvailability } from "@/Zustand";
import { useAsyncList } from "@react-stately/data"; import { useAsyncList } from "@react-stately/data";
@@ -28,12 +29,25 @@ export default function PendingEvents() {
}); });
return ( return (
<div className="flex justify-center gap-4"> <div>
{events.items.map((e) => ( <h1 className="mb-4 mt-8 w-full text-center text-4xl lg:mt-0">
<Event key={e.eventID} event={e}> Pending Events
<AvailabilitySelector event={e} className="mt-auto" /> </h1>
</Event> {events.isLoading ? (
))} <Loading />
) : events.items.length > 0 ? (
<div className="flex justify-center gap-4">
{events.items.map((e) => (
<Event key={e.eventID} event={e}>
<AvailabilitySelector event={e} className="mt-auto" />
</Event>
))}
</div>
) : (
<div className="text-center italic text-gray-400">
No events with missing availability
</div>
)}
</div> </div>
); );
} }

View File

@@ -3,17 +3,9 @@ import PendingEvents from "./PendingEvents";
export default function Overview() { export default function Overview() {
return ( return (
<div className="relative mx-auto flex-1 grid-cols-2 lg:grid lg:max-w-screen-lg"> <div className="relative mx-auto flex-1 grid-cols-2 gap-8 lg:grid lg:max-w-screen-lg">
<div> <MyEvents />
<h1 className="mb-4 text-center text-4xl">My Events</h1> <PendingEvents />
<MyEvents />
</div>
<div>
<h1 className="mb-4 mt-8 text-center text-4xl lg:mt-0">
Pending Events
</h1>
<PendingEvents />
</div>
</div> </div>
); );
} }

View File

@@ -15,12 +15,12 @@ import {
ModalContent, ModalContent,
ModalFooter, ModalFooter,
ModalHeader, ModalHeader,
Spinner,
Textarea, Textarea,
} from "@heroui/react"; } from "@heroui/react";
import { EventData } from "@/Zustand"; import { EventData } from "@/Zustand";
import { useAsyncList } from "@react-stately/data"; import { useAsyncList } from "@react-stately/data";
import { getTasks } from "@/lib"; import { getTasks } from "@/lib";
import Loading from "../Loading";
export interface EventSubmitData { export interface EventSubmitData {
eventID: number; eventID: number;
@@ -128,7 +128,7 @@ export default function EventEditor(props: {
</div> </div>
)) ))
) : ( ) : (
<Spinner label="Loading" /> <Loading />
)} )}
</CheckboxGroup> </CheckboxGroup>
</ModalBody> </ModalBody>

View File

@@ -0,0 +1,5 @@
import { Spinner } from "@heroui/react";
export default function Loading() {
return <Spinner label="Loading..." />;
}