Sudah Dibuatkan Inputan Data Di Data Kesehatan Warga Fasilitas Kesehatan
This commit is contained in:
@@ -142,8 +142,10 @@ model GalleryVideo {
|
|||||||
videosId String? @unique
|
videosId String? @unique
|
||||||
videosGalleryVideo Videos? @relation(fields: [videosId], references: [id])
|
videosGalleryVideo Videos? @relation(fields: [videosId], references: [id])
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========================================= MENU KESEHATAN ========================================= //
|
// ========================================= MENU KESEHATAN ========================================= //
|
||||||
// ========================================= DATA KESEHATAN WARGA ========================================= //
|
// ========================================= DATA KESEHATAN WARGA ========================================= //
|
||||||
|
|
||||||
// ========================================= FASILITAS KESEHATAN ========================================= //
|
// ========================================= FASILITAS KESEHATAN ========================================= //
|
||||||
model DataKematian_Kelahiran {
|
model DataKematian_Kelahiran {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
@@ -233,4 +235,76 @@ model TarifDanLayanan{
|
|||||||
deletedAt DateTime @default(now())
|
deletedAt DateTime @default(now())
|
||||||
isActive Boolean @default(true)
|
isActive Boolean @default(true)
|
||||||
FasilitasKesehatan FasilitasKesehatan[]
|
FasilitasKesehatan FasilitasKesehatan[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ========================================= JADWAL KEGIATAN ========================================= //
|
||||||
|
model JadwalKegiatan{
|
||||||
|
id String @id @default(cuid())
|
||||||
|
content String
|
||||||
|
createdAt DateTime @default(now())
|
||||||
|
updatedAt DateTime @updatedAt
|
||||||
|
deletedAt DateTime @default(now())
|
||||||
|
isActive Boolean @default(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
model InformasiJadwalKegiatan{
|
||||||
|
id String @id @default(cuid())
|
||||||
|
name String
|
||||||
|
tanggal String
|
||||||
|
waktu String
|
||||||
|
lokasi String
|
||||||
|
createdAt DateTime @default(now())
|
||||||
|
updatedAt DateTime @updatedAt
|
||||||
|
deletedAt DateTime @default(now())
|
||||||
|
isActive Boolean @default(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
model DeskripsiJadwalKegiatan{
|
||||||
|
id String @id @default(cuid())
|
||||||
|
deskripsi String
|
||||||
|
createdAt DateTime @default(now())
|
||||||
|
updatedAt DateTime @updatedAt
|
||||||
|
deletedAt DateTime @default(now())
|
||||||
|
isActive Boolean @default(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
model LayananJadwalKegiatan{
|
||||||
|
id String @id @default(cuid())
|
||||||
|
content String
|
||||||
|
createdAt DateTime @default(now())
|
||||||
|
updatedAt DateTime @updatedAt
|
||||||
|
deletedAt DateTime @default(now())
|
||||||
|
isActive Boolean @default(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
model SyaratKetentuanJadwalKegiatan{
|
||||||
|
id String @id @default(cuid())
|
||||||
|
content String
|
||||||
|
createdAt DateTime @default(now())
|
||||||
|
updatedAt DateTime @updatedAt
|
||||||
|
deletedAt DateTime @default(now())
|
||||||
|
isActive Boolean @default(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
model DokumenJadwalKegiatan{
|
||||||
|
id String @id @default(cuid())
|
||||||
|
content String
|
||||||
|
createdAt DateTime @default(now())
|
||||||
|
updatedAt DateTime @updatedAt
|
||||||
|
deletedAt DateTime @default(now())
|
||||||
|
isActive Boolean @default(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
model PendaftaranJadwalKegiatan{
|
||||||
|
id String @id @default(cuid())
|
||||||
|
name String
|
||||||
|
tanggal String
|
||||||
|
namaOrangtua String
|
||||||
|
nomor String
|
||||||
|
alamat String
|
||||||
|
catatan String
|
||||||
|
createdAt DateTime @default(now())
|
||||||
|
updatedAt DateTime @updatedAt
|
||||||
|
deletedAt DateTime @default(now())
|
||||||
|
isActive Boolean @default(true)
|
||||||
|
}
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ const prosedurpendaftaran = proxy({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const stateKesehatan = proxy({
|
const stateFasilitasKesehatan = proxy({
|
||||||
informasiumum,
|
informasiumum,
|
||||||
layananunggulan,
|
layananunggulan,
|
||||||
dokterdantenagamedis,
|
dokterdantenagamedis,
|
||||||
@@ -330,4 +330,4 @@ const stateKesehatan = proxy({
|
|||||||
prosedurpendaftaran
|
prosedurpendaftaran
|
||||||
})
|
})
|
||||||
|
|
||||||
export default stateKesehatan
|
export default stateFasilitasKesehatan
|
||||||
@@ -4,7 +4,7 @@ import { useShallowEffect } from '@mantine/hooks';
|
|||||||
import { Prisma } from '@prisma/client';
|
import { Prisma } from '@prisma/client';
|
||||||
import { IconImageInPicture } from '@tabler/icons-react';
|
import { IconImageInPicture } from '@tabler/icons-react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import stateDashboardBerita from '../../_state/berita';
|
import stateDashboardBerita from '../../_state/desa/berita';
|
||||||
import { BeritaEditor } from './_com/BeritaEditor';
|
import { BeritaEditor } from './_com/BeritaEditor';
|
||||||
|
|
||||||
function Page() {
|
function Page() {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { Group, Select, SimpleGrid, Skeleton, Stack, Text, TextInput } from '@mantine/core';
|
import { Group, Select, SimpleGrid, Skeleton, Stack, Text, TextInput } from '@mantine/core';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import stateDesaPengumuman from '../../_state/pengumuman';
|
import stateDesaPengumuman from '../../_state/desa/pengumuman';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { Prisma } from '@prisma/client';
|
import { Prisma } from '@prisma/client';
|
||||||
import { BeritaEditor } from '../berita/_com/BeritaEditor';
|
import { BeritaEditor } from '../berita/_com/BeritaEditor';
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
import { Button } from '@mantine/core';
|
|
||||||
import React from 'react';
|
|
||||||
|
|
||||||
function ButtonSubmit() {
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<Button onClick={() => {}}>Submit</Button>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default ButtonSubmit;
|
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
'use client'
|
||||||
|
import { Button, Stack } from '@mantine/core';
|
||||||
|
import { Link, RichTextEditor } from '@mantine/tiptap';
|
||||||
|
import Highlight from '@tiptap/extension-highlight';
|
||||||
|
import SubScript from '@tiptap/extension-subscript';
|
||||||
|
import Superscript from '@tiptap/extension-superscript';
|
||||||
|
import TextAlign from '@tiptap/extension-text-align';
|
||||||
|
import Underline from '@tiptap/extension-underline';
|
||||||
|
import { useEditor } from '@tiptap/react';
|
||||||
|
import StarterKit from '@tiptap/starter-kit';
|
||||||
|
|
||||||
|
const content =
|
||||||
|
'<h2 style="text-align: center;">Welcome to Mantine rich text editor</h2><p><code>RichTextEditor</code> component focuses on usability and is designed to be as simple as possible to bring a familiar editing experience to regular users. <code>RichTextEditor</code> is based on <a href="https://tiptap.dev/" rel="noopener noreferrer" target="_blank">Tiptap.dev</a> and supports all of its features:</p><ul><li>General text formatting: <strong>bold</strong>, <em>italic</em>, <u>underline</u>, <s>strike-through</s> </li><li>Headings (h1-h6)</li><li>Sub and super scripts (<sup><sup /></sup> and <sub><sub /></sub> tags)</li><li>Ordered and bullet lists</li><li>Text align </li><li>And all <a href="https://tiptap.dev/extensions" target="_blank" rel="noopener noreferrer">other extensions</a></li></ul>';
|
||||||
|
|
||||||
|
export function KesehatanEditor({ onSubmit, onChange, showSubmit = true }: {
|
||||||
|
onSubmit?: (val: string) => void,
|
||||||
|
onChange: (val: string) => void,
|
||||||
|
showSubmit?: boolean }) {
|
||||||
|
const editor = useEditor({
|
||||||
|
extensions: [
|
||||||
|
StarterKit,
|
||||||
|
Underline,
|
||||||
|
Link,
|
||||||
|
Superscript,
|
||||||
|
SubScript,
|
||||||
|
Highlight,
|
||||||
|
TextAlign.configure({ types: ['heading', 'paragraph'] }),
|
||||||
|
],
|
||||||
|
content,
|
||||||
|
onUpdate : ({editor}) => {
|
||||||
|
onChange(editor.getHTML())
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Stack>
|
||||||
|
<RichTextEditor editor={editor}>
|
||||||
|
<RichTextEditor.Toolbar sticky stickyOffset={60}>
|
||||||
|
<RichTextEditor.ControlsGroup>
|
||||||
|
<RichTextEditor.Bold />
|
||||||
|
<RichTextEditor.Italic />
|
||||||
|
<RichTextEditor.Underline />
|
||||||
|
<RichTextEditor.Strikethrough />
|
||||||
|
<RichTextEditor.ClearFormatting />
|
||||||
|
<RichTextEditor.Highlight />
|
||||||
|
<RichTextEditor.Code />
|
||||||
|
</RichTextEditor.ControlsGroup>
|
||||||
|
|
||||||
|
<RichTextEditor.ControlsGroup>
|
||||||
|
<RichTextEditor.H1 />
|
||||||
|
<RichTextEditor.H2 />
|
||||||
|
<RichTextEditor.H3 />
|
||||||
|
<RichTextEditor.H4 />
|
||||||
|
</RichTextEditor.ControlsGroup>
|
||||||
|
|
||||||
|
<RichTextEditor.ControlsGroup>
|
||||||
|
<RichTextEditor.Blockquote />
|
||||||
|
<RichTextEditor.Hr />
|
||||||
|
<RichTextEditor.BulletList />
|
||||||
|
<RichTextEditor.OrderedList />
|
||||||
|
<RichTextEditor.Subscript />
|
||||||
|
<RichTextEditor.Superscript />
|
||||||
|
</RichTextEditor.ControlsGroup>
|
||||||
|
|
||||||
|
<RichTextEditor.ControlsGroup>
|
||||||
|
<RichTextEditor.Link />
|
||||||
|
<RichTextEditor.Unlink />
|
||||||
|
</RichTextEditor.ControlsGroup>
|
||||||
|
|
||||||
|
<RichTextEditor.ControlsGroup>
|
||||||
|
<RichTextEditor.AlignLeft />
|
||||||
|
<RichTextEditor.AlignCenter />
|
||||||
|
<RichTextEditor.AlignJustify />
|
||||||
|
<RichTextEditor.AlignRight />
|
||||||
|
</RichTextEditor.ControlsGroup>
|
||||||
|
|
||||||
|
<RichTextEditor.ControlsGroup>
|
||||||
|
<RichTextEditor.Undo />
|
||||||
|
<RichTextEditor.Redo />
|
||||||
|
</RichTextEditor.ControlsGroup>
|
||||||
|
</RichTextEditor.Toolbar>
|
||||||
|
|
||||||
|
<RichTextEditor.Content />
|
||||||
|
</RichTextEditor>
|
||||||
|
{showSubmit && (
|
||||||
|
<Button onClick={() => {
|
||||||
|
if (!editor) return
|
||||||
|
onSubmit?.(editor?.getHTML())
|
||||||
|
}}>Submit</Button>
|
||||||
|
)}
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ import React from 'react';
|
|||||||
|
|
||||||
function ArtikelKesehatan() {
|
function ArtikelKesehatan() {
|
||||||
return (
|
return (
|
||||||
<Stack>
|
<Stack py={10}>
|
||||||
<SimpleGrid cols={{
|
<SimpleGrid cols={{
|
||||||
base: 1, md: 2
|
base: 1, md: 2
|
||||||
}}>
|
}}>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Center, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core';
|
import { Center, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
@@ -6,7 +6,7 @@ import _ from 'lodash';
|
|||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function DokterdanTenagaMedisList() {
|
function DokterdanTenagaMedisList() {
|
||||||
const kesehatanState = useProxy(stateKesehatan.dokterdantenagamedis);
|
const kesehatanState = useProxy(stateFasilitasKesehatan.dokterdantenagamedis);
|
||||||
|
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
kesehatanState.findMany.load();
|
kesehatanState.findMany.load();
|
||||||
@@ -52,8 +52,7 @@ function DokterdanTenagaMedisList() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack>
|
<Stack>
|
||||||
<Table
|
<Table
|
||||||
|
|
||||||
striped
|
striped
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
withTableBorder
|
withTableBorder
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import { Box, Button, Text, TextInput } from '@mantine/core';
|
import { Box, Text, TextInput } from '@mantine/core';
|
||||||
import React from 'react';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function DokterDanTenagaMedis() {
|
function DokterDanTenagaMedis() {
|
||||||
const dokterdantenagamedisState = useProxy(stateKesehatan.dokterdantenagamedis)
|
const dokterdantenagamedisState = useProxy(stateFasilitasKesehatan.dokterdantenagamedis)
|
||||||
return (
|
return (
|
||||||
<Box>
|
<Box>
|
||||||
<Text fw={"bold"}>Dokter & Tenaga Medis</Text>
|
<Text fw={"bold"}>Dokter & Tenaga Medis</Text>
|
||||||
@@ -30,10 +29,6 @@ function DokterDanTenagaMedis() {
|
|||||||
dokterdantenagamedisState.create.form.jadwal = val.target.value
|
dokterdantenagamedisState.create.form.jadwal = val.target.value
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Button
|
|
||||||
onClick={() => {
|
|
||||||
dokterdantenagamedisState.create.create()
|
|
||||||
}}>Simpan</Button>
|
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Box, Stack, Text } from '@mantine/core';
|
import { Box, Stack, Text } from '@mantine/core';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
|
|
||||||
function FasilitasPendukungList() {
|
function FasilitasPendukungList() {
|
||||||
const fasilitaspendukungState = useProxy(stateKesehatan.fasilitaspendukung)
|
const fasilitaspendukungState = useProxy(stateFasilitasKesehatan.fasilitaspendukung)
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
fasilitaspendukungState.findMany.load()
|
fasilitaspendukungState.findMany.load()
|
||||||
}, [])
|
}, [])
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import { BeritaEditor } from '@/app/admin/(dashboard)/desa/berita/_com/BeritaEditor';
|
|
||||||
import { Box, Text } from '@mantine/core';
|
import { Box, Text } from '@mantine/core';
|
||||||
import React from 'react';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
import { KesehatanEditor } from '../../../_com/kesehatanEditor';
|
||||||
|
|
||||||
function FasilitasPendukung() {
|
function FasilitasPendukung() {
|
||||||
const fasilitaspendukungState = useProxy(stateKesehatan.fasilitaspendukung)
|
const fasilitaspendukungState = useProxy(stateFasilitasKesehatan.fasilitaspendukung)
|
||||||
return <Box>
|
return <Box>
|
||||||
<Text fw={"bold"}>Fasilitas Pendukung</Text>
|
<Text fw={"bold"}>Fasilitas Pendukung</Text>
|
||||||
<BeritaEditor onSubmit={(val) => {
|
<KesehatanEditor
|
||||||
fasilitaspendukungState.create.form.content = val
|
showSubmit={false}
|
||||||
fasilitaspendukungState.create.create()
|
onChange={(val) => {
|
||||||
}}/>
|
fasilitaspendukungState.create.form.content = val;
|
||||||
|
}} />
|
||||||
</Box>
|
</Box>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +1,24 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import { Box, Button, Text, TextInput } from '@mantine/core';
|
import { Box, Text, TextInput } from '@mantine/core';
|
||||||
import React from 'react';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function InformasiUmum() {
|
function InformasiUmum() {
|
||||||
const infromasiState = useProxy(stateKesehatan)
|
const infromasiState = useProxy(stateFasilitasKesehatan.informasiumum)
|
||||||
return<Box>
|
return<Box>
|
||||||
<Text fw={"bold"}>Informasi Umum</Text>
|
<Text fw={"bold"}>Informasi Umum</Text>
|
||||||
<TextInput
|
<TextInput
|
||||||
label="Fasilitas"
|
label="Fasilitas"
|
||||||
placeholder='masukkan nama fasilitas kesehatan'
|
placeholder='masukkan nama fasilitas kesehatan'
|
||||||
onChange={(val) => {
|
onChange={(val) => {
|
||||||
infromasiState.informasiumum.create.form.fasilitas = val.target.value
|
infromasiState.create.form.fasilitas = val.target.value
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<TextInput
|
<TextInput
|
||||||
label="Alamat"
|
label="Alamat"
|
||||||
placeholder='masukkan alamat'
|
placeholder='masukkan alamat'
|
||||||
onChange={(val) => {
|
onChange={(val) => {
|
||||||
infromasiState.informasiumum.create.form.alamat = val.target.value
|
infromasiState.create.form.alamat = val.target.value
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<TextInput
|
<TextInput
|
||||||
@@ -27,13 +26,9 @@ function InformasiUmum() {
|
|||||||
label="Jam Operasional"
|
label="Jam Operasional"
|
||||||
placeholder='masukkan jam operasional'
|
placeholder='masukkan jam operasional'
|
||||||
onChange={(val) => {
|
onChange={(val) => {
|
||||||
infromasiState.informasiumum.create.form.jamOperasional = val.target.value
|
infromasiState.create.form.jamOperasional = val.target.value
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Button
|
|
||||||
onClick={() => {
|
|
||||||
infromasiState.informasiumum.create.create()
|
|
||||||
}}>Simpan</Button>
|
|
||||||
</Box>
|
</Box>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
|
||||||
import { Box, Skeleton, Stack, Text } from '@mantine/core';
|
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
|
|
||||||
function LayananUnggulanList() {
|
|
||||||
const layananunggulanstate = useProxy(stateKesehatan.layananunggulan)
|
|
||||||
useShallowEffect(() => {
|
|
||||||
layananunggulanstate.findMany.load()
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
if (!layananunggulanstate.findMany.data) return <Stack>
|
|
||||||
{Array.from({ length: 10 }).map((v, k) => <Skeleton key={k} h={40} />)}
|
|
||||||
</Stack>
|
|
||||||
return <Stack>
|
|
||||||
{layananunggulanstate.findMany.data?.map((item) => (
|
|
||||||
<Box key={item.id}>
|
|
||||||
<Text dangerouslySetInnerHTML={{__html: item.content}}/>
|
|
||||||
</Box>
|
|
||||||
))}
|
|
||||||
</Stack>
|
|
||||||
}
|
|
||||||
|
|
||||||
export default LayananUnggulanList;
|
|
||||||
@@ -1,16 +1,17 @@
|
|||||||
'use client'
|
'use client'
|
||||||
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import { Box, Text } from '@mantine/core';
|
import { Box, Text } from '@mantine/core';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import { KesehatanEditor } from '../../../_com/kesehatanEditor';
|
||||||
import { BeritaEditor } from '@/app/admin/(dashboard)/desa/berita/_com/BeritaEditor';
|
|
||||||
|
|
||||||
function LayananUnggulan() {
|
function LayananUnggulan() {
|
||||||
const informasiumumState = useProxy(stateKesehatan.layananunggulan)
|
const informasiumumState = useProxy(stateFasilitasKesehatan.layananunggulan)
|
||||||
return <Box>
|
return <Box>
|
||||||
<Text fw={"bold"}>Layanan Unggulan</Text>
|
<Text fw={"bold"}>Layanan Unggulan</Text>
|
||||||
<BeritaEditor onSubmit={(val) => {
|
<KesehatanEditor
|
||||||
informasiumumState.create.form.content = val
|
showSubmit={false}
|
||||||
informasiumumState.create.create()
|
onChange={(val) => {
|
||||||
|
informasiumumState.create.form.content = val;
|
||||||
}} />
|
}} />
|
||||||
</Box>
|
</Box>
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -1,28 +1,91 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import { Box, SimpleGrid, Skeleton, Stack, Text, Title } from '@mantine/core';
|
import colors from '@/con/colors';
|
||||||
|
import { Box, Button, Center, SimpleGrid, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import DokterdanTenagaMedisList from './dokterdantenagamedis/listData';
|
|
||||||
import DokterDanTenagaMedis from './dokterdantenagamedis/page';
|
import DokterDanTenagaMedis from './dokterdantenagamedis/page';
|
||||||
import FasilitasPendukungList from './fasilitas_pendukung/listData';
|
|
||||||
import FasilitasPendukung from './fasilitas_pendukung/page';
|
import FasilitasPendukung from './fasilitas_pendukung/page';
|
||||||
import InformasiUmum from './informasi_umum/page';
|
import InformasiUmum from './informasi_umum/page';
|
||||||
import LayananUnggulanList from './layanan_unggulan/layananUnggulanList';
|
|
||||||
import LayananUnggulan from './layanan_unggulan/page';
|
import LayananUnggulan from './layanan_unggulan/page';
|
||||||
import ProsedurPendaftaran from './prosedurpendaftaran/page';
|
import ProsedurPendaftaran from './prosedurpendaftaran/page';
|
||||||
import TarifDanLayananList from './tarifdanlayanan/listData';
|
|
||||||
import TarifDanLayanan from './tarifdanlayanan/page';
|
import TarifDanLayanan from './tarifdanlayanan/page';
|
||||||
import ListProsedurPendaftaran from './prosedurpendaftaran/listData';
|
|
||||||
|
|
||||||
|
|
||||||
function FasilitasKesehatan() {
|
function FasilitasKesehatan() {
|
||||||
|
const allState = useProxy(stateFasilitasKesehatan)
|
||||||
|
const submitAllForms = () => {
|
||||||
|
if (allState.informasiumum.create.form.fasilitas &&
|
||||||
|
allState.informasiumum.create.form.alamat &&
|
||||||
|
allState.informasiumum.create.form.jamOperasional) {
|
||||||
|
allState.informasiumum.create.create()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (allState.layananunggulan.create.form.content) {
|
||||||
|
allState.layananunggulan.create.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (allState.dokterdantenagamedis.create.form.name &&
|
||||||
|
allState.dokterdantenagamedis.create.form.specialist &&
|
||||||
|
allState.dokterdantenagamedis.create.form.jadwal) {
|
||||||
|
allState.dokterdantenagamedis.create.create()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (allState.fasilitaspendukung.create.form.content) {
|
||||||
|
allState.fasilitaspendukung.create.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (allState.tarifdanlayanan.create.form.tarif &&
|
||||||
|
allState.tarifdanlayanan.create.form.layanan) {
|
||||||
|
allState.tarifdanlayanan.create.create()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (allState.prosedurpendaftaran.create.form.content) {
|
||||||
|
allState.prosedurpendaftaran.create.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
// refreshListData();
|
||||||
|
// resetAllForms();
|
||||||
|
}
|
||||||
|
|
||||||
|
// const refreshListData = () => {
|
||||||
|
// allState.informasiumum.findMany.load();
|
||||||
|
// allState.layananunggulan.findMany.load();
|
||||||
|
// allState.dokterdantenagamedis.findMany.load();
|
||||||
|
// allState.fasilitaspendukung.findMany.load();
|
||||||
|
// allState.tarifdanlayanan.findMany.load();
|
||||||
|
// allState.prosedurpendaftaran.findMany.load();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const resetAllForms = () => {
|
||||||
|
// allState.informasiumum.create.form = {
|
||||||
|
// fasilitas: '',
|
||||||
|
// alamat: '',
|
||||||
|
// jamOperasional: ''
|
||||||
|
// };
|
||||||
|
// allState.layananunggulan.create.form = {
|
||||||
|
// content: ''
|
||||||
|
// };
|
||||||
|
// allState.dokterdantenagamedis.create.form = {
|
||||||
|
// name: '',
|
||||||
|
// specialist: '',
|
||||||
|
// jadwal: ''
|
||||||
|
// };
|
||||||
|
// allState.fasilitaspendukung.create.form = {
|
||||||
|
// content: ''
|
||||||
|
// };
|
||||||
|
// allState.tarifdanlayanan.create.form = {
|
||||||
|
// tarif: '',
|
||||||
|
// layanan: ''
|
||||||
|
// };
|
||||||
|
// allState.prosedurpendaftaran.create.form = {
|
||||||
|
// content: ''
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack>
|
<Stack py={10}>
|
||||||
<SimpleGrid cols={{
|
<SimpleGrid cols={{
|
||||||
base: 1, md: 2
|
base: 1, md: 2
|
||||||
}}>
|
}}>
|
||||||
@@ -32,33 +95,23 @@ function FasilitasKesehatan() {
|
|||||||
{/* Informasi Umum */}
|
{/* Informasi Umum */}
|
||||||
<InformasiUmum />
|
<InformasiUmum />
|
||||||
{/* Layanan Unggulan */}
|
{/* Layanan Unggulan */}
|
||||||
<LayananUnggulan/>
|
<LayananUnggulan />
|
||||||
{/* Dokter & Tenaga Medis */}
|
{/* Dokter & Tenaga Medis */}
|
||||||
<DokterDanTenagaMedis/>
|
<DokterDanTenagaMedis />
|
||||||
{/* Fasilitas Pendukung */}
|
{/* Fasilitas Pendukung */}
|
||||||
<FasilitasPendukung/>
|
<FasilitasPendukung />
|
||||||
{/* Tarif & Layanan */}
|
{/* Tarif & Layanan */}
|
||||||
<TarifDanLayanan/>
|
<TarifDanLayanan />
|
||||||
{/* Prosedur Pendaftaran */}
|
{/* Prosedur Pendaftaran */}
|
||||||
<ProsedurPendaftaran/>
|
<ProsedurPendaftaran />
|
||||||
|
<Button onClick={submitAllForms}>Submit</Button>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Box>
|
<Box>
|
||||||
<Stack gap={"xs"}>
|
<Stack gap={"xs"}>
|
||||||
<Title order={3}>List Fasilitas Kesehatan</Title>
|
<Title order={3}>List Fasilitas Kesehatan</Title>
|
||||||
<Title order={4}>Informasi Umum</Title>
|
<AllList />
|
||||||
<InformasiUmumList/>
|
|
||||||
<Title order={4}>Layanan Unggulan</Title>
|
|
||||||
<LayananUnggulanList/>
|
|
||||||
<Title order={4}>Dokter & Tenaga Medis</Title>
|
|
||||||
<DokterdanTenagaMedisList/>
|
|
||||||
<Title order={4}>Fasilitas Pendukung</Title>
|
|
||||||
<FasilitasPendukungList/>
|
|
||||||
<Title order={4}>Tarif & Layanan</Title>
|
|
||||||
<TarifDanLayananList/>
|
|
||||||
<Title order={4}>Prosedur Pendaftaran</Title>
|
|
||||||
<ListProsedurPendaftaran/>
|
|
||||||
</Stack>
|
</Stack>
|
||||||
</Box>
|
</Box>
|
||||||
</SimpleGrid>
|
</SimpleGrid>
|
||||||
@@ -67,24 +120,121 @@ function FasilitasKesehatan() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function InformasiUmumList(){
|
function AllList() {
|
||||||
const infromasiState = useProxy(stateKesehatan)
|
const allListState = useProxy(stateFasilitasKesehatan)
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
infromasiState.informasiumum.findMany.load()
|
allListState.informasiumum.findMany.load();
|
||||||
|
allListState.layananunggulan.findMany.load();
|
||||||
|
allListState.dokterdantenagamedis.findMany.load();
|
||||||
|
allListState.fasilitaspendukung.findMany.load();
|
||||||
|
allListState.tarifdanlayanan.findMany.load();
|
||||||
|
allListState.prosedurpendaftaran.findMany.load();
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
if (!infromasiState.informasiumum.findMany.data) return <Stack>
|
if (!allListState.informasiumum.findMany.data
|
||||||
|
|| !allListState.layananunggulan.findMany.data
|
||||||
|
|| !allListState.dokterdantenagamedis.findMany.data
|
||||||
|
|| !allListState.fasilitaspendukung.findMany.data
|
||||||
|
|| !allListState.tarifdanlayanan.findMany.data
|
||||||
|
|| !allListState.prosedurpendaftaran.findMany.data
|
||||||
|
) return <Stack>
|
||||||
{Array.from({ length: 10 }).map((v, k) => <Skeleton key={k} h={40} />)}
|
{Array.from({ length: 10 }).map((v, k) => <Skeleton key={k} h={40} />)}
|
||||||
</Stack>
|
</Stack>
|
||||||
return <Stack>
|
return <Stack>
|
||||||
{infromasiState.informasiumum.findMany.data?.map((item) => (
|
<Title order={4}>Informasi Umum</Title>
|
||||||
|
{allListState.informasiumum.findMany.data?.map((item) => (
|
||||||
<Box key={item.id}>
|
<Box key={item.id}>
|
||||||
|
|
||||||
<Text>{item.fasilitas}</Text>
|
<Text>{item.fasilitas}</Text>
|
||||||
<Text>{item.alamat}</Text>
|
<Text>{item.alamat}</Text>
|
||||||
<Text>{item.jamOperasional}</Text>
|
<Text>{item.jamOperasional}</Text>
|
||||||
</Box>
|
</Box>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
|
<Title order={4}>Layanan Unggulan</Title>
|
||||||
|
{allListState.layananunggulan.findMany.data?.map((item) => (
|
||||||
|
<Box key={item.id}>
|
||||||
|
<Text dangerouslySetInnerHTML={{ __html: item.content }} />
|
||||||
|
</Box>
|
||||||
|
))}
|
||||||
|
|
||||||
|
|
||||||
|
<Title order={4}>Dokter & Tenaga Medis</Title>
|
||||||
|
|
||||||
|
<Table
|
||||||
|
striped
|
||||||
|
highlightOnHover
|
||||||
|
withTableBorder
|
||||||
|
withColumnBorders
|
||||||
|
bg={colors['white-1']}
|
||||||
|
>
|
||||||
|
<TableThead >
|
||||||
|
<TableTr >
|
||||||
|
<TableTh >
|
||||||
|
<Center>Nama</Center>
|
||||||
|
</TableTh>
|
||||||
|
<TableTh >
|
||||||
|
<Center>Specialist</Center>
|
||||||
|
</TableTh>
|
||||||
|
<TableTh >
|
||||||
|
<Center>Jadwal</Center>
|
||||||
|
</TableTh>
|
||||||
|
</TableTr>
|
||||||
|
</TableThead>
|
||||||
|
<TableTbody >
|
||||||
|
{allListState.dokterdantenagamedis.findMany.data?.map((item) => (
|
||||||
|
<TableTr key={item.id}>
|
||||||
|
<TableTd ta="center">{item.name}</TableTd>
|
||||||
|
<TableTd ta="center">Specialist {item.specialist}</TableTd>
|
||||||
|
<TableTd ta="center">{item.jadwal}</TableTd>
|
||||||
|
</TableTr>
|
||||||
|
))}
|
||||||
|
</TableTbody>
|
||||||
|
</Table>
|
||||||
|
|
||||||
|
<Title order={4}>Fasilitas Pendukung</Title>
|
||||||
|
{allListState.fasilitaspendukung.findMany.data?.map((item) => (
|
||||||
|
<Box key={item.id}>
|
||||||
|
<Text dangerouslySetInnerHTML={{ __html: item.content }} />
|
||||||
|
</Box>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<Title order={4}>Tarif & Layanan</Title>
|
||||||
|
<Table
|
||||||
|
suppressHydrationWarning
|
||||||
|
striped
|
||||||
|
highlightOnHover
|
||||||
|
withTableBorder
|
||||||
|
withColumnBorders
|
||||||
|
bg={colors['white-1']}
|
||||||
|
>
|
||||||
|
<TableThead>
|
||||||
|
<TableTr>
|
||||||
|
<TableTh>
|
||||||
|
Layanan
|
||||||
|
</TableTh>
|
||||||
|
<TableTh>
|
||||||
|
Tarif
|
||||||
|
</TableTh>
|
||||||
|
</TableTr>
|
||||||
|
</TableThead>
|
||||||
|
<TableTbody>
|
||||||
|
{allListState.tarifdanlayanan.findMany.data?.map((item) => (
|
||||||
|
<TableTr key={item.id}>
|
||||||
|
<TableTd>{item.layanan}</TableTd>
|
||||||
|
<TableTd>Rp.{item.tarif}</TableTd>
|
||||||
|
</TableTr>
|
||||||
|
))}
|
||||||
|
</TableTbody>
|
||||||
|
</Table>
|
||||||
|
|
||||||
|
<Title order={4}>Prosedur Pendaftaran</Title>
|
||||||
|
{allListState.prosedurpendaftaran.findMany.data?.map((item) => (
|
||||||
|
<Box key={item.id}>
|
||||||
|
<Text dangerouslySetInnerHTML={{__html: item.content}}/>
|
||||||
|
</Box>
|
||||||
|
))}
|
||||||
|
|
||||||
</Stack>
|
</Stack>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import { Box, Skeleton, Stack, Text } from '@mantine/core';
|
import { Box, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function ListProsedurPendaftaran() {
|
function ListProsedurPendaftaran() {
|
||||||
const prosedurpendaftaranState = useProxy(stateKesehatan.prosedurpendaftaran)
|
const prosedurpendaftaranState = useProxy(stateFasilitasKesehatan.prosedurpendaftaran)
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
prosedurpendaftaranState.findMany.load()
|
prosedurpendaftaranState.findMany.load()
|
||||||
}, [])
|
}, [])
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import { Box, Text } from '@mantine/core';
|
import { Box, Text } from '@mantine/core';
|
||||||
import { BeritaEditor } from '@/app/admin/(dashboard)/desa/berita/_com/BeritaEditor';
|
|
||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
import { KesehatanEditor } from '../../../_com/kesehatanEditor';
|
||||||
|
|
||||||
function ProsedurPendaftaran() {
|
function ProsedurPendaftaran() {
|
||||||
const prosedurpendaftaranState = useProxy(stateKesehatan.prosedurpendaftaran)
|
const prosedurpendaftaranState = useProxy(stateFasilitasKesehatan.prosedurpendaftaran)
|
||||||
return <Box>
|
return <Box>
|
||||||
<Text fw={"bold"}>Prosedur Pendaftaran</Text>
|
<Text fw={"bold"}>Prosedur Pendaftaran</Text>
|
||||||
<BeritaEditor onSubmit={(val) => {
|
<KesehatanEditor
|
||||||
prosedurpendaftaranState.create.form.content = val
|
showSubmit={false}
|
||||||
prosedurpendaftaranState.create.create()
|
onChange={(val) => {
|
||||||
}} />
|
prosedurpendaftaranState.create.form.content = val;
|
||||||
|
}} />
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Center, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core';
|
import { Center, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
@@ -6,7 +6,7 @@ import _ from 'lodash';
|
|||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function TarifDanLayananList() {
|
function TarifDanLayananList() {
|
||||||
const tarifdanlayanan = useProxy(stateKesehatan.tarifdanlayanan)
|
const tarifdanlayanan = useProxy(stateFasilitasKesehatan.tarifdanlayanan)
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
tarifdanlayanan.findMany.load()
|
tarifdanlayanan.findMany.load()
|
||||||
}, [])
|
}, [])
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
import { Box, Button, Text, TextInput } from '@mantine/core';
|
import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan';
|
||||||
import React from 'react';
|
import { Box, Text, TextInput } from '@mantine/core';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan';
|
|
||||||
|
|
||||||
function TarifDanLayanan() {
|
function TarifDanLayanan() {
|
||||||
const tarifdanlayanan = useProxy(stateKesehatan.tarifdanlayanan)
|
const tarifdanlayanan = useProxy(stateFasilitasKesehatan.tarifdanlayanan)
|
||||||
return <Box>
|
return <Box>
|
||||||
<Text fw={"bold"}>Tarif & Layanan</Text>
|
<Text fw={"bold"}>Tarif & Layanan</Text>
|
||||||
<TextInput
|
<TextInput
|
||||||
@@ -22,11 +21,6 @@ function TarifDanLayanan() {
|
|||||||
tarifdanlayanan.create.form.layanan = val.target.value
|
tarifdanlayanan.create.form.layanan = val.target.value
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Button
|
|
||||||
onClick={() => {
|
|
||||||
tarifdanlayanan.create.create()
|
|
||||||
}}
|
|
||||||
>Simpan</Button>
|
|
||||||
</Box>
|
</Box>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { Stack, Title } from '@mantine/core';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
function GrafikHasilKepuasan() {
|
||||||
|
return (
|
||||||
|
<Stack py={10}>
|
||||||
|
<Title order={3}>Grafik Hasil Kepuasan</Title>
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default GrafikHasilKepuasan;
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import { Box, Text } from '@mantine/core';
|
||||||
|
import TextEditor from '../../../_com/TextEditor';
|
||||||
|
|
||||||
|
function DeskripsiKegiatan() {
|
||||||
|
return (
|
||||||
|
<Box>
|
||||||
|
<Text pt={10} fw={"bold"}>Deskripsi Kegiatan</Text>
|
||||||
|
<TextEditor/>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default DeskripsiKegiatan;
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { Box, Text } from '@mantine/core';
|
||||||
|
import TextEditor from '../../../_com/TextEditor';
|
||||||
|
|
||||||
|
function DokumenYangDiperlukan() {
|
||||||
|
return (
|
||||||
|
<Box>
|
||||||
|
<Text pt={10} fw={"bold"}>Dokumen Yang Diperlukan</Text>
|
||||||
|
<TextEditor/>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default DokumenYangDiperlukan;
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import { Box, Text, TextInput } from '@mantine/core';
|
||||||
|
|
||||||
|
function InformasiKegiatan() {
|
||||||
|
return (
|
||||||
|
<Box>
|
||||||
|
<Text pt={10} fw={"bold"}>Informasi Kegiatan</Text>
|
||||||
|
<TextInput
|
||||||
|
label="Nama Kegiatan"
|
||||||
|
placeholder="Masukkan nama kegiatan"
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
label="Tanggal"
|
||||||
|
placeholder="Masukkan tanggal kegiatan"
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
label="Waktu"
|
||||||
|
placeholder="Masukkan waktu kegiatan"
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
label="Lokasi"
|
||||||
|
placeholder="Masukkan lokasi kegiatan"
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default InformasiKegiatan;
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import { Box, Text } from '@mantine/core';
|
||||||
|
import TextEditor from '../../../_com/TextEditor';
|
||||||
|
|
||||||
|
function LayananTersedia() {
|
||||||
|
return (
|
||||||
|
<Box>
|
||||||
|
<Text pt={10} fw={"bold"}>Layanan Yang Tersedia</Text>
|
||||||
|
<TextEditor/>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default LayananTersedia;
|
||||||
@@ -1,18 +1,26 @@
|
|||||||
import { Box, SimpleGrid, Stack, TextInput, Title } from '@mantine/core';
|
import { Box, Button, SimpleGrid, Stack, Title } from '@mantine/core';
|
||||||
import React from 'react';
|
import InformasiKegiatan from './informasi_kegiatan/page';
|
||||||
|
import DeskripsiKegiatan from './deskripsi_kegiatan/page';
|
||||||
|
import LayananTersedia from './layanan_yang_tersedia/page';
|
||||||
|
import SyaratDanKetentuan from './syarat_dan_ketentuan/page';
|
||||||
|
import DokumenYangDiperlukan from './dokumen_yang_diperlukan/page';
|
||||||
|
import Pendaftaran from './pendaftaran/page';
|
||||||
|
|
||||||
function JadwalKegiatan() {
|
function JadwalKegiatan() {
|
||||||
return (
|
return (
|
||||||
<Stack>
|
<Stack py={10}>
|
||||||
<SimpleGrid cols={{
|
<SimpleGrid cols={{
|
||||||
base: 1, md: 2
|
base: 1, md: 2
|
||||||
}}>
|
}}>
|
||||||
<Box>
|
<Box>
|
||||||
<Title order={3}>Jadwal Kegiatan</Title>
|
<Title order={3}>Jadwal Kegiatan</Title>
|
||||||
<TextInput
|
<InformasiKegiatan/>
|
||||||
label="Jadwal"
|
<DeskripsiKegiatan/>
|
||||||
placeholder='masukkan jadwal kegiatan'
|
<LayananTersedia/>
|
||||||
/>
|
<SyaratDanKetentuan/>
|
||||||
|
<DokumenYangDiperlukan/>
|
||||||
|
<Pendaftaran/>
|
||||||
|
<Button mt={10} fullWidth>Submit</Button>
|
||||||
</Box>
|
</Box>
|
||||||
<Box>
|
<Box>
|
||||||
<Title order={3}>List Jadwal Kegiatan</Title>
|
<Title order={3}>List Jadwal Kegiatan</Title>
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
'use client'
|
||||||
|
import { ActionIcon, Box, Text, Textarea, TextInput } from '@mantine/core';
|
||||||
|
import { DateInput } from '@mantine/dates';
|
||||||
|
import { IconCalendar } from '@tabler/icons-react';
|
||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
|
function Pendaftaran() {
|
||||||
|
const [dateInputOpened, setDateInputOpened] = useState(false);
|
||||||
|
const pickerControl = (
|
||||||
|
<ActionIcon onClick={() => setDateInputOpened(true)} variant="subtle" color="gray">
|
||||||
|
<IconCalendar size={18} />
|
||||||
|
</ActionIcon>
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<Box>
|
||||||
|
<Text pt={10} fw={"bold"}>Pendaftaran</Text>
|
||||||
|
<TextInput
|
||||||
|
label='Nama Balita'
|
||||||
|
placeholder='Masukkan nama balita'
|
||||||
|
/>
|
||||||
|
<DateInput
|
||||||
|
styles={{label: {fontSize: '14px'}}}
|
||||||
|
label='Tanggal Lahir'
|
||||||
|
placeholder='dd/mm/yyyy'
|
||||||
|
popoverProps={{opened: dateInputOpened, onChange: setDateInputOpened}}
|
||||||
|
rightSection={pickerControl}
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
label='Nama Orang Tua / Wali'
|
||||||
|
placeholder='Masukkan nama orang tua / wali'
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
label='No. Telepon'
|
||||||
|
placeholder='Masukkan no. telepon'
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
label='Alamat'
|
||||||
|
placeholder='Masukkan alamat'
|
||||||
|
/>
|
||||||
|
<Textarea
|
||||||
|
label='Catatan Khusus (Opsional)'
|
||||||
|
placeholder='Masukkan catatan khusus'
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Pendaftaran;
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
import { Box, Text } from '@mantine/core';
|
||||||
|
import React from 'react';
|
||||||
|
import TextEditor from '../../../_com/TextEditor';
|
||||||
|
|
||||||
|
function SyaratDanKetentuan() {
|
||||||
|
return (
|
||||||
|
<Box>
|
||||||
|
<Text pt={10} fw={"bold"}>Syarat dan Ketentuan</Text>
|
||||||
|
<TextEditor/>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default SyaratDanKetentuan;
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { Stack, Title } from '@mantine/core';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
function PersentaseDataKelahiranKematian() {
|
||||||
|
return (
|
||||||
|
<Stack py={10}>
|
||||||
|
<Title order={3}>Persentase Data Kelahiran & Kematian</Title>
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default PersentaseDataKelahiranKematian;
|
||||||
@@ -1,18 +1,53 @@
|
|||||||
import { Stack } from '@mantine/core';
|
import { Stack, Tabs, TabsList, TabsPanel, TabsTab } from '@mantine/core';
|
||||||
import ArtikelKesehatan from './_ui/artikel_kesehatan/page';
|
import ArtikelKesehatan from './_ui/artikel_kesehatan/page';
|
||||||
import FasilitasKesehatan from './_ui/fasilitas_kesehatan/page';
|
import FasilitasKesehatan from './_ui/fasilitas_kesehatan/page';
|
||||||
import JadwalKegiatan from './_ui/jadwal_kegiatan/page';
|
import JadwalKegiatan from './_ui/jadwal_kegiatan/page';
|
||||||
|
import PersentaseDataKelahiranKematian from './_ui/persentase_data_kelahiran_kematian/page';
|
||||||
|
import GrafikHasilKepuasan from './_ui/grafik_hasil_kepuasan/page';
|
||||||
|
import colors from '@/con/colors';
|
||||||
|
|
||||||
|
|
||||||
function Page() {
|
function Page() {
|
||||||
return (
|
return (
|
||||||
<Stack>
|
<Stack>
|
||||||
<FasilitasKesehatan/>
|
<Tabs color={colors['blue-button']} variant='pills' defaultValue={"Persentase Kelahiran & Kematian"}>
|
||||||
<JadwalKegiatan/>
|
<TabsList >
|
||||||
<ArtikelKesehatan/>
|
<TabsTab value="Persentase Kelahiran & Kematian">
|
||||||
|
Persentase Kelahiran & Kematian
|
||||||
|
</TabsTab>
|
||||||
|
<TabsTab value="Grafik Hasil Kepuasan">
|
||||||
|
Grafik Hasil Kepuasan
|
||||||
|
</TabsTab>
|
||||||
|
<TabsTab value="Fasilitas Kesehatan">
|
||||||
|
Fasilitas Kesehatan
|
||||||
|
</TabsTab>
|
||||||
|
<TabsTab value="Jadwal Kegiatan">
|
||||||
|
Jadwal Kegiatan
|
||||||
|
</TabsTab>
|
||||||
|
<TabsTab value="Artikel Kesehatan">
|
||||||
|
Artikel Kesehatan
|
||||||
|
</TabsTab>
|
||||||
|
</TabsList>
|
||||||
|
|
||||||
|
<TabsPanel value="Persentase Kelahiran & Kematian">
|
||||||
|
<PersentaseDataKelahiranKematian />
|
||||||
|
</TabsPanel>
|
||||||
|
<TabsPanel value="Grafik Hasil Kepuasan">
|
||||||
|
<GrafikHasilKepuasan/>
|
||||||
|
</TabsPanel>
|
||||||
|
<TabsPanel value="Fasilitas Kesehatan">
|
||||||
|
<FasilitasKesehatan/>
|
||||||
|
</TabsPanel>
|
||||||
|
<TabsPanel value="Jadwal Kegiatan">
|
||||||
|
<JadwalKegiatan/>
|
||||||
|
</TabsPanel>
|
||||||
|
<TabsPanel value="Artikel Kesehatan">
|
||||||
|
<ArtikelKesehatan/>
|
||||||
|
</TabsPanel>
|
||||||
|
|
||||||
|
</Tabs>
|
||||||
</Stack>
|
</Stack>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Page;
|
export default Page;
|
||||||
//Fasilitas Kesehatan Jadwal Kegiatan Artikel Kesehatan
|
|
||||||
@@ -39,9 +39,6 @@ export default function Layout({ children }: { children: React.ReactNode }) {
|
|||||||
c={colors["blue-button"]}
|
c={colors["blue-button"]}
|
||||||
component={ScrollArea}
|
component={ScrollArea}
|
||||||
>
|
>
|
||||||
<AppShell.Section h={100} bg={"gray.1"}>
|
|
||||||
<Text c={colors["blue-button"]}>Heder Navbar</Text>
|
|
||||||
</AppShell.Section>
|
|
||||||
<AppShell.Section >
|
<AppShell.Section >
|
||||||
{navBar.map((v, k) => {
|
{navBar.map((v, k) => {
|
||||||
return (
|
return (
|
||||||
@@ -73,7 +70,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
|
|||||||
})}
|
})}
|
||||||
</AppShell.Section>
|
</AppShell.Section>
|
||||||
|
|
||||||
<AppShell.Section>
|
<AppShell.Section py={20}>
|
||||||
<Group justify="end">
|
<Group justify="end">
|
||||||
<ActionIcon variant="light" onClick={toggleDesktop}><IconChevronLeft /></ActionIcon>
|
<ActionIcon variant="light" onClick={toggleDesktop}><IconChevronLeft /></ActionIcon>
|
||||||
</Group>
|
</Group>
|
||||||
|
|||||||
Reference in New Issue
Block a user