Logo Khitan Damai

Khitan Damai

Aku Berani Khitan

Logo Khitan Damai
{{ runningText }}
Logo Khitan Damai

Panel Pengelola

Riwayat Akun Tersimpan:
{{ loginError }}
Logo Khitan Damai

Lupa Kata Sandi

Masukkan username atau email terdaftar Anda. Password akan dikirimkan langsung ke email Anda.

{{ forgotPasswordError }}
{{ forgotPasswordSuccess }}

{{ confirmModalConfig.title }}

{{ confirmModalConfig.message }}

{{ editingUserIndex === null ? 'Tambah Pengguna Baru & Hak Akses Menu' : 'Edit Pengguna & Hak Akses Menu' }}

{{ editUserForm.username ? '@' + editUserForm.username : 'Pengguna Baru' }}

Informasi Akun & Kredensial

{{ editUserForm.username ? 'Akun Terdaftar' : 'Akun Baru' }}

Digunakan untuk login ke panel admin.

Plain-text atau hash SHA-256 (64 hex).

Super Admin, Admin, atau Operator.

Hak Akses Menu Side Bar (8 Menu)

Setel izin akses tiap menu: Hak Penuh, Melihat, atau Sembunyi.

Cepat:
{{ menu.label }} Sembunyi Melihat Penuh

{{ menu.desc }}

Perubahan akan diterapkan ke draft tabel. Tekan "Simpan Perubahan" di tabel untuk menyimpannya ke database spreadsheet.

{{ bookingModalMode === 'create' ? 'Tambah Data Pendaftaran Khitan' : 'Edit Data Pendaftaran Khitan' }}

ID: {{ editBookingForm.idBooking }}

Biodata Ananda

Bagian 1/4
Kg

Detail Tindakan Khitan

Bagian 2/4

Penanggung Jawab

Bagian 3/4
Tahun
+62

Awal 8. Format: +62{{ editBookingForm.nomorHpInput }}

Alamat Lengkap & Status

Bagian 4/4
{{ bookingModalMode === 'create' ? 'Data pendaftaran baru akan ditambahkan langsung ke baris sheet BOOKING Google Sheets.' : 'Perubahan data akan disimpan langsung ke sheet BOOKING Google Sheets.' }}

{{ kunjunganModalMode === 'create' ? 'Tambah Data Kunjungan Baru' : 'Edit Rekam Kunjungan Pasien' }}

{{ kunjunganModalMode === 'create' ? 'REGISTER: Dibuat Otomatis' : 'REGISTER: ' + kunjunganForm.register }}
Pengisian:
{{ (kunjunganLookupId || '').length }}/7
{{ kunjunganLookupMessage }}
Mode Input Manual aktif: silakan lengkapi formulir di bawah.
Langkah 1/3: Identitas Anak, Orang Tua & Alamat Langkah 2/3: Tanggal, Metode, Obat & Klamp Langkah 3/3: Status Pembayaran, BMHP & Fee 1 Halaman Utuh: Menampilkan Seluruh Formulir (5 Bagian)

Identitas Pasien

Bagian 1/5
Kg

Tindakan Khitan

Bagian 2/5

Penanggung Jawab

Bagian 3/5
Th
+62{{ kunjunganForm.nomorHp || '8...' }}
+62

Wilayah & Alamat Pasien

Bagian 4/5

Administrasi & Rincian Biaya

Bagian 5/5

*Baris data booking ini akan otomatis dihapus dari menu Booking saat kunjungan tersimpan.

Otomatis
Otomatis
{{ kunjunganModalMode === 'create' ? 'Data kunjungan baru akan ditambahkan langsung ke baris sheet KUNJUNGAN Google Sheets.' : 'Perubahan data akan disimpan langsung ke sheet KUNJUNGAN Google Sheets.' }}

{{ jumatModalMode === 'create' ? 'Tambah Data Khitan Jumat Berkah' : 'Edit Rekam Jumat Berkah' }}

Tarik Otomatis Data dari Sheet Kunjungan

Ketik atau tempel nomor REGISTER kunjungan (contoh: KD2601010001). Jika cocok, data Nama Ananda, Tempat/Tgl Lahir, Tgl Khitan, PJ, Pekerjaan, Hubungan, dan Alamat disalin otomatis ke form di bawah ini.

1 Identitas Pasien (Ananda) & Tanggal Khitan
{{ jumatForm.register }}
2 Data Penanggung Jawab (Orang Tua / Wali)
3 Wilayah & Alamat Lengkap

Bukti Booking Pasien

Pratinjau resmi bukti pendaftaran khitan (sama seperti tampilan publik)

Status Tindakan {{ lastBookingData?.status || 'Pending' }}
ID Booking {{ lastBookingData?.idBooking || lastBookingData?.id }}
Logo Khitan Damai

BUKTI BOOKING KHITAN

Terima kasih telah mempercayakan khitan Ananda kepada Khitan Damai.

Booking ID : {{ lastBookingData?.idBooking || lastBookingData?.id }}
Nama Ananda : {{ lastBookingData?.namaAnanda || lastBookingData?.namaAnak }}
Usia : {{ calculateAgeDetail(lastBookingData?.tanggalLahir, lastBookingData?.tanggalKhitan) }}
Tanggal Khitan : {{ formatIndonesianDate(lastBookingData?.tanggalKhitan || lastBookingData?.tglKhitan) }}
Jam Khitan : {{ lastBookingData?.jamKhitan || '-' }}
Metode Khitan : {{ lastBookingData?.metodeKhitan || '-' }}
Obat : {{ lastBookingData?.obat || '-' }}
Berat Badan : {{ lastBookingData?.beratBadan ? (lastBookingData?.beratBadan + ' Kg') : '-' }}
Ilustrasi Dokter dan Anak Khitan Damai
Aman & Higienis
Profesional
Modern
Anak Nyaman

*Tunjukkan bukti booking ini kepada petugas administrasi saat kedatangan.

Kirim ke WA

Cari Booking Admin

Verifikasi pencarian data booking (tampilan publik)

Nomor HP telah di-prefill dari baris data yang dipilih dan dapat diubah.

KODE BOOKING {{ adminCekResult.data.id }}
Nama Anak: {{ adminCekResult.data.namaAnak }}
Nama Orang Tua: {{ adminCekResult.data.namaOrtu }}
Nomor HP (Sensor): {{ maskPhone(adminCekResult.data.noHp) }}
Tanggal Rencana: {{ formatIndonesianDate(adminCekResult.data.tglKhitan) }}
Status Pendaftaran: {{ adminCekResult.data.status }}

Pendaftaran Anda sedang dalam antrean verifikasi oleh tim medis. Kami akan menghubungi Anda via WhatsApp.

Jadwal Anda telah dikonfirmasi! Harap datang 15 menit sebelum waktu perjanjian dengan membawa perlengkapan santai anak.

Tindakan khitan telah selesai. Semoga lekas pulih dan tetap semangat untuk sang jagoan!

!

Data Tidak Ditemukan

Nomor {{ adminCekPhone }} belum terdaftar di database booking kami.

WhatsApp Sambutan

Kirim pesan sambutan resmi ke nomor HP pasien

Tujuan Pengiriman {{ activeWaSambutanData?.namaPenanggungJawab || activeWaSambutanData?.namaOrtu }}
Nomor HP (WhatsApp) {{ activeWaSambutanData?.nomorHp || activeWaSambutanData?.noHp }}
{{ buildWaSambutanText(activeWaSambutanData) }}

WhatsApp Reminder

Kirim pengingat jadwal khitan H-1 ke nomor HP pasien

Tujuan Pengiriman {{ activeWaReminderData?.namaPenanggungJawab || activeWaReminderData?.namaOrtu }}
Nomor HP (WhatsApp) {{ activeWaReminderData?.nomorHp || activeWaReminderData?.noHp }}
{{ buildWaReminderText(activeWaReminderData) }}

WhatsApp Ucapan

Kirim pesan ucapan selamat & doa khitan ke nomor HP pasien

Tujuan Pengiriman {{ activeWaUcapanData?.namaPenanggungJawab || activeWaUcapanData?.namaOrtu }}
Nomor HP (WhatsApp) {{ activeWaUcapanData?.nomorHp || activeWaUcapanData?.noHp }}
{{ buildWaUcapanText(activeWaUcapanData) }}

WhatsApp Evaluasi H+1

Kirim pesan evaluasi & pantauan kondisi H+1 setelah tindakan khitan

Tujuan Pengiriman {{ activeWaEvaluasiData?.namaPenanggungJawab || activeWaEvaluasiData?.namaOrtu }} ({{ activeWaEvaluasiData?.hubunganKeluarga || '-' }})
Nomor HP (WhatsApp) {{ activeWaEvaluasiData?.nomorHp || activeWaEvaluasiData?.noHp }}
{{ buildWaEvaluasiText(activeWaEvaluasiData) }}

WhatsApp Evaluasi H+2

Kirim pesan kesan, masukan & ajakan ulasan Google H+2 setelah khitan

Tujuan Pengiriman {{ activeWaEvaluasiH2Data?.namaPenanggungJawab || activeWaEvaluasiH2Data?.namaOrtu }} ({{ activeWaEvaluasiH2Data?.hubunganKeluarga || '-' }})
Nomor HP (WhatsApp) {{ activeWaEvaluasiH2Data?.nomorHp || activeWaEvaluasiH2Data?.noHp }}
{{ buildWaEvaluasiH2Text(activeWaEvaluasiH2Data) }}

Tambah Galeri Baru

Data akan tersimpan langsung di sheet GALERI

Foto siap disimpan

{{ galleryUploadStatusText || 'Mengunggah ke Google Drive...' }}

{{ galleryUploadStatusSubText || 'Menyimpan berkas di folder Galeri' }}

Klik untuk Pilih Foto

Format: JPG, JPEG, PNG, WEBP (Otomatis kompresi jika > 5MB)

Edit Data Galeri

Perbarui informasi galeri di sheet GALERI

{{ galleryUploadStatusText || 'Mengunggah ke Google Drive...' }}

{{ galleryUploadStatusSubText || 'Menyimpan berkas di folder Galeri' }}

Klik untuk Unggah Foto

Format: JPG, JPEG, PNG, WEBP (Otomatis kompresi jika > 5MB)

{{ selectedCacheInspectItem.title || 'Inspeksi Snapshot Cache' }}

Key: {{ selectedCacheInspectItem.key }} • {{ selectedCacheInspectItem.sizeFormatted || '-' }} • {{ selectedCacheInspectItem.countFormatted || '-' }}

Waktu Simpan: {{ selectedCacheInspectItem.time || '-' }}
{{ filteredInspectJsonText }}
Snapshot tersimpan di LocalStorage browser
Belum ada foto keunggulan yang ditampilkan.
Subang
1.500+
Jagoan Terkhitan

Anak hebat berani khitan

4.9 / 5.0
Rating Kepuasan

Ulasan positif orang tua

Higienis
100%
Steril & Medis

Praktisi khitan ahli

Ceria
Minim Nyeri
Ramah Anak

Bius nyaman tanpa jarum

Metode

{{ currentMetodeCarouselIndex + 1 }} / {{ activeMetodeList.length }}

{{ activeMetodeList[currentMetodeCarouselIndex]?.alt }}

Metode ke-{{ currentMetodeCarouselIndex + 1 }} dari {{ activeMetodeList.length }}

Belum ada foto metode yang ditampilkan.

Galeri Senyum Anak

Lihat Semua →
{{ img.desc }}

Kata Orang Tua

Semua Ulasan →
Foto Profil {{ testimonials[0]?.name?.charAt(0) || 'U' }}

{{ testimonials[0]?.name }}

Terbaru

"{{ testimonials[0]?.text }}"

Puas dengan pelayanan kami? Tulis Ulasan Google

Tanya Jawab Seputar Khitan

Pertanyaan yang paling sering ditanyakan oleh Ayah & Bunda.

{{ publicFaqList.length }} FAQ

{{ faq.answer }}

Ada Pertanyaan Lain?

Konsultasikan langsung dengan Praktisi Khitan kami seputar kondisi dan kesiapan Ananda.

💬 Tanya via WhatsApp

Testimoni Keluarga

Pengalaman nyata para orang tua & jagoan berani di Khitan Damai Subang.

Ulasan Terbaru
{{ item.name ? item.name.charAt(0).toUpperCase() : 'U' }}

{{ item.name }}

({{ item.rating || 5 }}.0 / 5)

"{{ item.text }}"

Belum Ada Testimoni Publik

Testimoni keluarga akan segera diperbarui. Hubungi kami untuk konsultasi seputar layanan khitan ramah anak.

Logo Khitan Damai

BUKTI BOOKING KHITAN

Terima kasih telah mempercayakan khitan Ananda kepada Khitan Damai.

Booking ID : {{ lastBookingData?.idBooking || lastBookingData?.id || '-' }}
Nama Ananda : {{ lastBookingData?.namaAnanda || lastBookingData?.namaAnak || '-' }}
Usia : {{ calculateAgeDetail(lastBookingData?.tanggalLahir, lastBookingData?.tanggalKhitan) }}
Tanggal Khitan : {{ formatIndonesianDate(lastBookingData?.tanggalKhitan) }}
Jam Khitan : {{ lastBookingData?.jamKhitan || '-' }}
Metode Khitan : {{ lastBookingData?.metodeKhitan || '-' }}
Obat : {{ lastBookingData?.obat || '-' }}
Berat Badan : {{ lastBookingData?.beratBadan ? (lastBookingData?.beratBadan + ' Kg') : '-' }}
Ilustrasi Dokter dan Anak Khitan Damai
Aman & Higienis
Penanganan Profesional
Metode Modern
Anak Nyaman, Orang Tua Tenang

*Tunjukkan bukti booking ini kepada petugas administrasi saat kedatangan.

Kirim Konfirmasi Ke WhatsApp Admin

Galeri Jagoan Khitan

Suasana ramah anak dan momen keberanian para jagoan khitan.

Ditemukan {{ filteredGalleryList.length }} foto dengan kata kunci "{{ gallerySearchQuery.trim() }}"

Memuat galeri dari Google Sheets...

Menghubungkan ke sheet GALERI...

Belum ada foto galeri

Dokumentasi kegiatan dan fasilitas di sheet GALERI belum tersedia.

Nama Foto Tidak Ditemukan

Tidak ada foto yang cocok dengan nama atau kata kunci "{{ gallerySearchQuery.trim() }}".

{{ item.desc || 'Foto Dokumentasi' }} Foto sedang diproses
Buka Layar Penuh
Baru Foto {{ ((publicGalleryPage - 1) * publicGalleryPerPage) + idx + 1 }}

{{ item.desc || 'Dokumentasi Layanan Khitan Damai' }}

Menampilkan {{ ((publicGalleryPage - 1) * publicGalleryPerPage) + 1 }} - {{ Math.min(publicGalleryPage * publicGalleryPerPage, filteredGalleryList.length) }} dari {{ filteredGalleryList.length }} foto

Hubungi Kami

Informasi kontak resmi, alamat klinik, dan petunjuk arah ke Khitan Damai Subang.

Logo Khitan Damai
Klinik Khitan Modern

Rumah Khitan Damai

Aku Berani Khitan • Ramah Anak & Bius Nyaman

Alamat Praktek

Perum Bumi Abdi Praja Blok D2 No.13

Kelurahan Sukamelang, Kecamatan Subang

Kabupaten Subang – Jawa Barat 41211

Peta Lokasi Google Maps

Buka Maps
Ketuk untuk geser peta
Buka Petunjuk Arah di Google Maps

Beri Saran & Kritik

Sampaikan masukan Anda untuk peningkatan mutu dan kualitas pelayanan Khitan Damai.

+62

Masukkan nomor HP diawali angka 8 (tanpa angka 0 di depan). Nomor tersimpan: +62{{ formSaran.noHpInput || '8...' }}

{{ (formSaran.saran || '').length }} / 500
Logo Khitan Damai

Akses Terbatas Pengelola

Halaman ini khusus untuk administrator klinik Khitan Damai. Silakan masuk menggunakan kredensial yang tersimpan di sheet USERS.

Logo Menu Side Bar
{{ adminToastMessage }}

Dashboard & Grafik Total

Ringkasan operasional harian, performa pasien, dan rekapitulasi keuangan klinik.

{{ lastSyncTime }}

Operasional & Pasien Hari Ini

Pantau jadwal khitan aktif hari ini dan pendaftaran booking yang butuh konfirmasi segera.

{{ new Date().toLocaleDateString('id-ID', { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }) }}
Pasien Khitan Hari Ini
{{ dashboardHariIniKunjungan.length }} Pasien
{{ dashboardHariIniKunjungan.length ? (dashboardHariIniKunjungan[0].namaAnanda + (dashboardHariIniKunjungan.length > 1 ? ' +' + (dashboardHariIniKunjungan.length - 1) + ' lainnya' : '')) : 'Belum ada jadwal hari ini' }}
Booking Tindak Lanjut
{{ dashboardPendingBookings.length }} Pendaftar
{{ dashboardPendingBookings.length ? ((dashboardPendingBookings[0].namaAnanda || dashboardPendingBookings[0].namaAnak) + (dashboardPendingBookings.length > 1 ? ' +' + (dashboardPendingBookings.length - 1) + ' lainnya' : '')) : 'Belum ada pendaftar hari ini & mendatang' }}
Aksi Cepat Operator
Database GAS & Sheets

Card Grafik Total

Bebas Filter

Visualisasi data tahunan murni tersinkron langsung dengan Sheet KUNJUNGAN database.

Menyinkronkan... Database: {{ lastKunjunganSyncTime }}
Total Pasien Akumulatif
{{ grafikTahunanKpi.totalPasien }} Pasien
Total Omzet Akumulatif
{{ grafikTahunanKpi.totalPendapatanFormatted }}
Periode Data Rekam
{{ grafikTahunanKpi.periodeTahun }}
Sheet KUNJUNGAN Aktif
Menyinkronkan grafik database...
Grafik Kunjungan per Tahun

Total jumlah pasien khitan per tahun pelaksanaan.

Pasien
Belum ada data rekam kunjungan di database.
Grafik Pendapatan (JUMLAH BAYAR) per Tahun

Akumulasi penerimaan pembayaran khitan per tahun.

Rupiah
Belum ada data rekam kunjungan di database.

Grid Card Total Kunjungan

Ringkasan total rekam kunjungan dan status pembayaran dari Sheet KUNJUNGAN.

Bebas Filter
Total Kunjungan
{{ dashboardTotalKunjungan }}
Pasien Terdaftar
Seluruh rekam data kunjungan
Status Bayar
Bayar
{{ dashboardTotalBayar }}
({{ dashboardPersenBayar }}%)
Free
{{ dashboardTotalFree }}
({{ dashboardPersenFree }}%)
Proporsi pembayaran pasien
Jumlah Bayar
{{ formatRupiahRingkas(dashboardTotalJumlahBayar) }}
{{ formatRupiahThousand(dashboardTotalJumlahBayar) }}
Akumulasi total pendapatan

Card Clustered Column Chart

{{ dashboardClusterYearRangeLabel }}

Perbandingan jumlah kunjungan pasien per bulan yang dikelompokkan berdampingan berdasarkan tahun.

Tahun {{ item.year }}
Rentang Tahun
→
Belum ada data rekam kunjungan di database.

Card Kunjungan Bulan Berjalan

Ringkasan total rekam kunjungan dan penerimaan pembayaran pada bulan terpilih ({{ dashboardBulanLabel }}).

Filter
Kunjungan Bulan Ini
{{ dashboardBulanTotalKunjungan }}
{{ dashboardBulanLabel }}
Pasien bulan terpilih
Status Bayar
Bayar
{{ dashboardBulanTotalBayar }}
({{ dashboardBulanPersenBayar }}%)
Free
{{ dashboardBulanTotalFree }}
({{ dashboardBulanPersenFree }}%)
Proporsi pembayaran bulan ini
Jumlah Bayar
{{ formatRupiahRingkas(dashboardBulanTotalJumlahBayar) }}
{{ formatRupiahThousand(dashboardBulanTotalJumlahBayar) }}
Penerimaan bulan terpilih

Card Detail Bulan Berjalan

Tabel data rincian keuangan per kelompok Status Bayar dan Metode Khitan ({{ dashboardBulanLabel }}).

Mengikuti Filter Bulan di Atas
STATUS BAYAR METODE KHITAN JUMLAH KUNJUNGAN JUMLAH BAYAR ZAKAT OPERATOR BMHP OBAT LEM FEE TOTAL
{{ row.statusBayar || '-' }} {{ row.metodeKhitan || '-' }} {{ row.jumlah }} Pasien {{ formatAngkaRibuan(row.jumlahBayar) }} {{ formatAngkaRibuan(row.zakat) }} {{ formatAngkaRibuan(row.operator) }} {{ formatAngkaRibuan(row.bmhp) }} {{ row.obatTeks || '-' }} {{ formatAngkaRibuan(row.lem) }} {{ formatAngkaRibuan(row.fee) }} {{ formatAngkaRibuan(row.total) }}
Belum ada data kunjungan pada {{ dashboardBulanLabel }}.
TOTAL {{ dashboardDetailFooter.jumlah }} Pasien {{ formatAngkaRibuan(dashboardDetailFooter.jumlahBayar) }} {{ formatAngkaRibuan(dashboardDetailFooter.zakat) }} {{ formatAngkaRibuan(dashboardDetailFooter.operator) }} {{ formatAngkaRibuan(dashboardDetailFooter.bmhp) }} — {{ formatAngkaRibuan(dashboardDetailFooter.lem) }} {{ formatAngkaRibuan(dashboardDetailFooter.fee) }} {{ formatAngkaRibuan(dashboardDetailFooter.total) }}

Card Rekapitulasi Data Bulanan

Tabel rekapitulasi data kunjungan dan keuangan per bulan — Tahun {{ dashboardRekapYearFilter }}.

Filter Khusus Kartu Ini
BULAN JUMLAH KUNJUNGAN STATUS BAYAR METODE KHITAN JUMLAH BAYAR ZAKAT OPERATOR BMHP OBAT LEM FEE TOTAL
{{ row.bulanLabel }} {{ row.jumlah }} Pasien
Bayar: {{ row.bayar }} Free: {{ row.free }}
-
{{ row.metodeTeks || '-' }} {{ formatAngkaRibuan(row.jumlahBayar) }} {{ formatAngkaRibuan(row.zakat) }} {{ formatAngkaRibuan(row.operator) }} {{ formatAngkaRibuan(row.bmhp) }} {{ row.obatTeks || '-' }} {{ formatAngkaRibuan(row.lem) }} {{ formatAngkaRibuan(row.fee) }} {{ formatAngkaRibuan(row.total) }}
TOTAL {{ dashboardRekapFooter.jumlah }} Pasien — {{ formatAngkaRibuan(dashboardRekapFooter.jumlahBayar) }} {{ formatAngkaRibuan(dashboardRekapFooter.zakat) }} {{ formatAngkaRibuan(dashboardRekapFooter.operator) }} {{ formatAngkaRibuan(dashboardRekapFooter.bmhp) }} — {{ formatAngkaRibuan(dashboardRekapFooter.lem) }} {{ formatAngkaRibuan(dashboardRekapFooter.fee) }} {{ formatAngkaRibuan(dashboardRekapFooter.total) }}

Daftar Pendaftaran Pasien Khitan

Kelola data pendaftaran, pencarian, dan verifikasi status pasien.

Menampilkan {{ filteredAdminBookings.length }} dari total {{ adminBookings.length }} data pendaftaran. Memuat data...

Tidak ada data booking ditemukan

Belum ada pasien yang sesuai dengan kata kunci pencarian atau filter jadwal yang dipilih.

{{ item.idBooking || item.id }}
Nama Ananda {{ item.namaAnanda || item.namaAnak }}
Penanggung Jawab {{ item.namaPenanggungJawab || item.namaOrtu }}
Tanggal Lahir {{ formatIndonesianDate(item.tanggalLahir) }}
Tanggal Khitan {{ formatIndonesianDate(item.tanggalKhitan || item.tglKhitan) }}
Jam & Metode {{ item.jamKhitan || '-' }} • {{ item.metodeKhitan || '-' }}
Alamat / Wilayah {{ item.kecamatan || item.kabupaten || item.alamat || '-' }}

Rekam Data Kunjungan Pasien (Sheet KUNJUNGAN)

Daftar rekam medis tindakan khitan, penanggung jawab, wilayah, dan rincian pembiayaan. Data terbaru di posisi atas.

Data Sesuai Filter
{{ filteredAdminKunjungan.length }} Pasien
Total Rekam Kunjungan
{{ adminKunjungan.length }} Pasien
Menampilkan {{ filteredAdminKunjungan.length }} dari total {{ adminKunjungan.length }} data rekam kunjungan.
Memuat data dari sheet KUNJUNGAN...
Mengambil 32 kolom database Google Sheets...
Tidak Ada Data Kunjungan

{{ kunjunganSearchQuery || kunjunganStatusBayarFilter !== 'Semua' || kunjunganMonthFilter !== 'Semua' || kunjunganYearFilter !== 'Semua' ? 'Tidak ada data kunjungan yang cocok dengan filter atau kata kunci pencarian.' : 'Belum ada data kunjungan yang tersimpan di sheet KUNJUNGAN.' }}

{{ item.register }}

{{ item.namaAnanda }}

Tgl Khitan {{ formatIndonesianDate(item.tanggalKhitan) }}
Tanggal Lahir {{ formatIndonesianDate(item.tanggalLahir) }}
Orang Tua / PJ {{ item.namaPenanggungJawab || '-' }}
Metode Khitan {{ item.metodeKhitan || '-' }}
Total Bayar Rp {{ formatAngkaRibuan(item.total) || '0' }}

SOP Pelayanan Kunjungan Khitan Damai

  • Konfirmasi kedatangan H-1 via WhatsApp kepada orang tua pasien.
  • Pastikan kondisi fisik anak prima, sudah sarapan, dan tidak demam.
  • Berikan edukasi pra-khitan yang ramah anak agar si kecil rileks dan tenang.
  • Sediakan sertifikat keberanian dan hadiah setelah tindakan selesai.

Pengaturan — {{ currentSettingSection.label }}

Konfigurasi {{ currentSettingSection.label.toLowerCase() }} sistem klinik Khitan Damai.

Informasi Profil Klinik

Preferensi Tema Tampilan Panel Admin

Pilih mode tampilan panel admin. Setelan bawaan adalah Mode Terang. Preferensi yang dipilih akan otomatis tersimpan di perangkat ini.

Manajemen Pengguna & Hak Akses (Sheet USERS)

Daftar akun pengelola klinik yang terdaftar di database spreadsheet USERS.

{{ adminUser.nama }}

{{ adminUser.role || 'Admin' }}

Username / Email: {{ adminUser.username }}

Sesi Aktif

Daftar Pengguna Database USERS ({{ filteredAdminUsers.length }})

{{ adminUsersLayout === 'baru' ? 'Layout 5 Kolom' : 'Layout Legacy 4 Kolom' }}
Sinkronisasi sheet... Terakhir diperbarui: {{ lastSyncTime }}
Ada perubahan data pengguna yang belum disimpan ke database Google Sheets. Klik "Simpan Perubahan" untuk memperbarui data permanen.

Belum ada akun di sheet USERS

Klik "Tambah Pengguna" di atas untuk menambahkan akun baru atau "Muat Ulang" untuk sinkronisasi.

Aksi No Username / Email Password Nama Lengkap Hak Akses (Role) Status
{{ u._draftIndex + 1 }}
Aktif (Anda) Aktif
Petunjuk: Anda dapat mengedit username, password, dan hak akses langsung pada tabel di atas. Klik " Tambah Pengguna" untuk menambah akun baru. Setelah selesai mengedit, pastikan menekan tombol " Simpan Perubahan" agar data tersimpan kembali ke sheet USERS.

Matriks Otorisasi Menu Side Bar

Setting SUPER ADMIN
Dashboard ALL / FULL
Booking EDITOR / FULL
Kunjungan EDITOR / FULL
Galeri EDITOR / FULL
Jumat Berkah EDITOR / FULL
Saran EDITOR / READ

Pengaturan Kuota Jam Khitan (Formulir Publik)

Atur batasan maksimal pendaftar khitan untuk setiap slot jam.

Pasien / Slot

Default fallback: {{ kuotaPerSlotConfig }} pasien per slot jam (rentang 1 - 50 pasien). Kuota per-slot spesifik dapat diatur di Sheet REFERENSI kolom JAM KHITAN (misal: 05:00 WIB - 5 atau 05:00 WIB (5)).

Cara Kerja Kuota
  • Prioritas: Kuota per-slot dari Sheet REFERENSI diutamakan (contoh: 05:00 WIB - 5 = 5 pasien). Slot tanpa suffix memakai kuota default global ini.
  • Dihitung per slot jam (mis. 05:00 WIB, 05:20 WIB, dsb) pada tanggal yang sama.
  • Status Pending, Confirmed, dan Selesai mengurangi kuota.
  • Status Batal / Dibatalkan mengembalikan kuota slot.
  • Slot penuh otomatis di-disable pada dropdown pendaftaran publik.
Pengaturan default aktif: {{ kuotaPerSlotConfig }} pasien / slot jam
Tersimpan di Sheet SETTINGS

Pengaturan Running Text (Teks Berjalan Akses Publik)

Sesuaikan teks, tipografi, warna, dan kecepatan pengumuman di web pasien.

Ada perubahan pengaturan running text yang belum disimpan ke database. Klik "Simpan Pengaturan" agar perubahan diterapkan.
Preview Langsung (Sebelum Disimpan) Tampilan persis seperti yang dilihat pasien
INFO
{{ settingsDraft.text || 'Teks berjalan masih kosong...' }}
Running Text DISEMBUNYIKAN — Tidak akan tampil pada akses publik pasien.
{{ (settingsDraft.text || '').length }}/300

Teks akan bergerak dari kanan ke kiri secara kontinu.

Tersedia 6 font Google Fonts modern.

{{ settingsDraft.fontSize }} px
8px 28px

Bawaan standar: 12px (ringkas & mobile-friendly).

{{ settingsDraft.speed }} detik / siklus
Cepat (5s) Lambat (60s)

Durasi 1 putaran penuh (bawaan: 22 detik).

Status Tayang Tampil di Halaman Publik Disembunyikan dari Publik

Pengaturan Hero Card / Featuring Card (Beranda Publik)

Sesuaikan teks badge (span), judul utama (h2), dan narasi deskripsi (p) pada kartu beranda pasien.

Ada perubahan teks Hero Card yang belum disimpan ke database. Klik "Simpan Pengaturan" agar perubahan langsung diterapkan pada beranda pasien.
Preview Langsung (Sebelum Disimpan) Tampilan persis kartu beranda publik yang dilihat pengunjung

Daftar Sekarang (Tombol Publik)
{{ (heroCardDraft.badgeText || '').length }}/100

Elemen <span> kecil berlatar transparan di posisi paling atas kartu. Digunakan untuk badge status atau kategori layanan.

{{ (heroCardDraft.titleText || '').length }}/200

Elemen <h2 class="text-xl font-extrabold"> sebagai tajuk utama/headline kartu. Berisi pesan paling mencolok untuk calon pasien.

{{ (heroCardDraft.descriptionText || '').length }}/800

Elemen <p class="text-xs text-teal-50"> paragraf narasi di bawah judul yang menceritakan nilai dan kehangatan pengalaman khitan di klinik.

Pengaturan Foto Slideshow (Beranda)

Maksimal {{ SLIDESHOW_MAX }} foto • Maksimal {{ SLIDESHOW_MAX_MB }}MB per foto • File tersimpan di Google Drive

Ada perubahan daftar/urutan foto slideshow yang belum disimpan ke database. Klik "Simpan Foto" agar perubahan diterapkan permanen ke Beranda.
Slot Terpakai: {{ slideshowDraft.length }} / {{ SLIDESHOW_MAX }} Foto
Daftar Urutan Foto (Geser urutan dengan tombol panah): Foto paling kiri (#1) tampil pertama

Belum ada foto yang dipilih. Halaman publik akan otomatis menampilkan 4 foto bawaan klinik.

#{{ sIdx + 1 }}
{{ slide.alt || ('Slide #' + (sIdx + 1)) }}

Foto Metode Beranda (6 Slot)

Kelola 6 kartu metode khitan di halaman Beranda. Slot kosong menampilkan placeholder. File tersimpan di Google Drive.

Ada perubahan foto/keterangan kartu metode yang belum disimpan ke database. Klik "Simpan Metode" agar perubahan diterapkan permanen ke Beranda.
{{ filledMetodeDraftCount }} / {{ METODE_SLOTS }} Slot Terisi Grid 3 kolom x 2 baris (Slot #1 – #6)
Slot #{{ mIdx + 1 }}

Foto Card Program (Beranda Publik)

Kelola foto pada card Program di halaman Beranda. File disimpan ke Google Drive. Maksimal {{ PROGRAM_MAX_MB }}MB.

Ada perubahan foto/keterangan card Program yang belum disimpan ke database. Klik "Simpan Foto Program" agar perubahan diterapkan permanen ke Beranda.
Status Foto: Foto TerpasangKosong (Card disembunyikan di publik)

Testimoni Publik (Google Review)

Kelola maksimal {{ TESTIMONI_MAX }} ulasan testimoni. Data paling atas merupakan ulasan terbaru. Foto profil disimpan ke Google Drive.

Ada perubahan draf testimoni yang belum disimpan ke database. Klik "Simpan Testimoni" agar tampil realtime di publik.
Total Testimoni: {{ (testimoniDraft || []).length }} / {{ TESTIMONI_MAX }} {{ (testimoniDraft || []).length === 0 ? 'Menu publik disembunyikan jika kosong' : 'Foto maks 2MB' }}
Belum Ada Data Testimoni

Menu publik Testimoni saat ini disembunyikan. Klik tombol "+ Tambah Testimoni" di atas untuk menambahkan ulasan orang tua atau pasien.

{{ tIdx + 1 }} Ulasan #{{ tIdx + 1 }} Terbaru (Posisi Teratas)
Foto Profil
•
Maks. 2MB
Bintang:
{{ item.rating || 5 }} / 5 Bintang
{{ (item.text || '').length }} / {{ TESTIMONI_TEXT_MAX }}
↗ Buka Link

Tanya Jawab Seputar Khitan (FAQ Beranda)

Kelola hingga {{ FAQ_MAX }} pertanyaan dan jawaban untuk mengedukasi orang tua pada halaman Beranda publik.

Ada perubahan draf FAQ yang belum disimpan ke database. Klik "Simpan FAQ" agar langsung diterapkan di Beranda.
Total FAQ: {{ (faqDraft || []).length }} / {{ FAQ_MAX }} {{ (faqDraft || []).length === 0 ? 'Bagian FAQ di Beranda akan disembunyikan jika kosong' : 'Gunakan toggle untuk mengaktifkan/menonaktifkan pertanyaan' }}
Belum Ada Data Tanya Jawab

Bagian FAQ di Beranda saat ini disembunyikan. Klik tombol "+ Tambah FAQ" di atas untuk menambahkan pertanyaan seputar khitan.

#{{ fIdx + 1 }}
|
{{ (item.question || '').length }} / {{ FAQ_QUESTION_MAX }}
{{ (item.answer || '').length }} / {{ FAQ_ANSWER_MAX }}

Koneksi Database & Server

Database Engine: Google Sheets API (REST)
Spreadsheet ID: 1j4oUNDspniMA-rEHrRis6RprLIip63UTCluqeU2YiuA
Sheets Terhubung: BOOKING, USERS
Status Server GAS: 200 OK — Siap Melayani Pendaftaran

Sinkronisasi Spreadsheet & Cache History

Optimasi sinkronisasi langsung dengan database Google Sheets, manajemen snapshot memori lokal, inspeksi data, dan pemulihan snapshot riwayat.

{{ autoSyncInterval > 0 ? (isAutoSyncPaused ? 'Auto-Sync Dijeda' : ('Auto-Sync ' + Math.round(autoSyncInterval/60000) + ' Menit')) : 'Auto-Sync Nonaktif' }} {{ formattedNextSyncCountdown }} {{ USE_MOCK ? 'Mode Mock Aktif' : 'Spreadsheet Terkoneksi' }}
Penggunaan Memori Cache Lokal: {{ formattedTotalCacheSize }} (Batas kuota browser ~5 MB)
{{ cacheSummary.totalDatasetsCached }} dari 8 Dataset Tersimpan • {{ syncHistory.length }} Log Aktivitas • {{ cacheSnapshotHistory.length }} Riwayat Snapshot
Hit-Rate Cache
{{ cacheHitRatePercent }}% Server GAS
Rata Payload
{{ avgPayloadTransferred }} per transfer
Bandwidth Hemat
{{ bandwidthSavingsEstimate }} Delta Sync
Versi Snapshot
{{ cacheSnapshotHistory.length }}/50 retensi lokal
Matriks Dataset Cache Lokal (8 Sumber Data)
Klik Snapshot untuk inspeksi isi data
{{ item.name }} {{ item.exists ? 'Tersimpan' : 'Kosong' }}
{{ item.countText }} {{ item.sizeText }}
{{ item.desc }} {{ item.relativeAge }}
Respon Rata-rata: {{ avgSyncDurationMs }}ms Sukses: {{ syncSuccessRate }}%
{{ syncLogSearch || syncLogFilter !== 'semua' ? 'Tidak ada log yang cocok dengan filter / pencarian.' : 'Belum ada riwayat sinkronisasi tercatat.' }}
{{ item.type }} Dilewati Gagal {{ item.durationMs }}ms ↓ {{ formatByteSize(item.payloadBytes) }} {{ item.deltaStatus }} ⚡ {{ item.cacheHits }}/{{ (item.cacheHits + (item.cacheMisses || 0)) }} Hit {{ item.message }}
{{ item.time }}
Fitur Pemulihan Snapshot (Rollback): Setiap kali data berubah atau disinkronkan, sistem otomatis membuat versi cadangan snapshot lokal. Jika spreadsheet sedang bermasalah atau Anda tidak sengaja mengubah data, klik "Pulihkan" pada snapshot terkait.
Belum ada versi snapshot data tersimpan. Lakukan sinkronisasi atau pembaruan data untuk mencatat riwayat snapshot.
{{ snap.target }} {{ snap.trigger }} ({{ snap.count }} data) {{ formatByteSize(snap.sizeBytes) }}
Versi: {{ snap.date }} — {{ snap.time }}
Audit Trail Sheet HISTORY: Mencatat seluruh mutasi data (penambahan, perubahan, dan penghapusan) langsung ke sheet HISTORY di Spreadsheet Google Sheets. Riwayat ini tersimpan permanen di cloud lintas perangkat, dengan batas retensi 5.000 baris.
Aksi:
Menghubungi spreadsheet & memuat riwayat perubahan...
{{ serverSyncHistorySearch || serverSyncHistoryFilterDataset !== 'SEMUA' || serverSyncHistoryFilterAksi !== 'SEMUA' ? 'Tidak ada riwayat yang cocok dengan filter / pencarian.' : 'Belum ada riwayat perubahan data tercatat di sheet HISTORY.' }}
{{ item.aksi }} {{ item.dataset }} {{ item.idRecord }}

{{ item.ringkasan }}

{{ item.user || 'System' }} • {{ item.waktu }} • {{ item.sumber }}
Menampilkan {{ serverSyncHistory.length }} dari {{ serverSyncHistoryTotal }} catatan riwayat

Backup Seluruh Database Google Drive Cloud

Buat salinan cadangan instan seluruh database Google Sheets (BOOKING, USERS, KUNJUNGAN, SETTINGS, dll.) langsung ke Google Drive.

Format Nama File
YYYY-MM-DD_KhitanDamai
Contoh: {{ todayYmdStr }}_KhitanDamai
Target Folder Google Drive
1KkUribvlZ0yvVP2CLIXVkXujJBh4TGTO
Folder Terverifikasi Aktif
Cakupan Data Cadangan
Seluruh Sheet (Full Spreadsheet)
Termasuk Booking, Users, Kunjungan & Setting
Mulai Proses Pencadangan Data

Sistem akan menduplikasi spreadsheet utama secara otomatis ke folder target tanpa mengganggu operasional sistem.

Backup Database Berhasil Dibuat!
{{ databaseBackupSuccess.timestamp }}

File salinan spreadsheet telah disimpan ke folder Google Drive Anda dengan nama {{ databaseBackupSuccess.fileName }}.

Gagal Membuat Backup: {{ databaseBackupError }}
Riwayat File Backup di Folder Google Drive
Memuat riwayat file backup dari Google Drive...

Belum Ada File Backup

Klik tombol "Mulai Backup Sekarang" di atas untuk membuat salinan cadangan pertama Anda.

No Nama File Backup Tanggal Dibuat Ukuran Aksi
{{ idx + 1 }}
{{ b.name }} ID: {{ b.id }}
{{ b.created }} {{ formatBackupFileSize(b.size) }} Buka

Dokumentasi & Galeri Kegiatan

Kelola data dokumentasi dan foto fasilitas langsung dari sheet GALERI.

Terakhir diperbarui: {{ lastSyncTime }}
Sortir:
Menampilkan {{ filteredAdminGallery.length }} dari {{ adminGallery.length }} data

Memuat data dari sheet GALERI...

Belum ada data di sheet GALERI

Klik tombol "Tambah Galeri" di atas untuk menambahkan foto dokumentasi baru.

Data tidak ditemukan

Tidak ada galeri dengan nama "{{ adminGallerySearch }}".

Aksi ID NAMA FOTO
{{ item.id }} {{ item.nama }}
Tidak ada foto

Data Masukan & Kritik (Sheet SARAN)

Daftar aspirasi, saran, dan kritik yang dikirimkan oleh pasien secara publik.

Menampilkan {{ filteredAdminSaran.length }} dari {{ adminSaran.length }} data

Memuat data saran dari sheet SARAN...

Mengambil data dari Google Sheets...

Belum Ada Data di Sheet SARAN

Belum ada saran & kritik yang dikirimkan oleh pasien melalui form publik.

Pencarian Tidak Ditemukan

Tidak ada saran yang cocok dengan kata kunci "{{ adminSaranSearch }}".

Aksi ID TANGGAL JAM NAMA NOMOR HP EMAIL SARAN
{{ item.id }} {{ item.tanggal }} {{ item.jam }} {{ item.nama }} {{ item.noHp }} {{ item.email }} {{ item.saran }}

Program Khitan Jumat Berkah

Tabel data pendaftar & penerima subsidi khitan berkah (Sheet JUMAT BERKAH).

Menampilkan {{ filteredAdminJumatBerkah.length }} dari {{ adminJumatBerkah.length }} data

Memuat data Sheet JUMAT BERKAH...

Mengambil data sinkronisasi spreadsheet Khitan Damai

Belum ada data pendaftar Jumat Berkah.

Klik tombol "Tambah Data" untuk menginput pendaftar baru atau menyalin data dari Sheet Kunjungan menggunakan nomor REGISTER.

{{ item.register }} {{ item.tanggalKhitan }}
{{ item.namaAnanda }}
{{ item.tempatLahir }}, {{ item.tanggalLahir }}
PJ: {{ item.namaPenanggungJawab }} ({{ item.hubunganKeluarga || '-' }})
Usia PJ: {{ item.usiaPenanggungJawab }} Tahun
Pekerjaan: {{ item.pekerjaan }}
NIK: {{ item.nomorIdentitas }}
Alamat: {{ item.alamat }}, {{ item.kelurahan }}, {{ item.kecamatan }}, {{ item.kabupaten }}

Pendaftaran Berhasil!

Terima kasih telah mempercayakan khitan jagoan Anda bersama Khitan Damai. Tim kami akan segera mengonfirmasi jadwal Anda.

Kode: {{ lastBookingData?.id }}
Nama: {{ lastBookingData?.namaAnak }}
Tanggal: {{ formatIndonesianDate(lastBookingData?.tglKhitan || lastBookingData?.tanggalKhitan) }}
{{ selectedImageIndex + 1 }} / {{ activeGalleryList.length }}

{{ selectedImage.desc }}

{{ currentKeunggulanIndex + 1 }} / {{ keunggulanSlides.length }}

{{ keunggulanSlides[currentKeunggulanIndex].alt }}

{{ selectedMetodeIndex + 1 }} / {{ activeMetodeList.length }}

{{ activeMetodeList[selectedMetodeIndex].alt }}