diff --git a/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx b/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx index b6bfa497..69d40134 100644 --- a/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx +++ b/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx @@ -49,11 +49,11 @@ const columns: ColumnDef[] = [ header: "Jumlah Amplifikasi", cell: ({ row }) => {row.getValue("link")}, }, - { - accessorKey: "status", - header: "Status", - cell: ({ row }) => {row.getValue("status")}, - }, + // { + // accessorKey: "status", + // header: "Status", + // cell: ({ row }) => {row.getValue("status")}, + // }, { accessorKey: "date", header: "Tanggal Penarikan", @@ -77,10 +77,17 @@ const columns: ColumnDef[] = [ - + - View + View{" "} + {row.original.mediaUpload.fileType.secondaryName && + row.original.mediaUpload.fileType.secondaryName.toLowerCase()} diff --git a/app/[locale]/(protected)/admin/media-tracking/tracking-berita/component/table.tsx b/app/[locale]/(protected)/admin/media-tracking/tracking-berita/component/table.tsx index e60c0b89..33d03582 100644 --- a/app/[locale]/(protected)/admin/media-tracking/tracking-berita/component/table.tsx +++ b/app/[locale]/(protected)/admin/media-tracking/tracking-berita/component/table.tsx @@ -9,7 +9,7 @@ import { listDataTracking, mediaTrackingSave, } from "@/service/media-tracking/media-tracking"; -import { error, loading } from "@/lib/swal"; +import { error } from "@/lib/swal"; import { toast } from "sonner"; import { DropdownMenu, @@ -20,31 +20,32 @@ import { } from "@/components/ui/dropdown-menu"; import { PaginationState } from "@tanstack/react-table"; import page from "../page"; +import CustomPagination from "@/components/table/custom-pagination"; +import { close, loading } from "@/config/swal"; export default function TrackingBeritaCard() { const [search, setSearch] = useState(""); const [content, setContent] = useState([]); const [selectedItems, setSelectedItems] = useState([]); - const [currentPage, setCurrentPage] = useState(1); - const [page, setPage] = React.useState(1); - const [showData, setShowData] = React.useState("10"); - const [pagination, setPagination] = React.useState({ - pageIndex: 0, - pageSize: Number(showData), - }); + const [page, setPage] = useState(1); + const [totalPage, setTotalPage] = useState(1); + const [showData, setShowData] = useState("6"); useEffect(() => { initFecth(); - }, [showData]); + }, [showData, page]); const initFecth = async () => { + loading(); const response = await listDataTracking(showData, page - 1); const data = response?.data?.data; const newData = data?.content; + setTotalPage(data?.totalPages || 1); newData.forEach((item: any, index: number) => { item.no = (page - 1) * Number(showData) + index + 1; }); setContent(response?.data?.data?.content || []); + close(); }; const fecthAll = async (keyword: string) => { @@ -117,17 +118,17 @@ export default function TrackingBeritaCard() { value={showData} onValueChange={setShowData} > - - 1 - 10 Data + + 1 - 6 Data - - 1 - 50 Data + + 1 - 12 Data - - 1 - 100 Data + + 1 - 60 Data - - 1 - 250 Data + + 1 - 120 Data @@ -150,48 +151,40 @@ export default function TrackingBeritaCard() { )}
- {content.map((item: any) => ( - handleSelect(item.id)} - > - {item.title} -
-
- {selectedItems.includes(item.id) && ( -
- )} + {content?.length > 1 && + content.map((item: any) => ( + handleSelect(item.id)} + > + {item.title} +
+
+ {selectedItems.includes(item.id) && ( +
+ )} +
-
-

- {item.title} -

-
- ))} +

+ {item.title} +

+ + ))}
- -
- -
{currentPage}
- +
+ {content && content?.length > 0 ? ( + setPage(data)} + /> + ) : ( +

No Data

+ )}
diff --git a/app/[locale]/(protected)/admin/settings/banner/component/table.tsx b/app/[locale]/(protected)/admin/settings/banner/component/table.tsx index 5b57778c..44d98ec7 100644 --- a/app/[locale]/(protected)/admin/settings/banner/component/table.tsx +++ b/app/[locale]/(protected)/admin/settings/banner/component/table.tsx @@ -69,6 +69,7 @@ import { data } from "jquery"; import { useToast } from "@/components/ui/use-toast"; import { setBanner } from "@/service/settings/settings"; import { id } from "date-fns/locale"; +import CustomPagination from "@/components/table/custom-pagination"; const ContentListBanner = () => { const router = useRouter(); @@ -120,10 +121,10 @@ const ContentListBanner = () => { React.useEffect(() => { fetchData(); - setPagination({ - pageIndex: 0, - pageSize: Number(showData), - }); + // setPagination({ + // pageIndex: 0, + // pageSize: Number(showData), + // }); }, [page, showData]); async function fetchData() { @@ -398,10 +399,15 @@ const ContentListBanner = () => {
))}
-
-
- 1 -
+
+ {data && data?.length > 0 ? ( + setPage(data)} + /> + ) : ( +

No Data

+ )}
diff --git a/app/[locale]/(protected)/admin/settings/setting-tracking/component/column.tsx b/app/[locale]/(protected)/admin/settings/setting-tracking/component/column.tsx index 09ef5cd2..9fd2e03b 100644 --- a/app/[locale]/(protected)/admin/settings/setting-tracking/component/column.tsx +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/component/column.tsx @@ -122,10 +122,22 @@ const useTableColumns = () => { - - - - + + + + View + + + + + + Edit + + handleDeleteMedia(row.original.id)} className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none" diff --git a/app/[locale]/(protected)/admin/settings/setting-tracking/component/create.tsx b/app/[locale]/(protected)/admin/settings/setting-tracking/component/create.tsx index a378f474..90544ee2 100644 --- a/app/[locale]/(protected)/admin/settings/setting-tracking/component/create.tsx +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/component/create.tsx @@ -1,141 +1,141 @@ -"use client"; +// "use client"; -import { Button } from "@/components/ui/button"; -import { - Dialog, - DialogContent, - DialogFooter, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/components/ui/dialog"; -import { z } from "zod"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { - Form, - FormControl, - FormDescription, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { useRouter } from "@/i18n/routing"; -import { Input } from "@/components/ui/input"; -import { Checkbox } from "@/components/ui/checkbox"; -import { getUserRoles, postCategory } from "@/service/settings/settings"; -import { Fragment, useEffect, useState } from "react"; -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; -import { Icon } from "@iconify/react/dist/iconify.js"; -import { Textarea } from "@/components/ui/textarea"; -import { close, error, loading } from "@/config/swal"; -import { useToast } from "@/components/ui/use-toast"; -import { stringify } from "querystring"; -import { useDropzone } from "react-dropzone"; -import { CloudUpload } from "lucide-react"; -import Image from "next/image"; -import { Upload } from "tus-js-client"; -import { getCookiesDecrypt } from "@/lib/utils"; -import Cookies from "js-cookie"; -import { useTranslations } from "next-intl"; +// import { Button } from "@/components/ui/button"; +// import { +// Dialog, +// DialogContent, +// DialogFooter, +// DialogHeader, +// DialogTitle, +// DialogTrigger, +// } from "@/components/ui/dialog"; +// import { z } from "zod"; +// import { useForm } from "react-hook-form"; +// import { zodResolver } from "@hookform/resolvers/zod"; +// import { +// Form, +// FormControl, +// FormDescription, +// FormField, +// FormItem, +// FormLabel, +// FormMessage, +// } from "@/components/ui/form"; +// import { useRouter } from "@/i18n/routing"; +// import { Input } from "@/components/ui/input"; +// import { Checkbox } from "@/components/ui/checkbox"; +// import { getUserRoles, postCategory } from "@/service/settings/settings"; +// import { Fragment, useEffect, useState } from "react"; +// import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; +// import { Icon } from "@iconify/react/dist/iconify.js"; +// import { Textarea } from "@/components/ui/textarea"; +// import { close, error, loading } from "@/config/swal"; +// import { useToast } from "@/components/ui/use-toast"; +// import { stringify } from "querystring"; +// import { useDropzone } from "react-dropzone"; +// import { CloudUpload } from "lucide-react"; +// import Image from "next/image"; +// import { Upload } from "tus-js-client"; +// import { getCookiesDecrypt } from "@/lib/utils"; +// import Cookies from "js-cookie"; +// import { useTranslations } from "next-intl"; -const wilayahList = [ - { id: "mabes", label: "Mabes" }, - { id: "polda", label: "Polda" }, - { id: "satker", label: "Satker" }, -]; +// const wilayahList = [ +// { id: "mabes", label: "Mabes" }, +// { id: "polda", label: "Polda" }, +// { id: "satker", label: "Satker" }, +// ]; -const jumlahList = [5, 10, 15, 20, 25, 30]; +// const jumlahList = [5, 10, 15, 20, 25, 30]; -export default function CreateSettingTracking() { - const t = useTranslations("Menu"); - const [isOpen, setIsOpen] = useState(false); +// export default function CreateSettingTracking() { +// const t = useTranslations("Menu"); +// const [isOpen, setIsOpen] = useState(false); - const form = useForm({ - defaultValues: { - wilayah: [] as string[], - jumlah: [] as number[], - }, - }); +// const form = useForm({ +// defaultValues: { +// wilayah: [] as string[], +// jumlah: [] as number[], +// }, +// }); - const onSubmit = (values: any) => { - console.log("Submitted values:", values); - setIsOpen(false); - }; +// const onSubmit = (values: any) => { +// console.log("Submitted values:", values); +// setIsOpen(false); +// }; - return ( - - - - +// return ( +// +// +// +// - - - Add Setting Tracking Berita Harian - +// +// +// Add Setting Tracking Berita Harian +// -
- - {/* Wilayah */} - ( - - Wilayah -
- {wilayahList.map((item) => ( -
- { - const updated = checked - ? [...field.value, item.id] - : field.value.filter((val) => val !== item.id); - field.onChange(updated); - }} - /> - -
- ))} -
-
- )} - /> +// +// +// {/* Wilayah */} +// ( +// +// Wilayah +//
+// {wilayahList.map((item) => ( +//
+// { +// const updated = checked +// ? [...field.value, item.id] +// : field.value.filter((val) => val !== item.id); +// field.onChange(updated); +// }} +// /> +// +//
+// ))} +//
+//
+// )} +// /> - ( - - Jumlah Tracking Berita Harian -
- {jumlahList.map((num) => ( -
- { - const updated = checked - ? [...field.value, num] - : field.value.filter((val) => val !== num); - field.onChange(updated); - }} - /> - -
- ))} -
-
- )} - /> +// ( +// +// Jumlah Tracking Berita Harian +//
+// {jumlahList.map((num) => ( +//
+// { +// const updated = checked +// ? [...field.value, num] +// : field.value.filter((val) => val !== num); +// field.onChange(updated); +// }} +// /> +// +//
+// ))} +//
+//
+// )} +// /> - - - - - -
-
- ); -} +// +// +// +// +// +// +//
+// ); +// } diff --git a/app/[locale]/(protected)/admin/settings/setting-tracking/component/table.tsx b/app/[locale]/(protected)/admin/settings/setting-tracking/component/table.tsx index 82e8f34f..b6978627 100644 --- a/app/[locale]/(protected)/admin/settings/setting-tracking/component/table.tsx +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/component/table.tsx @@ -49,8 +49,8 @@ import { PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; -import CreateSettingTracking from "./create"; import useTableColumns from "./column"; +import { UploadIcon } from "lucide-react"; const AdminSettingTrackingTable = () => { const router = useRouter(); @@ -190,7 +190,15 @@ const AdminSettingTrackingTable = () => { return (
- + {/* */} +
+ + + +
+
+
+ ) : null} + + {detail?.emergencyIssue && ( + setOpenEmergencyModal(false)} + data={detail.emergencyIssue} + /> + )} +
)} diff --git a/components/form/communication/escalation-detail-new-form.tsx b/components/form/communication/escalation-detail-new-form.tsx index 3b94a704..bc4b001b 100644 --- a/components/form/communication/escalation-detail-new-form.tsx +++ b/components/form/communication/escalation-detail-new-form.tsx @@ -45,6 +45,8 @@ import { import { ChevronDownIcon } from "lucide-react"; import { getOperatorUser } from "@/service/management-user/management-user"; import { getCookiesDecrypt } from "@/lib/utils"; +import { htmlToString } from "@/utils/globals"; +import InfoLainnyaModal from "../ticketing/info-lainnya"; const taskSchema = z.object({ title: z.string().min(1, { message: "Judul diperlukan" }), diff --git a/components/form/communication/questions-reply-form.tsx b/components/form/communication/questions-reply-form.tsx index 64d96c87..b684de96 100644 --- a/components/form/communication/questions-reply-form.tsx +++ b/components/form/communication/questions-reply-form.tsx @@ -51,10 +51,8 @@ import { ChevronDownIcon } from "lucide-react"; import { getOperatorUser } from "@/service/management-user/management-user"; const taskSchema = z.object({ - title: z.string().min(1, { message: "Judul diperlukan" }), - description: z.string().min(2, { - message: "Narasi Penugasan harus lebih dari 2 karakter.", - }), + message: z.string().optional(), + description: z.string().optional(), }); export type taskDetail = { @@ -509,7 +507,7 @@ export default function FormQuestionsReply() { ( ({}); + + const handleImageLoad = (e: any, index: number) => { + const { naturalWidth, naturalHeight } = e.target; + const isPortrait = naturalHeight > naturalWidth; + + setPortraitMap((prev: any) => ({ + ...prev, + [index]: isPortrait, + })); + }; + + useEffect(() => { + console.log("portrai", portraitMap); + }, [portraitMap]); + return (
{detail !== undefined ? ( @@ -513,19 +530,19 @@ export default function FormImageDetail() { thumbs={{ swiper: thumbsSwiper }} modules={[FreeMode, Navigation, Thumbs]} navigation={false} - className="w-full" + className="h-[480px] object-cover w-full" > {detailThumb?.map((data: any) => ( {` ))} -
+
( {` @@ -579,11 +596,11 @@ export default function FormImageDetail() {
- + Thumbnail Gambar Utama
@@ -666,7 +683,7 @@ export default function FormImageDetail() { "" )} */} - {detail?.isPublish == false && detail.isPublishOnPolda == true ? ( + {(detail?.isPublish == false && detail.isPublishOnPolda == true) || (detail?.isPublish == false && detail?.isInternationalMedia == true && Number(detail?.statusId) == 2) ? (