From b7dce8c13c01de29952e5ec0c350877aea20fd55 Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Tue, 29 Jul 2025 10:29:47 +0700 Subject: [PATCH 1/5] feat: add button see All --- components/landing-page/new-content.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/landing-page/new-content.tsx b/components/landing-page/new-content.tsx index cd71fc7f..3bbc213a 100644 --- a/components/landing-page/new-content.tsx +++ b/components/landing-page/new-content.tsx @@ -155,7 +155,7 @@ const NewContent = (props: { group: string; type: string }) => { {[ { label: t("image", { defaultValue: "Image" }), value: "image" }, { label: t("video", { defaultValue: "Video" }), value: "video" }, - { label: t("text", { defaultValue: "Text" }), value: "text" }, + { label: t("text", { defaultValue: "Text" }), value: "document" }, { label: t("audio", { defaultValue: "Audio" }), value: "audio" }, ].map((tab) => ( { )} - {/*
-
router.push(prefixPath + `/${selectedTab}/filter?sortBy=${props.type}`)} className="cursor-pointer border text-[#bb3523] rounded-lg text-sm lg:text-md px-4 py-1 border-[#bb3523]"> +
+
router.push(prefixPath + `/${selectedTab}/filter?sortBy=${props.type}`)} className="cursor-pointer border text-[#bb3523] rounded-lg text-sm lg:text-md px-4 py-1 border-[#bb3523] hover:text-white hover:bg-[#bb3523]"> {t("seeAll", { defaultValue: "See All" })}
-
*/} +
); From 9dd9f621ce669d166bb1097ab817fc5d205b6571 Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Tue, 29 Jul 2025 21:57:36 +0700 Subject: [PATCH 2/5] fix: all filter search index --- .../filter-all/indeks-filter-card.tsx | 107 +++++++----------- 1 file changed, 39 insertions(+), 68 deletions(-) diff --git a/components/landing-page/filter-all/indeks-filter-card.tsx b/components/landing-page/filter-all/indeks-filter-card.tsx index 0c2dd62b..69180135 100644 --- a/components/landing-page/filter-all/indeks-filter-card.tsx +++ b/components/landing-page/filter-all/indeks-filter-card.tsx @@ -3,7 +3,6 @@ import { useEffect, useState } from "react"; import { useSearchParams, useParams } from "next/navigation"; import Image from "next/image"; -import Link from "next/link"; // pastikan path-nya sesuai import { Carousel, CarouselContent, @@ -12,7 +11,7 @@ import { CarouselPrevious, } from "@/components/ui/carousel"; import { getIndeksData, getIndeksDataFilter } from "@/service/landing/landing"; -import { usePathname, useRouter } from "@/i18n/routing"; +import { Link, usePathname, useRouter } from "@/i18n/routing"; import { loading } from "@/lib/swal"; import { getOnlyMonthAndYear } from "@/utils/globals"; @@ -34,8 +33,8 @@ export default function IndeksCarouselComponent(props: { const asPath = usePathname(); const params = useParams(); const searchParams = useSearchParams(); - const [indeksData, setIndeksData] = useState([]); // ✅ State untuk menyimpan konten data - const [newContent, setNewContent] = useState([]); // Optional, bisa jadi redundant + const [indeksData, setIndeksData] = useState([]); + const [newContent, setNewContent] = useState([]); const [totalData, setTotalData] = useState(0); const [totalPage, setTotalPage] = useState(0); const [totalContent, setTotalContent] = useState(0); @@ -111,81 +110,53 @@ export default function IndeksCarouselComponent(props: { ]); async function initFetch() { - if (asPath?.includes("/polda/") == true) { - if (asPath?.split("/")[2] !== "[polda_name]") { - const filter = - categoryFilter?.length > 0 - ? categoryFilter?.sort().join(",") - : categorie || ""; + const filter = + categoryFilter?.length > 0 + ? categoryFilter?.sort().join(",") + : categorie || ""; - const name = title == undefined ? "" : title; - const filterGroup = group == undefined ? asPath.split("/")[2] : group; - loading(); - const response = await getIndeksDataFilter( - "4", - name, - filter, - 12, - 0, - sortByOpt, - "", - "", - filterGroup, - startDateString, - endDateString, - monthYearFilter - ? getOnlyMonthAndYear(monthYearFilter) - ?.split("/")[0] - ?.replace("", "") - : "", - monthYearFilter - ? getOnlyMonthAndYear(monthYearFilter)?.split("/")[1] - : "" - ); - close(); - const data = response?.data?.data; - const contentData = data?.content; - setNewContent(contentData); - setTotalData(data?.totalElements); - setTotalPage(data?.totalPages); - setTotalContent(response?.data?.data?.totalElements); - } - } else { - const filter = - categoryFilter?.length > 0 - ? categoryFilter?.sort().join(",") - : categorie || ""; + const name = title ?? ""; + const month = monthYearFilter + ? getOnlyMonthAndYear(monthYearFilter)?.split("/")[0]?.replace("", "") + : ""; + const year = monthYearFilter + ? getOnlyMonthAndYear(monthYearFilter)?.split("/")[1] + : ""; - const name = title == undefined ? "" : title; + // Gunakan group hanya jika asPath mengandung /polda/ atau /satker/, selain itu kosongkan + let filterGroup = ""; + if (asPath.includes("/polda/") || asPath.includes("/satker/")) { + filterGroup = group ?? asPath.split("/")[2]; + } + + try { loading(); const response = await getIndeksDataFilter( - "4", - name, - filter, - 12, - 0, - sortByOpt, - "", - "", + "4", // type + name, // title + filter, // kategori + 12, // size + 0, // page + sortByOpt, // sortBy "", + "", // provinceId, cityId + filterGroup, // group startDateString, endDateString, - monthYearFilter - ? getOnlyMonthAndYear(monthYearFilter)?.split("/")[0]?.replace("", "") - : "", - monthYearFilter - ? getOnlyMonthAndYear(monthYearFilter)?.split("/")[1] - : "" + month, + year ); close(); const data = response?.data?.data; const contentData = data?.content; - - setNewContent(contentData); - setTotalData(data?.totalElements); - setTotalPage(data?.totalPages); - setTotalContent(response?.data?.data?.totalElements); + setNewContent(contentData || []); + setTotalData(data?.totalElements || 0); + setTotalPage(data?.totalPages || 0); + setTotalContent(data?.totalElements || 0); + } catch (error) { + close(); + console.error("Error fetching indeks data:", error); } } @@ -230,7 +201,7 @@ export default function IndeksCarouselComponent(props: {
Lihat Semua From d27806ba405ca1fbd153ae8746f76f1b44f4d7b5 Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Tue, 29 Jul 2025 21:57:51 +0700 Subject: [PATCH 3/5] fixing --- .../campaign-list/component/column.tsx | 32 +++++++++++++++++++ service/broadcast/broadcast.ts | 5 +++ 2 files changed, 37 insertions(+) diff --git a/app/[locale]/(protected)/admin/broadcast/campaign-list/component/column.tsx b/app/[locale]/(protected)/admin/broadcast/campaign-list/component/column.tsx index cfda527e..51184795 100644 --- a/app/[locale]/(protected)/admin/broadcast/campaign-list/component/column.tsx +++ b/app/[locale]/(protected)/admin/broadcast/campaign-list/component/column.tsx @@ -13,6 +13,10 @@ import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Link, useRouter } from "@/i18n/routing"; +import { close, error, loading, success } from "@/config/swal"; +import { deleteMediaBlastCampaign } from "@/service/broadcast/broadcast"; +import Swal from "sweetalert2"; +import withReactContent from "sweetalert2-react-content"; const columns: ColumnDef[] = [ { @@ -62,6 +66,34 @@ const columns: ColumnDef[] = [ header: "Actions", enableHiding: false, cell: ({ row }) => { + const MySwal = withReactContent(Swal); + + const handleDelete = (id: any) => { + MySwal.fire({ + title: "Apakah anda ingin menghapus data?", + showCancelButton: true, + confirmButtonColor: "#dc3545", + confirmButtonText: "Iya", + cancelButtonText: "Tidak", + }).then((result: any) => { + if (result.isConfirmed) { + doDeleteAccount(id); + } + }); + }; + + async function doDeleteAccount(id: any) { + loading(); + const response = await deleteMediaBlastCampaign(id); + close(); + if (response.error) { + error(response.message); + return false; + } + // success(); + } + + return ( diff --git a/service/broadcast/broadcast.ts b/service/broadcast/broadcast.ts index e55d5138..a148bcaa 100644 --- a/service/broadcast/broadcast.ts +++ b/service/broadcast/broadcast.ts @@ -68,6 +68,11 @@ export async function getMediaBlastCampaignList() { return httpGetInterceptor(url); } +export async function deleteMediaBlastCampaign(id: string | number): Promise { + const url = `media/blast/campaign?id=${id}`; + return httpDeleteInterceptor({ url }); +} + export async function detailMediaSummary(id: string) { const url = `media?id=${id}&isSummary=true`; return httpGetInterceptor(url); From f572c8110dc2166974ec97794fc5d91568e99b78 Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Wed, 30 Jul 2025 23:15:43 +0700 Subject: [PATCH 4/5] fixing update --- .../admin/settings/banner/component/table.tsx | 2 +- .../admin/settings/banner/page.tsx | 2 +- .../settings/category/component/edit.tsx | 6 ++--- components/form/content/image-form.tsx | 15 ++++++++----- components/landing-page/navbar.tsx | 22 +++++++++++++------ 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/app/[locale]/(protected)/admin/settings/banner/component/table.tsx b/app/[locale]/(protected)/admin/settings/banner/component/table.tsx index acd5a223..f28b331e 100644 --- a/app/[locale]/(protected)/admin/settings/banner/component/table.tsx +++ b/app/[locale]/(protected)/admin/settings/banner/component/table.tsx @@ -423,7 +423,7 @@ const ContentListBanner = () => { checked={selectedItems.length === data.length} onCheckedChange={handleSelectAll} /> - Pilih Semua + Pilih Semua
{selectedItems.length > 0 && (