## feat
- Create function
- Get list by status id
- Get one vote by id
### No issuue
This commit is contained in:
2024-02-09 17:50:38 +08:00
parent e6c120bf75
commit 0dd8e287f4
94 changed files with 1522 additions and 224 deletions

View File

@@ -1,5 +1,5 @@
import AdminMain from "./main/view";
import AdminLayout from "./main/layout";
import AdminLayout from "../layout";
import SplashDashboardAdmin from "../splash/splash";
export { AdminMain, AdminLayout, SplashDashboardAdmin };

View File

@@ -1,173 +0,0 @@
"use client";
import {
ActionIcon,
AppShell,
Avatar,
Box,
Burger,
Divider,
Drawer,
Footer,
Group,
Header,
MediaQuery,
NavLink,
Navbar,
Stack,
Text,
Title,
useMantineTheme,
} from "@mantine/core";
import React, { useState } from "react";
import ComponentGlobal_HeaderTamplate from "../../../component_global/header_tamplate";
import { useDisclosure } from "@mantine/hooks";
import { IconLetterH, IconLogout } from "@tabler/icons-react";
import {
RouterAdminAward,
RouterAdminDashboard,
RouterAdminDonasi,
RouterAdminInvestasi,
} from "@/app/lib/router_hipmi/router_admin";
import { useRouter } from "next/navigation";
import { RouterHome } from "@/app/lib/router_hipmi/router_home";
import { Logout } from "@/app_modules/auth";
import { useAtom } from "jotai";
import { gs_admin_hotMenu, gs_admin_subMenu } from "../../global_state";
import Admin_Logout from "../../component/logout";
import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
import _ from "lodash";
import { listAdminPage } from "./list_page";
export default function AdminLayout({
children,
}: {
children: React.ReactNode;
}) {
const theme = useMantineTheme();
const [opened, setOpened] = useState(false);
const router = useRouter();
const [active, setActive] = useAtom(gs_admin_hotMenu);
const [activeChild, setActiveChild] = useAtom(gs_admin_subMenu)
const navbarItems = listAdminPage.map((e, i) => (
<Box key={i}>
<NavLink
sx={{
":hover": {
backgroundColor: "transparent",
},
}}
fw={active === i ? "bold" : "normal"}
label={<Text size={"md"}>{e.name}</Text>}
onClick={() => {
setActive(i);
setActiveChild(null);
e.path === "" ? router.push(e.child[0].path) : router.push(e.path);
e.path === "" ? setActiveChild(0) : ""
}}
>
{_.isEmpty(e.child) ? (
""
) : (
<Box>
{e.child.map((v, ii) => (
<Box key={ii}>
<NavLink
sx={{
":hover": {
backgroundColor: "transparent",
},
}}
fw={activeChild === ii ? "bold" : "normal"}
label={<Text>{v.name}</Text>}
onClick={() => {
setActive(i);
setActiveChild(ii)
router.push(v.path);
}}
/>
</Box>
))}
</Box>
)}
</NavLink>
</Box>
));
return (
<>
<AppShell
padding="sm"
navbarOffsetBreakpoint="md"
asideOffsetBreakpoint="sm"
navbar={
<MediaQuery smallerThan={"md"} styles={{ display: "none" }}>
<Navbar
width={{ lg: 200, md: 200, sm: 200, base: 200 }}
hiddenBreakpoint="md"
hidden={!opened}
p="xs"
bg={"gray.2"}
>
{navbarItems}
</Navbar>
</MediaQuery>
}
header={
<Header height={50} bg={"gray.2"}>
{/* Mobile View */}
<MediaQuery largerThan="md" styles={{ display: "none" }}>
<Group h={50} align="center" px={"md"} position="apart">
<Burger
opened={opened}
onClick={() => setOpened((o) => !o)}
size="sm"
color={theme.colors.gray[6]}
mr="xl"
/>
<Title order={6}>Dashboard Admin</Title>
<ActionIcon
variant="transparent"
onClick={() => router.push(RouterHome.main_home)}
>
<IconLogout color="red" />
</ActionIcon>
</Group>
</MediaQuery>
{/* Web View */}
<MediaQuery smallerThan={"md"} styles={{ display: "none" }}>
<Group position="apart" align="center" h={50} px={"md"}>
<Text fw={"lighter"}>Dashboard Admin</Text>
<Title order={4}> HIPMI</Title>
{/* <Group>
{listAdminPage.map((e) => (
<Text key={e.id} onClick={() => router.push(e.route)}>
{e.name}
</Text>
))}
</Group> */}
<Admin_Logout />
</Group>
</MediaQuery>
</Header>
}
>
{/* {JSON.stringify(active)} */}
{children}
</AppShell>
<Drawer opened={opened} onClose={() => setOpened(false)} size={"50%"}>
<Stack spacing={"xl"}>
{listAdminPage.map((e) => (
<Text key={e.id} onClick={() => router.push(e.path)}>
{e.name}
</Text>
))}
</Stack>
</Drawer>
</>
);
}

View File

@@ -1,64 +0,0 @@
import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
import {
RouterAdminDashboard,
RouterAdminDonasi,
RouterAdminInvestasi,
} from "@/app/lib/router_hipmi/router_admin";
export const listAdminPage = [
{
id: 1,
name: "Main Dashboard",
path: RouterAdminDashboard.main_admin,
child: [],
},
{
id: 2,
name: "Investasi",
path: RouterAdminInvestasi.main_investasi,
child: [],
},
{
id: 3,
name: "Donasi",
path: RouterAdminDonasi.main_donasi,
child: [],
},
{
id: 4,
name: "Event",
path: "",
child: [
{
id: 1,
name: "Dashboard",
path: RouterAdminEvent.main_event,
},
{
id: 2,
name: "Table Publish",
path: RouterAdminEvent.table_publish,
},
{
id: 3,
name: "Table Review",
path: RouterAdminEvent.table_review,
},
{
id: 4,
name: "Table Reject",
path: RouterAdminEvent.table_reject,
},
{
id: 5,
name: "Tipe Acara",
path: RouterAdminEvent.detail_tipe_acara,
},
{
id: 6,
name: "Riwayat",
path: RouterAdminEvent.detail_riwayat,
},
],
},
];