diff --git a/src/app/admin/(dashboard)/ekonomi/demografi-pekerjaan/page.tsx b/src/app/admin/(dashboard)/ekonomi/demografi-pekerjaan/page.tsx index 3f54a24e..1db38044 100644 --- a/src/app/admin/(dashboard)/ekonomi/demografi-pekerjaan/page.tsx +++ b/src/app/admin/(dashboard)/ekonomi/demografi-pekerjaan/page.tsx @@ -143,8 +143,8 @@ function ListDemografiPekerjaan({ search }: { search: string }) { dataKey="pekerjaan" type="stacked" series={[ - { name: 'lakiLaki', color: 'red.6', label: 'Laki - Laki' }, - { name: 'perempuan', color: 'orange.6', label: 'Perempuan' }, + { name: 'lakiLaki', color: '#5082EE', label: 'Laki - Laki' }, + { name: 'perempuan', color: '#6EDF9C', label: 'Perempuan' }, ]} /> diff --git a/src/app/admin/(dashboard)/ekonomi/sektor-unggulan-desa/create/page.tsx b/src/app/admin/(dashboard)/ekonomi/sektor-unggulan-desa/create/page.tsx index d050c998..1e403069 100644 --- a/src/app/admin/(dashboard)/ekonomi/sektor-unggulan-desa/create/page.tsx +++ b/src/app/admin/(dashboard)/ekonomi/sektor-unggulan-desa/create/page.tsx @@ -2,15 +2,16 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ 'use client' import colors from '@/con/colors'; -import { Box, Button, Group, Paper, Stack, TextInput, Title } from '@mantine/core'; +import { Box, Button, Group, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; import grafikSektorUnggulan from '../../../_state/ekonomi/sektor-unggulan-desa'; +import CreateEditor from '../../../_com/createEditor'; function CreateSektorUnggulanDesa() { - const stateGrafik= useProxy(grafikSektorUnggulan); + const stateGrafik = useProxy(grafikSektorUnggulan); const [chartData, setChartData] = useState([]); const router = useRouter() @@ -54,15 +55,15 @@ function CreateSektorUnggulanDesa() { stateGrafik.create.form.name = val.currentTarget.value; }} /> - { - stateGrafik.create.form.description = val.currentTarget.value; - }} - /> + + Deskripsi Sektor Ungggulan + { + stateGrafik.create.form.description = val; + }} + /> + ([]); + const [chartData, setChartData] = useState<{ id: string; name: string; description: string | null; value: number | null }[]>([]); const [mounted, setMounted] = useState(false); // untuk memastikan DOM sudah ready const isTablet = useMediaQuery('(max-width: 1024px)') const isMobile = useMediaQuery('(max-width: 768px)') @@ -61,38 +61,41 @@ function ListSektorUnggulanDesa({ search }: { search: string }) { }, [state.findMany.data]); return ( - - - - - - - Nama Sektor Unggulan - Deskripsi Sektor Unggulan - Detail - - - - {filteredData.map((item) => ( - - {item.name} - {item.description} - - - + + + + +
+ + + Nama Sektor Unggulan + Deskripsi Sektor Unggulan + Detail - ))} - -
-
+ + + {filteredData.map((item) => ( + + {item.name} + + + + + + + + ))} + + + - {/* Chart */} - {!mounted && !chartData ? ( + {/* Chart */} + {!mounted && !chartData ? ( Grafik Hasil Kepuasan Masyarakat @@ -115,6 +118,7 @@ function ListSektorUnggulanDesa({ search }: { search: string }) { )} +
); } diff --git a/src/app/darmasaba/(pages)/ekonomi/demografi-pekerjaan/page.tsx b/src/app/darmasaba/(pages)/ekonomi/demografi-pekerjaan/page.tsx index 7d337e9b..3b3e9327 100644 --- a/src/app/darmasaba/(pages)/ekonomi/demografi-pekerjaan/page.tsx +++ b/src/app/darmasaba/(pages)/ekonomi/demografi-pekerjaan/page.tsx @@ -1,192 +1,32 @@ +'use client' import colors from '@/con/colors'; -import { Stack, Box, Paper, Text, ColorSwatch, Flex } from '@mantine/core'; +import { Stack, Box, Paper, Text, ColorSwatch, Flex, Skeleton } from '@mantine/core'; import React from 'react'; import BackButton from '../../desa/layanan/_com/BackButto'; import { BarChart } from '@mantine/charts'; +import { useProxy } from 'valtio/utils'; +import grafikDemografiPekerjaan from '@/app/admin/(dashboard)/_state/ekonomi/demografi-pekerjaan'; +import { useShallowEffect } from '@mantine/hooks'; -const data = [ - { - id: 1, - Pekerjaan: 'Guru', - laki: 2, - perempuan: 3 - }, - { - id: 2, - Pekerjaan: 'Belajar/Mahasiswa', - laki: 37, - perempuan: 38 - }, - { - id: 3, - Pekerjaan: 'Karyawan Bumdn', - laki: 1, - perempuan: 0 - }, - { - id: 4, - Pekerjaan: 'Buruh Tani/Perkebunan', - laki: 1, - perempuan: 0 - }, - { - id: 5, - Pekerjaan: 'Karyawan Swasta', - laki: 3, - perempuan: 17 - }, - { - id: 6, - Pekerjaan: 'Karyawan Honorer', - laki: 2, - perempuan: 1 - }, - { - id: 7, - Pekerjaan: 'Buruh Harian Lepas', - laki: 8, - perempuan: 5 - }, - { - id: 8, - Pekerjaan: 'Belum/Tidak Bekerja', - laki: 87, - perempuan: 44 - }, - { - id: 9, - Pekerjaan: ' Kepolisian RI (Polri)', - laki: 4, - perempuan: 0 - }, - { - id: 10, - Pekerjaan: 'Wiraswasta Mengurus Rumah Tangga', - laki: 1, - perempuan: 7 - }, - { - id: 11, - Pekerjaan: 'Dosen', - laki: 1, - perempuan: 1 - }, - { - id: 12, - Pekerjaan: 'Perangkat Desa', - laki: 17, - perempuan: 19 - }, - { - id: 13, - Pekerjaan: 'Nelayan', - laki: 3, - perempuan: 0 - }, - { - id: 14, - Pekerjaan: 'Penyuluh Pertanian', - laki: 33, - perempuan: 24 - }, - { - id: 15, - Pekerjaan: 'Tukang Las/Pandai Besi', - laki: 5, - perempuan: 0 - }, - { - id: 16, - Pekerjaan: 'Sopir/Driver', - laki: 10, - perempuan: 3 - }, - { - id: 17, - Pekerjaan: 'Teknisi/Listrik', - laki: 25, - perempuan: 0 - }, - { - id: 18, - Pekerjaan: 'Montir/Mekanik', - laki: 25, - perempuan: 0 - }, - { - id: 19, - Pekerjaan: 'Karyawan Hotel/Pariwisata', - laki: 2, - perempuan: 52 - }, - { - id: 20, - Pekerjaan: 'Pengrajin (Batik, Anyaman, Kayu)', - laki: 5, - perempuan: 25 - }, - { - id: 21, - Pekerjaan: 'Tukang Bangunan', - laki: 25, - perempuan: 5 - }, - { - id: 22, - Pekerjaan: 'Tukang Kayu/Furnitur', - laki: 25, - perempuan: 0 - }, - { - id: 23, - Pekerjaan: 'Penjahit', - laki: 2, - perempuan: 35 - }, - { - id: 24, - Pekerjaan: 'Pedagang Pasar', - laki: 25, - perempuan: 30 - }, - { - id: 25, - Pekerjaan: 'Warung Makan/Penjual Makanan', - laki: 15, - perempuan: 30 - }, - { - id: 26, - Pekerjaan: 'Satpam/Security', - laki: 20, - perempuan: 5 - }, - { - id: 27, - Pekerjaan: 'Pengusaha Kecil (UMKM)', - laki: 5, - perempuan: 20 - }, - { - id: 28, - Pekerjaan: 'Karyawan Restoran/Kafe', - laki: 5, - perempuan: 15 - }, - { - id: 29, - Pekerjaan: 'Freelancer', - laki: 20, - perempuan: 10 - }, - { - id: 30, - Pekerjaan: 'Fotografer', - laki: 25, - perempuan: 9 - }, -] function Page() { + const state = useProxy(grafikDemografiPekerjaan) + + const { + data, + } = state.findMany + + useShallowEffect(() => { + state.findMany.load() + }, []) + + if (!data) { + return ( + + + + ) + } + return ( @@ -207,7 +47,13 @@ function Page() { p={10} mb={50} h={400} - data={data} + w={150} + data={data.map((item) => ({ + id: item.id, + Pekerjaan: item.pekerjaan, + laki: item.lakiLaki, + perempuan: item.perempuan, + }))} dataKey="Pekerjaan" series={[ { name: 'laki', color: '#5082EE' }, diff --git a/src/app/darmasaba/(pages)/ekonomi/sektor-unggulan-desa/page.tsx b/src/app/darmasaba/(pages)/ekonomi/sektor-unggulan-desa/page.tsx index 1a9f3564..b62283cb 100644 --- a/src/app/darmasaba/(pages)/ekonomi/sektor-unggulan-desa/page.tsx +++ b/src/app/darmasaba/(pages)/ekonomi/sektor-unggulan-desa/page.tsx @@ -1,23 +1,33 @@ +'use client' import colors from '@/con/colors'; -import { Stack, Box, Text, Paper } from '@mantine/core'; +import { Stack, Box, Text, Paper, Skeleton } from '@mantine/core'; import React from 'react'; import BackButton from '../../desa/layanan/_com/BackButto'; import { BarChart } from '@mantine/charts'; +import { useProxy } from 'valtio/utils'; +import grafikSektorUnggulan from '@/app/admin/(dashboard)/_state/ekonomi/sektor-unggulan-desa'; +import { useShallowEffect } from '@mantine/hooks'; -const data = [ - { - id: 1, - sektor: 'Sektor Pertanian', - Ton: 20 - }, - { - id: 2, - sektor: 'Sektor Peternakan', - Ton: 5 - }, - -] function Page() { + const state = useProxy(grafikSektorUnggulan) + + const { + data, + loading, + } = state.findMany + + useShallowEffect(() => { + state.findMany.load() + }, []) + + if (loading || !data) { + return ( + + + + ) + } + return ( @@ -31,28 +41,24 @@ function Page() { - - Jumlah Penduduk Miskin Per Tahun - - Pertanian di Darmasaba berfokus pada padi, sayuran, dan hortikultura yang dikembangkan dengan metode pertanian - organik serta sistem irigasi tradisional yang efisien. Keberlanjutan dalam pertanian juga didukung dengan pemanfaatan - teknologi modern untuk meningkatkan produktivitas hasil panen. - - - - Sektor Peternakan - - Di bidang peternakan, Desa Darmasaba memiliki potensi besar dalam pengembangan sapi, ayam, dan babi. Sistem - peternakan yang diterapkan mengutamakan pengelolaan pakan alami dan perawatan hewan yang sehat, sehingga - menghasilkan produk ternak berkualitas tinggi. - - + {data.map((v, k) => { + return ( + + {v.name} + + + ) + })} Statistik Sektor Unggulan Darmasaba ({ + id: item.id, + sektor: item.name, + Ton: item.value, + }))} dataKey="sektor" series={[ { name: 'Ton', color: colors['blue-button'] },