Merge pull request #273 from bipproduction/amalia/30-september-24

upd: project
This commit is contained in:
Amalia
2024-09-30 11:30:20 +08:00
committed by GitHub
19 changed files with 2 additions and 1669 deletions

View File

@@ -1,4 +1,4 @@
import { ListAnggotaDetailProject, ListFileDetailProject, ListTugasDetailProject, NavbarDetailProject, ProgressDetailProject, ViewDetailProject } from '@/module/project';
import { ListAnggotaDetailProject, ListFileDetailProject, ListTugasDetailProject, NavbarDetailProject, ProgressDetailProject } from '@/module/project';
import { Box } from '@mantine/core';
import React from 'react';

View File

@@ -1,5 +1,5 @@
import { ViewFilter } from '@/module/_global';
import { TabProject, ViewProject } from '@/module/project';
import { TabProject } from '@/module/project';
import React from 'react';
function Page({ searchParams }: { searchParams: { page: string } }) {

View File

@@ -1,115 +0,0 @@
"use client";
import { LayoutNavbarNew, WARNA } from "@/module/_global";
import {
Anchor,
Avatar,
Box,
Button,
Checkbox,
Divider,
Flex,
Group,
Text,
TextInput,
} from "@mantine/core";
import { useRouter } from "next/navigation";
import React from "react";
import { HiMagnifyingGlass } from "react-icons/hi2";
const DateUsers = [
{
id: 1,
name: "Iqbal Ramadan",
image: "https://i.pravatar.cc/1000?img=5",
},
{
id: 2,
name: "Doni Setiawan",
image: "https://i.pravatar.cc/1000?img=10",
},
{
id: 3,
name: "Rangga Agung",
image: "https://i.pravatar.cc/1000?img=51",
},
{
id: 4,
name: "Ramadan Sananta",
image: "https://i.pravatar.cc/1000?img=15",
},
{
id: 5,
name: "Imam Baroni",
image: "https://i.pravatar.cc/1000?img=22",
},
];
export default function DetailCreateUserProject({ kategori }: { kategori: string }) {
const router = useRouter();
return (
<Box>
<LayoutNavbarNew
back=""
title="Pilih Anggota"
menu
/>
<Box p={20}>
<TextInput
styles={{
input: {
color: WARNA.biruTua,
borderRadius: WARNA.biruTua,
borderColor: WARNA.biruTua,
},
}}
size="md"
radius={30}
leftSection={<HiMagnifyingGlass size={20} />}
placeholder="Pencarian"
/>
<Flex justify={"space-between"} mt={20}>
<Text c={WARNA.biruTua} fw={"bold"}>
Pilih Semua Divisi
</Text>
<Checkbox defaultChecked color="teal" size="md" />
</Flex>
<Flex justify={"space-between"} mt={20}>
<Text c={WARNA.biruTua} fw={"bold"}>
Divisi Kerohanian
</Text>
<Anchor>Pilih Semua</Anchor>
</Flex>
<Box mt={15}>
{DateUsers.map((v, i) => {
return (
<Box mb={15} key={i}>
<Flex justify={"space-between"} align={"center"}>
<Group>
<Avatar src={v.image} alt="it's me" size="lg" />
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}
</Text>
</Group>
<Checkbox defaultChecked color="teal" size="md" />
</Flex>
<Divider my={"md"} />
</Box>
);
})}
</Box>
<Box mt={"xl"}>
<Button
c={"white"}
bg={WARNA.biruTua}
size="lg"
radius={30}
fullWidth
onClick={() => router.push(`/${kategori}/update/1?page=detail-date-task`)}
>
Simpan
</Button>
</Box>
</Box>
</Box>
);
}

View File

@@ -1,187 +0,0 @@
"use client";
import { LayoutNavbarNew, WARNA } from "@/module/_global";
import {
Avatar,
Box,
Button,
Flex,
Group,
Input,
SimpleGrid,
Stack,
Text,
} from "@mantine/core";
import React, { useState } from "react";
import { DatePicker } from "@mantine/dates";
import moment from "moment";
import { IoIosArrowDropright } from "react-icons/io";
import { useRouter } from "next/navigation";
const dataTugas = [
{
id: 1,
name: "Iqbal Ramadan",
image: "https://i.pravatar.cc/1000?img=5",
email: "iqbal.ramadan@gmail.com",
},
{
id: 2,
name: "Doni Setiawan",
image: "https://i.pravatar.cc/1000?img=10",
email: "doni.setiawan@gmail.com",
},
{
id: 3,
name: "Rangga Agung",
image: "https://i.pravatar.cc/1000?img=51",
email: "rangga.agung@gmail.com",
},
{
id: 4,
name: "Ramadan Sananta",
image: "https://i.pravatar.cc/1000?img=15",
email: "ramadan@gmail.com",
},
{
id: 5,
name: "Imam Baroni",
image: "https://i.pravatar.cc/1000?img=22",
email: "imam.baroni@gmail.com",
},
];
export default function DetailDateEndTask({ kategori }: { kategori: string }) {
const [value, setValue] = useState<[Date | null, Date | null]>([null, null]);
const router = useRouter()
return (
<Box>
<LayoutNavbarNew back="" title={"Tanggal Tugas"} menu />
<Box p={20}>
<Group
justify="center"
bg={"white"}
py={20}
style={{ borderRadius: 10, border: `1px solid ${"#D6D8F6"}` }}
>
<DatePicker
styles={{}}
type="range"
value={value}
onChange={setValue}
size="md"
c={WARNA.biruTua}
/>
</Group>
<SimpleGrid cols={{ base: 2, sm: 2, lg: 2 }} mt={20}>
<Box>
<Text>Tanggal Mulai</Text>
<Group
justify="center"
bg={"white"}
h={45}
style={{ borderRadius: 10, border: `1px solid ${"#D6D8F6"}` }}
>
<Text>{value[0] ? `${value[0].toLocaleDateString()}` : ""}</Text>
</Group>
</Box>
<Box>
<Text c={WARNA.biruTua}>Tanggal Berakhir</Text>
<Group
justify="center"
bg={"white"}
h={45}
style={{ borderRadius: 10, border: `1px solid ${"#D6D8F6"}` }}
>
<Text>{value[1] ? `${value[1].toLocaleDateString()}` : ""}</Text>
</Group>
</Box>
</SimpleGrid>
<Stack pt={15}>
<Input
styles={{
input: {
border: `1px solid ${"#D6D8F6"}`,
borderRadius: 10,
},
}}
placeholder="Input Nama Tahapan"
size="md"
/>
<Box onClick={() => router.push(`/${kategori}/update/1?page=detail-create-user`)}>
<Group
justify="space-between"
p={10}
style={{
border: `1px solid ${"#D6D8F6"}`,
borderRadius: 10,
}}
>
<Text c={WARNA.biruTua}>Tambah Anggota</Text>
<IoIosArrowDropright size={25} />
</Group>
</Box>
</Stack>
<Box pt={30}>
<Group justify="space-between">
<Text c={WARNA.biruTua}>Anggota Terpilih</Text>
<Text c={WARNA.biruTua}>Total 10 Anggota</Text>
</Group>
<Box pt={10}>
<Box mb={20}>
<Box
style={{
border: `1px solid ${"#C7D6E8"}`,
borderRadius: 10,
}}
px={20}
py={10}
>
<Text c={WARNA.biruTua} fw={"bold"}>
Divisi Kerohanian
</Text>
{dataTugas.map((v, i) => {
return (
<Flex
justify={"space-between"}
align={"center"}
mt={20}
key={i}
>
<Group>
<Avatar src={v.image} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}
</Text>
<Text c={"#5A687D"} fz={14}>
{v.email}
</Text>
</Box>
</Group>
<Text c={WARNA.biruTua} fw={"bold"}>
Anggota
</Text>
</Flex>
);
})}
</Box>
</Box>
</Box>
</Box>
<Box mt={"xl"}>
<Button
c={"white"}
bg={WARNA.biruTua}
size="lg"
radius={30}
fullWidth
onClick={() => router.push(`/${kategori}/update/1?tugas=yes`)}
>
Simpan
</Button>
</Box>
</Box>
</Box>
);
}

View File

@@ -1,9 +0,0 @@
import React from 'react';
export default function DetailFileSave() {
return (
<div>
DetailFileSave
</div>
);
}

View File

@@ -1,235 +0,0 @@
"use client";
import { LayoutNavbarNew, WARNA } from "@/module/_global";
import {
ActionIcon,
Avatar,
Box,
Center,
Checkbox,
Flex,
Grid,
Group,
Progress,
SimpleGrid,
Text,
} from "@mantine/core";
import React from "react";
import { HiMiniPresentationChartBar } from "react-icons/hi2";
import { IoIosArrowDropright } from "react-icons/io";
import ResultsDateAndTask from "../../ui/results_date-and_task";
import ResultsFile from "../../ui/results_file";
import { AiOutlineFileSync } from "react-icons/ai";
import { useRouter } from "next/navigation";
import { LuClipboardEdit } from "react-icons/lu";
const dataTugas = [
{
id: 1,
name: "Iqbal Ramadan",
image: "https://i.pravatar.cc/1000?img=5",
email: "iqbal.ramadan@gmail.com",
},
{
id: 2,
name: "Doni Setiawan",
image: "https://i.pravatar.cc/1000?img=10",
email: "doni.setiawan@gmail.com",
},
{
id: 3,
name: "Rangga Agung",
image: "https://i.pravatar.cc/1000?img=51",
email: "rangga.agung@gmail.com",
},
{
id: 4,
name: "Ramadan Sananta",
image: "https://i.pravatar.cc/1000?img=15",
email: "ramadan@gmail.com",
},
{
id: 5,
name: "Imam Baroni",
image: "https://i.pravatar.cc/1000?img=22",
email: "imam.baroni@gmail.com",
},
];
export default function DetailProject() {
const router = useRouter();
return (
<Box>
<LayoutNavbarNew
back=""
title="Kegiatan Desa Maju"
menu={
<ActionIcon
variant="light"
bg={WARNA.bgIcon}
size="lg"
radius="lg"
aria-label="Settings"
onClick={() => router.push("/project/update/1")}
>
<LuClipboardEdit size={20} color="white" />
</ActionIcon>
}
/>
<Box p={20}>
<Box mt={10}>
<Box
p={20}
bg={"#DCEED8"}
style={{
borderRadius: 10,
}}
>
<Grid gutter={"lg"}>
<Grid.Col span={3}>
<ActionIcon
variant="gradient"
size={68}
aria-label="Gradient action icon"
radius={100}
gradient={{ from: "#DFDA7C", to: "#F2AF46", deg: 174 }}
>
<HiMiniPresentationChartBar size={35} color={WARNA.biruTua} />
</ActionIcon>
</Grid.Col>
<Grid.Col span={9}>
<Box>
<Text>Kemajuan Kegiatan 60%</Text>
<Progress
style={{
border: `1px solid ${"#BDBDBD"}`,
}}
w={"100%"}
color="#FCAA4B"
radius="md"
size="xl"
value={60}
/>
</Box>
</Grid.Col>
</Grid>
</Box>
</Box>
<Box pt={20}>
<Text fw={"bold"} c={WARNA.biruTua}>
Tanggal & Tugas
</Text>
<Box
bg={"white"}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
padding: 20,
}}
>
<Grid>
<Grid.Col span={"auto"}>
<Center>
<Checkbox color="teal" size="md" />
</Center>
</Grid.Col>
<Grid.Col span={10}>
<Box
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
padding: 10,
}}
>
<Group>
<AiOutlineFileSync size={25} />
<Text>Laporan Permasyarakatan</Text>
</Group>
</Box>
<Box>
<SimpleGrid cols={{ base: 2, sm: 2, lg: 2 }} mt={20}>
<Box>
<Text>Tanggal Mulai</Text>
<Group
justify="center"
bg={"white"}
h={45}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
}}
>
<Text>16 Juni 2024</Text>
</Group>
</Box>
<Box>
<Text c={WARNA.biruTua}>Tanggal Berakhir</Text>
<Group
justify="center"
bg={"white"}
h={45}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
}}
>
<Text>20 Juni 2024</Text>
</Group>
</Box>
</SimpleGrid>
</Box>
</Grid.Col>
</Grid>
</Box>
</Box>
{/* <ResultsFile /> */}
<Box pt={20}>
<Group justify="space-between">
<Text c={WARNA.biruTua}>Anggota Terpilih</Text>
<Text c={WARNA.biruTua}>Total 10 Anggota</Text>
</Group>
<Box pt={10}>
<Box mb={20}>
<Box
style={{
border: `1px solid ${"#C7D6E8"}`,
borderRadius: 10,
}}
px={20}
py={10}
>
<Text c={WARNA.biruTua} fw={"bold"}>
Divisi Kerohanian
</Text>
{dataTugas.map((v, i) => {
return (
<Flex
justify={"space-between"}
align={"center"}
mt={20}
key={i}
>
<Group>
<Avatar src={v.image} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}
</Text>
<Text c={"#5A687D"} fz={14}>
{v.email}
</Text>
</Box>
</Group>
<Text c={WARNA.biruTua} fw={"bold"}>
Anggota
</Text>
</Flex>
);
})}
</Box>
</Box>
</Box>
</Box>
</Box>
</Box>
);
}

View File

@@ -1,88 +0,0 @@
'use client'
import { LayoutNavbarNew, WARNA } from "@/module/_global";
import { Box, Button, Center, SimpleGrid, Text } from "@mantine/core";
import { useRouter } from "next/navigation";
import React, { useState } from "react";
import { BsFiletypeCsv } from "react-icons/bs";
const dataFile = [
{
id: 1,
name: "Semua_Proyek.csv",
},
{
id: 2,
name: "Proyek_Dinas.csv",
},
{
id: 3,
name: "Proyek_Lpd.csv",
},
{
id: 4,
name: "Proyek_Lembaga1.csv",
},
{
id: 5,
name: "Proyek_Lembaga2.csv",
},
{
id: 6,
name: "Proyek_Lembaga3.csv",
},
];
export default function FileUploadProgres({ kategori }: { kategori: string }) {
const router = useRouter()
const [selectedFiles, setSelectedFiles] = useState<Record<number, boolean>>({});
const handleFileClick = (index: number) => {
setSelectedFiles((prevSelectedFiles) => ({
...prevSelectedFiles,
[index]: !prevSelectedFiles[index],
}));
};
return (
<Box>
<LayoutNavbarNew back="" title="File Tersimpan" menu />
<Box p={20}>
<SimpleGrid
cols={{ base: 2, sm: 2, lg: 2 }}
spacing={{ base: 20, sm: "xl" }}
verticalSpacing={{ base: "md", sm: "xl" }}
>
{dataFile.map((file, index) => {
const isSelected = selectedFiles[index];
return (
<Box key={index} mb={20}>
<Box
bg={"#DCEED8"}
style={{
border: `${isSelected ? "2px solid #FFC107" : "1px solid #D6D8F6"}`,
borderRadius: 10,
}}
py={30}
onClick={() => handleFileClick(index)}
>
<Center>
<BsFiletypeCsv size={80} />
</Center>
</Box>
<Text mt={10} ta="center">
{file.name}
</Text>
</Box>
);
})}
</SimpleGrid>
<Box mt="xl">
<Button color="white" bg={WARNA.biruTua} size="lg" radius={30} fullWidth onClick={() => router.push(`/${kategori}/update/1`)}>
Simpan
</Button>
</Box>
</Box>
</Box>
);
}

View File

@@ -1,283 +0,0 @@
"use client";
import { LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global";
import {
Box,
Button,
Center,
Checkbox,
Flex,
Grid,
Group,
SimpleGrid,
Text,
} from "@mantine/core";
import { useRouter } from "next/navigation";
import React, { useState } from "react";
import { AiOutlineFileSync } from "react-icons/ai";
import { BsFiletypeCsv } from "react-icons/bs";
import { IoIosArrowDropright } from "react-icons/io";
export default function UpdateProgres({ searchParams }: { searchParams: any }) {
const router = useRouter();
const [openDrawer, setOpenDrawer] = useState(false);
return (
<Box>
<LayoutNavbarNew back="/project/1" title="Progres Tugas" menu />
<Box p={20}>
<Box mb={20}>
<Group
justify="space-between"
bg={"white"}
p={10}
style={{
border: `1px solid ${"#D6D8F6"}`,
borderRadius: 10,
}}
onClick={() => setOpenDrawer(true)}
>
<Text>Upload File</Text>
<IoIosArrowDropright size={25} />
</Group>
</Box>
<Box mb={20}>
<Group
justify="space-between"
bg={"white"}
p={10}
style={{
border: `1px solid ${"#D6D8F6"}`,
borderRadius: 10,
}}
onClick={() =>
router.push("/project/update/1?page=detail-date-task")
}
>
<Text>Tambah Tanggal & Tugas</Text>
<IoIosArrowDropright size={25} />
</Group>
</Box>
<Text fw={"bold"} c={WARNA.biruTua}>
Tanggal & Tugas
</Text>
<Box
bg={"white"}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
padding: 20,
}}
>
<Grid>
<Grid.Col span={"auto"}>
<Center>
<Checkbox color="teal" size="md" />
</Center>
</Grid.Col>
<Grid.Col span={10}>
<Box
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
padding: 10,
}}
>
<Group>
<AiOutlineFileSync size={25} />
<Text>Laporan Permasyarakatan</Text>
</Group>
</Box>
<Box>
<SimpleGrid cols={{ base: 2, sm: 2, lg: 2 }} mt={20}>
<Box>
<Text>Tanggal Mulai</Text>
<Group
justify="center"
bg={"white"}
h={45}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
}}
>
<Text>16 Juni 2024</Text>
</Group>
</Box>
<Box>
<Text c={WARNA.biruTua}>Tanggal Berakhir</Text>
<Group
justify="center"
bg={"white"}
h={45}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
}}
>
<Text>20 Juni 2024</Text>
</Group>
</Box>
</SimpleGrid>
</Box>
</Grid.Col>
</Grid>
{searchParams.tugas == "yes" && (
<>
<Grid mt={20}>
<Grid.Col span={"auto"}>
<Center>
<Checkbox color="teal" size="md" />
</Center>
</Grid.Col>
<Grid.Col span={10}>
<Box
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
padding: 10,
}}
>
<Group>
<AiOutlineFileSync size={25} />
<Text>Laporan Dua</Text>
</Group>
</Box>
<Box>
<SimpleGrid cols={{ base: 2, sm: 2, lg: 2 }} mt={20}>
<Box>
<Text>Tanggal Mulai</Text>
<Group
justify="center"
bg={"white"}
h={45}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
}}
>
<Text>21 Juni 2024</Text>
</Group>
</Box>
<Box>
<Text c={WARNA.biruTua}>Tanggal Berakhir</Text>
<Group
justify="center"
bg={"white"}
h={45}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
}}
>
<Text>30 Juni 2024</Text>
</Group>
</Box>
</SimpleGrid>
</Box>
</Grid.Col>
</Grid>
</>
)}
</Box>
<Box pt={20}>
<Text fw={"bold"} c={WARNA.biruTua}>
File
</Text>
<Box
bg={"white"}
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
padding: 20,
}}
>
<Box
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
padding: 10,
}}
mb={10}
>
<Group>
<BsFiletypeCsv size={25} />
<Text>Kegiatan Laporan Permasyarakatan</Text>
</Group>
</Box>
<Box
style={{
borderRadius: 10,
border: `1px solid ${"#D6D8F6"}`,
padding: 10,
}}
>
<Group>
<BsFiletypeCsv size={25} />
<Text>Kegiatan Laporan Permasyarakatan</Text>
</Group>
</Box>
</Box>
</Box>
<Box mt="xl">
<Button
color="white"
bg={WARNA.biruTua}
size="lg"
radius={30}
fullWidth
onClick={() => router.push("/project/1")}
>
Simpan
</Button>
</Box>
</Box>
<LayoutDrawer
opened={openDrawer}
onClose={() => setOpenDrawer(false)}
title={"Pilih File"}
>
<Flex justify={"space-around"}>
<Box onClick={() => ""}>
<Box
bg={"#DCEED8"}
style={{
border: `1px solid ${"#D6D8F6"}`,
padding: 20,
borderRadius: 10,
}}
>
<Center>
<BsFiletypeCsv size={40} />
</Center>
</Box>
<Text mt={10} ta={"center"}>
Pilih file
</Text>
<Text ta={"center"}>diperangkat</Text>
</Box>
<Box
onClick={() =>
router.push("/project/update/1?page=upload-progres")
}
>
<Box
bg={"#DCEED8"}
style={{
border: `1px solid ${"#D6D8F6"}`,
padding: 20,
borderRadius: 10,
}}
>
<Center>
<BsFiletypeCsv size={40} />
</Center>
</Box>
<Text mt={10} ta={"center"}>
Pilih file yang
</Text>
<Text ta={"center"}>sudah ada</Text>
</Box>
</Flex>
</LayoutDrawer>
</Box>
);
}

View File

@@ -1,88 +0,0 @@
'use client'
import { LayoutNavbarNew, WARNA } from "@/module/_global";
import { Box, Button, Center, SimpleGrid, Text } from "@mantine/core";
import { useRouter } from "next/navigation";
import React, { useState } from "react";
import { BsFiletypeCsv } from "react-icons/bs";
const dataFile = [
{
id: 1,
name: "Semua_Proyek.csv",
},
{
id: 2,
name: "Proyek_Dinas.csv",
},
{
id: 3,
name: "Proyek_Lpd.csv",
},
{
id: 4,
name: "Proyek_Lembaga1.csv",
},
{
id: 5,
name: "Proyek_Lembaga2.csv",
},
{
id: 6,
name: "Proyek_Lembaga3.csv",
},
];
export default function FileSave({ kategori }: { kategori: string }) {
const router = useRouter()
const [selectedFiles, setSelectedFiles] = useState<Record<number, boolean>>({});
const handleFileClick = (index: number) => {
setSelectedFiles((prevSelectedFiles) => ({
...prevSelectedFiles,
[index]: !prevSelectedFiles[index],
}));
};
return (
<Box>
<LayoutNavbarNew back="" title="File Tersimpan" menu />
<Box p={20}>
<SimpleGrid
cols={{ base: 2, sm: 2, lg: 2 }}
spacing={{ base: 20, sm: "xl" }}
verticalSpacing={{ base: "md", sm: "xl" }}
>
{dataFile.map((file, index) => {
const isSelected = selectedFiles[index];
return (
<Box key={index} mb={20}>
<Box
bg={"#DCEED8"}
style={{
border: `${isSelected ? "2px solid #FFC107" : "1px solid #D6D8F6"}`,
borderRadius: 10,
}}
py={30}
onClick={() => handleFileClick(index)}
>
<Center>
<BsFiletypeCsv size={80} />
</Center>
</Box>
<Text mt={10} ta="center">
{file.name}
</Text>
</Box>
);
})}
</SimpleGrid>
<Box mt="xl">
<Button color="white" bg={WARNA.biruTua} size="lg" radius={30} fullWidth onClick={() => router.push(`/${kategori}/create?anggota=yes&files=yes&button=yes`)}>
Simpan
</Button>
</Box>
</Box>
</Box>
);
}

View File

@@ -1,157 +0,0 @@
"use client"
import { WARNA } from '@/module/_global';
import { ActionIcon, Avatar, Badge, Box, Card, Center, Divider, Flex, Grid, Group, Text, TextInput, Title } from '@mantine/core';
import { useRouter } from 'next/navigation';
import React, { useState } from 'react';
import { HiMagnifyingGlass, HiMiniPresentationChartBar, HiOutlineListBullet, HiSquares2X2 } from 'react-icons/hi2';
import { MdAccountCircle } from 'react-icons/md';
import { RiCircleFill } from 'react-icons/ri';
const dataProject = [
{
id: 1,
title: 'Project 1',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT BATAL',
},
{
id: 2,
title: 'Project 2',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT BATAL',
},
{
id: 3,
title: 'Project 3',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT BATAL',
},
{
id: 4,
title: 'Project 4',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT BATAL',
},
{
id: 5,
title: 'Project 5',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT BATAL',
},
{
id: 6,
title: 'Project 6',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT BATAL',
},
]
export default function ProjectCencel() {
const [isList, setIsList] = useState(false)
const router = useRouter()
const handleList = () => {
setIsList(!isList)
}
return (
<Box mt={20}>
<Grid justify='center' align='center'>
<Grid.Col span={10}>
<TextInput
styles={{
input: {
color: WARNA.biruTua,
borderRadius: '#A3A3A3',
borderColor: '#A3A3A3',
},
}}
size="md"
radius={30}
leftSection={<HiMagnifyingGlass size={20} />}
placeholder="Pencarian"
/>
</Grid.Col>
<Grid.Col span={'auto'}>
<Flex justify={'center'}>
{isList ? (
<HiOutlineListBullet size={35} color={WARNA.biruTua} onClick={handleList} />
) : (
<HiSquares2X2 size={35} color={WARNA.biruTua} onClick={handleList} />
)}
</Flex>
</Grid.Col>
</Grid>
<Box pt={20}>
<Box bg={"#DCEED8"} p={10} style={{ borderRadius: 10 }}>
<Text fw={'bold'} c={WARNA.biruTua}>Total Kegiatan</Text>
<Flex justify={'center'} align={'center'} h={'100%'}>
<Text fz={40} fw={'bold'} c={WARNA.biruTua}>35</Text>
</Flex>
</Box>
{isList ? (
<Box pt={20}>
{dataProject.map((v, i) => {
return (
<Box key={i}>
<Group justify="space-between" mb={10} onClick={() => router.push(`/project/${v.id}`)}>
<Group>
<Center>
<ActionIcon
variant="gradient"
size={50}
aria-label="Gradient action icon"
radius={100}
gradient={{
from: '#DFDA7C',
to: '#F2AF46',
deg: 174
}}
>
<HiMiniPresentationChartBar size={25} color={WARNA.biruTua} />
</ActionIcon>
</Center>
<Text>{v.title}</Text>
</Group>
<Box>
<RiCircleFill size={12} color={'#B80C29'} />
</Box>
</Group>
<Divider my="sm" />
</Box>
);
})}
</Box>
) : (
<Box pt={20}>
{dataProject.map((v, i) => {
return (
<Box key={i} mb={20}>
<Card shadow="sm" padding="md" component="a" radius={10} onClick={() => router.push(`/project/${v.id}`)}>
<Card.Section>
<Box h={120} bg={WARNA.biruTua}>
<Flex justify={'center'} align={'center'} h={"100%"}>
<Title order={3} c={"white"}>{v.title}</Title>
</Flex>
</Box>
</Card.Section>
<Box pt={10}>
<Text>{v.description}</Text>
<Group align='center' pt={10} justify='space-between'>
<Badge color={'#B80C29'}>{v.status}</Badge>
<Avatar.Group>
<Avatar>
<MdAccountCircle size={32} color={WARNA.biruTua} />
</Avatar>
<Avatar>+5</Avatar>
</Avatar.Group>
</Group>
</Box>
</Card>
</Box>
);
})}
</Box>
)}
</Box>
</Box >
);
}

View File

@@ -1,157 +0,0 @@
"use client"
import { WARNA } from '@/module/_global';
import { ActionIcon, Avatar, Badge, Box, Card, Center, Divider, Flex, Grid, Group, Text, TextInput, Title } from '@mantine/core';
import { useRouter } from 'next/navigation';
import React, { useState } from 'react';
import { HiMagnifyingGlass, HiMiniPresentationChartBar, HiOutlineListBullet, HiSquares2X2 } from 'react-icons/hi2';
import { MdAccountCircle } from 'react-icons/md';
import { RiCircleFill } from 'react-icons/ri';
const dataProject = [
{
id: 1,
title: 'Project 1',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT SELESAI',
},
{
id: 2,
title: 'Project 2',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT SELESAI',
},
{
id: 3,
title: 'Project 3',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT SELESAI',
},
{
id: 4,
title: 'Project 4',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT SELESAI',
},
{
id: 5,
title: 'Project 5',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT SELESAI',
},
{
id: 6,
title: 'Project 6',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT SELESAI',
},
]
export default function ProjectDone() {
const [isList, setIsList] = useState(false)
const router = useRouter()
const handleList = () => {
setIsList(!isList)
}
return (
<Box mt={20}>
<Grid justify='center' align='center'>
<Grid.Col span={10}>
<TextInput
styles={{
input: {
color: WARNA.biruTua,
borderRadius: '#A3A3A3',
borderColor: '#A3A3A3',
},
}}
size="md"
radius={30}
leftSection={<HiMagnifyingGlass size={20} />}
placeholder="Pencarian"
/>
</Grid.Col>
<Grid.Col span={'auto'}>
<Flex justify={'center'}>
{isList ? (
<HiOutlineListBullet size={35} color={WARNA.biruTua} onClick={handleList} />
) : (
<HiSquares2X2 size={35} color={WARNA.biruTua} onClick={handleList} />
)}
</Flex>
</Grid.Col>
</Grid>
<Box pt={20}>
<Box bg={"#DCEED8"} p={10} style={{ borderRadius: 10 }}>
<Text fw={'bold'} c={WARNA.biruTua}>Total Kegiatan</Text>
<Flex justify={'center'} align={'center'} h={'100%'}>
<Text fz={40} fw={'bold'} c={WARNA.biruTua}>35</Text>
</Flex>
</Box>
{isList ? (
<Box pt={20}>
{dataProject.map((v, i) => {
return (
<Box key={i}>
<Group justify="space-between" mb={10} onClick={() => router.push(`/project/${v.id}`)}>
<Group>
<Center>
<ActionIcon
variant="gradient"
size={50}
aria-label="Gradient action icon"
radius={100}
gradient={{
from: '#DFDA7C',
to: '#F2AF46',
deg: 174
}}
>
<HiMiniPresentationChartBar size={25} color={WARNA.biruTua} />
</ActionIcon>
</Center>
<Text>{v.title}</Text>
</Group>
<Box>
<RiCircleFill size={12} color={'#387529'} />
</Box>
</Group>
<Divider my="sm" />
</Box>
);
})}
</Box>
) : (
<Box pt={20}>
{dataProject.map((v, i) => {
return (
<Box key={i} mb={20}>
<Card shadow="sm" padding="md" component="a" radius={10} onClick={() => router.push(`/project/${v.id}`)}>
<Card.Section>
<Box h={120} bg={WARNA.biruTua}>
<Flex justify={'center'} align={'center'} h={"100%"}>
<Title order={3} c={"white"}>{v.title}</Title>
</Flex>
</Box>
</Card.Section>
<Box pt={10}>
<Text>{v.description}</Text>
<Group align='center' pt={10} justify='space-between'>
<Badge color={'#387529'}>{v.status}</Badge>
<Avatar.Group>
<Avatar>
<MdAccountCircle size={32} color={WARNA.biruTua} />
</Avatar>
<Avatar>+5</Avatar>
</Avatar.Group>
</Group>
</Box>
</Card>
</Box>
);
})}
</Box>
)}
</Box>
</Box >
);
}

View File

@@ -1,158 +0,0 @@
"use client"
import { WARNA } from '@/module/_global';
import { ActionIcon, Avatar, Badge, Box, Card, Center, Divider, Flex, Grid, Group, Text, TextInput, Title } from '@mantine/core';
import { useRouter } from 'next/navigation';
import React, { useState } from 'react';
import { HiMagnifyingGlass, HiMiniPresentationChartBar, HiOutlineListBullet, HiSquares2X2 } from 'react-icons/hi2';
import { MdAccountCircle } from 'react-icons/md';
import { RiCircleFill } from 'react-icons/ri';
const dataProject = [
{
id: 1,
title: 'Project 1',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT PROSES',
},
{
id: 2,
title: 'Project 2',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT PROSES',
},
{
id: 3,
title: 'Project 3',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT PROSES',
},
{
id: 4,
title: 'Project 4',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT PROSES',
},
{
id: 5,
title: 'Project 5',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT PROSES',
},
{
id: 6,
title: 'Project 6',
description: 'Tempat berkumpul semua anggota / staff perbekal darmasaba',
status: 'PROJECT PROSES',
},
]
export default function ProjectProcess() {
const [isList, setIsList] = useState(false)
const router = useRouter()
const handleList = () => {
setIsList(!isList)
}
return (
<Box mt={20}>
<Grid justify='center' align='center'>
<Grid.Col span={10}>
<TextInput
styles={{
input: {
color: WARNA.biruTua,
borderRadius: '#A3A3A3',
borderColor: '#A3A3A3',
},
}}
size="md"
radius={30}
leftSection={<HiMagnifyingGlass size={20} />}
placeholder="Pencarian"
/>
</Grid.Col>
<Grid.Col span={'auto'}>
<Flex justify={'center'}>
{isList ? (
<HiOutlineListBullet size={35} color={WARNA.biruTua} onClick={handleList} />
) : (
<HiSquares2X2 size={35} color={WARNA.biruTua} onClick={handleList} />
)}
</Flex>
</Grid.Col>
</Grid>
<Box pt={20}>
<Box bg={"#DCEED8"} p={10} style={{ borderRadius: 10 }}>
<Text fw={'bold'} c={WARNA.biruTua}>Total Kegiatan</Text>
<Flex justify={'center'} align={'center'} h={'100%'}>
<Text fz={40} fw={'bold'} c={WARNA.biruTua}>35</Text>
</Flex>
</Box>
{isList ? (
<Box pt={20}>
{dataProject.map((v, i) => {
return (
<Box key={i}>
<Group justify="space-between" mb={10} onClick={() => router.push(`/project/${v.id}`)}>
<Group>
<Center>
<ActionIcon
variant="gradient"
size={50}
aria-label="Gradient action icon"
radius={100}
gradient={{
from: '#DFDA7C',
to: '#F2AF46',
deg: 174
}}
>
<HiMiniPresentationChartBar size={25} color={WARNA.biruTua} />
</ActionIcon>
</Center>
<Text>{v.title}</Text>
</Group>
<Box>
<RiCircleFill size={12} color={'#C5771A'} />
</Box>
</Group>
<Divider my="sm" />
</Box>
);
})}
</Box>
) : (
<Box pt={20}>
{dataProject.map((v, i) => {
return (
<Box key={i} mb={20}>
<Card shadow="sm" padding="md" component="a" radius={10} onClick={() => router.push(`/project/${v.id}`)}>
<Card.Section>
<Box h={120} bg={WARNA.biruTua}>
<Flex justify={'center'} align={'center'} h={"100%"}>
<Title order={3} c={"white"}>{v.title}</Title>
</Flex>
</Box>
</Card.Section>
<Box pt={10}>
<Text>{v.description}</Text>
<Group align='center' pt={10} justify='space-between'>
<Badge color={'#C5771A'}>{v.status}</Badge>
<Avatar.Group>
<Avatar>
<MdAccountCircle size={32} color={WARNA.biruTua} />
</Avatar>
<Avatar>+5</Avatar>
</Avatar.Group>
</Group>
</Box>
</Card>
</Box>
);
})}
</Box>
)}
</Box>
</Box >
);
}

View File

@@ -1,37 +0,0 @@
import { WARNA } from '@/module/_global';
import { Box, Flex, SimpleGrid, Stack, Text } from '@mantine/core';
import { useSearchParams } from 'next/navigation';
import React, { useState } from 'react';
import { HiOutlineFilter } from 'react-icons/hi';
import { IoAddCircle } from 'react-icons/io5';
export default function DrawerProject() {
const searchParams = useSearchParams()
const group = searchParams.get('group')
return (
<Box>
<Stack pt={10}>
<SimpleGrid
cols={{ base: 2, sm: 2, lg: 3 }}
>
<Flex onClick={() => window.location.href = "/project/create"} justify={'center'} align={'center'} direction={'column'} >
<Box>
<IoAddCircle size={30} color={WARNA.biruTua} />
</Box>
<Box>
<Text c={WARNA.biruTua}>Tambah Kegiatan</Text>
</Box>
</Flex>
<Flex onClick={() => window.location.href = "/project?page=filter&group=" + group} justify={'center'} align={'center'} direction={'column'} >
<Box>
<HiOutlineFilter size={30} color={WARNA.biruTua} />
</Box>
<Box>
<Text c={WARNA.biruTua}>Filter</Text>
</Box>
</Flex>
</SimpleGrid>
</Stack>
</Box>
);
}

View File

@@ -1,102 +0,0 @@
"use client"
import { LayoutDrawer, LayoutNavbarNew, WARNA } from '@/module/_global';
import { ActionIcon, Avatar, Badge, Box, Card, Center, Divider, Flex, Grid, Group, rem, Tabs, Text, TextInput, Title } from '@mantine/core';
import React, { useEffect, useState } from 'react';
import { HiMenu } from 'react-icons/hi';
import { HiMagnifyingGlass, HiMiniPresentationChartBar, HiOutlineListBullet, HiSquares2X2 } from 'react-icons/hi2';
import { MdAccountCircle } from 'react-icons/md';
import { RiCircleFill } from "react-icons/ri";
import DrawerProject from './drawer_project';
import { useRouter } from 'next/navigation';
import { TbClockPause } from 'react-icons/tb';
import { IoIosCheckmarkCircleOutline } from 'react-icons/io';
import { IoCloseCircleOutline } from 'react-icons/io5';
import ProjectProcess from '../project_process';
import ProjectDone from '../project_done';
import ProjectCencel from '../project_cencel';
export default function NavbarProject() {
const [openDrawer, setOpenDrawer] = useState(false)
const iconStyle = { width: rem(20), height: rem(20) };
const tabsData = [
{
value: 'segera',
label: 'Proyek Proses',
mobileLabel: 'Proses',
icon: <TbClockPause style={iconStyle} />,
},
{
value: 'selesai',
label: 'Proyek Selesai',
mobileLabel: 'Selesai',
icon: <IoIosCheckmarkCircleOutline style={iconStyle} />,
},
{
value: 'batal',
label: 'Proyek Batal',
mobileLabel: ' Batal',
icon: <IoCloseCircleOutline style={iconStyle} />,
},
];
const [isMobile, setIsMobile] = useState(false);
useEffect(() => {
const handleResize = () => {
if (window.innerWidth < 495) {
setIsMobile(true);
} else {
setIsMobile(false);
}
};
window.addEventListener('resize', handleResize);
handleResize();
return () => {
window.removeEventListener('resize', handleResize);
};
}, []);
return (
<Box>
<LayoutNavbarNew back='/home' title='Kegiatan'
menu={<ActionIcon variant="light" onClick={() => setOpenDrawer(true)} bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings">
<HiMenu size={20} color='white' />
</ActionIcon>} />
<Box p={20}>
<Tabs variant="pills" radius="xl" defaultValue="segera">
<Tabs.List grow justify='center'>
{tabsData.map((tab) => (
<Tabs.Tab
key={tab.value}
value={tab.value}
color={WARNA.biruTua}
leftSection={tab.icon}
>
{isMobile ? tab.mobileLabel : tab.label}
</Tabs.Tab>
))}
</Tabs.List>
<Tabs.Panel value="segera">
<ProjectProcess />
</Tabs.Panel>
<Tabs.Panel value="selesai">
<ProjectDone />
</Tabs.Panel>
<Tabs.Panel value="batal">
<ProjectCencel />
</Tabs.Panel>
</Tabs>
</Box>
<LayoutDrawer opened={openDrawer} title={'Menu'} onClose={() => setOpenDrawer(false)}>
<DrawerProject />
</LayoutDrawer>
</Box>
);
}

View File

@@ -1,13 +1,5 @@
import ViewDateEndTask from "./ui/create_date_end_task";
import ViewProject from "./view/view_project";
import CreateUsersProject from "./ui/create_users_project";
import ViewFileSave from "./view/view_file_save";
import ViewDetailProject from "./view/view_detail_project";
import ViewUpdateProgres from "./view/view_update_progres";
import DetailCreateUserProject from "./components/detail_project/detail_create_user_project";
import DetailDateEndTask from "./components/detail_project/detail_date_end_task";
import DetailFileSave from "./components/detail_project/detail_file_save";
import FileUploadProgres from "./components/detail_project/file_upload_progres";
import TabProject from "./ui/tab_project";
import NavbarDetailProject from "./ui/navbar_detail_project";
import ProgressDetailProject from "./ui/progress_detail_project";
@@ -23,16 +15,8 @@ import AddMemberDetailProject from "./ui/add_member_detail_project";
import CreateProject from "./ui/create_project";
import AddFileDetailProject from "./ui/add_file_detail_project";
export { ViewProject }
export { ViewDateEndTask }
export { CreateUsersProject }
export { ViewFileSave }
export { ViewDetailProject }
export { ViewUpdateProgres }
export { DetailCreateUserProject }
export { DetailDateEndTask }
export { DetailFileSave }
export { FileUploadProgres }
export { TabProject }
export { NavbarDetailProject }
export { ProgressDetailProject }

View File

@@ -1,6 +0,0 @@
import React from "react";
import DetailProject from "../components/detail_project/detail_project";
export default function ViewDetailProject() {
return <DetailProject />;
}

View File

@@ -1,9 +0,0 @@
import React from 'react';
import FileSave from '../components/file_save';
export default function ViewFileSave({ kategori }: { kategori: string }) {
return (
<FileSave kategori={kategori} />
);
}

View File

@@ -1,11 +0,0 @@
import React from 'react';
import NavbarProject from '../components/ui/navbar_project';
export default function ViewProject() {
return (
<div>
<NavbarProject/>
</div>
);
}

View File

@@ -1,9 +0,0 @@
import React from 'react';
import UpdateProgres from '../components/detail_project/update_progres';
export default function ViewUpdateProgres({searchParams}: {searchParams: any}) {
return (
<UpdateProgres searchParams={searchParams} />
);
}