This commit is contained in:
hanif salafi 2025-06-24 13:52:28 +07:00
commit b14cc43bbe
17 changed files with 151 additions and 61 deletions

View File

@ -94,9 +94,7 @@ const ContentListBanner = () => {
const [selectedItems, setSelectedItems] = React.useState<number[]>([]); const [selectedItems, setSelectedItems] = React.useState<number[]>([]);
const [page, setPage] = React.useState(1); const [page, setPage] = React.useState(1);
const [totalPage, setTotalPage] = React.useState(1); const [totalPage, setTotalPage] = React.useState(1);
const [searchQuery, setSearchQuery] = React.useState("");
let typingTimer: any;
const doneTypingInterval = 1500;
const handleKeyUp = () => { const handleKeyUp = () => {
clearTimeout(typingTimer); clearTimeout(typingTimer);
@ -108,6 +106,21 @@ const ContentListBanner = () => {
typingTimer = setTimeout(doneTyping, doneTypingInterval); typingTimer = setTimeout(doneTyping, doneTypingInterval);
}; };
let typingTimer: NodeJS.Timeout;
const doneTypingInterval = 1500;
const handleTyping = () => {
clearTimeout(typingTimer);
typingTimer = setTimeout(() => {
setPage(1);
fetchData();
}, doneTypingInterval);
};
React.useEffect(() => {
fetchData();
}, [categoryFilter, statusFilter]);
async function doneTyping() { async function doneTyping() {
fetchData(); fetchData();
} }
@ -133,10 +146,11 @@ const ContentListBanner = () => {
const res = await listDataMedia( const res = await listDataMedia(
page - 1, page - 1,
showData, showData,
"", searchQuery,
categoryFilter?.sort().join(","), categoryFilter?.sort().join(","),
statusFilter?.sort().join(",") statusFilter?.sort().join(",")
); );
const data = res?.data?.data; const data = res?.data?.data;
const contentData = data?.content; const contentData = data?.content;
contentData.forEach((item: any, index: number) => { contentData.forEach((item: any, index: number) => {
@ -224,10 +238,19 @@ const ContentListBanner = () => {
<Input <Input
type="text" type="text"
placeholder="Search" placeholder="Search"
onKeyUp={handleKeyUp} value={searchQuery}
onKeyDown={handleKeyDown} onChange={(e) => {
setSearchQuery(e.target.value);
handleTyping();
}}
className="max-w-[300px]" className="max-w-[300px]"
onKeyDown={(e) => {
if (e.key === "Enter") {
fetchData();
}
}}
/> />
{/* <div className="flex flex-row gap-2"> {/* <div className="flex flex-row gap-2">
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
@ -393,9 +416,12 @@ const ContentListBanner = () => {
alt={item.title} alt={item.title}
className="w-full h-48 object-cover" className="w-full h-48 object-cover"
/> />
<div className="p-3"> <Link
<h4 className="font-semibold text-sm truncate">{item.title}</h4> href={`/contributor/content/image/detail/${item?.id}`}
</div> className="p-3"
>
<h4 className="font-semibold text-sm">{item.title}</h4>
</Link>
</div> </div>
))} ))}
</div> </div>

View File

@ -98,13 +98,18 @@ const PopUpListTable = () => {
loading(); loading();
let temp: any; let temp: any;
const response = await listDataPopUp( // const response = await listDataPopUp(
page - 1, // page - 1,
showData, // showData,
"", // "",
categoryFilter?.sort().join(","), // categoryFilter?.sort().join(","),
statusFilter?.sort().join(",") // statusFilter?.sort().join(",")
); // );
// const data = response?.data?.data?.content;
// console.log("banner", data);
// setGetData(data);
const response = await listBanner();
const data = response?.data?.data?.content; const data = response?.data?.data?.content;
console.log("banner", data); console.log("banner", data);
setGetData(data); setGetData(data);

View File

@ -94,9 +94,10 @@ const ContentListPopUp = () => {
const [selectedItems, setSelectedItems] = React.useState<number[]>([]); const [selectedItems, setSelectedItems] = React.useState<number[]>([]);
const [page, setPage] = React.useState(1); const [page, setPage] = React.useState(1);
const [totalPage, setTotalPage] = React.useState(1); const [totalPage, setTotalPage] = React.useState(1);
const [searchQuery, setSearchQuery] = React.useState("");
let typingTimer: any; let typingTimer: NodeJS.Timeout;
const doneTypingInterval = 1500; const doneTypingInterval = 2000;
const handleKeyUp = () => { const handleKeyUp = () => {
clearTimeout(typingTimer); clearTimeout(typingTimer);
@ -105,9 +106,16 @@ const ContentListPopUp = () => {
const handleKeyDown = () => { const handleKeyDown = () => {
clearTimeout(typingTimer); clearTimeout(typingTimer);
typingTimer = setTimeout(doneTyping, doneTypingInterval); typingTimer = setTimeout(() => {
setPage(1);
fetchData();
}, doneTypingInterval);
}; };
React.useEffect(() => {
fetchData();
}, [categoryFilter, statusFilter]);
async function doneTyping() { async function doneTyping() {
fetchData(); fetchData();
} }
@ -127,13 +135,40 @@ const ContentListPopUp = () => {
}); });
}, [page, showData]); }, [page, showData]);
// async function fetchData() {
// try {
// loading();
// const res = await listDataPopUp(
// page - 1,
// showData,
// "",
// categoryFilter?.sort().join(","),
// statusFilter?.sort().join(",")
// );
// const data = res?.data?.data;
// const contentData = data?.content;
// contentData.forEach((item: any, index: number) => {
// item.no = (page - 1) * Number(showData) + index + 1;
// });
// console.log("contentData : ", data);
// setData(contentData);
// setTotalData(data?.totalElements);
// setTotalPage(data?.totalPages);
// close();
// } catch (error) {
// console.error("Error fetching tasks:", error);
// }
// }
async function fetchData() { async function fetchData() {
try { try {
loading(); loading();
const res = await listDataPopUp( const res = await listDataMedia(
page - 1, page - 1,
showData, showData,
"", searchQuery, // <-- gunakan nilai pencarian
categoryFilter?.sort().join(","), categoryFilter?.sort().join(","),
statusFilter?.sort().join(",") statusFilter?.sort().join(",")
); );
@ -224,10 +259,19 @@ const ContentListPopUp = () => {
<Input <Input
type="text" type="text"
placeholder="Search" placeholder="Search"
onKeyUp={handleKeyUp} value={searchQuery}
onKeyDown={handleKeyDown} onChange={(e) => {
setSearchQuery(e.target.value);
handleKeyDown();
}}
onKeyDown={(e) => {
if (e.key === "Enter") {
fetchData();
}
}}
className="max-w-[300px]" className="max-w-[300px]"
/> />
{/* <div className="flex flex-row gap-2"> {/* <div className="flex flex-row gap-2">
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
@ -393,9 +437,12 @@ const ContentListPopUp = () => {
alt={item.title} alt={item.title}
className="w-full h-48 object-cover" className="w-full h-48 object-cover"
/> />
<div className="p-3"> <Link
<h4 className="font-semibold text-sm truncate">{item.title}</h4> href={`/contributor/content/image/detail/${item?.id}`}
</div> className="p-3"
>
<h4 className="font-semibold text-sm">{item.title}</h4>
</Link>
</div> </div>
))} ))}
</div> </div>

View File

@ -323,10 +323,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -320,10 +320,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -320,10 +320,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -314,10 +314,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -323,10 +323,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -311,10 +311,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -307,10 +307,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -303,10 +303,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -325,10 +325,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -326,10 +326,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -329,10 +329,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -319,10 +319,11 @@ const FilterPage = () => {
let filter = [...categoryFilter]; let filter = [...categoryFilter];
if (e) { if (e) {
filter = [...categoryFilter, String(id)]; filter = [...filter, String(id)];
} else { } else {
filter.splice(categoryFilter.indexOf(id), 1); filter = filter.filter((item) => item !== String(id));
} }
console.log("checkbox filter", filter); console.log("checkbox filter", filter);
setCategoryFilter(filter); setCategoryFilter(filter);
router.push(`?category=${filter.join("&")}`); router.push(`?category=${filter.join("&")}`);

View File

@ -10,7 +10,7 @@ import Image from "next/image";
const regions = [ const regions = [
{ name: "ITWASUM POLRI", slug: "itwasum", logo: "/logo/satker/ITWASUM.png" }, { name: "ITWASUM POLRI", slug: "itwasum", logo: "/logo/satker/ITWASUM.png" },
{ {
name: "BAINTELKAM POLRI", name: "BAINTELKAM POLRI ",
slug: "baintelkam", slug: "baintelkam",
logo: "/logo/satker/BAINTELKAM.png", logo: "/logo/satker/BAINTELKAM.png",
}, },

View File

@ -63,7 +63,7 @@ export async function getPublicCategoryData(
page: number = 1 page: number = 1
) { ) {
return await httpGetInterceptor( return await httpGetInterceptor(
`media/categories/list/publish?enablePage=1&size=12&page=${ `media/categories/list/publish?enablePage=1&size=12&sort=desc&sortBy=createdAt&page=${
page - 1 page - 1
}&group=${group}&type=${type}&isInt=${isInt}` }&group=${group}&type=${type}&isInt=${isInt}`
); );