-
-

-
- Audio Visual
-
+
+ {[
+ {
+ type: 2,
+ img: "/assets/img/upload-video.png",
+ label: "Audio Visual",
+ },
+ {
+ type: 1,
+ img: "/assets/img/upload-image.png",
+ label: "Foto",
+ },
+ {
+ type: 3,
+ img: "/assets/img/upload-text.png",
+ label: "Teks",
+ },
+ {
+ type: 4,
+ img: "/assets/img/upload-audio.png",
+ label: "Audio",
+ },
+ ].map((item) => (
+
+ handleDestinationUpload(
+ item.type,
+ id,
+ setOpen,
+ router
+ )
+ }
+ >
+
+
+

+
+ {item.label}
+
+
+
+
+ Unggah media berupa {item.label.toLowerCase()}{" "}
+ dengan format sesuai yang didukung.
+
+
-
-
- Unggah media berupa video dengan format avi, wmv,
- atau mp4 dengan ukuran minimal 2mb dan maksimal
- 500mb.
-
-
-
-
-
-
-
-

-
Foto
-
-
-
- Unggah media berupa video dengan format avi, wmv,
- atau mp4 dengan ukuran minimal 2mb dan maksimal
- 500mb.
-
-
-
-
-
-
-
-

-
Teks
-
-
-
- Unggah media berupa video dengan format avi, wmv,
- atau mp4 dengan ukuran minimal 2mb dan maksimal
- 500mb.
-
-
-
-
-
-
-
-

-
Audio
-
-
-
- Unggah media berupa video dengan format avi, wmv,
- atau mp4 dengan ukuran minimal 2mb dan maksimal
- 500mb.
-
-
-
-
+
+ ))}
@@ -472,6 +472,51 @@ export default function FormDetailPressRillis() {
) : (
""
)}
+
+
+
+
+ | Judul Konten |
+ Konten |
+ Tindakan |
+ Aksi |
+
+
+
+ {lampiran.map((item, index) => (
+
+ |
+ {item.title}
+ |
+ {item.fileTypeName} |
+ Konfersi Ai |
+
+
+
+
+ |
+
+ ))}
+
+
+
);
};
diff --git a/components/visualization/performance-satker.tsx b/components/visualization/performance-satker.tsx
new file mode 100644
index 00000000..e53116cd
--- /dev/null
+++ b/components/visualization/performance-satker.tsx
@@ -0,0 +1,84 @@
+"use client";
+import Cookies from "js-cookie";
+import { useEffect, useState } from "react";
+import { getCookiesDecrypt } from "@/lib/utils";
+import { generateTicket } from "@/service/tableau/tableau-service";
+import { Button } from "../ui/button";
+import { useTranslations } from "next-intl";
+
+export default function PerformanceSatkerViz() {
+ const [hasMounted, setHasMounted] = useState(false);
+ const t = useTranslations("AnalyticsDashboard");
+ const levelName = getCookiesDecrypt("ulnae");
+ const poldaState = Cookies.get("state");
+ const provState = Cookies.get("state-prov");
+
+ const [ticket1, setTicket1] = useState("");
+ const [ticket2, setTicket2] = useState("");
+ const [ticket3, setTicket3] = useState("");
+ const [ticket4, setTicket4] = useState("");
+ const [isInternational, setIsInternational] = useState([false, false, false]);
+
+ const baseUrl = "https://db-mediahub.polri.go.id/";
+ const url = "https://db-mediahub.polri.go.id/trusted/";
+
+ const view1 =
+ levelName == "MABES POLRI"
+ ? isInternational[0]
+ ? "views/2023_04_MediaHUB-Viz_INTL_Rev202/db-konten-top10?"
+ : "views/2023_04_MediaHUB-Viz-POLDA_Rev201/db-konten-top10?"
+ : `/views/2023_09_db-ranking-polres-by-polda_rev100/db-ranking-by-polda?polda-selected=${provState}&`;
+
+ const param = ":embed=yes&:toolbar=yes&:iframeSizedToWindow=true";
+
+ useEffect(() => {
+ async function initState() {
+ const response1 = await generateTicket();
+ setTicket1(response1?.data?.data);
+ }
+
+ initState();
+ }, [isInternational]);
+
+ // Hooks
+ useEffect(() => {
+ setHasMounted(true);
+ }, []);
+
+ // Render
+ if (!hasMounted) return null;
+
+ const handleInternational = (index: number, val: boolean) => {
+ const updatedIsInternational = [...isInternational];
+
+ updatedIsInternational[index] = val;
+ setIsInternational(updatedIsInternational);
+ };
+
+ return (
+
+
+
+ {isInternational[0] ? "SATKER PERFORMANCE" : "POLFORMANCE SATKER"}
+
+
+
+ {ticket1 == "" ? (
+
+ ) : (
+
+ )}
+
+
+ );
+}
diff --git a/lib/menus.ts b/lib/menus.ts
index ccad8494..3a46061f 100644
--- a/lib/menus.ts
+++ b/lib/menus.ts
@@ -1591,21 +1591,21 @@ export function getMenuList(pathname: string, t: any): Group[] {
submenus: [
{
href: "/contributor/schedule/press-conference",
- label: "konferensi pers",
+ label: t("press-conference"),
active: pathname.includes("/schedule/press-conference"),
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/contributor/schedule/event",
- label: "event",
+ label: t("event"),
active: pathname.includes("/schedule/event"),
icon: "heroicons:shopping-cart",
children: [],
},
{
href: "/contributor/schedule/press-release",
- label: "pers rilis",
+ label: t("press-release"),
active: pathname.includes("/schedule/press-release"),
icon: "heroicons:shopping-cart",
children: [],
@@ -1789,21 +1789,21 @@ export function getMenuList(pathname: string, t: any): Group[] {
submenus: [
{
href: "/contributor/schedule/press-conference",
- label: "konferensi pers",
+ label: t("press-conference"),
active: pathname.includes("/schedule/press-conference"),
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/contributor/schedule/event",
- label: "event",
+ label: t("event"),
active: pathname.includes("/schedule/event"),
icon: "heroicons:shopping-cart",
children: [],
},
{
href: "/contributor/schedule/press-release",
- label: "pers rilis",
+ label: t("press-release"),
active: pathname.includes("/schedule/press-release"),
icon: "heroicons:shopping-cart",
children: [],
@@ -2019,7 +2019,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
submenus: [
{
href: "/contributor/schedule/press-conference",
- label: "konferensi pers",
+ label: t("press-conference"),
active: pathname.includes("/schedule/press-conference"),
icon: "heroicons:arrow-trending-up",
children: [],
@@ -2033,7 +2033,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
},
{
href: "/contributor/schedule/press-release",
- label: "pers rilis",
+ label: t("press-release"),
active: pathname.includes("/schedule/press-release"),
icon: "heroicons:shopping-cart",
children: [],
@@ -2233,21 +2233,21 @@ export function getMenuList(pathname: string, t: any): Group[] {
submenus: [
{
href: "/contributor/schedule/press-conference",
- label: "konferensi pers",
+ label: t("press-conference"),
active: pathname.includes("/schedule/press-conference"),
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/contributor/schedule/event",
- label: "event",
+ label: t("event"),
active: pathname.includes("/schedule/event"),
icon: "heroicons:shopping-cart",
children: [],
},
{
href: "/contributor/schedule/press-release",
- label: "pers rilis",
+ label: t("press-release"),
active: pathname.includes("/schedule/press-release"),
icon: "heroicons:shopping-cart",
children: [],
@@ -2442,21 +2442,21 @@ export function getMenuList(pathname: string, t: any): Group[] {
submenus: [
{
href: "/contributor/schedule/press-conference",
- label: "konferensi pers",
+ label: t("press-conference"),
active: pathname.includes("/schedule/press-conference"),
icon: "heroicons:arrow-trending-up",
children: [],
},
{
href: "/contributor/schedule/event",
- label: "event",
+ label: t("event"),
active: pathname.includes("/schedule/event"),
icon: "heroicons:shopping-cart",
children: [],
},
{
href: "/contributor/schedule/press-release",
- label: "pers rilis",
+ label: t("press-release"),
active: pathname.includes("/schedule/press-release"),
icon: "heroicons:shopping-cart",
children: [],
@@ -3202,20 +3202,20 @@ export function getMenuList(pathname: string, t: any): Group[] {
},
],
},
- {
- groupLabel: "",
- id: "agenda-setting",
- menus: [
- {
- id: "agenda-setting",
- href: "/contributor/agenda-setting",
- label: t("agenda-setting"),
- active: pathname.includes("/agenda-setting"),
- icon: "iconoir:journal-page",
- submenus: [],
- },
- ],
- },
+ // {
+ // groupLabel: "",
+ // id: "agenda-setting",
+ // menus: [
+ // {
+ // id: "agenda-setting",
+ // href: "/contributor/agenda-setting",
+ // label: t("agenda-setting"),
+ // active: pathname.includes("/agenda-setting"),
+ // icon: "iconoir:journal-page",
+ // submenus: [],
+ // },
+ // ],
+ // },
{
groupLabel: "",
id: "performance-polres",
@@ -3364,11 +3364,39 @@ export function getMenuList(pathname: string, t: any): Group[] {
label: t("dashboard"),
active: pathname.includes("/dashboard"),
icon: "material-symbols:dashboard",
+ submenus: [
+ {
+ href: "/dashboard/executive",
+ label: "Executive",
+ active: pathname === "/dashboard/executive",
+ icon: "heroicons:arrow-trending-up",
+ children: [],
+ },
+ {
+ href: "/dashboard",
+ label: "Breakdown",
+ active: pathname === "/dashboard",
+ icon: "heroicons:arrow-trending-up",
+ children: [],
+ },
+ ],
+ },
+ ],
+ },
+ {
+ groupLabel: "",
+ id: "management-user",
+ menus: [
+ {
+ id: "management-user-menu",
+ href: "/admin/management-user",
+ label: "Management User",
+ active: pathname.includes("/management-user"),
+ icon: "clarity:users-solid",
submenus: [],
},
],
},
-
{
groupLabel: "",
id: "content-production",
@@ -3397,6 +3425,49 @@ export function getMenuList(pathname: string, t: any): Group[] {
},
],
},
+ {
+ groupLabel: "",
+ id: "performance-polres",
+ menus: [
+ {
+ id: "performance-polres",
+ href: "/admin/performance-satker",
+ label: t("performance-satker"),
+ active: pathname.includes("/admin/performance-satker"),
+ icon: "ant-design:signal-filled",
+ submenus: [],
+ },
+ ],
+ },
+ {
+ groupLabel: "",
+ id: "media-tracking",
+ menus: [
+ {
+ id: "media-tracking",
+ href: "/curator/media-tracking",
+ label: t("media-tracking"),
+ active: pathname.includes("/media-tracking"),
+ icon: "material-symbols:map-search-outline",
+ submenus: [
+ {
+ 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/tb-news",
+ label: "Tracking Beritra Hari Ini",
+ active: pathname === "/media-tracking/news",
+ icon: "heroicons:arrow-trending-up",
+ children: [],
+ },
+ ],
+ },
+ ],
+ },
{
groupLabel: "",
id: "communication",
diff --git a/messages/en.json b/messages/en.json
index 47676da0..bde88e71 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -325,10 +325,15 @@
"colors": "Colors",
"performance-polda": "Performance Polda",
"performance-polres": "Performance Polres",
+ "performance-satker": "Performance Satker",
"analysis": "Analysis",
"management-content": "Content Management ",
"add-experts": "Add Experts",
"category": "Category",
+ "add-category": "Add Category",
+ "tags": "Tags",
+ "add-tags": "Add Tags",
+ "add": "Add",
"privacy": "Privacy Policy"
},
"Changelog": {
@@ -580,7 +585,8 @@
"schedule": "Schedule",
"press-conference": "Press Conference",
"press-release": "Press Release",
- "create-schedule": "Create Schedule"
+ "create-schedule": "Create Schedule",
+ "event": "event"
},
"Blog": {
"table": "Table",
@@ -599,5 +605,37 @@
"table": "Table",
"contest": "Lomba",
"create-contest": "Create Contest"
+ },
+ "Curation": {
+ "content-curation": "Content Curation"
+ },
+ "Table": {
+ "no": "No",
+ "title": "Title",
+ "category-name": "Category Name",
+ "upload-date": "Upload Date",
+ "creator-group": "Creator Group",
+ "source": "source",
+ "published": "Published",
+ "date": "Date",
+ "category": "Category",
+ "tag": "Tag",
+ "type-content": "Content Type",
+ "type-task": "Task Type",
+ "category-task": "Category Task",
+ "code": "Code",
+ "start-date": "Start Date",
+ "end-date": "End Date",
+ "speaker": "Speaker",
+ "time": "Time",
+ "address": "Address",
+ "question": "Question",
+ "sender": "Created By",
+ "sendto": "SendTo",
+ "type": "Type",
+ "duration": "Duration",
+ "target-output": "Target Output",
+ "target-participant": "Target Participant",
+ "action": "Actions"
}
}
diff --git a/messages/in.json b/messages/in.json
index 557df9fd..69d234dd 100644
--- a/messages/in.json
+++ b/messages/in.json
@@ -326,10 +326,15 @@
"colors": "Colors",
"performance-polda": "Performa Polda",
"performance-polres": "Performa Polres",
+ "performance-satker": "Performa Satker",
"analysis": "Analisa",
"management-content": "Manajemen Konten",
"add-experts": "Tambah Tenaga Ahli",
"category": "Kategori",
+ "add-category": "Tambah Kategori",
+ "tags": "Tag",
+ "add-tags": "Tambah Tag",
+ "add": "Tambah",
"privacy": "Kebijakan Privacy"
},
"Changelog": {
@@ -581,7 +586,8 @@
"schedule": "Jadwal",
"press-conference": "Konferensi Pers",
"press-release": "Pers Rilis",
- "create-schedule": "Buat Jadwal"
+ "create-schedule": "Buat Jadwal",
+ "event": "event"
},
"Blog": {
"table": "Tabel",
@@ -600,5 +606,37 @@
"table": "Tabel",
"contest": "Lomba",
"create-contest": "Buat Lomba"
+ },
+ "Curation": {
+ "content-curation": "Kurasi Konten"
+ },
+ "Table": {
+ "no": "Nomor",
+ "title": "Judul",
+ "category-name": "Nama Kategori",
+ "upload-date": "Tanggal Upload",
+ "creator-group": "Pembuat",
+ "source": "Sumber",
+ "published": "Diterbitkan",
+ "date": "Tanggal",
+ "category": "Kategori",
+ "tag": "Tag",
+ "type-content": "Tipe Konten",
+ "type-task": "Tipen Penugasan",
+ "category-task": "Kategori Penugasan",
+ "code": "Kode",
+ "start-date": "Tanggal Mulai",
+ "end-date": "Tanggal Selesai",
+ "speaker": "Disampaikan Oleh",
+ "time": "Waktu",
+ "address": "Alamat",
+ "question": "Pertanyaan",
+ "sender": "Pengirim",
+ "sendto": "Penerima",
+ "type": "Tipe",
+ "duration": "Durasi",
+ "target-output": "Target Output",
+ "target-participant": "Target Peserta",
+ "action": "Aksi"
}
}
diff --git a/service/schedule/schedule.ts b/service/schedule/schedule.ts
index 1d45dd42..020433bc 100644
--- a/service/schedule/schedule.ts
+++ b/service/schedule/schedule.ts
@@ -5,8 +5,15 @@ import {
import { httpGet } from "../http-config/http-base-service";
import { any } from "zod";
-export async function paginationSchedule(size: number, page: number, type: any, title: string = "") {
- return await httpGetInterceptor(`schedule/pagination?enablePage=1&scheduleTypeId=${type}&page=${page}&size=${size}&title=${title}`);
+export async function paginationSchedule(
+ size: number,
+ page: number,
+ type: any,
+ title: string = ""
+) {
+ return await httpGetInterceptor(
+ `schedule/pagination?enablePage=1&scheduleTypeId=${type}&page=${page}&size=${size}&title=${title}`
+ );
}
export async function postSchedule(data: any) {
@@ -49,6 +56,11 @@ export async function listScheduleToday() {
return httpGetInterceptor(url);
}
+export async function getListScheduleAttachment(scheduleId: any) {
+ const url = `media/list?&enablePage=0&scheduleId=${scheduleId}`;
+ return httpGetInterceptor(url);
+}
+
export async function listScheduleNext() {
const url = "schedule/next-activity";
return httpGetInterceptor(url);