From b38b72f7085abc89dc79361c416b4c7c38b0e0be Mon Sep 17 00:00:00 2001 From: Rama Priyanto Date: Fri, 23 May 2025 00:24:14 +0700 Subject: [PATCH] fix:conten detail image, feat:author, date filter --- components/page/detail-news.tsx | 10 +- components/table/article-table.tsx | 189 +++++++++++++++++++++-------- 2 files changed, 145 insertions(+), 54 deletions(-) diff --git a/components/page/detail-news.tsx b/components/page/detail-news.tsx index d8a2eef..4056688 100644 --- a/components/page/detail-news.tsx +++ b/components/page/detail-news.tsx @@ -4,7 +4,6 @@ import { formatMonthString, formatTextToHtmlTag, } from "@/utils/global"; -import Image from "next/image"; import { CalendarIcon, ChevronLeftIcon, @@ -26,6 +25,7 @@ import { useEffect, useState } from "react"; import { image } from "@heroui/theme"; import Cookies from "js-cookie"; import { saveActivity } from "@/services/activity-log"; +import { Image } from "@heroui/react"; const token = Cookies.get("access_token"); const uid = Cookies.get("uie"); @@ -155,8 +155,10 @@ export default function DetailNews(props: { data: any; listArticle: any }) {
{data?.files?.length > 0 && ( Main Image NextUI hero Image([]); - const [selectedCategories, setSelectedCategories] = useState([]); + const [selectedCategories, setSelectedCategories] = useState(""); const [startDateValue, setStartDateValue] = useState({ startDate: null, endDate: null, }); + const [articleDate, setArticleDate] = useState({ + startDate: parseDate( + convertDateFormatNoTimeV2( + new Date(new Date().setDate(new Date().getDate() - 7)) + ) + ), + endDate: parseDate(convertDateFormatNoTimeV2(new Date())), + }); + useEffect(() => { initState(); - }, [page, showData, startDateValue, selectedCategories]); + }, [page, showData, startDateValue, selectedCategories, articleDate]); useEffect(() => { getCategories(); @@ -106,16 +126,26 @@ export default function ArticleTable() { setCategories(data); } + const onSelectionChange = (id: Key | null) => { + setSelectedCategories(String(id)); + }; + + const getDate = (data: any) => { + return `${data.year}-${data.month < 10 ? `0${data.month}` : data.month}-${ + data.day < 10 ? `0${data.day}` : data.day + }`; + }; + async function initState() { loading(); + console.log("test", selectedCategories); const req = { limit: showData, page: page, search: search, - // startDate: - // startDateValue.startDate === null ? "" : startDateValue.startDate, - // endDate: startDateValue.endDate === null ? "" : startDateValue.endDate, - categorySlug: Array.from(selectedCategories).join(","), + startDate: getDate(articleDate.startDate), + endDate: getDate(articleDate.endDate), + category: selectedCategories, sort: "desc", sortBy: "created_at", }; @@ -248,13 +278,13 @@ export default function ArticleTable() { - {(username === "admin-mabes" || + {(username?.includes("mabes") || Number(userId) === article.createdById) && ( @@ -267,9 +297,9 @@ export default function ArticleTable() { onPress={() => handleBanner(article?.id, !article?.isBanner) } - className={username === "admin-mabes" ? "" : "hidden"} + className={username?.includes("mabes") ? "" : "hidden"} > - {username === "admin-mabes" && ( + {username?.includes("mabes") && ( <> {article?.isBanner @@ -282,13 +312,13 @@ export default function ArticleTable() { key="delete" onPress={() => handleDelete(article.id)} className={ - username === "admin-mabes" || + username?.includes("mabes") || Number(userId) === article.createdById ? "" : "hidden" } > - {(username === "admin-mabes" || + {(username?.includes("mabes") || Number(userId) === article.createdById) && ( <> {" "} @@ -330,6 +360,15 @@ export default function ArticleTable() { initState(); } + const [hasMounted, setHasMounted] = useState(false); + + useEffect(() => { + setHasMounted(true); + }, []); + + // Render + if (!hasMounted) return null; + return ( <>
@@ -375,44 +414,96 @@ export default function ArticleTable() {

Kategori

- + {(item: any) => ( + + {item.title} + + )} + +
+ {username?.includes("mabes") && ( +
+

Author

+ + + {(item: any) => ( + + {item.title} + + )} + +
+ )} +
+

Start Date

+ + + + + {convertDateFormatNoTime(articleDate.startDate)} + + + + + setArticleDate({ + startDate: e, + endDate: articleDate.endDate, + }) + } + maxValue={articleDate.endDate} + /> + + +
+
+

End Date

+ + + + + {convertDateFormatNoTime(articleDate.endDate)} + + + + + setArticleDate({ + startDate: articleDate.startDate, + endDate: e, + }) + } + minValue={articleDate.startDate} + /> + +
- {/*
-

Tanggal

- setStartDateValue(e)} - inputClassName="z-50 w-full text-sm bg-transparent border-1 border-gray-200 px-2 py-[6px] rounded-xl h-[40px] text-gray-600 dark:text-gray-300" - /> -
*/}
{(column) => ( {column.name}