diff --git a/app/(application)/division/[id]/(fitur-division)/task/index.tsx b/app/(application)/division/[id]/(fitur-division)/task/index.tsx index f10ec0d..6822cb9 100644 --- a/app/(application)/division/[id]/(fitur-division)/task/index.tsx +++ b/app/(application)/division/[id]/(fitur-division)/task/index.tsx @@ -31,7 +31,7 @@ type Props = { }; export default function ListTask() { - const { id, status } = useLocalSearchParams<{ id: string; status: string }>() + const { id, status, year } = useLocalSearchParams<{ id: string; status: string; year: string }>() const [isList, setList] = useState(false) const { token, decryptToken } = useAuthSession() const [data, setData] = useState([]) @@ -43,6 +43,8 @@ export default function ListTask() { const [page, setPage] = useState(1) const [waiting, setWaiting] = useState(false) const [refreshing, setRefreshing] = useState(false) + const [isYear, setYear] = useState("") + async function handleLoad(loading: boolean, thisPage: number) { try { @@ -55,8 +57,12 @@ export default function ListTask() { division: id, status: statusFix, search, - page: thisPage + page: thisPage, + year }); + + setYear(response.tahun) + if (thisPage == 1) { setData(response.data); } else if (thisPage > 1 && response.data.length > 0) { @@ -179,7 +185,13 @@ export default function ListTask() { - + + + Filter : + + + + { loading ? isList ? diff --git a/components/modalFilter.tsx b/components/modalFilter.tsx index 71ec9b4..d068543 100644 --- a/components/modalFilter.tsx +++ b/components/modalFilter.tsx @@ -1,5 +1,5 @@ import Styles from "@/constants/Styles" -import { apiGetGroup, apiGetTahunProject } from "@/lib/api" +import { apiGetGroup, apiGetTahunProject, apiGetTahunTask } from "@/lib/api" import { setEntityFilterGroup } from "@/lib/filterSlice" import { useAuthSession } from "@/providers/AuthProvider" import { router } from "expo-router" @@ -14,13 +14,14 @@ import Text from './Text' type Props = { open: boolean, close: (value: boolean) => void - page: 'position' | 'member' | 'discussion' | 'project' | 'division' + page: 'position' | 'member' | 'discussion' | 'project' | 'division' | 'division/task' category?: 'filter-group' | 'filter-data' | 'year-only', valueGroup?: string, valueYear?: string, + dataPassing?: any } -export default function ModalFilter({ open, close, page, category, valueGroup, valueYear }: Props) { +export default function ModalFilter({ open, close, page, category, valueGroup, valueYear, dataPassing }: Props) { const data = [ { id: "data-saya", @@ -38,6 +39,7 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v const [chooseGroup, setChooseGroup] = useState(valueGroup || '') const [chooseYear, setChooseYear] = useState(valueYear || '') const [dataTahun, setDataTahun] = useState<{ id: string, name: string }[]>([]) + const [passingData, setPassingData] = useState(dataPassing) async function handleLoad() { const hasil = await decryptToken(String(token?.current)) @@ -47,6 +49,9 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v if (page === 'project') { const responseTahun = await apiGetTahunProject({ user: hasil }) setDataTahun(responseTahun.data) + } else if (page === 'division/task') { + const responseTahun = await apiGetTahunTask({ user: hasil, division: passingData }) + setDataTahun(responseTahun.data) } } @@ -140,7 +145,7 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v } - {page == "project" && ( + {(page == "project" || page == "division/task") && ( Tahun @@ -184,7 +189,10 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v : router.replace(`/${page}?status=0&group=${chooseGroup}&year=${chooseYear}`) : - router.replace(`/${page}?active=true&group=${chooseGroup}`) + page == "division/task" ? + router.replace(`/division/${dataPassing}/task?status=0&year=${chooseYear}`) + : + router.replace(`/${page}?active=true&group=${chooseGroup}`) }} /> diff --git a/components/task/headerTaskList.tsx b/components/task/headerTaskList.tsx index 51e6c22..df15d06 100644 --- a/components/task/headerTaskList.tsx +++ b/components/task/headerTaskList.tsx @@ -9,6 +9,7 @@ import { useSelector } from "react-redux" import ButtonMenuHeader from "../buttonMenuHeader" import DrawerBottom from "../drawerBottom" import MenuItemRow from "../menuItemRow" +import ModalFilter from "../modalFilter" export default function HeaderRightTaskList() { const [isVisible, setVisible] = useState(false) @@ -16,6 +17,8 @@ export default function HeaderRightTaskList() { const { token, decryptToken } = useAuthSession() const { id } = useLocalSearchParams<{ id: string }>(); const entityUser = useSelector((state: any) => state.user); + const [isFilter, setFilter] = useState(false) + async function handleCheckAdmin() { try { @@ -38,22 +41,44 @@ export default function HeaderRightTaskList() { return ( <> - { + {/* { (entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision ? { setVisible(true) }} /> : <> - } + } */} + { setVisible(true) }} /> + { + (entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision + && + } + title="Tambah Tugas Divisi" + onPress={() => { + setVisible(false) + router.push('./task/create') + }} + /> + } } - title="Tambah Tugas Divisi" + icon={} + title="Filter" onPress={() => { setVisible(false) - router.push('./task/create') + setTimeout(() => { + setFilter(true) + }, 600) }} /> + { setFilter(false) }} + open={isFilter} + page="division/task" + category={"year-only"} + dataPassing={id} + /> ) } \ No newline at end of file diff --git a/lib/api.ts b/lib/api.ts index 1328eee..b81d90f 100644 --- a/lib/api.ts +++ b/lib/api.ts @@ -605,8 +605,13 @@ export const apiUpdateCalendar = async ({ data, id }: { data: { title: string, d return response.data; }; -export const apiGetTask = async ({ user, status, search, division, page }: { user: string, status: string, search: string, division: string, page?: number }) => { - const response = await api.get(`mobile/task?user=${user}&status=${status}&division=${division}&search=${search}&page=${page}`); +export const apiGetTask = async ({ user, status, search, division, page, year }: { user: string, status: string, search: string, division: string, page?: number, year?: string }) => { + const response = await api.get(`mobile/task?user=${user}&status=${status}&division=${division}&search=${search}&page=${page}&year=${year}`); + return response.data; +}; + +export const apiGetTahunTask = async ({ user, division }: { user: string, division: string }) => { + const response = await api.get(`mobile/task/tahun?user=${user}&division=${division}`); return response.data; };