Fix tampilan dashboard admin donasi & event

This commit is contained in:
2025-01-24 17:29:31 +08:00
parent 074337bae1
commit ab0623fb26
10 changed files with 3585 additions and 145 deletions

3399
backup.sql Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@ datasource db {
url = env("DATABASE_URL") url = env("DATABASE_URL")
} }
model User { model User {
id String @id @default(cuid()) id String @id @default(cuid())
username String @unique username String @unique

View File

@@ -12,7 +12,6 @@ export default async function Page() {
<AdminDonasi_Main <AdminDonasi_Main
countPublish={countPublish as number} countPublish={countPublish as number}
countReview={countReview as number} countReview={countReview as number}
countDraft={countDraft as number}
countReject={countReject as number} countReject={countReject as number}
/> />
</> </>

View File

@@ -22,6 +22,7 @@ export const RouterAdminDonasi_OLD = {
table_publish: "/dev/admin/donasi/table/publish", table_publish: "/dev/admin/donasi/table/publish",
table_review: "/dev/admin/donasi/table/review", table_review: "/dev/admin/donasi/table/review",
table_reject: "/dev/admin/donasi/table/reject", table_reject: "/dev/admin/donasi/table/reject",
table_kategori: "/dev/admin/donasi/table/kategori",
// detail // detail
detail_publish: "/dev/admin/donasi/detail/publish/", detail_publish: "/dev/admin/donasi/detail/publish/",

View File

@@ -51,7 +51,7 @@ export default function AdminColab_Dashboard({
{listStatus.map((e, i) => ( {listStatus.map((e, i) => (
<Paper <Paper
key={i} key={i}
bg={"gray.2"} bg={`${e.color}.2`}
shadow="md" shadow="md"
radius="md" radius="md"
p="md" p="md"

View File

@@ -12,20 +12,23 @@ import {
Box, Box,
Group, Group,
ActionIcon, ActionIcon,
Flex,
ThemeIcon,
} from "@mantine/core"; } from "@mantine/core";
import { IconChevronsRight } from "@tabler/icons-react"; import { IconAlertTriangle, IconBookmark, IconCategory, IconChevronsRight, IconUpload } from "@tabler/icons-react";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate";
import { AccentColor, MainColor } from "@/app_modules/_global/color";
export default function AdminDonasi_Main({ export default function AdminDonasi_Main({
countPublish, countPublish,
countReview, countReview,
countDraft,
countReject, countReject,
}: { }: {
countPublish: number; countPublish: number;
countReview: number; countReview: number;
countDraft: number;
countReject: number; countReject: number;
}) { }) {
const router = useRouter(); const router = useRouter();
@@ -35,29 +38,34 @@ export default function AdminDonasi_Main({
name: "Publish", name: "Publish",
jumlah: countPublish, jumlah: countPublish,
link: RouterAdminDonasi_OLD.table_publish, link: RouterAdminDonasi_OLD.table_publish,
color: "green", color: MainColor.green,
icon: <IconUpload size={18} color="#4CAF4F"/>,
}, },
{ {
id: 2, id: 2,
name: "Review", name: "Review",
jumlah: countReview, jumlah: countReview,
link: RouterAdminDonasi_OLD.table_review, link: RouterAdminDonasi_OLD.table_review,
color: "orange", color: MainColor.orange,
icon: <IconBookmark size={18} color="#FF7043"/>
}, },
// {
// id: 3,
// name: "Draft",
// jumlah: countDraft,
// link: "",
// color: "yellow",
// },
{ {
id: 4, id: 3,
name: "Reject", name: "Reject",
jumlah: countReject, jumlah: countReject,
link: RouterAdminDonasi_OLD.table_reject, link: RouterAdminDonasi_OLD.table_reject,
color: "red", color: MainColor.red,
icon: <IconAlertTriangle size={18} color="#FF4B4C" />
}, },
{
id: 4,
name: "Kategori",
jumlah: 5,
link: RouterAdminDonasi_OLD.table_kategori,
color: AccentColor.softblue,
icon: <IconCategory size={18} color="#007CBA"/>
}
]; ];
return ( return (
<> <>
@@ -76,18 +84,22 @@ export default function AdminDonasi_Main({
{listBox.map((e, i) => ( {listBox.map((e, i) => (
<Paper <Paper
key={i} key={i}
bg={`${e.color}.2`} bg={e.color}
shadow="md" shadow="md"
radius="md" radius="md"
p="md" p="md"
// sx={{ borderColor: e.color, borderStyle: "solid" }} // sx={{ borderColor: e.color, borderStyle: "solid" }}
> >
<Group position="center"> <Stack spacing={0}>
<Stack align="center" spacing={0}> <Text c={AccentColor.white} fw={"bold"}>{e.name}</Text>
<Text>{e.name}</Text> <Flex align={"center"} justify={"space-between"}>
<Title>{e.jumlah}</Title> <Title c={AccentColor.white} fw={"bold"}>{e.jumlah ? e.jumlah : 0}</Title>
<ThemeIcon color={AccentColor.white} radius={"xl"} size={"md"}>
{e.icon}
</ThemeIcon>
</Flex>
</Stack> </Stack>
</Group>
</Paper> </Paper>
))} ))}
</SimpleGrid> </SimpleGrid>

View File

@@ -2,14 +2,17 @@
import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event"; import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
import { AccentColor, MainColor } from "@/app_modules/_global/color";
import { import {
Group, Flex,
Paper, Paper,
SimpleGrid, SimpleGrid,
Stack, Stack,
Text, Text,
ThemeIcon,
Title Title
} from "@mantine/core"; } from "@mantine/core";
import { IconAlertTriangle, IconBookmark, IconBriefcase, IconHistory, IconUpload } from "@tabler/icons-react";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate";
@@ -36,14 +39,16 @@ export default function AdminEvent_Main({
name: "Publish", name: "Publish",
jumlah: countPublish, jumlah: countPublish,
path: RouterAdminEvent.table_publish, path: RouterAdminEvent.table_publish,
color: "green", color: MainColor.green,
icon: <IconUpload size={18} color="#4CAF4F"/>,
}, },
{ {
id: 2, id: 2,
name: "Review", name: "Review",
jumlah: countReview, jumlah: countReview,
path: RouterAdminEvent.table_review, path: RouterAdminEvent.table_review,
color: "orange", color: MainColor.orange,
icon: <IconBookmark size={18} color="#FF7043"/>
}, },
// { // {
// id: 3, // id: 3,
@@ -53,28 +58,32 @@ export default function AdminEvent_Main({
// color: "yellow", // color: "yellow",
// }, // },
{ {
id: 4, id: 3,
name: "Reject", name: "Reject",
jumlah: countReject, jumlah: countReject,
path: RouterAdminEvent.table_reject, path: RouterAdminEvent.table_reject,
color: "red", color: MainColor.red,
icon: <IconAlertTriangle size={18} color="#FF4B4C" />
},
{
id: 4,
name: "Riwayat Event",
jumlah: countRiwayat,
path: RouterAdminEvent.table_publish,
color: AccentColor.softblue,
icon: <IconHistory size={18} color="#007CBA"/>
}, },
]; ];
const listBox2 = [ const listBox2 = [
{ {
id: 1, id: 1,
name: "Riwayat Event",
jumlah: countRiwayat,
path: RouterAdminEvent.table_publish,
color: "gray",
},
{
id: 2,
name: "Tipe Acara", name: "Tipe Acara",
jumlah: countTipeAcara, jumlah: countTipeAcara,
path: RouterAdminEvent.table_publish, path: RouterAdminEvent.table_publish,
color: "gray", color: "#A888E2",
icon: <IconBriefcase size={18} color="#A888E2" />
}, },
]; ];
@@ -95,18 +104,23 @@ export default function AdminEvent_Main({
{listStatus.map((e, i) => ( {listStatus.map((e, i) => (
<Paper <Paper
key={i} key={i}
bg={`${e.color}.2`} bg={e.color}
shadow="md" shadow="md"
radius="md" radius="md"
p="md" p="md"
// sx={{ borderColor: e.color, borderStyle: "solid" }} // sx={{ borderColor: e.color, borderStyle: "solid" }}
> >
<Group position="center">
<Stack align="center" spacing={0}> <Stack spacing={0}>
<Text>{e.name}</Text> <Text fw={"bold"} color={AccentColor.white}>{e.name}</Text>
<Title>{e.jumlah}</Title> <Flex align={"center"} justify={"space-between"}>
<Title c={AccentColor.white}>{e.jumlah}</Title>
<ThemeIcon radius={"xl"} size={"md"} color={AccentColor.white}>
{e.icon}
</ThemeIcon>
</Flex>
</Stack> </Stack>
</Group>
</Paper> </Paper>
))} ))}
</SimpleGrid> </SimpleGrid>
@@ -122,18 +136,21 @@ export default function AdminEvent_Main({
{listBox2.map((e, i) => ( {listBox2.map((e, i) => (
<Paper <Paper
key={i} key={i}
bg={`${e.color}.2`} bg={e.color}
shadow="md" shadow="md"
radius="md" radius="md"
p="md" p="md"
// sx={{ borderColor: e.color, borderStyle: "solid" }} // sx={{ borderColor: e.color, borderStyle: "solid" }}
> >
<Group position="center"> <Stack spacing={0}>
<Stack align="center" spacing={0}> <Text fw={"bold"} color={AccentColor.white}>{e.name}</Text>
<Text>{e.name}</Text> <Flex align={"center"} justify={"space-between"}>
<Title>{e.jumlah}</Title> <Title c={AccentColor.white}>{e.jumlah}</Title>
<ThemeIcon radius={"xl"} size={"md"} bg={AccentColor.white}>
{e.icon}
</ThemeIcon>
</Flex>
</Stack> </Stack>
</Group>
</Paper> </Paper>
))} ))}
</SimpleGrid> </SimpleGrid>

View File

@@ -28,6 +28,7 @@ import { adminEvent_funGetListReject } from "../fun";
import { AdminEvent_funEditCatatanById } from "../fun/edit/fun_edit_status_reject_by_id"; import { AdminEvent_funEditCatatanById } from "../fun/edit/fun_edit_status_reject_by_id";
import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component";
import { MainColor } from "@/app_modules/_global/color"; import { MainColor } from "@/app_modules/_global/color";
import { AdminColor } from "@/app_modules/_global/color/color_pallet";
export default function AdminEvent_TableReject({ export default function AdminEvent_TableReject({
listReject, listReject,
@@ -181,7 +182,7 @@ function TableStatus({ listReject }: { listReject: any }) {
<Stack spacing={"xs"} h={"100%"}> <Stack spacing={"xs"} h={"100%"}>
<ComponentAdminGlobal_TitlePage <ComponentAdminGlobal_TitlePage
name="Reject" name="Reject"
color={MainColor.red} color={AdminColor.red}
component={ component={
<TextInput <TextInput
icon={<IconSearch size={20} />} icon={<IconSearch size={20} />}

View File

@@ -69,7 +69,7 @@ function ForumMain({
{listBox.map((e, i) => ( {listBox.map((e, i) => (
<Paper <Paper
key={i} key={i}
bg={`${"gray"}.2`} bg={`${e.color}.2`}
shadow="md" shadow="md"
radius="md" radius="md"
p="md" p="md"

View File

@@ -21,6 +21,7 @@ import {
Button, Button,
Center, Center,
Image, Image,
Skeleton,
Stack, Stack,
TextInput, TextInput,
Textarea, Textarea,
@@ -32,6 +33,7 @@ import { useState } from "react";
import { donasi_funUpdateKabar } from "../../fun"; import { donasi_funUpdateKabar } from "../../fun";
import { MODEL_DONASI_KABAR } from "../../model/interface"; import { MODEL_DONASI_KABAR } from "../../model/interface";
import { clientLogger } from "@/util/clientLogger"; import { clientLogger } from "@/util/clientLogger";
import SkeletonEditDonasi from "../../edit/edit_donasi/skeleton_edit_donasi";
export function Donasi_ViewEditKabar({ export function Donasi_ViewEditKabar({
dataKabar, dataKabar,
@@ -104,12 +106,18 @@ export function Donasi_ViewEditKabar({
} catch (error) { } catch (error) {
setLoading(false); setLoading(false);
clientLogger.error("Error update donasi", error); clientLogger.error("Error update donasi", error);
} finally {
setLoading(false);
} }
} }
return ( return (
<> <>
<Stack px={"lg"} pb={"lg"}> <Stack px={"lg"} pb={"lg"}>
{isLoading ? (
<SkeletonEditDonasi />
) : (
<>
<ComponentGlobal_BoxInformation informasi="Gambar tidak wajib di isi ! Hanya upload jika di butuhkan." /> <ComponentGlobal_BoxInformation informasi="Gambar tidak wajib di isi ! Hanya upload jika di butuhkan." />
<TextInput <TextInput
@@ -206,6 +214,8 @@ export function Donasi_ViewEditKabar({
> >
Simpan Simpan
</Button> </Button>
</>
)}
</Stack> </Stack>
</> </>
); );