diff --git a/app/[locale]/(protected)/dashboard/executive/page.tsx b/app/[locale]/(protected)/dashboard/executive/page.tsx index b5b30240..078b136f 100644 --- a/app/[locale]/(protected)/dashboard/executive/page.tsx +++ b/app/[locale]/(protected)/dashboard/executive/page.tsx @@ -81,14 +81,14 @@ export default function ExecutiveDashboard() { levelName == "MABES POLRI" ? isInternational[1] ? // "views/2023_04_MediaHUB-Viz-POLDA_Rev200/db-content-interaction-polda?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev200/db-konten-header?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-header?" : // "views/2023_04_MediaHUB-Viz-POLDA_Rev200/db-content-interaction-polda?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev200/db-konten-header?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-header?" : safeLevelName.includes("POLDA") ? // `views/2023_04_MediaHUB-Viz-POLDA_Rev200/db-content-interaction-polda?polda-selected=${state}&` - `views/2025_10_MediaHUB-Viz-POLDA_Rev200/db-konten-header?provinsi-polda=${provState}&` + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-header?provinsi-polda=${provState}&` : // `views/2023_04_MediaHUB-Viz-POLDA_Rev200/db-content-interaction-polda?polda-selected=${state}&`; - `views/2025_10_MediaHUB-Viz-POLDA_Rev200/db-satker?satker-selected=${state}&`; + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-header?provinsi-polda=${provState}&`; const view5 = levelName == "MABES POLRI" diff --git a/app/[locale]/(public)/(satker)/satker/[satker_name]/image/detail/[slug]/page.tsx b/app/[locale]/(public)/(satker)/satker/[satker_name]/image/detail/[slug]/page.tsx index 99770d49..39228cdd 100644 --- a/app/[locale]/(public)/(satker)/satker/[satker_name]/image/detail/[slug]/page.tsx +++ b/app/[locale]/(public)/(satker)/satker/[satker_name]/image/detail/[slug]/page.tsx @@ -26,11 +26,14 @@ import { } from "@/components/ui/popover"; import { useTranslations } from "next-intl"; import { sendMediaUploadToEmail } from "@/service/media-tracking/media-tracking"; +import Image from "next/image"; +import { Skeleton } from "@/components/ui/skeleton"; const DetailInfo = () => { const [selectedSize, setSelectedSize] = useState("L"); const [emailShareList, setEmailShareList] = useState(); const router = useRouter(); + const [isLoading, setIsLoading] = useState(true); const pathname = usePathname(); const params = useParams(); const slug = String(params?.slug); @@ -305,6 +308,33 @@ const DetailInfo = () => { xhr.send(); }; + useEffect(() => { + const timer = setTimeout(() => { + setIsLoading(false); + }, 3000); + + return () => clearTimeout(timer); + }, []); + + const shimmer = (w: number, h: number) => ` + + + + + + + + + + + + `; + + const toBase64 = (str: string) => + typeof window === "undefined" + ? Buffer.from(str).toString("base64") + : window.btoa(str); + return ( <>
@@ -312,14 +342,34 @@ const DetailInfo = () => { {/* Bagian Kiri */}
{/* Gambar Besar */} -
+ {/*
Main
-
+
*/} + {isLoading ? ( +
+ +
+ ) : ( +
+ Main + +
+
+ )} {/* Gambar bawah Kecil */}
diff --git a/app/[locale]/(public)/(satker)/satker/[satker_name]/image/filter/page.tsx b/app/[locale]/(public)/(satker)/satker/[satker_name]/image/filter/page.tsx index d61dca96..8f935e0e 100644 --- a/app/[locale]/(public)/(satker)/satker/[satker_name]/image/filter/page.tsx +++ b/app/[locale]/(public)/(satker)/satker/[satker_name]/image/filter/page.tsx @@ -36,6 +36,7 @@ import ReactDatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; import { close, loading } from "@/config/swal"; import { useTranslations } from "next-intl"; +import ImageBlurry from "@/components/ui/image-blurry"; const columns: ColumnDef[] = [ { @@ -765,7 +766,7 @@ const FilterPage = () => { key={image?.id} className="hover:scale-110 transition-transform duration-300" > - + {/* @@ -794,6 +795,70 @@ const FilterPage = () => { {image?.title}
+ */} + + + {/* */} +
+ +
+ {/*
+ {formatDateToIndonesian( + new Date(image?.createdAt) + )}{" "} + {image?.timezone ? image?.timezone : "WIB"} +   | + + {image?.clickCount}{" "} +
+
+ {image?.title} +
*/} + +
+
+
+

+ {image?.categoryName?.toUpperCase() ?? + "Giat Pimpinan"} +

+

+ {formatDateToIndonesian( + new Date(image?.createdAt) + )}{" "} + {image?.timezone ?? "WIB"} | + {" "} + {image.clickCount} +

+
+ +

+ {image?.title} +

+
+
+
))} diff --git a/components/visualization/content-production.tsx b/components/visualization/content-production.tsx index 2a5f4bc1..4ed65a35 100644 --- a/components/visualization/content-production.tsx +++ b/components/visualization/content-production.tsx @@ -27,36 +27,40 @@ export default function ContentProductionVisualization() { levelName == "MABES POLRI" ? isInternational[0] ? // "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-published-produksi?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-published-produksi?" + "views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-published-produksi?" : // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-published-produksi?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-published-produksi?" + "views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-published-produksi?" : safeLevelName.includes("POLDA") ? // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-published-produksi-polda?provinsi-polda=${provState}&` - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-published-produksi?provinsi-polda=${provState}&` + `views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-published-produksi?provinsi-polda=${provState}&` : // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-published-produksi-polda?provinsi-polda=${provState}`; - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-published-produksi?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-published-produksi?provinsi-polda=${provState}&`; const view2 = levelName == "MABES POLRI" ? isInternational[1] ? // "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-konten-publisher?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-publisher?" + "views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-konten-publisher?" : // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-publisher?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-publisher?" + "views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-konten-publisher?" : safeLevelName.includes("POLDA") ? // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-publisher-polda?provinsi-polda=${state}&` - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-publisher?provinsi-polda=${provState}&` + `views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-konten-publisher?provinsi-polda=${provState}&` : // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-publisher-polda?provinsi-polda=${state}&`; - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-publisher?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-konten-publisher?provinsi-polda=${provState}&`; const view3 = levelName == "MABES POLRI" ? isInternational[2] - ? "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-waktu-akses-pengguna?" - : "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-waktu-akses-pengguna?" + ? // "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-waktu-akses-pengguna?" + "views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-heatmap-bd?" + : // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-waktu-akses-pengguna?" + "views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-heatmap-bd?" : safeLevelName.includes("POLDA") - ? `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-waktu-akses-pengguna-polda?provinsi-polda=${provState}` - : `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-waktu-akses-pengguna-polda?provinsi-polda=${provState}&`; + ? // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-waktu-akses-pengguna-polda?provinsi-polda=${provState}` + `views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-heatmap-bd?provinsi-polda=${provState}` + : // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-waktu-akses-pengguna-polda?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-BreadkdownRev100/db-heatmap-bd?provinsi-polda=${provState}`; const param = ":embed=yes&:toolbar=yes&:iframeSizedToWindow=true"; diff --git a/components/visualization/dashboard-viz.tsx b/components/visualization/dashboard-viz.tsx index 3a9782fc..1f7f8065 100644 --- a/components/visualization/dashboard-viz.tsx +++ b/components/visualization/dashboard-viz.tsx @@ -24,14 +24,14 @@ export default function DashboardVisualization() { const view1 = safeLevelName === "MABES POLRI" ? isInternational[0] - ? "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-content-monitor?" + ? "views/202511_Mediahub-Admin-Mabes-Breakdown-content-monitor_rev100/db-content-monitor?" : // "views/2025_10_MediaHUB-Viz-POLDA-content-monitor_Rev100/db-content-monitor?" - "views/2023_09_MediaHUB-Viz-POLDA-content-monitor_Rev100/db-content-monitor?" + "views/202511_Mediahub-Admin-Mabes-Breakdown-content-monitor_rev100/db-content-monitor?" : // "views/2025_10_MediaHUB-Viz-POLDA-content-monitor_Rev100/db-content-monitor?" safeLevelName.includes("POLDA") - ? `views/2023_09_MediaHUB-Viz-ADMIN-POLDA-content-monitor_Rev100/db-content-monitor?provinsi-polda=${state}&` + ? `views/202511_Mediahub-Admin-Mabes-Breakdown-content-monitor_rev100/db-content-monitor?provinsi-polda=${state}&` : // `views/2025_10_MediaHUB-Viz-POLDA-content-monitor_Rev100/db-content-monitor?provinsi-polda=${state}&` - `views/2023_09_MediaHUB-Viz-ADMIN-POLDA-content-monitor_Rev100/db-content-monitor?satker-selected=${state}&`; + `views/202511_Mediahub-Admin-Mabes-Breakdown-content-monitor_rev100/db-content-monitor?provinsi-polda=${state}&`; // `views/2025_10_MediaHUB-Viz-POLDA-content-monitor_Rev100/db-content-monitor?provinsi-polda=${state}&`; const view2 = diff --git a/components/visualization/management-user-viz.tsx b/components/visualization/management-user-viz.tsx index 2bd4b4fb..74b0f4d0 100644 --- a/components/visualization/management-user-viz.tsx +++ b/components/visualization/management-user-viz.tsx @@ -20,11 +20,11 @@ export default function ManagementUserVisualization() { levelName == "MABES POLRI" ? isInternational ? // "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-user-count?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-user-count?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-user-count?" : // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-user-count?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-user-count?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-user-count?" : // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-user-count-polda?provinsi-polda=${poldaState}&`; - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-user-count?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-user-count?provinsi-polda=${provState}&`; const param = ":embed=yes&:toolbar=yes&:iframeSizedToWindow=true"; diff --git a/components/visualization/pattern-relation-viz.tsx b/components/visualization/pattern-relation-viz.tsx index 4d815ee4..3b117ddd 100644 --- a/components/visualization/pattern-relation-viz.tsx +++ b/components/visualization/pattern-relation-viz.tsx @@ -41,40 +41,40 @@ export default function PatternRelationVisualization() { levelName == "MABES POLRI" ? isInternational[1] ? // "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-konten?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten?" : // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten?" : safeLevelName.includes("POLDA") ? // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-polda?provinsi-polda=${state}&` - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten?provinsi-polda=${provState}&` + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten?provinsi-polda=${provState}&` : // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-polda?provinsi-polda=${state}`; - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten?provinsi-polda=${provState}&`; const view3 = levelName == "MABES POLRI" ? isInternational[2] ? // "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-konten-kategori-top10?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-top10?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-kategori-top10?" : // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-top10?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-top10?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-kategori-top10?" : safeLevelName.includes("POLDA") ? // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-top10-polda?provinsi-polda=${provState}&` - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-top10?provinsi-polda=${provState}&` + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-kategori-top10?provinsi-polda=${provState}&` : // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-top10-polda?provinsi-polda=${provState}&`; - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-top10?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-kategori-top10?provinsi-polda=${provState}&`; const view4 = levelName == "MABES POLRI" ? isInternational[3] ? // "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-konten-kategori?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-kategori?" : // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-kategori?" : safeLevelName.includes("POLDA") ? // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-polda?provinsi-polda=${state}&` - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori?provinsi-polda=${provState}&` + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-kategori?provinsi-polda=${provState}&` : // `views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori-polda?provinsi-polda=${provState}&`; - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-konten-kategori?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-konten-kategori?provinsi-polda=${provState}&`; const param = ":embed=yes&:toolbar=yes&:iframeSizedToWindow=true"; diff --git a/components/visualization/performance-polda.tsx b/components/visualization/performance-polda.tsx index 7e1dba5a..c9b8376e 100644 --- a/components/visualization/performance-polda.tsx +++ b/components/visualization/performance-polda.tsx @@ -28,24 +28,24 @@ export default function PerformancePoldaViz() { levelName == "MABES POLRI" ? isInternational[0] ? // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-ranking-polda?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-ranking-polda?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-ranking-polda?" : // "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-ranking-polda?" - "views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-ranking-polda?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-ranking-polda?" : // `views/2023_09_db-ranking-polres-by-polda_rev100/db-ranking-by-polda?polda-selected=${state}&`; - `views/2025_10_MediaHUB-Viz-POLDA_Rev201/db-ranking-polda?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-ranking-polda?provinsi-polda=${provState}&`; const view2 = levelName == "MABES POLRI" ? isInternational[0] ? // "views/2023_09_db-ranking-polda_rev100/db-ranking-13?" - "views/2025_10_db-ranking-polda_rev100/db-ranking-13?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-jumlah-konten?" : // "views/2023_09_db-ranking-polda_rev100/db-ranking-13?" - "views/2025_10_db-ranking-polda_rev100/db-ranking-13?" + "views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-jumlah-konten?" : safeLevelName.includes("POLDA") ? // `views/2023_09_db-ranking-polres-by-polda_rev100/db-ranking-by-polda?polda-selected=${state}&` - `views/2025_10_db-ranking-polda_rev100/db-ranking-13?provinsi-polda=${provState}&` + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-jumlah-konten?provinsi-polda=${provState}&` : // `views/2023_09_db-ranking-polres-by-polda_rev100/db-ranking-by-polda?polda-selected=${state}&`; - `views/2025_10_db-ranking-polda_rev100/db-ranking-13?provinsi-polda=${provState}&`; + `views/2025_11_Mediahub-Admin-Mabes-Breadkdown-Rev100/db-jumlah-konten?provinsi-polda=${provState}&`; const param = ":embed=yes&:toolbar=yes&:iframeSizedToWindow=true";