feat: update category in landing, update menu admin polda

This commit is contained in:
hanif salafi 2025-01-13 07:35:40 +07:00
parent 31e3b6f218
commit 9ea4d15611
8 changed files with 708 additions and 539 deletions

View File

@ -494,7 +494,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => {
<Card className="col-span-12 lg:col-span-4 2xl:col-span-3 pb-5"> <Card className="col-span-12 lg:col-span-4 2xl:col-span-3 pb-5">
<CardContent className="p-0"> <CardContent className="p-0">
<CardHeader className="border-none mb-2 pt-5"> <CardHeader className="border-none mb-2 pt-5">
{roleId == 10 || roleId == 11 ? {roleId == 11 || roleId == 12 ?
<Button <Button
onClick={handleDateClick} onClick={handleDateClick}
className="dark:bg-background dark:text-foreground" className="dark:bg-background dark:text-foreground"

View File

@ -13,7 +13,7 @@ const page = () => {
<WelcomePolda /> <WelcomePolda />
<NewContent group="polda" type="latest" /> <NewContent group="polda" type="latest" />
<NewContent group="polda" type="popular" /> <NewContent group="polda" type="popular" />
<ContentCategory /> <ContentCategory group="polda" />
</div> </div>
); );
}; };

View File

@ -13,7 +13,7 @@ const page = () => {
<WelcomeSatker /> <WelcomeSatker />
<NewContent group="satker" type="latest" /> <NewContent group="satker" type="latest" />
<NewContent group="satker" type="popular" /> <NewContent group="satker" type="popular" />
<ContentCategory /> <ContentCategory group="satker" />
</div> </div>
); );
}; };

View File

@ -22,7 +22,7 @@ const Home = ({ params: { locale } }: { params: { locale: string } }) => {
<NewContent group="mabes" type="latest" /> <NewContent group="mabes" type="latest" />
<NewContent group="mabes" type="popular" /> <NewContent group="mabes" type="popular" />
{/* <PopularContent /> */} {/* <PopularContent /> */}
<ContentCategory /> <ContentCategory group="mabes" />
<Coverage /> <Coverage />
<Division /> <Division />
<Footer /> <Footer />

View File

@ -1156,48 +1156,68 @@ export default function FormTaskDetail() {
</div> </div>
</div> </div>
</div> </div>
<div className="flex flex-row justify-end gap-3 my-3"> <div className="flex flex-row justify-between gap-3 my-3">
<div className=""> <div className="px-1">
<Button {detail?.isDone !== true &&
color="primary" (Number(userLevelNumber) !== 3 ||
variant={"outline"} Number(userLevelNumber) == 2) ? (
onClick={handleToggleInput} <Button
> color="primary"
Beri Tanggapan variant={"outline"}
</Button> type="button"
</div> className="btn btn-outline-primary ml-3"
<div className=""> onClick={() => handleForward()}
<Button >
className="btn btn-primary ml-3 mr-3" Forward
style={ </Button>
statusAcceptance || detail?.createdBy?.id == Number(userId) ) : (
? { ""
display: "none", )
}
: {}
}
onClick={() => handleAcceptAcceptance()}
>
Terima Tugas
</Button>
</div>
<div
className="task-response w-100 px-3 "
style={
isSentResult || detail?.createdBy?.id == Number(userId)
? {}
: {
display: "none",
}
} }
> </div>
<Button <div className="flex gap-2">
color="primary" <div className="">
variant={"default"} <Button
onClick={() => setIsTableResult(!isTableResult)} color="primary"
variant={"outline"}
onClick={handleToggleInput}
>
Beri Tanggapan
</Button>
</div>
<div className="">
<Button
className="btn btn-primary ml-3 mr-3"
style={
statusAcceptance || detail?.createdBy?.id !== Number(userId)
? {
display: "none",
}
: {}
}
onClick={() => handleAcceptAcceptance()}
>
Terima Tugas
</Button>
</div>
<div
className="task-response w-100 px-3 "
// style={
// Number(detail?.createdBy?.id) == Number(userId)
// ? {}
// : {
// display: "none",
// }
// }
> >
Hasil Upload <Button
</Button> color="primary"
variant={"default"}
onClick={() => setIsTableResult(!isTableResult)}
>
Hasil Upload {Number(userId)}
</Button>
</div>
</div> </div>
</div> </div>
{isTableResult && ( {isTableResult && (
@ -1223,184 +1243,186 @@ export default function FormTaskDetail() {
</table> </table>
)} )}
{showInput && ( {showInput && (
<div className="mt-4 border p-4 rounded bg-gray-50"> <>
<Textarea <div className="mt-4 border p-4 rounded bg-gray-50">
placeholder="Tulis tanggapan Anda di sini..." <Textarea
value={message} placeholder="Tulis tanggapan Anda di sini..."
onChange={handleInputChange} value={message}
/> onChange={handleInputChange}
<div className="flex justify-end mt-3"> />
<Button <div className="flex justify-end mt-3">
color="primary" <Button
onClick={() => postData()} color="primary"
type="button" onClick={() => postData()}
> type="button"
Kirim Tanggapan >
</Button> Kirim Tanggapan
</div> </Button>
</div>
)}
<div className="mt-6">
<h3 className="text-lg font-bold text-center">Tanggapan</h3>
{listData?.map((item: any) => (
<div key={item.id} className="flex flex-col gap-3 mt-2 ">
<div className="flex flex-row gap-3">
<Avatar className="mt-2">
<AvatarImage
src={"/assets/avatar-profile.png"}
alt={`@${item.username}`}
/>
</Avatar>
<div className="flex flex-col bg-slate-200 w-full px-2 py-2 rounded-md">
<div className="flex items-center justify-between">
<span className="text-gray-700 font-semibold">
{item.suggestionFrom.username}
</span>
<span className="text-gray-500 text-sm">
{formatDate(item.createdAt)}
</span>
</div>
<p className="text-gray-800 mt-1">{item.message}</p>
<div className="flex flex-row gap-2">
<div
className="flex items-center mt-1 text-blue-500 cursor-pointer"
onClick={() => handleReply(item.id)}
>
<DotSquare className="w-4 h-4" />
<span className="ml-1">Balas</span>
</div>
<div
className="flex items-center mt-1 text-red-500 cursor-pointer"
onClick={() => deleteData(item.id)}
>
<TrashIcon className="w-4 h-4" />
<span className="ml-1">Delete</span>
</div>
</div>
</div>
</div> </div>
{replyingTo === item.id && ( </div>
<div className="ml-10 mt-2"> <div className="mt-6">
<textarea <h3 className="text-lg font-bold text-center">Tanggapan</h3>
id={`input-comment-${item.id}`} {listData?.map((item: any) => (
className="w-full p-2 border rounded" <div key={item.id} className="flex flex-col gap-3 mt-2 ">
placeholder="Masukkan tanggapan anda" <div className="flex flex-row gap-3">
/> <Avatar className="mt-2">
<button <AvatarImage
className="mt-2 px-4 py-2 bg-blue-500 text-white rounded" src={"/assets/avatar-profile.png"}
onClick={() => sendReplyData(item.id)} alt={`@${item.username}`}
> />
Kirim </Avatar>
</button> <div className="flex flex-col bg-slate-200 w-full px-2 py-2 rounded-md">
</div> <div className="flex items-center justify-between">
)} <span className="text-gray-700 font-semibold">
{item.children?.length > 0 && ( {item.suggestionFrom.username}
<div className="ml-10 mt-2 flex flex-col"> </span>
{item.children.map((child: any) => ( <span className="text-gray-500 text-sm">
<div {formatDate(item.createdAt)}
key={child.id} </span>
className="flex flex-col gap-3 mt-2" </div>
> <p className="text-gray-800 mt-1">{item.message}</p>
<div className="flex flex-row gap-3"> <div className="flex flex-row gap-2">
<Avatar className="mt-2"> <div
<AvatarImage className="flex items-center mt-1 text-blue-500 cursor-pointer"
src={"/assets/avatar-profile.png"} onClick={() => handleReply(item.id)}
alt={`@${child.username}`} >
/> <DotSquare className="w-4 h-4" />
</Avatar> <span className="ml-1">Balas</span>
<div className="flex flex-col bg-slate-200 w-full px-2 py-2 rounded-md"> </div>
<div className="flex items-center justify-between"> <div
<span className="text-gray-700 font-semibold"> className="flex items-center mt-1 text-red-500 cursor-pointer"
{child.suggestionFrom.username} onClick={() => deleteData(item.id)}
</span> >
<span className="text-gray-500 text-sm"> <TrashIcon className="w-4 h-4" />
{formatDate(child.createdAt)} <span className="ml-1">Delete</span>
</span>
</div>
<p className="text-gray-800 mt-1">
{child.message}
</p>
<div className="flex flex-row gap-2">
<div
className="flex items-center mt-1 text-blue-500 cursor-pointer"
onClick={() => handleReply(child.id)}
>
<DotSquare className="w-4 h-4" />
<span className="ml-1">Balas</span>
</div>
<div
className="flex items-center mt-1 text-red-500 cursor-pointer"
onClick={() => deleteData(child.id)}
>
<TrashIcon className="w-4 h-4" />
<span className="ml-1">Delete</span>
</div>
</div>
</div> </div>
</div> </div>
{replyingTo === child.id && ( </div>
<div className="ml-10 mt-2"> </div>
<textarea {replyingTo === item.id && (
id={`input-comment-${child.id}`} <div className="ml-10 mt-2">
className="w-full p-2 border rounded" <textarea
placeholder="Masukkan tanggapan anda" id={`input-comment-${item.id}`}
/> className="w-full p-2 border rounded"
<button placeholder="Masukkan tanggapan anda"
className="mt-2 px-4 py-2 bg-blue-500 text-white rounded" />
onClick={() => sendReplyData(child.id)} <button
> className="mt-2 px-4 py-2 bg-blue-500 text-white rounded"
Kirim onClick={() => sendReplyData(item.id)}
</button> >
</div> Kirim
)} </button>
{child.children?.length > 0 && ( </div>
<div className="ml-10 mt-2 flex flex-col mb-3"> )}
{child.children.map((child2: any) => ( {item.children?.length > 0 && (
<div <div className="ml-10 mt-2 flex flex-col">
key={child2.id} {item.children.map((child: any) => (
className="flex flex-col gap-3 mt-2" <div
> key={child.id}
<div className="flex flex-row gap-3 "> className="flex flex-col gap-3 mt-2"
<Avatar className="mt-2"> >
<AvatarImage <div className="flex flex-row gap-3">
src={"/assets/avatar-profile.png"} <Avatar className="mt-2">
alt={`@${child2.username}`} <AvatarImage
/> src={"/assets/avatar-profile.png"}
</Avatar> alt={`@${child.username}`}
<div className="flex flex-col bg-slate-200 w-full px-2 py-2 rounded-md"> />
<div className="flex items-center justify-between"> </Avatar>
<span className="text-gray-700 font-semibold"> <div className="flex flex-col bg-slate-200 w-full px-2 py-2 rounded-md">
{child2.suggestionFrom.username} <div className="flex items-center justify-between">
</span> <span className="text-gray-700 font-semibold">
<span className="text-gray-500 text-sm"> {child.suggestionFrom.username}
{formatDate(child2.createdAt)} </span>
</span> <span className="text-gray-500 text-sm">
</div> {formatDate(child.createdAt)}
<p className="text-gray-800 mt-1"> </span>
{child2.message} </div>
</p> <p className="text-gray-800 mt-1">
<div className="flex flex-row gap-2"> {child.message}
<div </p>
className="flex items-center mt-1 text-red-500 cursor-pointer" <div className="flex flex-row gap-2">
onClick={() => deleteData(child2.id)} <div
> className="flex items-center mt-1 text-blue-500 cursor-pointer"
<TrashIcon className="w-4 h-4" /> onClick={() => handleReply(child.id)}
<span className="ml-1">Delete</span> >
</div> <DotSquare className="w-4 h-4" />
</div> <span className="ml-1">Balas</span>
</div>
<div
className="flex items-center mt-1 text-red-500 cursor-pointer"
onClick={() => deleteData(child.id)}
>
<TrashIcon className="w-4 h-4" />
<span className="ml-1">Delete</span>
</div> </div>
</div> </div>
</div> </div>
))} </div>
{replyingTo === child.id && (
<div className="ml-10 mt-2">
<textarea
id={`input-comment-${child.id}`}
className="w-full p-2 border rounded"
placeholder="Masukkan tanggapan anda"
/>
<button
className="mt-2 px-4 py-2 bg-blue-500 text-white rounded"
onClick={() => sendReplyData(child.id)}
>
Kirim
</button>
</div>
)}
{child.children?.length > 0 && (
<div className="ml-10 mt-2 flex flex-col mb-3">
{child.children.map((child2: any) => (
<div
key={child2.id}
className="flex flex-col gap-3 mt-2"
>
<div className="flex flex-row gap-3 ">
<Avatar className="mt-2">
<AvatarImage
src={"/assets/avatar-profile.png"}
alt={`@${child2.username}`}
/>
</Avatar>
<div className="flex flex-col bg-slate-200 w-full px-2 py-2 rounded-md">
<div className="flex items-center justify-between">
<span className="text-gray-700 font-semibold">
{child2.suggestionFrom.username}
</span>
<span className="text-gray-500 text-sm">
{formatDate(child2.createdAt)}
</span>
</div>
<p className="text-gray-800 mt-1">
{child2.message}
</p>
<div className="flex flex-row gap-2">
<div
className="flex items-center mt-1 text-red-500 cursor-pointer"
onClick={() => deleteData(child2.id)}
>
<TrashIcon className="w-4 h-4" />
<span className="ml-1">Delete</span>
</div>
</div>
</div>
</div>
</div>
))}
</div>
)}
</div> </div>
)} ))}
</div> </div>
))} )}
</div> </div>
)} ))}
</div> </div>
))} </>
</div> )}
<div className="flex justify-center mt-4"> <div className="flex justify-center mt-4">
{detail?.createdBy?.id == Number(userId) && {detail?.createdBy?.id == Number(userId) &&
detail?.isDone !== true ? ( detail?.isDone !== true ? (
@ -1427,21 +1449,6 @@ export default function FormTaskDetail() {
) : ( ) : (
"" ""
)} )}
{detail?.isDone !== true &&
(Number(userLevelNumber) !== 3 ||
Number(userLevelNumber) == 2) ? (
<Button
color="primary"
variant={"outline"}
type="button"
className="btn btn-outline-primary ml-3"
onClick={() => handleForward()}
>
Forward
</Button>
) : (
""
)}
</div> </div>
</form> </form>
</div> </div>

View File

@ -1,20 +1,31 @@
import { getCategoryData } from "@/service/landing/landing"; import { getCategoryData, getPublicCategoryData } from "@/service/landing/landing";
import Link from "next/link"; import Link from "next/link";
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Button } from "../ui/button"; import { Button } from "../ui/button";
import { Reveal } from "./Reveal"; import { Reveal } from "./Reveal";
import { useTranslations } from "next-intl"; import { useTranslations } from "next-intl";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
import { useParams } from "next/navigation";
const ContentCategory = () => { const ContentCategory = (props: { group?: string }) => {
const [categories, setCategories] = useState<any>(); const [categories, setCategories] = useState<any>();
const t = useTranslations("LandingPage"); const t = useTranslations("LandingPage");
const params = useParams();
const locale = params?.locale;
const poldaName = params?.polda_name;
const satkerName = params?.satker_name;
useEffect(() => { useEffect(() => {
initFetch(); initFetch();
}, []); }, []);
const initFetch = async () => { const initFetch = async () => {
const response = await getCategoryData(); const response = await getPublicCategoryData(
props.group == "mabes" ? "" :
props.group == "polda" && poldaName && String(poldaName)?.length > 1 ? poldaName :
props.group == "satker" && satkerName && String(satkerName)?.length > 1 ? "satker-"+satkerName : "",
"",
locale == "en" ? true : false
);
console.log("category", response); console.log("category", response);
setCategories(response?.data?.data?.content); setCategories(response?.data?.data?.content);
}; };

View File

@ -2403,314 +2403,461 @@ export function getMenuList(pathname: string, t: any): Group[] {
}, },
]; ];
} else if (Number(roleId) === 2) { } else if (Number(roleId) === 2) {
menusSelected = [ if (Number(levelNumber) == 2) {
{ menusSelected = [
groupLabel: t("apps"), {
id: "dashboard", groupLabel: t("apps"),
menus: [ id: "dashboard",
{ menus: [
id: "dashboard", {
href: "/dashboard", id: "dashboard",
label: t("dashboard"), href: "/dashboard",
active: pathname.includes("/dashboard"), label: t("dashboard"),
icon: "material-symbols:dashboard", active: pathname.includes("/dashboard"),
submenus: [ icon: "material-symbols:dashboard",
{ submenus: [
href: "/dashboard", {
label: "Breakdown", href: "/dashboard",
active: pathname === "/dashboard", label: "Breakdown",
icon: "heroicons:arrow-trending-up", active: pathname === "/dashboard",
children: [], icon: "heroicons:arrow-trending-up",
}, children: [],
{ },
href: "/dashboard/executive", {
label: "Executive", href: "/dashboard/executive",
active: pathname === "/dashboard/executive", label: "Executive",
icon: "heroicons:arrow-trending-up", active: pathname === "/dashboard/executive",
children: [], icon: "heroicons:arrow-trending-up",
}, children: [],
], },
}, ],
], },
}, ],
{ },
groupLabel: "", {
id: "agenda-setting", groupLabel: "",
menus: [ id: "agenda-setting",
{ menus: [
id: "agenda-setting", {
href: "/contributor/agenda-setting", id: "agenda-setting",
label: t("agenda-setting"), href: "/contributor/agenda-setting",
active: pathname.includes("/agenda-setting"), label: t("agenda-setting"),
icon: "iconoir:journal-page", active: pathname.includes("/agenda-setting"),
submenus: [], icon: "iconoir:journal-page",
}, submenus: [],
], },
}, ],
{ },
groupLabel: "", {
id: "management-user", groupLabel: "",
menus: [ id: "management-user",
{ menus: [
id: "management-user-menu", {
href: "/admin/management-user", id: "management-user-menu",
label: "Management User", href: "/admin/management-user",
active: pathname.includes("/management-user"), label: "Management User",
icon: "clarity:users-solid", active: pathname.includes("/management-user"),
submenus: [], icon: "clarity:users-solid",
}, submenus: [],
], },
}, ],
{ },
groupLabel: "", {
id: "content-production", groupLabel: "",
menus: [ id: "content-production",
{ menus: [
id: "content-production", {
href: "/curator/content-production", id: "content-production",
label: t("content-production"), href: "/curator/content-production",
active: pathname.includes("/content-production"), label: t("content-production"),
icon: "fluent:content-view-gallery-16-regular", active: pathname.includes("/content-production"),
submenus: [], icon: "fluent:content-view-gallery-16-regular",
}, submenus: [],
], },
}, ],
{ },
groupLabel: "", {
id: "pattern-relation", groupLabel: "",
menus: [ id: "pattern-relation",
{ menus: [
id: "pattern-relation", {
href: "/curator/pattern-relation", id: "pattern-relation",
label: t("pattern-relation"), href: "/curator/pattern-relation",
active: pathname.includes("/pattern-relation"), label: t("pattern-relation"),
icon: "oui:app-index-pattern", active: pathname.includes("/pattern-relation"),
submenus: [], icon: "oui:app-index-pattern",
}, submenus: [],
], },
}, ],
{ },
groupLabel: "", {
id: "performance-polda", groupLabel: "",
menus: [ id: "performance-polda",
{ menus: [
id: "performance-polda", {
href: "/admin/performance-polda", id: "performance-polda",
label: t("performance-polda"), href: "/admin/performance-polda",
active: pathname.includes("/admin/performance-polda"), label: t("performance-polda"),
icon: "ant-design:signal-filled", active: pathname.includes("/admin/performance-polda"),
submenus: [], icon: "ant-design:signal-filled",
}, submenus: [],
], },
}, ],
{ },
groupLabel: "", {
id: "analysis", groupLabel: "",
menus: [ id: "communication",
{ menus: [
id: "analysis", {
href: "/admin/analysis", id: "communication",
label: t("analysis"), href: "/shared/communication",
active: pathname.includes("/task-plan"), label: t("communication"),
icon: "mdi:chart-line", active: pathname.includes("/communication"),
submenus: [ icon: "token:chat",
{ submenus: [],
href: "/admin/analysis/content-management", },
label: t("management-content"), ],
active: pathname === "/admin/analysis/content-management", },
icon: "", {
children: [], groupLabel: "",
}, id: "settings",
{ menus: [
href: "/admin/analysis/schedule", {
label: t("schedule"), id: "settings",
active: pathname === "/admin/analysis/schedule", href: "/admin/settings",
icon: "heroicons:shopping-cart", label: t("settings"),
children: [], active: pathname.includes("/settinng"),
}, icon: "material-symbols:settings",
{ submenus: [
href: "/admin/analysis/feedback-center", {
label: "Feedback Center", href: "/admin/settings/category",
active: pathname === "/admin/analysis/feedback-center", label: t("category"),
icon: "heroicons:shopping-cart", active: pathname === "/admin/settings/category",
children: [], icon: "heroicons:arrow-trending-up",
}, children: [],
{ },
href: "/admin/analysis/emergency-issue", {
label: "Emergency Issue", href: "/admin/settings/tag",
active: pathname === "/admin/analysis/emergency-issue", label: "Tag",
icon: "heroicons:shopping-cart", active: pathname === "/admin/settings/tag",
children: [], icon: "heroicons:arrow-trending-up",
}, children: [],
], }
}, ],
], },
}, ],
},
{ ];
groupLabel: "", } else {
id: "media-tracking", menusSelected = [
menus: [ {
{ groupLabel: t("apps"),
id: "media-tracking", id: "dashboard",
href: "/curator/media-tracking", menus: [
label: t("media-tracking"), {
active: pathname.includes("/media-tracking"), id: "dashboard",
icon: "material-symbols:map-search-outline", href: "/dashboard",
submenus: [ label: t("dashboard"),
{ active: pathname.includes("/dashboard"),
href: "/admin/media-tracking/media-online", icon: "material-symbols:dashboard",
label: "Media Online", submenus: [
active: pathname === "/media-tracking/media-online", {
icon: "heroicons:arrow-trending-up", href: "/dashboard",
children: [], label: "Breakdown",
}, active: pathname === "/dashboard",
{ icon: "heroicons:arrow-trending-up",
href: "/admin/media-tracking/news", children: [],
label: "Tracking Beritra Hari Ini", },
active: pathname === "/media-tracking/news", {
icon: "heroicons:arrow-trending-up", href: "/dashboard/executive",
children: [], label: "Executive",
}, active: pathname === "/dashboard/executive",
], icon: "heroicons:arrow-trending-up",
}, children: [],
], },
}, ],
{ },
groupLabel: "", ],
id: "contest", },
menus: [ {
{ groupLabel: "",
id: "contest", id: "agenda-setting",
href: "/shared/contest", menus: [
label: t("contest"), {
active: pathname.includes("/contest"), id: "agenda-setting",
icon: "ic:outline-emoji-events", href: "/contributor/agenda-setting",
submenus: [], label: t("agenda-setting"),
}, active: pathname.includes("/agenda-setting"),
], icon: "iconoir:journal-page",
}, submenus: [],
{ },
groupLabel: "", ],
id: "communication", },
menus: [ {
{ groupLabel: "",
id: "communication", id: "management-user",
href: "/shared/communication", menus: [
label: t("communication"), {
active: pathname.includes("/communication"), id: "management-user-menu",
icon: "token:chat", href: "/admin/management-user",
submenus: [], label: "Management User",
}, active: pathname.includes("/management-user"),
], icon: "clarity:users-solid",
}, submenus: [],
{ },
groupLabel: "", ],
id: "feedback", },
menus: [ {
{ groupLabel: "",
id: "feedback", id: "content-production",
href: "/curator/feedback", menus: [
label: t("feedback"), {
active: pathname.includes("/curator/feedback"), id: "content-production",
icon: "mdi:feedback-outline", href: "/curator/content-production",
submenus: [], label: t("content-production"),
}, active: pathname.includes("/content-production"),
], icon: "fluent:content-view-gallery-16-regular",
}, submenus: [],
{ },
groupLabel: "", ],
id: "broadcast", },
menus: [ {
{ groupLabel: "",
id: "broadcast", id: "pattern-relation",
href: "/admin/broadcast", menus: [
label: "Broadcast", {
active: pathname.includes("/broadcast"), id: "pattern-relation",
icon: "mdi:broadcast", href: "/curator/pattern-relation",
submenus: [], label: t("pattern-relation"),
}, active: pathname.includes("/pattern-relation"),
], icon: "oui:app-index-pattern",
}, submenus: [],
{ },
groupLabel: "", ],
id: "experts", },
menus: [ {
{ groupLabel: "",
id: "experts", id: "performance-polda",
href: "/admin/add-experts", menus: [
label: t("add-experts"), {
active: pathname.includes("/add-experts"), id: "performance-polda",
icon: "majesticons:user", href: "/admin/performance-polda",
submenus: [], label: t("performance-polda"),
}, active: pathname.includes("/admin/performance-polda"),
], icon: "ant-design:signal-filled",
}, submenus: [],
{ },
groupLabel: "", ],
id: "settings", },
menus: [ {
{ groupLabel: "",
id: "settings", id: "analysis",
href: "/admin/settings", menus: [
label: t("settings"), {
active: pathname.includes("/settinng"), id: "analysis",
icon: "material-symbols:settings", href: "/admin/analysis",
submenus: [ label: t("analysis"),
{ active: pathname.includes("/task-plan"),
href: "/admin/settings/category", icon: "mdi:chart-line",
label: t("category"), submenus: [
active: pathname === "/admin/settings/category", {
icon: "heroicons:arrow-trending-up", href: "/admin/analysis/content-management",
children: [], label: t("management-content"),
}, active: pathname === "/admin/analysis/content-management",
{ icon: "",
href: "/admin/settings/tag", children: [],
label: "Tag", },
active: pathname === "/admin/settings/tag", {
icon: "heroicons:arrow-trending-up", href: "/admin/analysis/schedule",
children: [], label: t("schedule"),
}, active: pathname === "/admin/analysis/schedule",
{ icon: "heroicons:shopping-cart",
href: "/admin/settings/banner", children: [],
label: "Banner", },
active: pathname === "/admin/settings/banner", {
icon: "heroicons:arrow-trending-up", href: "/admin/analysis/feedback-center",
children: [], label: "Feedback Center",
}, active: pathname === "/admin/analysis/feedback-center",
{ icon: "heroicons:shopping-cart",
href: "/admin/settings/feedback", children: [],
label: "Feedback", },
active: pathname === "/admin/settings/feedback", {
icon: "heroicons:arrow-trending-up", href: "/admin/analysis/emergency-issue",
children: [], label: "Emergency Issue",
}, active: pathname === "/admin/analysis/emergency-issue",
{ icon: "heroicons:shopping-cart",
href: "/admin/settings/faq", children: [],
label: "FAQ", },
active: pathname === "/admin/settings/faq", ],
icon: "heroicons:arrow-trending-up", },
children: [], ],
}, },
{
href: "https://nat-mediahub.polri.go.id/", {
label: "Mediahub 2022", groupLabel: "",
active: pathname === "/admin/settings/mediahub-2022", id: "media-tracking",
icon: "heroicons:arrow-trending-up", menus: [
children: [], {
}, id: "media-tracking",
{ href: "/curator/media-tracking",
href: "/admin/settings/privacy", label: t("media-tracking"),
label: t("privacy"), active: pathname.includes("/media-tracking"),
active: pathname === "/admin/settings/privacy", icon: "material-symbols:map-search-outline",
icon: "heroicons:arrow-trending-up", submenus: [
children: [], {
}, href: "/admin/media-tracking/media-online",
], label: "Media Online",
}, active: pathname === "/media-tracking/media-online",
], icon: "heroicons:arrow-trending-up",
}, children: [],
]; },
{
href: "/admin/media-tracking/news",
label: "Tracking Beritra Hari Ini",
active: pathname === "/media-tracking/news",
icon: "heroicons:arrow-trending-up",
children: [],
},
],
},
],
},
{
groupLabel: "",
id: "contest",
menus: [
{
id: "contest",
href: "/shared/contest",
label: t("contest"),
active: pathname.includes("/contest"),
icon: "ic:outline-emoji-events",
submenus: [],
},
],
},
{
groupLabel: "",
id: "communication",
menus: [
{
id: "communication",
href: "/shared/communication",
label: t("communication"),
active: pathname.includes("/communication"),
icon: "token:chat",
submenus: [],
},
],
},
{
groupLabel: "",
id: "feedback",
menus: [
{
id: "feedback",
href: "/curator/feedback",
label: t("feedback"),
active: pathname.includes("/curator/feedback"),
icon: "mdi:feedback-outline",
submenus: [],
},
],
},
{
groupLabel: "",
id: "broadcast",
menus: [
{
id: "broadcast",
href: "/admin/broadcast",
label: "Broadcast",
active: pathname.includes("/broadcast"),
icon: "mdi:broadcast",
submenus: [],
},
],
},
{
groupLabel: "",
id: "experts",
menus: [
{
id: "experts",
href: "/admin/add-experts",
label: t("add-experts"),
active: pathname.includes("/add-experts"),
icon: "majesticons:user",
submenus: [],
},
],
},
{
groupLabel: "",
id: "settings",
menus: [
{
id: "settings",
href: "/admin/settings",
label: t("settings"),
active: pathname.includes("/settinng"),
icon: "material-symbols:settings",
submenus: [
{
href: "/admin/settings/category",
label: t("category"),
active: pathname === "/admin/settings/category",
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/admin/settings/tag",
label: "Tag",
active: pathname === "/admin/settings/tag",
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/admin/settings/banner",
label: "Banner",
active: pathname === "/admin/settings/banner",
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/admin/settings/feedback",
label: "Feedback",
active: pathname === "/admin/settings/feedback",
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/admin/settings/faq",
label: "FAQ",
active: pathname === "/admin/settings/faq",
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "https://nat-mediahub.polri.go.id/",
label: "Mediahub 2022",
active: pathname === "/admin/settings/mediahub-2022",
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/admin/settings/privacy",
label: t("privacy"),
active: pathname === "/admin/settings/privacy",
icon: "heroicons:arrow-trending-up",
children: [],
},
],
},
],
},
];
}
} }
return menusSelected; return menusSelected;

View File

@ -5,13 +5,17 @@ export async function getHeroData() {
return await httpGetInterceptor(`media/public/list?enablePage=1&sort=desc&sortBy=createdAt&size=5&page=0&typeId=1&title=&categoryId=&fileFormats=&tags=&group=&startDate=&endDate=&month=&year=`); return await httpGetInterceptor(`media/public/list?enablePage=1&sort=desc&sortBy=createdAt&size=5&page=0&typeId=1&title=&categoryId=&fileFormats=&tags=&group=&startDate=&endDate=&month=&year=`);
} }
export async function getPublicCategoryData(group: any = "", type: string = "", isInt: Boolean = false) {
return await httpGetInterceptor(`media/categories/list/publish?enablePage=0&group=${group}&type=${type}&isInt=${isInt}`);
}
export async function getCategoryData() { export async function getCategoryData() {
return await httpGetInterceptor(`media/categories/list/publish?enablePage=1&sort=desc&sortBy=updatedAt&size=12&type=`); return await httpGetInterceptor(`media/categories/list/publish?enablePage=1&sort=desc&sortBy=updatedAt&size=12&type=`);
} }
export async function getListContent(props: any) { export async function getListContent(props: any) {
return await httpGetInterceptor( return await httpGetInterceptor(
`media/public/list?enablePage=1&sort=desc&sortBy=${props.sortBy}&size=${props.size}&isInt=${props.isInt}&typeId=${props.contentTypeId}&title=${props.title}&group=${props.group}&group=${props.group}&categoryId=&fileFormats=&tags=&startDate=&endDate=&month=&year=` `media/public/list?enablePage=1&sort=desc&sortBy=${props.sortBy}&size=${props.size}&isInt=${props.isInt}&typeId=${props.contentTypeId}&title=${props.title}&group=${props.group}&categoryId=&fileFormats=&tags=&startDate=&endDate=&month=&year=`
); );
} }