diff --git a/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx b/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx new file mode 100644 index 00000000..b6bfa497 --- /dev/null +++ b/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx @@ -0,0 +1,93 @@ +import * as React from "react"; +import { ColumnDef } from "@tanstack/react-table"; + +import { Eye, MoreVertical, SquarePen, Trash2 } from "lucide-react"; +import { cn } from "@/lib/utils"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuTrigger, + DropdownMenuItem, +} from "@/components/ui/dropdown-menu"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; +import { + formatDateToIndonesian, + getOnlyDate, + htmlToString, +} from "@/utils/globals"; +import { Link, useRouter } from "@/i18n/routing"; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/components/ui/accordion"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { Collapsible, CollapsibleContent } from "@/components/ui/collapsible"; + +const columns: ColumnDef[] = [ + { + accessorKey: "no", + header: "No", + cell: ({ row }) => {row.getValue("no")}, + }, + + { + accessorKey: "title", + header: "Judul", + cell: ({ row }) => {row.getValue("title")}, + }, + { + accessorKey: "link", + header: "Jumlah Amplifikasi", + cell: ({ row }) => {row.getValue("link")}, + }, + { + accessorKey: "status", + header: "Status", + cell: ({ row }) => {row.getValue("status")}, + }, + { + accessorKey: "date", + header: "Tanggal Penarikan", + cell: ({ row }) => {row.getValue("date")}, + }, + { + id: "actions", + accessorKey: "action", + header: "Action", + enableHiding: false, + cell: ({ row }) => { + return ( + + + + + + + + + View + + + + + ); + }, + }, +]; + +export default columns; diff --git a/app/[locale]/(protected)/admin/media-tracking/results/component/table.tsx b/app/[locale]/(protected)/admin/media-tracking/results/component/table.tsx new file mode 100644 index 00000000..43edac80 --- /dev/null +++ b/app/[locale]/(protected)/admin/media-tracking/results/component/table.tsx @@ -0,0 +1,382 @@ +"use client"; + +import * as React from "react"; +import { + ColumnDef, + ColumnFiltersState, + PaginationState, + SortingState, + VisibilityState, + flexRender, + getCoreRowModel, + getFilteredRowModel, + getPaginationRowModel, + getSortedRowModel, + useReactTable, +} from "@tanstack/react-table"; +import { Button } from "@/components/ui/button"; + +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import { + ChevronDown, + ChevronLeft, + ChevronRight, + Eye, + MoreVertical, + Search, + SquarePen, + Trash2, + TrendingDown, + TrendingUp, + UserIcon, +} from "lucide-react"; +import { cn } from "@/lib/utils"; +import { + DropdownMenu, + DropdownMenuCheckboxItem, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { usePathname, useRouter, useSearchParams } from "next/navigation"; +import TablePagination from "@/components/table/table-pagination"; +import columns from "./column"; +import { listEnableCategory } from "@/service/content/content"; +import { close, loading } from "@/config/swal"; +import { Label } from "@/components/ui/label"; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { link } from "fs"; +import { listDataAll } from "@/service/landing/landing"; +import SearchImageComponent from "@/components/form/media-tracking/search-image-card"; +import SearchVideoComponent from "@/components/form/media-tracking/search-video-card"; +import SearchDocumentComponent from "@/components/form/media-tracking/search-document-card"; +import SearchAudioComponent from "@/components/form/media-tracking/search-audio-card"; +import { getMediaTracking } from "@/service/media-tracking/media-tracking"; +import { group } from "console"; +import router from "next/router"; +import { title } from "process"; +import { InputGroup, InputGroupText } from "@/components/ui/input-group"; +import { Input } from "@/components/ui/input"; + +const ResultTable = () => { + const router = useRouter(); + const asPath = usePathname(); + const searchParams = useSearchParams(); + const [showData, setShowData] = React.useState("10"); + const [categories, setCategories] = React.useState(); + const [dataTable, setDataTable] = React.useState([]); + const [sorting, setSorting] = React.useState([]); + const [columnFilters, setColumnFilters] = React.useState( + [] + ); + const [showTable, setShowTable] = React.useState(false); + const [onSearch, setOnSearch] = React.useState(""); + const [columnVisibility, setColumnVisibility] = + React.useState({}); + const [rowSelection, setRowSelection] = React.useState({}); + const [pagination, setPagination] = React.useState({ + pageIndex: 0, + pageSize: Number(showData), + }); + const [categoryFilter, setCategoryFilter] = React.useState([]); + const [searchTitle, setSearchTitle] = React.useState(""); + const [statusFilter, setStatusFilter] = React.useState([]); + const [page, setPage] = React.useState(1); + const [imageData, setImageData] = React.useState(); + const [totalData, setTotalData] = React.useState(1); + const [totalPage, setTotalPage] = React.useState(1); + const [contentAll, setContentAll] = React.useState([]); + const [formatFilter, setFormatFilter] = React.useState([]); + const [totalContent, setTotalContent] = React.useState(); + const [search, setSearch] = React.useState(""); + const group = searchParams?.get("group"); + const title = searchParams?.get("title"); + const categorie = searchParams?.get("category"); + const table = useReactTable({ + data: dataTable, + columns, + onSortingChange: setSorting, + onColumnFiltersChange: setColumnFilters, + getCoreRowModel: getCoreRowModel(), + getPaginationRowModel: getPaginationRowModel(), + getSortedRowModel: getSortedRowModel(), + getFilteredRowModel: getFilteredRowModel(), + onColumnVisibilityChange: setColumnVisibility, + onRowSelectionChange: setRowSelection, + onPaginationChange: setPagination, + state: { + sorting, + columnFilters, + columnVisibility, + rowSelection, + pagination, + }, + }); + + let typingTimer: any; + const doneTypingInterval = 1500; + + // async function doneTyping() { + // fetchData(); + // } + + React.useEffect(() => { + const pageFromUrl = searchParams?.get("page"); + if (pageFromUrl) { + setPage(Number(pageFromUrl)); + } + }, [searchParams]); + + React.useEffect(() => { + getCategories(); + }, []); + + React.useEffect(() => { + getDataTable(); + }, [page, showData, search]); + + const getDataTable = async () => { + const res = await getMediaTracking(page - 1, search, showData); + + const data = res?.data?.data; + const newData = data?.content; + + newData.forEach((item: any, index: number) => { + item.no = (page - 1) * Number(showData) + index + 1; + }); + + setDataTable(newData); + setTotalData(data?.totalElements); + setTotalPage(data?.totalPages); + setTotalContent(data.totalElements); + }; + + async function getCategories() { + const category = await listEnableCategory(""); + const resCategory = category?.data?.data?.content; + setCategories(resCategory); + } + + React.useEffect(() => { + if (categorie) { + setCategoryFilter( + categorie?.split("&")?.length > 1 ? categorie?.split("&") : [categorie] + ); + console.log( + "Kategori", + categorie, + categorie?.split("&")?.length > 1 ? categorie?.split("&") : [categorie] + ); + } + }, [categorie]); + + const handleCategoryFilter = (e: boolean, id: string) => { + let filter = [...categoryFilter]; + + if (e) { + filter = [...categoryFilter, String(id)]; + } else { + filter.splice(categoryFilter.indexOf(id), 1); + } + console.log("checkbox filter", filter); + setCategoryFilter(filter); + router.push(`?category=${filter.join("&")}`); + }; + + const cleanCheckbox = () => { + setCategoryFilter([]); + setFormatFilter([]); + router.push(`?category=&title=`); + }; + + // async function getData() { + // if (asPath?.includes("/polda/") == true) { + // if (asPath?.split("/")[2] !== "[polda_name]") { + // const filter = + // categoryFilter?.length > 0 + // ? categoryFilter?.sort().join(",") + // : categorie || ""; + + // const name = title == undefined ? "" : title; + // const format = formatFilter == undefined ? "" : formatFilter?.join(","); + // const filterGroup = group == undefined ? asPath.split("/")[2] : group; + // loading(); + // const response = await listDataAll("", name, filter, ""); + // close(); + // // setGetTotalPage(response?.data?.data?.totalPages); + // // setContentImage(response?.data?.data?.content); + // // setTotalContent(response?.data?.data?.totalElements); + // const data = response?.data?.data; + // const contentData = data?.content; + // setImageData(contentData); + // setTotalData(data?.totalElements); + // setContentAll(response?.data?.data?.content); + // setTotalPage(data?.totalPages); + // setTotalContent(response?.data?.data?.totalElements); + // } + // } + // } + + const handleSearch = (e: React.ChangeEvent) => { + setSearch(e.target.value); + table.getColumn("judul")?.setFilterValue(e.target.value); + }; + + const handleKeyUp = () => { + clearTimeout(typingTimer); + typingTimer = setTimeout(doneTyping, doneTypingInterval); + }; + + async function doneTyping() { + if (searchTitle == "" || searchTitle == undefined) { + router.push("?title="); + } else { + router.push(`?title=${searchTitle}`); + } + } + + const handleKeyDown = () => { + clearTimeout(typingTimer); + }; + + return ( +
+
+
+
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ +
+ + + + + + {table + .getAllColumns() + .filter((column) => column.getCanHide()) + .map((column) => { + return ( + + column.toggleVisibility(!!value) + } + > + {column.id} + + ); + })} + + +
+
+
+ + + {table.getHeaderGroups().map((headerGroup) => ( + + {headerGroup.headers.map((header) => ( + + {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext() + )} + + ))} + + ))} + + + {table.getRowModel().rows?.length ? ( + table.getRowModel().rows.map((row) => ( + + {row.getVisibleCells().map((cell) => ( + + {flexRender(cell.column.columnDef.cell, cell.getContext())} + + ))} + + )) + ) : ( + + + No results. + + + )} + +
+ + {/*
+ +
*/} + {/* + )} */} +
+ ); +}; + +export default ResultTable; diff --git a/app/[locale]/(protected)/admin/media-tracking/results/page.tsx b/app/[locale]/(protected)/admin/media-tracking/results/page.tsx new file mode 100644 index 00000000..99f305e7 --- /dev/null +++ b/app/[locale]/(protected)/admin/media-tracking/results/page.tsx @@ -0,0 +1,11 @@ +import SiteBreadcrumb from "@/components/site-breadcrumb"; +import ResultTable from "./component/table"; + +export default function AdminResult() { + return ( +
+ + +
+ ); +} diff --git a/app/[locale]/(protected)/admin/media-tracking/tracking-berita/component/column.tsx b/app/[locale]/(protected)/admin/media-tracking/tracking-berita/component/column.tsx new file mode 100644 index 00000000..36024514 --- /dev/null +++ b/app/[locale]/(protected)/admin/media-tracking/tracking-berita/component/column.tsx @@ -0,0 +1,54 @@ +import * as React from "react"; +import { ColumnDef } from "@tanstack/react-table"; + +import { Eye, MoreVertical, SquarePen, Trash2 } from "lucide-react"; +import { cn } from "@/lib/utils"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuTrigger, + DropdownMenuItem, +} from "@/components/ui/dropdown-menu"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; +import { + formatDateToIndonesian, + getOnlyDate, + htmlToString, +} from "@/utils/globals"; +import { Link, useRouter } from "@/i18n/routing"; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/components/ui/accordion"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { Collapsible, CollapsibleContent } from "@/components/ui/collapsible"; + +const columns: ColumnDef[] = [ + { + accessorKey: "no", + header: "No", + cell: ({ row }) => {row.getValue("no")}, + }, + + { + accessorKey: "title", + header: "Nama Media Online", + cell: ({ row }) => {row.getValue("title")}, + }, + { + accessorKey: "link", + header: "Link", + cell: ({ row }) => {row.getValue("categoryName")}, + }, +]; + +export default columns; 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 new file mode 100644 index 00000000..e60c0b89 --- /dev/null +++ b/app/[locale]/(protected)/admin/media-tracking/tracking-berita/component/table.tsx @@ -0,0 +1,199 @@ +"use client"; +import React, { useEffect, useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Card } from "@/components/ui/card"; +import { ChevronLeft, ChevronRight } from "lucide-react"; +import { + listDataAllNonPagination, + listDataTracking, + mediaTrackingSave, +} from "@/service/media-tracking/media-tracking"; +import { error, loading } from "@/lib/swal"; +import { toast } from "sonner"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { PaginationState } from "@tanstack/react-table"; +import page from "../page"; + +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), + }); + + useEffect(() => { + initFecth(); + }, [showData]); + + const initFecth = async () => { + const response = await listDataTracking(showData, page - 1); + const data = response?.data?.data; + const newData = data?.content; + newData.forEach((item: any, index: number) => { + item.no = (page - 1) * Number(showData) + index + 1; + }); + setContent(response?.data?.data?.content || []); + }; + + const fecthAll = async (keyword: string) => { + const response = await listDataAllNonPagination(keyword); + setContent(response?.data?.data?.content || []); + }; + + const handleInputChange = (e: React.ChangeEvent) => { + const value = e.target.value; + setSearch(value); + + if (value.trim() === "") { + initFecth(); + } else { + fecthAll(value); + } + }; + + const handleSelect = (id: number) => { + setSelectedItems((prev) => + prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id] + ); + }; + + const doSave = async () => { + if (selectedItems.length === 0) { + toast("Pilih minimal 1 berita untuk disimpan."); + return; + } + + try { + const promises = selectedItems.map((id) => + mediaTrackingSave({ + mediaUploadId: id, + duration: 24, + scrapingPeriod: 3, + }) + ); + await Promise.all(promises); + + toast("Berhasil Menambahkan", { + description: "", + }); + setSelectedItems([]); + initFecth(); + } catch (err: any) { + error(err?.message || "Gagal menyimpan data."); + } + }; + + return ( + +
+
+ +
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ + {selectedItems.length > 0 && ( +
+
+ {selectedItems.length} Item Terpilih{" "} + + / Tracking Berita tersisa {29 - selectedItems.length} + +
+ +
+ )} + +
+ {content.map((item: any) => ( + handleSelect(item.id)} + > + {item.title} +
+
+ {selectedItems.includes(item.id) && ( +
+ )} +
+
+

+ {item.title} +

+ + ))} +
+ +
+ +
{currentPage}
+ +
+
+ + ); +} diff --git a/app/[locale]/(protected)/admin/media-tracking/tracking-berita/page.tsx b/app/[locale]/(protected)/admin/media-tracking/tracking-berita/page.tsx new file mode 100644 index 00000000..d8d0cc34 --- /dev/null +++ b/app/[locale]/(protected)/admin/media-tracking/tracking-berita/page.tsx @@ -0,0 +1,11 @@ +import SiteBreadcrumb from "@/components/site-breadcrumb"; +import TrackingBeritaCard from "./component/table"; + +export default function AdminTrackingBerita() { + return ( +
+ + +
+ ); +} diff --git a/app/[locale]/(protected)/admin/settings/setting-tracking/component/column.tsx b/app/[locale]/(protected)/admin/settings/setting-tracking/component/column.tsx new file mode 100644 index 00000000..09ef5cd2 --- /dev/null +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/component/column.tsx @@ -0,0 +1,146 @@ +import * as React from "react"; +import { ColumnDef } from "@tanstack/react-table"; + +import { Eye, MoreVertical, SquarePen, Trash2 } from "lucide-react"; +import { cn } from "@/lib/utils"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuTrigger, + DropdownMenuItem, +} from "@/components/ui/dropdown-menu"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; + +import { Link, useRouter } from "@/i18n/routing"; +import { error } from "@/config/swal"; +import { deleteCategory } from "@/service/settings/settings"; +import { useToast } from "@/components/ui/use-toast"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover"; +import { + Menubar, + MenubarContent, + MenubarMenu, + MenubarTrigger, +} from "@/components/ui/menubar"; +import EditCategoryModal from "../../category/component/edit"; +import withReactContent from "sweetalert2-react-content"; +import { deleteMedia } from "@/service/content/content"; +import Swal from "sweetalert2"; +import { useTranslations } from "next-intl"; +import DetailSettingTracking from "./detail"; +import UpdateSettingTracking from "./update"; + +const useTableColumns = () => { + const t = useTranslations("Table"); // Panggil di dalam hook + const MySwal = withReactContent(Swal); + const columns: ColumnDef[] = [ + { + accessorKey: "no", + header: "No", + cell: ({ row }) => {row.getValue("no")}, + }, + + { + accessorKey: "name", + header: "Wilayah", + cell: ({ row }) => ( + {row.getValue("name")} + ), + }, + { + accessorKey: "mediaTypesString", + header: "Jumlah Tracking Berita Harian", + cell: ({ row }) => ( + {row.getValue("mediaTypesString")} + ), + }, + { + id: "actions", + accessorKey: "action", + header: t("action"), + enableHiding: false, + cell: ({ row }) => { + const MySwal = withReactContent(Swal); + + async function doDelete(id: any) { + // loading(); + const data = { + id, + }; + + const response = await deleteMedia(data); + + if (response?.error) { + error(response.message); + return false; + } + success(); + } + + function success() { + MySwal.fire({ + title: "Sukses", + icon: "success", + confirmButtonColor: "#3085d6", + confirmButtonText: "OK", + }).then((result) => { + if (result.isConfirmed) { + window.location.reload(); + } + }); + } + + const handleDeleteMedia = (id: any) => { + MySwal.fire({ + title: "Hapus Data", + text: "", + icon: "warning", + showCancelButton: true, + cancelButtonColor: "#3085d6", + confirmButtonColor: "#d33", + confirmButtonText: "Hapus", + }).then((result) => { + if (result.isConfirmed) { + doDelete(id); + } + }); + }; + return ( + + + + + + + + + + handleDeleteMedia(row.original.id)} + className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none" + > + + Delete + + + + ); + }, + }, + ]; + + return columns; +}; + +export default useTableColumns; diff --git a/app/[locale]/(protected)/admin/settings/setting-tracking/component/create.tsx b/app/[locale]/(protected)/admin/settings/setting-tracking/component/create.tsx new file mode 100644 index 00000000..a378f474 --- /dev/null +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/component/create.tsx @@ -0,0 +1,141 @@ +"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"; + +const wilayahList = [ + { id: "mabes", label: "Mabes" }, + { id: "polda", label: "Polda" }, + { id: "satker", label: "Satker" }, +]; + +const jumlahList = [5, 10, 15, 20, 25, 30]; + +export default function CreateSettingTracking() { + const t = useTranslations("Menu"); + const [isOpen, setIsOpen] = useState(false); + + const form = useForm({ + defaultValues: { + wilayah: [] as string[], + jumlah: [] as number[], + }, + }); + + const onSubmit = (values: any) => { + console.log("Submitted values:", values); + setIsOpen(false); + }; + + return ( + + + + + + + + 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); + }} + /> + +
+ ))} +
+
+ )} + /> + + ( + + 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/detail.tsx b/app/[locale]/(protected)/admin/settings/setting-tracking/component/detail.tsx new file mode 100644 index 00000000..8a0a5a09 --- /dev/null +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/component/detail.tsx @@ -0,0 +1,151 @@ +"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, EyeIcon, SquarePen } 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 jumlahList = [5, 10, 15, 20, 25, 30]; + +export default function DetailSettingTracking(props: { + id: string; + isDetail?: boolean; +}) { + const { id, isDetail } = props; + const t = useTranslations("Menu"); + const [isOpen, setIsOpen] = useState(false); + + const form = useForm({ + defaultValues: { + wilayah: [] as string[], + jumlah: [] as number[], + }, + }); + + const onSubmit = (values: any) => { + console.log("Submitted values:", values); + setIsOpen(false); + }; + + return ( + + + setIsOpen(true)} + className="flex flex-row items-center border-b p-2 hover:cursor-pointer hover:bg-black hover:text-white" + > + + Detail + + + + + + 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); + }} + /> + +
+ ))} +
+
+ )} + /> + + ( + + 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 new file mode 100644 index 00000000..82e8f34f --- /dev/null +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/component/table.tsx @@ -0,0 +1,322 @@ +"use client"; + +import * as React from "react"; +import { + ColumnDef, + ColumnFiltersState, + PaginationState, + SortingState, + VisibilityState, + flexRender, + getCoreRowModel, + getFilteredRowModel, + getPaginationRowModel, + getSortedRowModel, + useReactTable, +} from "@tanstack/react-table"; +import { Button } from "@/components/ui/button"; + +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; + +import { useSearchParams } from "next/navigation"; +import TablePagination from "@/components/table/table-pagination"; +import columns from "./column"; + +import { listEnableCategory } from "@/service/content/content"; +import { Checkbox } from "@/components/ui/checkbox"; +import { close, loading } from "@/config/swal"; +import { Link, useRouter } from "@/i18n/routing"; +import { NewCampaignIcon } from "@/components/icon"; +import { getCategories } from "@/service/settings/settings"; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { useTranslations } from "next-intl"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover"; +import CreateSettingTracking from "./create"; +import useTableColumns from "./column"; + +const AdminSettingTrackingTable = () => { + const router = useRouter(); + const searchParams = useSearchParams(); + const t = useTranslations("Menu"); + const dataChange = searchParams?.get("dataChange"); + const [openModal, setOpenModal] = React.useState(false); + const [dataTable, setDataTable] = React.useState([]); + const [totalData, setTotalData] = React.useState(1); + const [sorting, setSorting] = React.useState([]); + const [region, setRegion] = React.useState(); + const [regionFilter, setRegionFilter] = React.useState([]); + const [statusFilter, setStatusFilter] = React.useState([]); + const [columnFilters, setColumnFilters] = React.useState( + [] + ); + const [columnVisibility, setColumnVisibility] = + React.useState({}); + const [rowSelection, setRowSelection] = React.useState({}); + const [pagination, setPagination] = React.useState({ + pageIndex: 0, + pageSize: 10, + }); + + const [page, setPage] = React.useState(1); + const [totalPage, setTotalPage] = React.useState(1); + const columns = useTableColumns(); + const table = useReactTable({ + data: dataTable, + columns, + onSortingChange: setSorting, + onColumnFiltersChange: setColumnFilters, + getCoreRowModel: getCoreRowModel(), + getPaginationRowModel: getPaginationRowModel(), + getSortedRowModel: getSortedRowModel(), + getFilteredRowModel: getFilteredRowModel(), + onColumnVisibilityChange: setColumnVisibility, + onRowSelectionChange: setRowSelection, + onPaginationChange: setPagination, + state: { + sorting, + columnFilters, + columnVisibility, + rowSelection, + pagination, + }, + }); + + const manualRegions = [ + { id: "semua", label: "Semua" }, + { id: "mabes", label: "Mabes" }, + { id: "polda", label: "Polda" }, + { id: "satker", label: "Satker" }, + { id: "internasional", label: "Internasional" }, + ]; + + React.useEffect(() => { + if (dataChange) { + router.push("/admin/settings/category"); + } + fetchData(); + }, [dataChange]); + + React.useEffect(() => { + const pageFromUrl = searchParams?.get("page"); + if (pageFromUrl) { + setPage(Number(pageFromUrl)); + } + }, [searchParams]); + + React.useEffect(() => { + fetchData(); + }, [page, regionFilter]); + + async function fetchData() { + try { + loading(); + + const regionQuery = regionFilter.length + ? `&publishedLocation=${regionFilter.join(",")}` + : ""; + + const statusQuery = statusFilter.length + ? `&isPublish=${statusFilter.join(",")}` + : ""; + + const response = await getCategories( + page - 1, + `${regionQuery}${statusQuery}` + ); + + const data = response?.data?.data; + const contentData = data?.content; + + contentData.forEach((item: any, index: number) => { + item.no = (page - 1) * 10 + index + 1; + }); + + setDataTable(contentData); + setTotalData(data?.totalElements); + setTotalPage(data?.totalPages); + close(); + } catch (error) { + console.error("Error fetching categories:", error); + } + } + + const handleChange = (type: string, id: string, checked: boolean) => { + if (type === "region") { + if (id === "semua") { + if (checked) { + // Pilih semua (kecuali 'semua' itu sendiri) + setRegionFilter(["mabes", "polda", "satker", "internasional"]); + } else { + setRegionFilter([]); + } + } else { + let updated = checked + ? [...regionFilter, id] + : regionFilter.filter((val) => val !== id); + + // Jika semua sudah tercentang, maka otomatis centang "semua" + const allIds = ["mabes", "polda", "satker", "internasional"]; + const allSelected = allIds.every((val) => updated.includes(val)); + + setRegionFilter(allSelected ? allIds : updated); + } + } else { + if (checked) { + setStatusFilter([...statusFilter, id]); + } else { + setStatusFilter(statusFilter.filter((val: any) => val !== id)); + } + } + }; + + return ( +
+
+ + + + + + +
+ +
+

Wilayah

+ {manualRegions.map((region) => ( +
+ regionFilter.includes(val) + ) + : regionFilter.includes(region.id) + } + onCheckedChange={(e) => + handleChange("region", region.id, Boolean(e)) + } + /> + +
+ ))} +

Status

+
+ + handleChange("status", "true", Boolean(e)) + } + /> + +
+
+ + handleChange("status", "false", Boolean(e)) + } + /> + +
+
+
+
+
+
+ + + {table.getHeaderGroups().map((headerGroup) => ( + + {headerGroup.headers.map((header) => ( + + {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext() + )} + + ))} + + ))} + + + {table.getRowModel().rows?.length ? ( + table.getRowModel().rows.map((row) => ( + + {row.getVisibleCells().map((cell) => ( + + {flexRender(cell.column.columnDef.cell, cell.getContext())} + + ))} + + )) + ) : ( + + + No results. + + + )} + +
+ +
+ ); +}; + +export default AdminSettingTrackingTable; diff --git a/app/[locale]/(protected)/admin/settings/setting-tracking/component/update.tsx b/app/[locale]/(protected)/admin/settings/setting-tracking/component/update.tsx new file mode 100644 index 00000000..55989c3d --- /dev/null +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/component/update.tsx @@ -0,0 +1,151 @@ +"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, SquareEqual, SquarePen } 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 jumlahList = [5, 10, 15, 20, 25, 30]; + +export default function UpdateSettingTracking(props: { + id: string; + isUpdate?: boolean; +}) { + const { id, isUpdate } = props; + const t = useTranslations("Menu"); + const [isOpen, setIsOpen] = useState(false); + + const form = useForm({ + defaultValues: { + wilayah: [] as string[], + jumlah: [] as number[], + }, + }); + + const onSubmit = (values: any) => { + console.log("Submitted values:", values); + setIsOpen(false); + }; + + return ( + + + setIsOpen(true)} + className="flex flex-row items-center border-b p-2 hover:cursor-pointer hover:bg-black hover:text-white" + > + + Edit + + + + + + 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); + }} + /> + +
+ ))} +
+
+ )} + /> + + ( + + 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/page.tsx b/app/[locale]/(protected)/admin/settings/setting-tracking/page.tsx new file mode 100644 index 00000000..8e6cb6c1 --- /dev/null +++ b/app/[locale]/(protected)/admin/settings/setting-tracking/page.tsx @@ -0,0 +1,12 @@ +"use client"; +import SiteBreadcrumb from "@/components/site-breadcrumb"; +import AdminSettingTrackingTable from "./component/table"; + +export default function AdminSettingTracking() { + return ( + <> + + + + ); +} diff --git a/components/landing-page/hero-new.tsx b/components/landing-page/hero-new.tsx index 2d78ed93..71c54c4e 100644 --- a/components/landing-page/hero-new.tsx +++ b/components/landing-page/hero-new.tsx @@ -1,5 +1,5 @@ import { formatDateToIndonesian, shimmer, toBase64 } from "@/utils/globals"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useRef, useState } from "react"; import "swiper/css/bundle"; import "swiper/css/navigation"; import { getHeroData, listStaticBanner } from "@/service/landing/landing"; @@ -37,11 +37,12 @@ import { DialogHeader, DialogTitle, } from "../ui/dialog"; -import { Autoplay, Pagination } from "swiper/modules"; -import { Swiper, SwiperSlide } from "swiper/react"; +import { Autoplay, Navigation, Pagination } from "swiper/modules"; +import { Swiper, SwiperClass, SwiperSlide } from "swiper/react"; import "swiper/css"; +import "swiper/css/navigation"; import "swiper/css/pagination"; -import FormSurvey from "./survey"; +import { ChevronLeft, ChevronRight } from "lucide-react"; type HeroModalProps = { onClose: () => void; @@ -59,6 +60,7 @@ const HeroModal = ({ const [heroData, setHeroData] = useState(); const params = useParams(); const locale = params?.locale; + const swiperRef = useRef(null); useEffect(() => { async function fetchCategories() { @@ -116,9 +118,27 @@ const HeroModal = ({ return (
+ {heroData?.length > 0 && ( + <> + + + + )} (swiperRef.current = swiper)} + autoplay={{ delay: 3000 }} className="mySwiper w-full" > {heroData?.map((list: any, index: number) => ( @@ -336,115 +356,109 @@ const HeroNew = (props: { group?: string }) => {
) : ( - - - {content?.map((list: any) => ( - -
+
+ + + {content?.map((list: any) => ( + +
+ gambar-utama +
+ + +
+ + {list?.categoryName || "Liputan Kegiatan"} + +

+ {list?.title} +

+

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

+
+ +
+ + ))} + + + +
+ {heroData?.slice(0, 3).map((item: any) => ( +
  • +
    gambar-utama -
    - +
    +
    -
    - - {list?.categoryName || "Liputan Kegiatan"} - - -

    - {list?.title} -

    - -

    - {formatDateToIndonesian(new Date(list?.createdAt))}{" "} - {list?.timezone || "WIB"} | 👁 {list?.clickCount} -

    -
    - -
    - {heroData?.slice(0, 3).map((item: any) => ( -
  • + {item?.categoryName} + +

    + {item?.title} +

    +

    + {formatDateToIndonesian(new Date(item?.createdAt))}{" "} + {item?.timezone || "WIB"} |{" "} + -

    - {item?.title} -
    -
    - - - {item?.categoryName} - - -

    - {item?.title} -

    - -

    - {formatDateToIndonesian( - new Date(item?.createdAt) - )}{" "} - {item?.timezone ? item?.timezone : "WIB"} |{" "} - - - {" "} - {item?.clickCount} -

    - -
    -
  • - ))} -
    + + {" "} + {item?.clickCount} +

    +
    -
    + ))} -
    -
    +
    +
    )}
    ); diff --git a/components/landing-page/search-section.tsx b/components/landing-page/search-section.tsx index b9f3692b..929eefde 100644 --- a/components/landing-page/search-section.tsx +++ b/components/landing-page/search-section.tsx @@ -39,12 +39,12 @@ const SearchSection = () => { const router = useRouter(); const t = useTranslations("LandingPage"); return ( -
    -
    +
    +
    -
    +
    @@ -54,7 +54,7 @@ const SearchSection = () => {
    -
    +
    diff --git a/components/partials/auth/login-form.tsx b/components/partials/auth/login-form.tsx index 77f1ea02..c644fd62 100644 --- a/components/partials/auth/login-form.tsx +++ b/components/partials/auth/login-form.tsx @@ -96,11 +96,21 @@ const LoginForm = () => { mode: "all", }); - const handleTypeOTP = (event: any) => { - const { form } = event.target; - const index = [...form].indexOf(event.target); - form.elements[index + 1].focus(); - event.preventDefault(); + const handleTypeOTP = (event: React.KeyboardEvent) => { + const { key } = event; + const target = event.currentTarget; + + if (key === "Enter") { + event.preventDefault(); + + const inputs = Array.from(target.form?.querySelectorAll("input") || []); + const currentIndex = inputs.indexOf(target); + const nextInput = inputs[currentIndex + 1] as HTMLElement | undefined; + + if (nextInput) { + nextInput.focus(); + } + } }; const onSubmit: SubmitHandler = async (data) => { @@ -384,227 +394,260 @@ const LoginForm = () => { }, []); return ( -
    - {step === 1 ? ( - <> -
    -

    - {t("logInPlease")} -

    -
    - {t("acc")} - - - - {t("register")} - - - -
    -

    - {t("categoryReg")} -

    -

    {t("selectOne")}

    -
    -
    - {role?.map((row: any) => ( -
    - setCategory(event.target.value)} - /> - + <> + {step !== 3 && ( + + {step === 1 && ( + <> +
    +

    + {t("logInPlease")} +

    +
    + {t("acc")} + + + + {t("register")} + + + +
    +

    + {t("categoryReg")} +

    +

    + {t("selectOne")} +

    - ))} -
    -
    - - - {t("next")}{" "} - - - -
    -
    -
    -
    - - - {errors.username?.message && ( -
    - {errors.username.message} +
    + {role?.map((row: any) => ( +
    + + setCategory(event.target.value) + } + /> + +
    + ))} +
    +
    + + + {t("next")}{" "} + + + + +
    - )} -
    -
    - -
    - - -
    - {errors.password?.message && ( -
    - {errors.password.message} +
    + + + {errors.username?.message && ( +
    + {errors.username.message} +
    + )}
    - )} -
    -
    -
    - - -
    - - {t("forgotPass")} - -
    - - - ) : step === 2 ? ( - <> -
    -

    - Anda perlu memasukkan email baru untuk bisa Login. -

    -
    -
    -
    - - checkEmail("old", e.target.value)} - id="oldEmail" - type="email" - className={cn("", { - "border-destructive": errors.username, - })} - /> -

    {oldEmailValidate}

    - {errors.username?.message && ( -
    - {errors.username.message} + +
    + +
    + +
    - )} -
    -
    - - checkEmail("new", e.target.value)} - id="newEmail" - type="email" - className={cn("", { - "border-destructive": errors.username, - })} - /> -

    {newEmailValidate}

    - {errors.username?.message && ( -
    - {errors.username.message} + {errors.password?.message && ( +
    + {errors.password.message} +
    + )} +
    + +
    +
    + +
    - )} -
    -
    - - - ) : ( - <> + + {t("forgotPass")} + +
    + + + + )} + + {step === 2 && ( + <> +
    +

    + Anda perlu memasukkan email baru untuk bisa Login. +

    +
    +
    +
    + + checkEmail("old", e.target.value)} + id="oldEmail" + type="email" + className={cn("", { + "border-destructive": errors.username, + })} + /> +

    {oldEmailValidate}

    + {errors.username?.message && ( +
    + {errors.username.message} +
    + )} +
    + +
    + + checkEmail("new", e.target.value)} + id="newEmail" + type="email" + className={cn("", { + "border-destructive": errors.username, + })} + /> +

    {newEmailValidate}

    + {errors.username?.message && ( +
    + {errors.username.message} +
    + )} +
    +
    + + + )} + + )} + + {step === 3 && ( +

    {t("pleaseEnterOtp")}

    +
    setOtpValue(val)} > - - + + - - + + - - + + +
    + + {otpValidate && (

    {otpValidate}

    -
    + )} + - +
    )} - + ); }; diff --git a/lib/menus.ts b/lib/menus.ts index 9f85a4ea..f497d379 100644 --- a/lib/menus.ts +++ b/lib/menus.ts @@ -3146,16 +3146,16 @@ export function getMenuList(pathname: string, t: any): Group[] { icon: "material-symbols:map-search-outline", submenus: [ { - href: "/admin/media-tracking", - label: "Tracking Beritra Hari Ini", - active: pathname === "/admin/media-tracking", + href: "/admin/media-tracking/tracking-berita", + label: "Tracking Beritra", + active: pathname === "/admin/media-tracking/tracking-berita", icon: "heroicons:arrow-trending-up", children: [], }, { - href: "/admin/media-tracking/media-online", - label: "Media Online", - active: pathname === "/admin/media-tracking/media-online", + href: "/admin/media-tracking/results", + label: "Hasil", + active: pathname === "/admin/media-tracking/results", icon: "heroicons:arrow-trending-up", children: [], }, @@ -3266,47 +3266,54 @@ export function getMenuList(pathname: string, t: any): Group[] { 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", + href: "/admin/settings/setting-tracking", + label: t("setting-tracking"), + active: pathname === "/admin/settings/setting-tracking", 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: [], + // }, ], }, ], diff --git a/messages/en.json b/messages/en.json index 39fc87cc..07ba87c3 100644 --- a/messages/en.json +++ b/messages/en.json @@ -341,7 +341,8 @@ "privacy": "Privacy Policy", "contact": "Contact", "ptt": "PTT", - "web-chat": "Web-Chat" + "web-chat": "Web-Chat", + "setting-tracking": "Media Tracking" }, "Changelog": { "version": "Version's", diff --git a/messages/in.json b/messages/in.json index b751ae08..d4812412 100644 --- a/messages/in.json +++ b/messages/in.json @@ -342,7 +342,8 @@ "privacy": "Kebijakan Privacy", "contact": "kontak", "ptt": "PTT", - "web-chat": "Web-Chat" + "web-chat": "Web-Chat", + "setting-tracking": "Media Tracking" }, "Changelog": { "version": "Version's", diff --git a/service/media-tracking/media-tracking.ts b/service/media-tracking/media-tracking.ts index 402f7e05..df1986b1 100644 --- a/service/media-tracking/media-tracking.ts +++ b/service/media-tracking/media-tracking.ts @@ -44,9 +44,9 @@ export async function getMediaTrackingResult(data: any) { return httpGetInterceptor(url); } -export async function listData5Data() { +export async function listDataTracking(size: any, page: any) { return await httpGetInterceptor( - `media/public/list?enablePage=1&sort=desc&size=5` + `media/public/list?enablePage=1&sort=desc&size=${size}&page=${page}` ); }