From 49067f021867bfaadb7a7626170b9f6c2bd2cd9e Mon Sep 17 00:00:00 2001 From: nico Date: Tue, 19 Aug 2025 17:40:59 +0800 Subject: [PATCH] Add Detail Semua Polsek, Submenu Polsek Terdekat, Menu Keamanan --- prisma/schema.prisma | 2 +- .../_state/landing-page/indeks-kepuasan.ts | 8 +- .../daftarInformasiPublik.ts | 39 +- .../page.tsx | 12 +- .../responden/[id]/edit/page.tsx | 14 +- .../indeks_kepuasan/responden/create.ts | 8 +- .../indeks_kepuasan/responden/updt.ts | 61 +- .../ppid/daftar_informasi_publik/find-many.ts | 44 +- .../polsek-terdekat/semua-polsek/page.tsx | 97 ++- .../page.tsx | 46 +- src/app/percobaan/index.html | 579 +++++++++--------- 11 files changed, 541 insertions(+), 369 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 8b48f326..666a05fa 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -223,7 +223,7 @@ model KategoriPrestasiDesa { model Responden { id String @id @default(cuid()) name String @unique - tanggal DateTime // misal: 2025-05-01 + tanggal String // misal: 2025-05-01 jenisKelamin JenisKelaminResponden @relation(fields: [jenisKelaminId], references: [id]) jenisKelaminId String rating PilihanRatingResponden @relation(fields: [ratingId], references: [id]) diff --git a/src/app/admin/(dashboard)/_state/landing-page/indeks-kepuasan.ts b/src/app/admin/(dashboard)/_state/landing-page/indeks-kepuasan.ts index 504f0c11..48d707b7 100644 --- a/src/app/admin/(dashboard)/_state/landing-page/indeks-kepuasan.ts +++ b/src/app/admin/(dashboard)/_state/landing-page/indeks-kepuasan.ts @@ -181,7 +181,13 @@ const responden = proxy({ headers: { "Content-Type": "application/json", }, - body: JSON.stringify(this.form), + body: JSON.stringify({ + name: this.form.name, + tanggal: this.form.tanggal, + jenisKelaminId: this.form.jenisKelaminId, + ratingId: this.form.ratingId, + kelompokUmurId: this.form.kelompokUmurId, + }), }); const result = await response.json(); if (!response.ok || !result?.success) { diff --git a/src/app/admin/(dashboard)/_state/ppid/daftar_informasi_publik/daftarInformasiPublik.ts b/src/app/admin/(dashboard)/_state/ppid/daftar_informasi_publik/daftarInformasiPublik.ts index fba89a42..61f0f23b 100644 --- a/src/app/admin/(dashboard)/_state/ppid/daftar_informasi_publik/daftarInformasiPublik.ts +++ b/src/app/admin/(dashboard)/_state/ppid/daftar_informasi_publik/daftarInformasiPublik.ts @@ -49,35 +49,38 @@ const daftarInformasiPublik = proxy({ }, }, findMany: { - data: null as any[] | null, + data: null as + | Prisma.DaftarInformasiPublikGetPayload<{ + omit: { + isActive: true; + }; + }>[] + | null, page: 1, totalPages: 1, - total: 0, loading: false, - load: async (page = 1, limit = 10) => { // Change to arrow function - daftarInformasiPublik.findMany.loading = true; // Use the full path to access the property + search: "", + load: async (page = 1, limit = 10, search = "") => { + daftarInformasiPublik.findMany.loading = true; // ✅ Akses langsung via nama path daftarInformasiPublik.findMany.page = page; - try { - const res = await ApiFetch.api.ppid.daftarinformasipublik[ - "find-many" - ].get({ - query: { page, limit }, - }); + daftarInformasiPublik.findMany.search = search; + try { + const query: any = { page, limit }; + if (search) query.search = search; + + const res = await ApiFetch.api.ppid.daftarinformasipublik["find-many"].get({ query }); + if (res.status === 200 && res.data?.success) { - daftarInformasiPublik.findMany.data = res.data.data || []; - daftarInformasiPublik.findMany.total = res.data.total || 0; - daftarInformasiPublik.findMany.totalPages = res.data.totalPages || 1; + daftarInformasiPublik.findMany.data = res.data.data ?? []; + daftarInformasiPublik.findMany.totalPages = res.data.totalPages ?? 1; } else { - console.error("Failed to load daftar informasi publik:", res.data?.message); daftarInformasiPublik.findMany.data = []; - daftarInformasiPublik.findMany.total = 0; daftarInformasiPublik.findMany.totalPages = 1; } - } catch (error) { - console.error("Error loading daftar informasi publik:", error); + } catch (err) { + console.error("Gagal fetch daftar informasi publik paginated:", err); daftarInformasiPublik.findMany.data = []; - daftarInformasiPublik.findMany.total = 0; daftarInformasiPublik.findMany.totalPages = 1; } finally { daftarInformasiPublik.findMany.loading = false; diff --git a/src/app/admin/(dashboard)/ppid/daftar-informasi-publik-desa-darmasaba/page.tsx b/src/app/admin/(dashboard)/ppid/daftar-informasi-publik-desa-darmasaba/page.tsx index 4154f049..8a3064dd 100644 --- a/src/app/admin/(dashboard)/ppid/daftar-informasi-publik-desa-darmasaba/page.tsx +++ b/src/app/admin/(dashboard)/ppid/daftar-informasi-publik-desa-darmasaba/page.tsx @@ -106,8 +106,16 @@ function ListDaftarInformasi({ search }: { search: string }) { {filteredData.map((item, index) => ( {index + 1} - {item.jenisInformasi} - + + + {item.jenisInformasi} + + + + + + + + + + + ) + })} + + +
+ load(newPage)} // ini penting! + total={totalPages} + mt="md" + mb="md" + /> +
+ ); } diff --git a/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik-desa-darmasaba/page.tsx b/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik-desa-darmasaba/page.tsx index 894a650b..9f85b5ee 100644 --- a/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik-desa-darmasaba/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik-desa-darmasaba/page.tsx @@ -1,18 +1,32 @@ 'use client' + import daftarInformasiPublik from '@/app/admin/(dashboard)/_state/ppid/daftar_informasi_publik/daftarInformasiPublik'; import colors from '@/con/colors'; -import { Box, Center, Image, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, TextInput } from '@mantine/core'; +import { Box, Center, Image, Pagination, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, TextInput } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { IconSearch } from '@tabler/icons-react'; +import { useState } from 'react'; import { useProxy } from 'valtio/utils'; import BackButton from '../../desa/layanan/_com/BackButto'; function Page() { const listData = useProxy(daftarInformasiPublik) + const [search, setSearch] = useState('') + + const { + data, + page, + totalPages, + loading, + load, + } = listData.findMany + + useShallowEffect(() => { - listData.findMany.load() - }, []) - if (!listData.findMany.data) return + load(page, 5, search) + }, [page, search]) + + if (loading || !data) return @@ -40,6 +54,9 @@ function Page() { } + value={search} + onChange={(e) => setSearch(e.target.value)} + style={{ marginBottom: 16 }} /> @@ -54,8 +71,17 @@ function Page() { {listData.findMany.data?.map((item, index) => ( {index + 1} - {item.jenisInformasi} - + + + {item.jenisInformasi} + + + + + {item.tanggal ? new Date(item.tanggal).toLocaleDateString('id-ID') : '-'} @@ -64,6 +90,14 @@ function Page() {
+
+ load(newPage)} + total={totalPages} + my={"md"} + /> +
Kontak PPID Email: ppid@desadarmasaba.id | WhatsApp: 081-xxx-xxx-xxx diff --git a/src/app/percobaan/index.html b/src/app/percobaan/index.html index 22d41e8d..00eb89e3 100644 --- a/src/app/percobaan/index.html +++ b/src/app/percobaan/index.html @@ -267,284 +267,262 @@ - -

Indeks Kepuasan Masayarakat (IKM) (Landing Page - PPID)

- -

List Desa Anti Korupsi

-
    -
  • - -
  • -
  • - + +

    Indeks Kepuasan Masayarakat (IKM) (Landing Page - PPID)

    + +

    List Responden

    +
      +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + +
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • -

      List Responden

      -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      + + +
    • - -

      SDGs Desa

      - -

      List SDGs Desa

      +
    + + +

    SDGs Desa

    + +

    List SDGs Desa

    +
      +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    + + +

    APBDes

    + +

    List APBDes

    +
      +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    + + +

    Prestasi Desa

    + +

    List Prestasi Desa

    • - - + +
    • - - + +
    • - - + +
    • - - + +
    • - - + +
    • - - + +
    • - - + +
    • - - + +
    - -

    APBDes

    - -

    List APBDes

    -
      -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - + +

      Menu PPID

      + + +

      Profile PPID

      +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      + + +

      Struktur PPID

      +

      Pegawai

      +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + +
      - -

      Prestasi Desa

      - -

      List Prestasi Desa

      -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      - - -

      Menu PPID

      - -

      Profile PPID

      -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      - - -

      Struktur PPID

      -

      Pegawai

      -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -

      Posisi Organisasi PPID

      -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +

      Visi Misi PPID

      • - +
      • @@ -558,27 +536,27 @@
      -

      Dasar Hukum PPID

      -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      +

      Dasar Hukum PPID

      +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +

      Permohonan Informasi Publik

      • - +
      • @@ -591,22 +569,65 @@
      - -

      Permohonan Keberatan Informasi Publik

      -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      + +

      Permohonan Keberatan Informasi Publik

      +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      + + +

      Daftar Informasi Publik

      +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      + + + + + +