2224 lines
115 KiB
PHP
2224 lines
115 KiB
PHP
<?php $__env->startSection('title', 'New Mitigation'); ?>
|
||
|
||
<?php $__env->startSection('content'); ?>
|
||
<?php
|
||
$user = Auth::user();
|
||
#scope = $user->getScope();
|
||
?>
|
||
|
||
<div class="card shadow-sm">
|
||
<div class="card-header d-flex justify-content-between align-items-center">
|
||
<h3 class="mb-0 font-weight-bold" style="color: #278074; font-size: 20px;">MITIGASI</h3>
|
||
</div>
|
||
</div>
|
||
|
||
<br/><br/>
|
||
<form onsubmit="return false;">
|
||
<?php echo csrf_field(); ?>
|
||
|
||
<div class="ml-1 mt-4 d-flex justify-content-between align-items-center">
|
||
<p style="font-size: 15px; font-weight: 400; line-height: 100%; letter-spacing: 0%;">Langkah <b>1</b></p>
|
||
</div>
|
||
|
||
<div id="accordion" class="accordion">
|
||
<!-- Section 1 -->
|
||
<div class="card" style="border-bottom: 1px solid #C3C3C3;">
|
||
<div class="card-header" id="heading1">
|
||
<h5 class="mb-0">
|
||
<button class="btn d-flex justify-content-between w-100 align-items-center form-title-accordion" data-toggle="collapse" data-target="#collapse1" aria-expanded="true">
|
||
INFORMASI UMUM
|
||
<span class="arrow mr-2"><i class="ti ti-angle-right"></i></span>
|
||
</button>
|
||
</h5>
|
||
</div>
|
||
|
||
<div id="collapse1" class="accordion-collapse collapse show" data-parent="#accordion">
|
||
<div class="card-body">
|
||
<p class="text-muted" style="font-size: 12px;">Silakan memilih jenis dan sektor pelaporan kegiatan mitigasi yang hendak dilaporkan.</p>
|
||
|
||
<div class="form-check">
|
||
<input class="form-check-input radio-button" type="radio" name="laporan" value="laporan" id="laporan" required
|
||
<?php echo e((isset($sessionData['tipe_laporan']) && $sessionData['tipe_laporan'] === 'laporan') ? 'checked' : (!isset($sessionData['tipe_laporan']) ? 'checked' : '')); ?>>
|
||
<label class="form-check-label required-label" for="laporan">
|
||
Aksi Carbon Daerah
|
||
</label>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="required-label bold" for="tipe_kegiatan">
|
||
Tipe Kegiatan
|
||
</label>
|
||
<select class="form-control select-button" name="tipe_kegiatan" required data-placeholder="Pilih tipe kegiatan">
|
||
<option value="inti" <?php echo e((isset($sessionData['tipe_kegiatan']) && $sessionData['tipe_kegiatan'] === 'inti') ? 'selected' : ''); ?>>Inti</option>
|
||
<option value="pendukung" <?php echo e((isset($sessionData['tipe_kegiatan']) && $sessionData['tipe_kegiatan'] === 'pendukung') ? 'selected' : ''); ?>>Pendukung</option>
|
||
<option value="prasyarat" <?php echo e((isset($sessionData['tipe_kegiatan']) && $sessionData['tipe_kegiatan'] === 'prasyarat') ? 'selected' : ''); ?>>Prasyarat</option>
|
||
</select>
|
||
<p class="text-muted mt-1" style="font-size: 12px">Pilih tipe kegiatan Inti, Pendukung atau Prasyarat.</p>
|
||
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="required-label bold" for="tahun_kegiatan">
|
||
Tahun Kegiatan
|
||
</label>
|
||
<select class="form-control select-button" name="tahun_kegiatan" required>
|
||
<?php $__currentLoopData = $years; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $year): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
||
<option value="<?php echo e($year); ?>" <?php echo e((isset($sessionData['tahun_kegiatan']) && $sessionData['tahun_kegiatan'] == $year) ? 'selected' : ($year == $currentYear ? 'selected' : '')); ?>>
|
||
<?php echo e($year); ?>
|
||
|
||
</option>
|
||
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="required-label bold" for="sektor">
|
||
Sektor
|
||
</label>
|
||
<select class="form-control select-button select2" name="sektor" id="sektor-dropdown" required data-placeholder="Pilih Sektor">
|
||
<option value="">Pilih Sektor</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<!-- TODO : Get Data from Database -->
|
||
<label class="required-label bold" for="sub_sektor">
|
||
Sub-Sektor
|
||
</label>
|
||
<select class="form-control select-button select2" name="sub_sektor" id="subsektor-dropdown" required data-placeholder="Pilih Sub-Sektor">
|
||
<option value="">Pilih Sub-Sektor</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="required-label bold" for="kategori_perhitungan">
|
||
Aktivitas
|
||
</label>
|
||
<select class="form-control select-button select2" name="kategori_perhitungan" id="perhitungan-dropdown" required data-placeholder="Pilih Kategori">
|
||
<option value="">Pilih Kategori</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group mt-4" style="display: none;" id="sub_activity">
|
||
<label class="required-label bold" for="kategori_sub_aktivitas">
|
||
Sub-Aktivitas
|
||
</label>
|
||
<select class="form-control select-button select2" name="kategori_sub_aktivitas" id="subactivity-dropdown" required data-placeholder="Pilih Sub Kategori">
|
||
<option value="">Pilih Sub Kategori</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="mt-4 text-right">
|
||
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse2">
|
||
Selanjutnya
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Section 2 -->
|
||
<div class="card" style="border-bottom: 1px solid #C3C3C3;">
|
||
<div class="card-header" id="heading2">
|
||
<h5 class="mb-0">
|
||
<button class="btn d-flex justify-content-between w-100 align-items-center collapsed form-title-accordion" data-toggle="collapse" data-target="#collapse2">
|
||
DATA UMUM KEGIATAN MITIGASI
|
||
<span class="arrow mr-2"><i class="ti ti-angle-right"></i></span>
|
||
</button>
|
||
</h5>
|
||
</div>
|
||
<div id="collapse2" class="accordion-collapse collapse" data-parent="#accordion">
|
||
<div class="card-body">
|
||
<p class="text-muted" style="font-size: 12px;">
|
||
Silakan mengisi informasi data umum kegiatan mitigasi sesuai dengan informasi yang ada pada dokumen pelaporan daerah (misal LAKIP/LKPJ).
|
||
</p>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="required-label bold" for="nama_kegiatan">
|
||
Nama Kegiatan
|
||
</label>
|
||
<input
|
||
type="text"
|
||
class="form-control"
|
||
name="nama_kegiatan"
|
||
placeholder="Masukkan Nama Kegiatan"
|
||
required
|
||
value="<?php echo e(isset($sessionData['nama_kegiatan']) ? $sessionData['nama_kegiatan'] : ''); ?>"
|
||
>
|
||
<p class="text-muted mt-1" style="font-size: 12px;">
|
||
Nama kegiatan berdasarkan dokumen laporan daerah (misal LAKIP/LKPJ)
|
||
</p>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="required-label bold" for="informasi_lokasi_kegiatan">
|
||
Informasi lokasi dan tingkat kedetailan data kegiatan
|
||
</label>
|
||
<select class="form-control select-button" name="informasi_lokasi_kegiatan" required>
|
||
<option value="">Pilih Jenis Kegiatan</option>
|
||
<option value="Kegiatan PRK di 1 lokasi kegiatan" <?php echo e((isset($sessionData['informasi_lokasi_kegiatan']) && $sessionData['informasi_lokasi_kegiatan'] === 'Kegiatan PRK di 1 lokasi kegiatan') ? 'selected' : ''); ?>>Kegiatan PRK di 1 lokasi kegiatan</option>
|
||
<option value="Kegiatan PRK di multi lokasi - data teknis agregat" <?php echo e((isset($sessionData['informasi_lokasi_kegiatan']) && $sessionData['informasi_lokasi_kegiatan'] === 'Kegiatan PRK di multi lokasi - data teknis agregat') ? 'selected' : ''); ?>>Kegiatan PRK di multi lokasi - data teknis agregat</option>
|
||
<option value="Kegiatan PRK di multi lokasi - data detail per lokasi" <?php echo e((isset($sessionData['informasi_lokasi_kegiatan']) && $sessionData['informasi_lokasi_kegiatan'] === 'Kegiatan PRK di multi lokasi - data detail per lokasi') ? 'selected' : ''); ?>>Kegiatan PRK di multi lokasi - data detail per lokasi</option>
|
||
<option value="Lokasi tambahan kegiatan" <?php echo e((isset($sessionData['informasi_lokasi_kegiatan']) && $sessionData['informasi_lokasi_kegiatan'] === 'Lokasi tambahan kegiatan') ? 'selected' : ''); ?>>Lokasi tambahan kegiatan</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="required-label bold" for="jenis_kegiatan">
|
||
Jenis Kegiatan
|
||
</label>
|
||
<div class="form-check">
|
||
<input
|
||
class="form-check-input radio-button"
|
||
type="radio"
|
||
name="jenis_kegiatan"
|
||
value="lokal"
|
||
id="jenis_lokal"
|
||
required
|
||
<?php echo e((isset($sessionData['jenis_kegiatan']) && $sessionData['jenis_kegiatan'] === 'lokal') ? 'checked' : ''); ?>
|
||
|
||
>
|
||
<label class="form-check-label radio-label" for="jenis_lokal">
|
||
Dampak penurunan emisi hanya di tahun berjalan
|
||
</label>
|
||
</div>
|
||
<div class="form-check mt-1">
|
||
<input
|
||
class="form-check-input radio-button"
|
||
type="radio"
|
||
name="jenis_kegiatan"
|
||
value="berkelanjutan"
|
||
id="jenis_berkelanjutan"
|
||
<?php echo e((isset($sessionData['jenis_kegiatan']) && $sessionData['jenis_kegiatan'] === 'berkelanjutan') ? 'checked' : ''); ?>
|
||
|
||
>
|
||
<label class="form-check-label radio-label" for="jenis_berkelanjutan">
|
||
Dampak penurunan emisi juga terjadi di tahun berikutnya
|
||
</label>
|
||
</div>
|
||
<p class="text-muted mt-1" style="font-size: 12px;">
|
||
Opsional. Pilih jenis kegiatan berdasarkan waktu pengukuran emisi.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="pelaksana_kegiatan">
|
||
Pelaksana Kegiatan
|
||
</label>
|
||
<input
|
||
type="text"
|
||
class="form-control"
|
||
name="pelaksana_kegiatan"
|
||
id="pelaksana_kegiatan"
|
||
placeholder="Masukkan Nama Pelaksana Kegiatan"
|
||
value="<?php echo e(isset($sessionData['pelaksana_kegiatan']) ? $sessionData['pelaksana_kegiatan'] : ''); ?>"
|
||
>
|
||
<p class="text-muted mt-1" style="font-size: 12px;">
|
||
Nama pelaksana/penanggung jawab kegiatan. Jika nama pelaksana/penanggung jawab kegiatan belum ada pada pilihan silakan tulis nama pada kolom catatan dan hubungi ADMIN Provinsi Anda untuk menambahkan nama tersebut.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="pelaksana_kegiatan_rad">
|
||
Tautan dengan aksi rendah karbon daerah
|
||
</label>
|
||
<select
|
||
class="form-control select-button select2"
|
||
name="pelaksana_kegiatan_rad"
|
||
id="rad-dropdown"
|
||
data-placeholder="Tambah kegiatan di luar RAD"
|
||
>
|
||
<option value="" <?php echo e((!isset($sessionData['pelaksana_kegiatan_rad']) || $sessionData['pelaksana_kegiatan_rad'] == '') ? 'selected' : ''); ?>>Tambah kegiatan di luar RAD</option>
|
||
|
||
<?php if(isset($sessionData['pelaksana_kegiatan_rad']) && $sessionData['pelaksana_kegiatan_rad'] != ''): ?>
|
||
<option value="<?php echo e($sessionData['pelaksana_kegiatan_rad']); ?>" selected><?php echo e($sessionData['pelaksana_kegiatan_rad']); ?></option>
|
||
<?php endif; ?>
|
||
</select>
|
||
<p class="text-muted mt-1" style="font-size: 12px;">
|
||
Pilih tautan kegiatan aksi mitgasi dengan Rencana Aksi Daerah.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="nomenklatur_kemendagri">
|
||
Tautan Dengan Nomenklatur Kementerian Dalam Negeri
|
||
</label>
|
||
<input
|
||
type="text"
|
||
class="form-control"
|
||
name="nomenklatur_kemendagri"
|
||
value="<?php echo e(isset($sessionData['nomenklatur_kemendagri']) ? $sessionData['nomenklatur_kemendagri'] : ''); ?>"
|
||
/>
|
||
</div>
|
||
|
||
<div class="row">
|
||
<div class="form-group col-md-6">
|
||
<label class="required-label bold" for="target">
|
||
Target
|
||
</label>
|
||
<input
|
||
type="text"
|
||
class="form-control"
|
||
name="target"
|
||
id="target"
|
||
required
|
||
value="<?php echo e(isset($sessionData['target']) ? $sessionData['target'] : ''); ?>"
|
||
>
|
||
</div>
|
||
<div class="form-group col-md-6">
|
||
<label class="required-label bold" for="satuan">
|
||
Satuan
|
||
</label>
|
||
<input
|
||
type="text"
|
||
class="form-control"
|
||
name="satuan"
|
||
id="satuan"
|
||
required
|
||
value="<?php echo e(isset($sessionData['satuan']) ? $sessionData['satuan'] : ''); ?>"
|
||
>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="realisasi">
|
||
Realisasi
|
||
</label>
|
||
<input
|
||
type="text"
|
||
class="form-control"
|
||
name="realisasi"
|
||
id="realisasi"
|
||
value="<?php echo e(isset($sessionData['realisasi']) ? $sessionData['realisasi'] : ''); ?>"
|
||
>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="sdg">
|
||
Kaitan terhadap SDG
|
||
</label>
|
||
<select
|
||
class="form-control select2-checkbox"
|
||
name="sdg[]"
|
||
id="sdg"
|
||
data-placeholder="Pilih kaitan SDG"
|
||
multiple
|
||
>
|
||
<option></option>
|
||
<?php
|
||
// Ambil pilihan tersimpan
|
||
$selectedSdg = isset($sessionData['sdg']) ? (array)$sessionData['sdg'] : [];
|
||
|
||
// Peta alias -> label kanonikal (17 SDGs)
|
||
$sdgCanonical = [
|
||
'no poverty' => 'No Poverty',
|
||
'zero hunger' => 'Zero Hunger',
|
||
'good health and well-being' => 'Good Health and Well-Being',
|
||
'good health and well being' => 'Good Health and Well-Being', // alias
|
||
'quality education' => 'Quality Education',
|
||
'gender equality' => 'Gender Equality',
|
||
'clean water and sanitation' => 'Clean Water and Sanitation',
|
||
'affordable and clean energy' => 'Affordable and Clean Energy',
|
||
'decent work and economic growth' => 'Decent Work and Economic Growth',
|
||
'industry, innovation and infrastructure' => 'Industry, Innovation and Infrastructure',
|
||
'reduced inequalities' => 'Reduced Inequalities',
|
||
'sustainable cities and communities' => 'Sustainable Cities and Communities',
|
||
'sustainable cities and economies' => 'Sustainable Cities and Communities', // alias
|
||
'responsible consumption and production' => 'Responsible Consumption and Production',
|
||
'climate action' => 'Climate Action',
|
||
'life below water' => 'Life Below Water',
|
||
'life on land' => 'Life on Land',
|
||
'peace, justice and strong institutions' => 'Peace, Justice and Strong Institutions',
|
||
'partnerships for the goals' => 'Partnerships for the Goals',
|
||
'partnership for the goals' => 'Partnerships for the Goals', // alias
|
||
];
|
||
|
||
// Normalizer
|
||
$normalize = function ($s) {
|
||
$s = strtolower(trim((string)$s));
|
||
$s = str_replace(['–','—'], '-', $s);
|
||
return preg_replace('/\s+/', ' ', $s);
|
||
};
|
||
|
||
// Set terpilih (support alias & ejaan lama)
|
||
$selectedSet = [];
|
||
foreach ($selectedSdg as $v) {
|
||
$norm = $normalize($v);
|
||
$canon = $sdgCanonical[$norm] ?? $v;
|
||
$selectedSet[$normalize($canon)] = true;
|
||
}
|
||
|
||
// Susun 17 label unik dalam urutan resmi
|
||
$ordered = [
|
||
'No Poverty',
|
||
'Zero Hunger',
|
||
'Good Health and Well-Being',
|
||
'Quality Education',
|
||
'Gender Equality',
|
||
'Clean Water and Sanitation',
|
||
'Affordable and Clean Energy',
|
||
'Decent Work and Economic Growth',
|
||
'Industry, Innovation and Infrastructure',
|
||
'Reduced Inequalities',
|
||
'Sustainable Cities and Communities',
|
||
'Responsible Consumption and Production',
|
||
'Climate Action',
|
||
'Life Below Water',
|
||
'Life on Land',
|
||
'Peace, Justice and Strong Institutions',
|
||
'Partnerships for the Goals',
|
||
];
|
||
?>
|
||
|
||
<?php $__currentLoopData = $ordered; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $label): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
||
<?php $norm = $normalize($label); ?>
|
||
<option value="<?php echo e($label); ?>" <?php echo e(isset($selectedSet[$norm]) ? 'selected' : ''); ?>>
|
||
<?php echo e($label); ?>
|
||
|
||
</option>
|
||
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
|
||
</select>
|
||
</div>
|
||
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="catatan">
|
||
Catatan Tambahan Kegiatan
|
||
</label>
|
||
<textarea
|
||
class="form-control"
|
||
name="catatan"
|
||
id="catatan"
|
||
rows="3"
|
||
placeholder="Masukkan tujuan aksi"
|
||
><?php echo e(isset($sessionData['catatan']) ? $sessionData['catatan'] : ''); ?></textarea>
|
||
</div>
|
||
|
||
<div class="mt-4 text-right">
|
||
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse3">
|
||
Selanjutnya
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Section 3 -->
|
||
<div class="card" style="border-bottom: 1px solid #C3C3C3;">
|
||
<div class="card-header" id="heading3">
|
||
<h5 class="mb-0">
|
||
<button class="btn d-flex justify-content-between w-100 align-items-center collapsed form-title-accordion" data-toggle="collapse" data-target="#collapse3">
|
||
INFORMASI ALOKASI/REALISASI ANGGARAN
|
||
<span class="arrow mr-2"><i class="ti ti-angle-right"></i></span>
|
||
</button>
|
||
</h5>
|
||
</div>
|
||
|
||
<div id="collapse3" class="collapse" data-parent="#accordion">
|
||
<div class="card-body">
|
||
<div class="row">
|
||
<div class="col-md-6">
|
||
<p class="text-muted" style="font-size: 14px;">1.3.1 INFORMASI ALOKASI ANGGARAN</p>
|
||
<p class="text-muted mt-4" style="font-size: 12px;">Silakan tambahkan informasi alokasi anggaran kegiatan dalam rupiah.</p>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="alokasi_apbn">
|
||
APBN
|
||
</label>
|
||
<input type="text" class="form-control" name="alokasi_apbn" id="alokasi_apbn" value="<?php echo e(isset($sessionData['alokasi_apbn']) ? $sessionData['alokasi_apbn'] : ''); ?>">
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="alokasi_apbd">
|
||
APBD
|
||
</label>
|
||
<input type="text" class="form-control" name="alokasi_apbd" id="alokasi_apbd" value="<?php echo e(isset($sessionData['alokasi_apbd']) ? $sessionData['alokasi_apbd'] : ''); ?>">
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="alokasi_swasta">
|
||
SWASTA
|
||
</label>
|
||
<input type="text" class="form-control" name="alokasi_swasta" id="alokasi_swasta" value="<?php echo e(isset($sessionData['alokasi_swasta']) ? $sessionData['alokasi_swasta'] : ''); ?>">
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="alokasi_sumber_dana_lain">
|
||
LAIN-LAIN
|
||
</label>
|
||
<input type="text" class="form-control" name="alokasi_sumber_dana_lain" id="alokasi_sumber_dana_lain" value="<?php echo e(isset($sessionData['alokasi_sumber_dana_lain']) ? $sessionData['alokasi_sumber_dana_lain'] : ''); ?>">
|
||
</div>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<p class="text-muted" style="font-size: 14px;">1.3.2 INFORMASI REALISASI ANGGARAN</p>
|
||
<p class="text-muted mt-4" style="font-size: 12px;">Silakan tambahkan informasi realisasi anggaran kegiatan dalam rupiah.</p>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="realisasi_apbn">
|
||
APBN
|
||
</label>
|
||
<input type="text" class="form-control" name="realisasi_apbn" id="realisasi_apbn" value="<?php echo e(isset($sessionData['realisasi_apbn']) ? $sessionData['realisasi_apbn'] : ''); ?>">
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="realisasi_apbd">
|
||
APBD
|
||
</label>
|
||
<input type="text" class="form-control" name="realisasi_apbd" id="realisasi_apbd" value="<?php echo e(isset($sessionData['realisasi_apbd']) ? $sessionData['realisasi_apbd'] : ''); ?>">
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="realisasi_swasta">
|
||
SWASTA
|
||
</label>
|
||
<input type="text" class="form-control" name="realisasi_swasta" id="realisasi_swasta" value="<?php echo e(isset($sessionData['realisasi_swasta']) ? $sessionData['realisasi_swasta'] : ''); ?>">
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="realisasi_sumber_dana_lain">
|
||
LAIN-LAIN
|
||
</label>
|
||
<input type="text" class="form-control" name="realisasi_sumber_dana_lain" id="realisasi_sumber_dana_lain" value="<?php echo e(isset($sessionData['realisasi_sumber_dana_lain']) ? $sessionData['realisasi_sumber_dana_lain'] : ''); ?>">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mt-4 text-right">
|
||
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse4">
|
||
Selanjutnya
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ml-1 mt-4 d-flex justify-content-between align-items-center">
|
||
<p style="font-size: 15px; font-weight: 400; line-height: 100%; letter-spacing: 0%;">Langkah <b>2</b></p>
|
||
</div>
|
||
|
||
<div id="accordion-2" class="accordion">
|
||
<div class="card">
|
||
<div class="card-header" id="heading4">
|
||
<h5 class="mb-0">
|
||
<button class="btn d-flex justify-content-between w-100 align-items-center form-title-accordion collapsed" data-toggle="collapse" data-target="#collapse4" aria-expanded="false">
|
||
FORM SUMBER DATA
|
||
<span class="arrow mr-2"><i class="ti ti-angle-right"></i></span>
|
||
</button>
|
||
</h5>
|
||
</div>
|
||
|
||
<div id="collapse4" class="collapse" data-parent="#accordion-2">
|
||
<div class="card-body">
|
||
<p class="text-muted ml-4" style="font-size: 12px;">
|
||
Silakan tambahkan informasi sumber data. Sumber data yang dapat ditambahkan jika pengguna mempunyai softcopy atau link ke tautan terkait.<br/>
|
||
Langkah ini dapat dilewatkan jika tidak mempunyai dokumen terkait.<br/>
|
||
Klik Tambah Sumber Data untuk menambahkan lebih dari satu sumber data.
|
||
</p>
|
||
|
||
<div id="sumberDataContainer">
|
||
<?php
|
||
$sumberDataList = session('kegiatan_mitigasi.sumber_data', []);
|
||
?>
|
||
|
||
<?php if(!empty($sumberDataList)): ?>
|
||
<?php $__currentLoopData = $sumberDataList; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $index => $sumber): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
||
<?php if (isset($component)) { $__componentOriginalab9b13a355f3311ef60aa58757a1b14f = $component; } ?>
|
||
<?php if (isset($attributes)) { $__attributesOriginalab9b13a355f3311ef60aa58757a1b14f = $attributes; } ?>
|
||
<?php $component = Illuminate\View\AnonymousComponent::resolve(['view' => 'components.sumber-data-card','data' => ['number' => $index + 1,'title' => $sumber['title'] ?? '','yearSelected' => $sumber['year'] ?? '','link' => $sumber['link'] ?? '','years' => $years]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
|
||
<?php $component->withName('sumber-data-card'); ?>
|
||
<?php if ($component->shouldRender()): ?>
|
||
<?php $__env->startComponent($component->resolveView(), $component->data()); ?>
|
||
<?php if (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag): ?>
|
||
<?php $attributes = $attributes->except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
|
||
<?php endif; ?>
|
||
<?php $component->withAttributes(['number' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($index + 1),'title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($sumber['title'] ?? ''),'yearSelected' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($sumber['year'] ?? ''),'link' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($sumber['link'] ?? ''),'years' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($years)]); ?>
|
||
<?php echo $__env->renderComponent(); ?>
|
||
<?php endif; ?>
|
||
<?php if (isset($__attributesOriginalab9b13a355f3311ef60aa58757a1b14f)): ?>
|
||
<?php $attributes = $__attributesOriginalab9b13a355f3311ef60aa58757a1b14f; ?>
|
||
<?php unset($__attributesOriginalab9b13a355f3311ef60aa58757a1b14f); ?>
|
||
<?php endif; ?>
|
||
<?php if (isset($__componentOriginalab9b13a355f3311ef60aa58757a1b14f)): ?>
|
||
<?php $component = $__componentOriginalab9b13a355f3311ef60aa58757a1b14f; ?>
|
||
<?php unset($__componentOriginalab9b13a355f3311ef60aa58757a1b14f); ?>
|
||
<?php endif; ?>
|
||
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
|
||
<?php else: ?>
|
||
<?php if (isset($component)) { $__componentOriginalab9b13a355f3311ef60aa58757a1b14f = $component; } ?>
|
||
<?php if (isset($attributes)) { $__attributesOriginalab9b13a355f3311ef60aa58757a1b14f = $attributes; } ?>
|
||
<?php $component = Illuminate\View\AnonymousComponent::resolve(['view' => 'components.sumber-data-card','data' => ['number' => 1,'years' => $years]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
|
||
<?php $component->withName('sumber-data-card'); ?>
|
||
<?php if ($component->shouldRender()): ?>
|
||
<?php $__env->startComponent($component->resolveView(), $component->data()); ?>
|
||
<?php if (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag): ?>
|
||
<?php $attributes = $attributes->except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
|
||
<?php endif; ?>
|
||
<?php $component->withAttributes(['number' => 1,'years' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($years)]); ?>
|
||
<?php echo $__env->renderComponent(); ?>
|
||
<?php endif; ?>
|
||
<?php if (isset($__attributesOriginalab9b13a355f3311ef60aa58757a1b14f)): ?>
|
||
<?php $attributes = $__attributesOriginalab9b13a355f3311ef60aa58757a1b14f; ?>
|
||
<?php unset($__attributesOriginalab9b13a355f3311ef60aa58757a1b14f); ?>
|
||
<?php endif; ?>
|
||
<?php if (isset($__componentOriginalab9b13a355f3311ef60aa58757a1b14f)): ?>
|
||
<?php $component = $__componentOriginalab9b13a355f3311ef60aa58757a1b14f; ?>
|
||
<?php unset($__componentOriginalab9b13a355f3311ef60aa58757a1b14f); ?>
|
||
<?php endif; ?>
|
||
<?php endif; ?>
|
||
</div>
|
||
|
||
<template id="sumberDataTemplate">
|
||
<?php echo str_replace('__INDEX__', '${index}',
|
||
view('components.sumber-data-card', [
|
||
'number' => '__INDEX__',
|
||
'years' => $years,
|
||
'title' => '',
|
||
'yearSelected' => '',
|
||
'link' => '',
|
||
])->render()
|
||
); ?>
|
||
|
||
</template>
|
||
|
||
<div class="row">
|
||
<div class="col-md-6">
|
||
<div class="mt-4">
|
||
<button type="button" class="btn-add-data" onclick="addSumberData()">
|
||
Tambah sumber data
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<div class="mt-4 text-right">
|
||
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse5">
|
||
Selanjutnya
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ml-1 mt-4 d-flex justify-content-between align-items-center">
|
||
<p style="font-size: 15px; font-weight: 400; line-height: 100%; letter-spacing: 0%;">Langkah <b>3</b></p>
|
||
</div>
|
||
|
||
<div id="accordion-3" class="accordion">
|
||
<div class="card">
|
||
<div class="card-header" id="heading5">
|
||
<h5 class="mb-0">
|
||
<button class="btn d-flex justify-content-between w-100 align-items-center form-title-accordion collapsed" data-toggle="collapse" data-target="#collapse5" aria-expanded="false">
|
||
FORM DATA LOKASI KEGIATAN MITIGASI
|
||
<span class="arrow mr-2"><i class="ti ti-angle-right"></i></span>
|
||
</button>
|
||
</h5>
|
||
</div>
|
||
<div id="collapse5" class="collapse" data-parent="#accordion-3">
|
||
<div class="card-body">
|
||
<p class="text-muted ml-4" style="font-size: 12px;">
|
||
Silahkan tambahkan lokasi kegiatan mitigasi.
|
||
</p>
|
||
|
||
<div class="row">
|
||
<div class="col-md-12">
|
||
<div class="card sub-card" id="heading5-1">
|
||
<div class="card-header" id="heading-sub-location">
|
||
<p style="font-size: 15px; font-weight: 400;">Lokasi Kegiatan Mitigasi</p>
|
||
</div>
|
||
<div class="card-body">
|
||
<div class="form-group">
|
||
<label class="label-title" for="kabupaten_kota_location">
|
||
Kabupaten Kota
|
||
</label>
|
||
<select class="form-control select2 select-button" name="kabupaten_kota_location" id="kabupaten" data-placeholder="Pilih Kabupaten Kota">
|
||
<option value="">Pilih Kabupaten Kota</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="kecamatan_location">
|
||
Kecamatan
|
||
</label>
|
||
<select class="form-control select2 select-button" name="kecamatan_location" id="kecamatan" data-placeholder="Pilih Kecamatan">
|
||
<option value="">Pilih Kecamatan</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group mt-4">
|
||
<label class="label-title" for="kelurahan_location">
|
||
Kelurahan
|
||
</label>
|
||
<select class="form-control select2 select-button" name="kelurahan_location" id="kelurahan" data-placeholder="Pilih Kelurahan">
|
||
<option value="">Pilih Kelurahan</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-6">
|
||
<label class="label-title" for="lat_location">
|
||
Lintang (LAT)
|
||
</label>
|
||
<input type="text" class="form-control" name="lat_location" id="lat_location">
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label class="label-title" for="long_location">
|
||
Bujur (LON)
|
||
</label>
|
||
<input type="text" class="form-control" name="long_location" id="long_location">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4 mb-5">
|
||
<div class="col-12">
|
||
<div id="maps" style="height: 500px; width: 100%; border-radius: 10px;"></div>
|
||
</div>
|
||
<div class="col-12 d-flex justify-content-end mt-4">
|
||
<button id="btn-remove-location" class="button-action px-4 py-2">Hapus Lokasi</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mt-4 mb-4 text-right">
|
||
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse6">
|
||
Submit
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="section4" style="display: none;">
|
||
<div class="ml-1 mt-4 d-flex justify-content-between align-items-center">
|
||
<p style="font-size: 15px; font-weight: 400; line-height: 100%; letter-spacing: 0%;">Langkah <b>4</b></p>
|
||
</div>
|
||
|
||
<div id="accordion-4" class="accordion">
|
||
<p class="text-muted ml-1">Loading…</p>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
<?php $__env->stopSection(); ?>
|
||
|
||
<?php $__env->startPush('styles'); ?>
|
||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
|
||
<link rel="stylesheet" href="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.css"/>
|
||
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
|
||
<link href="https://cdn.jsdelivr.net/npm/@ttskch/select2-bootstrap4-theme@1.5.2/dist/select2-bootstrap4.min.css" rel="stylesheet" />
|
||
<link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.4.1/dist/MarkerCluster.css" />
|
||
<link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.4.1/dist/MarkerCluster.Default.css" />
|
||
<style>
|
||
#maps {
|
||
/* Ensure map container has proper dimensions */
|
||
min-height: 600px;
|
||
}
|
||
|
||
/* Fix for potential parent element issues */
|
||
.leaflet-container {
|
||
background: #fff;
|
||
}
|
||
</style>
|
||
<?php $__env->stopPush(); ?>
|
||
|
||
<?php $__env->startPush('scripts'); ?>
|
||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.0.0"></script>
|
||
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
|
||
<script src="https://unpkg.com/leaflet.markercluster@1.4.1/dist/leaflet.markercluster.js"></script>
|
||
<script src="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js"></script>
|
||
<script>
|
||
// -------- REMOVE RESET --------
|
||
if (window.location.search.includes('reset=1')) {
|
||
const url = new URL(window.location.href);
|
||
url.searchParams.delete('reset');
|
||
window.history.replaceState({}, document.title, url.pathname + url.search);
|
||
}
|
||
// -------- MAP INITIALIZATION --------
|
||
let marker = null;
|
||
let map = null;
|
||
function initMap() {
|
||
$('#collapse5').on('shown.bs.collapse', function () {
|
||
// Cegah membuat ulang peta jika sudah ada
|
||
if (map !== null) {
|
||
setTimeout(() => map.invalidateSize(true), 100);
|
||
return;
|
||
}
|
||
|
||
const initialLat = -6.2088;
|
||
const initialLng = 106.8456;
|
||
const zoom = 12;
|
||
|
||
map = L.map('maps').setView([initialLat, initialLng], zoom);
|
||
|
||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||
maxZoom: 19,
|
||
attribution: '© OpenStreetMap contributors'
|
||
}).addTo(map);
|
||
|
||
const customIcon = L.icon({
|
||
iconUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/images/marker-icon.png',
|
||
iconSize: [25, 41],
|
||
iconAnchor: [12, 41],
|
||
popupAnchor: [1, -34],
|
||
shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/images/marker-shadow.png',
|
||
shadowSize: [41, 41]
|
||
});
|
||
|
||
function updateInputs(lat, lng) {
|
||
$('#lat_location').val(lat.toFixed(6));
|
||
$('#long_location').val(lng.toFixed(6));
|
||
}
|
||
|
||
function addOrMoveMarker(lat, lng) {
|
||
if (!marker) {
|
||
marker = L.marker([lat, lng], {
|
||
icon: customIcon,
|
||
draggable: true
|
||
}).addTo(map);
|
||
|
||
marker.on('moveend', function (e) {
|
||
const pos = e.target.getLatLng();
|
||
updateInputs(pos.lat, pos.lng);
|
||
});
|
||
} else {
|
||
marker.setLatLng([lat, lng]);
|
||
}
|
||
updateInputs(lat, lng);
|
||
}
|
||
|
||
// Klik di peta: tambah/move marker dan update input
|
||
map.on('click', function (e) {
|
||
addOrMoveMarker(e.latlng.lat, e.latlng.lng);
|
||
});
|
||
|
||
// Input manual lat/lng: update marker
|
||
$('#lat_location, #long_location').on('change input', function () {
|
||
const lat = parseFloat($('#lat_location').val());
|
||
const lng = parseFloat($('#long_location').val());
|
||
if (!isNaN(lat) && !isNaN(lng)) {
|
||
addOrMoveMarker(lat, lng);
|
||
map.panTo([lat, lng]);
|
||
}
|
||
});
|
||
|
||
// Leaflet Control Geocoder (jika tersedia)
|
||
if (typeof L.Control.Geocoder !== 'undefined') {
|
||
L.Control.geocoder({
|
||
defaultMarkGeocode: false
|
||
})
|
||
.on('markgeocode', function (e) {
|
||
const center = e.geocode.center;
|
||
addOrMoveMarker(center.lat, center.lng);
|
||
map.setView(center, 16);
|
||
})
|
||
.addTo(map);
|
||
}
|
||
|
||
// Set posisi awal
|
||
addOrMoveMarker(initialLat, initialLng);
|
||
|
||
setTimeout(() => map.invalidateSize(true), 100);
|
||
setTimeout(() => map.invalidateSize(true), 300);
|
||
window.addEventListener('resize', () => map.invalidateSize(true));
|
||
});
|
||
}
|
||
|
||
function clearLocationData() {
|
||
if(marker && map) {
|
||
map.removeLayer(marker);
|
||
marker = null;
|
||
}
|
||
$('#lat_location').val('');
|
||
$('#long_location').val('');
|
||
|
||
$('#kabupaten').val(null).trigger('change');
|
||
$('#kecamatan').val(null).trigger('change');
|
||
$('#kelurahan').val(null).trigger('change');
|
||
|
||
map.setView([-6.2088, 106.8456], 12);
|
||
}
|
||
|
||
$('#btn-remove-location').on('click', function(e) {
|
||
e.preventDefault();
|
||
clearLocationData();
|
||
})
|
||
|
||
// -------- SUMBER DATA --------
|
||
let sumberDataCount = 1;
|
||
|
||
function addSumberData() {
|
||
sumberDataCount++;
|
||
const container = document.getElementById('sumberDataContainer');
|
||
const template = document.getElementById('sumberDataTemplate').innerHTML;
|
||
const newCard = template.replace(/\$\{index\}/g, sumberDataCount);
|
||
container.insertAdjacentHTML('beforeend', newCard);
|
||
|
||
updateDeleteButtons();
|
||
}
|
||
|
||
function removeSumberData(button) {
|
||
const cards = document.querySelectorAll('#sumberDataContainer .sumber-data-card');
|
||
if (cards.length <= 1) return; // JANGAN HAPUS kalau hanya 1
|
||
|
||
const card = button.closest('.sumber-data-card');
|
||
if (card) {
|
||
card.remove();
|
||
sumberDataCount--;
|
||
updateDeleteButtons();
|
||
}
|
||
}
|
||
|
||
function updateDeleteButtons() {
|
||
const cards = document.querySelectorAll('#sumberDataContainer .sumber-data-card');
|
||
const deleteButtons = document.querySelectorAll('.btn-delete');
|
||
|
||
if (cards.length <= 1) {
|
||
deleteButtons.forEach(btn => btn.style.display = 'none');
|
||
} else {
|
||
deleteButtons.forEach(btn => btn.style.display = '');
|
||
}
|
||
}
|
||
|
||
function formatCurrency(val) {
|
||
if (!val) return '';
|
||
// Tambahkan titik sebagai pemisah ribuan, contoh: 1234567 => 1.234.567
|
||
return val.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||
}
|
||
|
||
function parseCurrencyToFloat(val) {
|
||
// Hapus titik (ribuan) dan ganti koma desimal jadi titik untuk parseFloat
|
||
if (!val) return 0;
|
||
const normalized = val.replace(/\./g, '').replace(',', '.');
|
||
return parseFloat(normalized) || 0;
|
||
}
|
||
|
||
function validateRealisasi() {
|
||
const targetRaw = $('#target').val();
|
||
const realisasiRaw = $('#realisasi').val();
|
||
|
||
const target = parseCurrencyToFloat(targetRaw);
|
||
const realisasi = parseCurrencyToFloat(realisasiRaw);
|
||
|
||
const $formGroup = $('#realisasi').closest('.form-group');
|
||
let $warning = $formGroup.find('.help-block.realisasi');
|
||
|
||
if (realisasi > target) {
|
||
if ($warning.length === 0) {
|
||
$formGroup.append(
|
||
'<p class="help-block mt-2 realisasi text-danger"><i class="ti ti-alert"></i> Nilai realisasi lebih besar dari target.</p>'
|
||
);
|
||
}
|
||
} else {
|
||
$warning.remove();
|
||
}
|
||
}
|
||
|
||
function isDigitKey(e) {
|
||
let charCode = e.which || e.keyCode;
|
||
if (charCode < 48 || charCode > 57) {
|
||
e.preventDefault();
|
||
return false;
|
||
}
|
||
|
||
const $input = $(e.target);
|
||
let val = $input.val().replace(/\D/g, '');
|
||
if (val.length >= 12) {
|
||
e.preventDefault();
|
||
return false;
|
||
}
|
||
}
|
||
|
||
function formatInput($input, callValidate = false) {
|
||
let val = $input.val().replace(/\D/g, '');
|
||
if (val.length > 12) {
|
||
val = val.slice(0, 12); // potong digit ke 13 dst
|
||
}
|
||
if (val === '') {
|
||
$input.val('');
|
||
return;
|
||
}
|
||
$input.val(formatCurrency(val));
|
||
if (callValidate) validateRealisasi();
|
||
}
|
||
|
||
function formatInputOnBlur($input) {
|
||
let val = $input.val().replace(/\D/g, '');
|
||
if (val.length > 12) {
|
||
val = val.slice(0, 12);
|
||
}
|
||
if (val === '') {
|
||
$input.val('');
|
||
return;
|
||
}
|
||
$input.val(formatCurrency(val) + ',00');
|
||
}
|
||
|
||
function attachNumberFormatting(selector, callValidate = false) {
|
||
const $el = $(selector);
|
||
|
||
$el.on('keypress', isDigitKey);
|
||
|
||
$el.on('keyup', function () {
|
||
formatInput($(this), callValidate);
|
||
});
|
||
|
||
$el.on('blur', function () {
|
||
formatInputOnBlur($(this));
|
||
});
|
||
}
|
||
|
||
// Jalankan saat awal halaman load
|
||
document.addEventListener('DOMContentLoaded', () => {
|
||
updateDeleteButtons();
|
||
});
|
||
|
||
// -------- DROPDOWN LOADING FUNCTIONS WITH PROMISE --------
|
||
function loadSektor(selectedValue = null) {
|
||
return $.get('/mitigasi/form-mitigasi-sector-dropdown', {})
|
||
.then(data => {
|
||
const $dropdown = $('#sektor-dropdown').empty();
|
||
$dropdown.append('<option value="">Pilih Sektor</option>')
|
||
data.forEach(item => {
|
||
const selected = item === selectedValue ? 'selected' : '';
|
||
$dropdown.append(`<option value="${item}" ${selected}>${item}</option>`);
|
||
});
|
||
})
|
||
.catch(() => alert('Gagal memuat data Sektor'));
|
||
}
|
||
|
||
function loadSubSektor(sector, selectedValue = null) {
|
||
return $.get('/mitigasi/form-mitigasi-subsector-dropdown', { sector })
|
||
.then(data => {
|
||
const $dropdown = $('#subsektor-dropdown').empty();
|
||
$dropdown.append('<option value="">Pilih Sub-Sektor</option>');
|
||
data.forEach(item => {
|
||
const selected = item === selectedValue ? 'selected' : '';
|
||
$dropdown.append(`<option value="${item}" ${selected}>${item}</option>`);
|
||
});
|
||
})
|
||
.catch(() => alert('Gagal memuat data Sub-Sektor'));
|
||
}
|
||
|
||
function loadPerhitungan(sector, subSector, selectedValue = null) {
|
||
return $.get('/mitigasi/form-mitigasi-perhitungan-dropdown', { sub_sector: subSector, sector: sector })
|
||
.then(data => {
|
||
const $dropdown = $('#perhitungan-dropdown').empty();
|
||
$dropdown.append('<option value="">Pilih Kategori/ Mode Perhitungan</option>');
|
||
data.forEach(item => {
|
||
const selected = item.activity_type === selectedValue ? 'selected' : '';
|
||
$dropdown.append(`<option value="${item.activity_type}" data-id="${item.id}" ${selected}>${item.activity_type}</option>`);
|
||
});
|
||
})
|
||
.catch(() => alert('Gagal memuat data Kategori/ Mode Perhitungan'));
|
||
}
|
||
|
||
function loadSubAktivitas(sector, subSector, perhitungan, selectedValue = null) {
|
||
return $.get('/mitigasi/form-mitigasi-subaktivitas-dropdown', { sub_sector: subSector, sector: sector, activity: perhitungan })
|
||
.then(data => {
|
||
const $dropdown = $('#subactivity-dropdown').empty();
|
||
$dropdown.append('<option value="">Pilih Sub-Aktivitas</option>');
|
||
let selectedDesc = '';
|
||
|
||
data.forEach(item => {
|
||
if(item.sub_activity != null && item.sub_activity !== '') {
|
||
$('#sub_activity').show();
|
||
} else {
|
||
$('#sub_activity').hide();
|
||
}
|
||
const selected = item.sub_activity === selectedValue ? 'selected': '';
|
||
$dropdown.append(`<option value="${item.sub_activity}" data-id="${item.id}" data-desc="${item.sub_activity_desc || ''}" ${selected}>${item.sub_activity}</option>`);
|
||
if(selected) {
|
||
selectedDesc = item.sub_activity_desc || '';
|
||
}
|
||
});
|
||
|
||
showSubActivityDesc(selectedDesc);
|
||
})
|
||
.catch(() => alert('Gagal memuat data Sub-Aktivitas'));
|
||
}
|
||
|
||
function showSubActivityDesc(desc) {
|
||
let $container = $('#subactivity-dropdown').next('.select2-container');
|
||
let $desc = $('#sub_activity_desc');
|
||
if ($desc.length === 0) {
|
||
$desc = $('<div id="sub_activity_desc" class="text-muted mt-2" style="font-size: 13px;"></div>').insertAfter('#subactivity-dropdown');
|
||
$container.after($desc);
|
||
}
|
||
$desc.text(desc ? desc : '');
|
||
}
|
||
|
||
function loadRAD(subSector, selectedValue = null) {
|
||
return $.get('/mitigasi/form-mitigasi-aksi-rad', { sub_sector: subSector })
|
||
.then(data => {
|
||
const $dropdown = $('#rad-dropdown').empty();
|
||
$dropdown.append('<option value="">Tambah kegiatan di luar RAD</option>');
|
||
data.forEach(item => {
|
||
const selected = item === selectedValue ? 'selected' : '';
|
||
$dropdown.append(`<option value="${item}" ${selected}>${item}</option>`);
|
||
});
|
||
})
|
||
.catch(() => alert('Gagal memuat data RAD'));
|
||
}
|
||
|
||
function loadKabupaten(selectedValue = null) {
|
||
return $.get('/mitigasi/form-kabupaten', {})
|
||
.then(data => {
|
||
const $dropdown = $('#kabupaten').empty();
|
||
$dropdown.append('<option value="">Pilih Kabupaten Kota</option>');
|
||
data.forEach(item => {
|
||
const selected = item.kabkot_id == selectedValue ? 'selected' : '';
|
||
$dropdown.append(`<option value="${item.kabkot_id}" ${selected}>${item.kabkot_name}</option>`);
|
||
});
|
||
})
|
||
.catch(() => alert('Gagal memuat data Kabupaten'));
|
||
}
|
||
|
||
function loadKecamatan(kabkotId, selectedValue = null) {
|
||
return $.get('/mitigasi/form-kecamatan', {kabkot_id: kabkotId})
|
||
.then(data => {
|
||
const $dropdown = $('#kecamatan').empty();
|
||
$dropdown.append('<option value="">Pilih Kecamatan</option>');
|
||
data.forEach(item => {
|
||
const selected = item.kec_id == selectedValue ? 'selected' : '';
|
||
$dropdown.append(`<option value="${item.kec_id}" ${selected}>${item.kec_name}</option>`);
|
||
});
|
||
})
|
||
.catch(() => alert('Gagal memuat data Kecamatan'));
|
||
}
|
||
|
||
function loadKelurahan(kabkotId, kecId, selectedValue = null) {
|
||
return $.get('/mitigasi/form-kelurahan', {kabkot_id: kabkotId, kec_id: kecId})
|
||
.then(data => {
|
||
const $dropdown = $('#kelurahan').empty();
|
||
$dropdown.append('<option value="">Pilih Kelurahan</option>');
|
||
data.forEach(item => {
|
||
const selected = item.kel_id == selectedValue ? 'selected' : '';
|
||
$dropdown.append(`<option value="${item.kel_id}" ${selected}>${item.kel_name}</option>`);
|
||
});
|
||
})
|
||
.catch(() => alert('Gagal memuat data Kelurahan'));
|
||
}
|
||
|
||
// -------- FOR SECTION 4 --------
|
||
function checkData() {
|
||
const sektor = $('#sektor-dropdown').val();
|
||
const subSektor = $('#subsektor-dropdown').val();
|
||
const kategori = $('#perhitungan-dropdown').val();
|
||
const subKategori = $('#subactivity-dropdown').val();
|
||
|
||
const sessionSektor = "<?php echo e($sessionData['sektor'] ?? ''); ?>";
|
||
const sessionSubSektor = "<?php echo e($sessionData['sub_sektor'] ?? ''); ?>";
|
||
const sessionKategori = "<?php echo e($sessionData['kategori_perhitungan'] ?? ''); ?>";
|
||
const sessionSubKategori = "<?php echo e($sessionData['kategori_sub_aktivitas'] ?? ''); ?>";
|
||
|
||
return (sektor || sessionSektor) &&
|
||
(subSektor || sessionSubSektor) &&
|
||
(kategori || sessionKategori) ||
|
||
(subKategori || sessionSubKategori);
|
||
}
|
||
|
||
// function loadQuestion(mitigation_id) {
|
||
// $('#section4').show();
|
||
// $('#accordion-4').html('<p class="text-muted ml-1">Loading...</p>');
|
||
|
||
// $.get('/mitigasi/form-mitigasi-question', { mitigation_id })
|
||
// .done(data => {
|
||
// if (!data || !data.length) {
|
||
// $('#accordion-4').html(
|
||
// '<p class="text-muted ml-1" style="font-size:12px">Pertanyaan tidak tersedia.</p>'
|
||
// );
|
||
// return;
|
||
// }
|
||
// window.lastQuestionData = data;
|
||
|
||
// // --- Build map
|
||
// const questionMap = {};
|
||
// const childMap = {};
|
||
// data.forEach(q => {
|
||
// questionMap[q.sequence] = q;
|
||
// if (q.ad_sequence) {
|
||
// if (!childMap[q.ad_sequence]) childMap[q.ad_sequence] = [];
|
||
// childMap[q.ad_sequence].push(q.sequence);
|
||
// }
|
||
// });
|
||
|
||
// // --- Kumpulkan multiQs
|
||
// const multiQs = [];
|
||
// data.forEach(q => {
|
||
// if (q.is_multiple) multiQs.push(q);
|
||
// });
|
||
|
||
// // --- Dapatkan sequence method dan question_plus
|
||
// const methodQuestion = data.find(q => q.type === 'method');
|
||
// const methodSequence = methodQuestion?.sequence;
|
||
// let allowedMethodValue;
|
||
|
||
// // --- Helper buat satu row
|
||
// function makeRow(q, idx, showRemove) {
|
||
// let inputEl = "";
|
||
|
||
// if (q.type === 'text') {
|
||
// inputEl = `<input type="text"
|
||
// name="activity_data_${q.sequence}[${idx}]"
|
||
// class="form-control mb-2 w-95 question-input"
|
||
// data-sequence="${q.sequence}" data-parent="${q.ad_sequence || ''}"
|
||
// ${q.is_required ? 'required' : ''}>`;
|
||
// } else if (q.type === 'form' || q.type === 'method') {
|
||
// inputEl = `
|
||
// <select name="activity_data_${q.sequence}[${idx}]"
|
||
// class="form-control mb-2 w-95 question-input"
|
||
// data-sequence="${q.sequence}" data-parent="${q.ad_sequence || ''}"
|
||
// ${q.is_required ? 'required' : ''}>
|
||
// ${q.choices.map(c => `<option value="${c.form}">${c.form}</option>`).join('')}
|
||
// </select>
|
||
// `;
|
||
// } else {
|
||
// inputEl = `<select name="activity_data_${q.sequence}[${idx}]"
|
||
// class="form-control mb-2 w-95 question-input"
|
||
// data-sequence="${q.sequence}" data-parent="${q.ad_sequence || ''}"
|
||
// ${q.is_required ? 'required' : ''}>
|
||
// ${q.choices.map(c => `<option>${c}</option>`).join('')}
|
||
// </select>`;
|
||
// }
|
||
|
||
// const removeBtn = showRemove
|
||
// ? `<button type="button" class="btn btn-danger btn-sm ml-2 remove-row">Hapus</button>`
|
||
// : `<button type="button" class="btn btn-danger btn-sm ml-2 remove-row d-none">Hapus</button>`;
|
||
|
||
// return `
|
||
// <div class="mb-2 row-input question-row"
|
||
// data-sequence="${q.sequence}" data-parent="${q.ad_sequence || ''}" data-question-plus="${q.question_plus || ''}">
|
||
// ${inputEl}
|
||
// ${removeBtn}
|
||
// </div>`;
|
||
// }
|
||
|
||
// // --- Build HTML utama
|
||
// let allHtml = '';
|
||
// data.forEach((q, idx) => {
|
||
// // --- Build unit/desc
|
||
// let unitOrDesc = '';
|
||
// if (q.type === 'form' || q.type === 'method') {
|
||
// unitOrDesc = `
|
||
// <div class="form-desc-list mt-1" data-sequence="${q.sequence}">
|
||
// ${q.choices.map(c => `
|
||
// <p class="form-desc" data-form="${c.form}" style="display:none;font-size:12px;margin-bottom:0;">
|
||
// ${c.desc}
|
||
// </p>
|
||
// `).join('')}
|
||
// </div>`;
|
||
// } else if (q.units && q.units.length === 1) {
|
||
// unitOrDesc = `<input type="hidden" name="unit_${q.sequence}" value="${q.units[0]}">
|
||
// <span class="text-muted small ml-1">${q.units[0]}</span>`;
|
||
// } else if (q.units && q.units.length > 1) {
|
||
// unitOrDesc = `<select name="unit_${q.sequence}"
|
||
// class="form-control-sm d-inline-block w-auto unit-select mt-2" required>
|
||
// ${q.units.map(u => `<option>${u}</option>`).join('')}
|
||
// </select>`;
|
||
// }
|
||
|
||
// if (!q.is_multiple) {
|
||
// allHtml += `
|
||
// <div class="form-group question-group" id="group-${q.sequence}" style="${q.ad_sequence ? 'display:none' : ''}">
|
||
// <label class="${q.is_required ? 'required-label' : ''} font-weight-bold">
|
||
// ${q.activity_data}
|
||
// </label>
|
||
// ${makeRow(q, 0, false)}
|
||
// ${unitOrDesc ? `<div class="mt-2">${unitOrDesc}</div>` : ''}
|
||
// </div>`;
|
||
// }
|
||
// });
|
||
|
||
// // --- Multiple-card builder (khusus jika ada multiQs)
|
||
// function makeMultipleCard(idx) {
|
||
// let title;
|
||
// const rowsHtml = multiQs.map((q, qIdx) => {
|
||
// // title = q.title_group;
|
||
// if (q.method && q['title_group_' + q.method]) {
|
||
// title = q['title_group_' + q.method];
|
||
// } else {
|
||
// // fallback ke default
|
||
// title = q.title_group;
|
||
// }
|
||
|
||
// let unitOrDesc = '';
|
||
// if (q.type === 'form' || q.type === 'method') {
|
||
// unitOrDesc = `
|
||
// <div class="form-desc-list mt-1" data-sequence="${q.sequence}">
|
||
// ${q.choices.map(c => `
|
||
// <p class="form-desc" data-form="${c.form}" style="display:none;font-size:12px;margin-bottom:0;">
|
||
// ${c.desc}
|
||
// </p>
|
||
// `).join('')}
|
||
// </div>`;
|
||
// } else if (q.units && q.units.length === 1) {
|
||
// unitOrDesc = `<input type="hidden" name="unit_${q.sequence}" value="${q.units[0]}">
|
||
// <span class="text-muted small ml-1">${q.units[0]}</span>`;
|
||
// } else if (q.units && q.units.length > 1) {
|
||
// unitOrDesc = `<select name="unit_${q.sequence}"
|
||
// class="form-control-sm d-inline-block w-auto unit-select mt-2" required>
|
||
// ${q.units.map(u => `<option>${u}</option>`).join('')}
|
||
// </select>`;
|
||
// }
|
||
|
||
// return `
|
||
// <div class="form-group question-group" id="group-${q.sequence}-${idx}" style="${q.ad_sequence ? 'display:none' : ''}">
|
||
// <label class="${q.is_required ? 'required-label' : ''} font-weight-bold">
|
||
// ${q.activity_data}
|
||
// </label>
|
||
// <div class="multiple-input-group" data-sequence="${q.sequence}">
|
||
// ${makeRow(q, idx, false)}
|
||
// </div>
|
||
// ${unitOrDesc ? `<div class="mt-2">${unitOrDesc}</div>` : ''}
|
||
// </div>`;
|
||
// }).join('');
|
||
|
||
// return `
|
||
// <div class="card multiple-card" data-index="${idx}">
|
||
// <div class="card-header d-flex justify-content-between align-items-center">
|
||
// <strong>${title}</strong>
|
||
// <button type="button" class="btn btn-delete btn-sm remove-card">
|
||
// Hapus Data
|
||
// </button>
|
||
// </div>
|
||
// <div class="card-body">
|
||
// ${rowsHtml}
|
||
// </div>
|
||
// </div>`;
|
||
// }
|
||
|
||
// // --- HANYA render multipleLayout jika ADA multiQs!
|
||
// let multipleLayout = '';
|
||
// if (multiQs.length > 0) {
|
||
// multipleLayout = `
|
||
// <div id="card-data-1-wrapper" style="display:none">
|
||
// <div id="multiple-container">
|
||
// ${makeMultipleCard(0)}
|
||
// </div>
|
||
// <button type="button" id="add-group" class="btn btn-add-data add-row btn-sm mt-2" style="display:none">
|
||
// Tambah Data
|
||
// </button>
|
||
// </div>`;
|
||
// }
|
||
|
||
// // --- Render final HTML ke DOM
|
||
// const html = `
|
||
// <div class="card">
|
||
// <div class="card-header">
|
||
// <h5 class="mb-0">
|
||
// <button class="btn d-flex justify-content-between w-100 align-items-center form-title-accordion collapsed"
|
||
// data-toggle="collapse" data-target="#collapse6">
|
||
// ${data[0].title.toUpperCase()}
|
||
// <span class="arrow mr-2"><i class="ti ti-angle-right"></i></span>
|
||
// </button>
|
||
// </h5>
|
||
// </div>
|
||
// <div id="collapse6" class="collapse" data-parent="#accordion-4">
|
||
// <div class="card-body">
|
||
// <p class="text-muted small">${data[0].activity_desc}</p>
|
||
// ${allHtml}
|
||
// ${multipleLayout}
|
||
// <div class="mt-4 text-right">
|
||
// <button type="submit" id="final-submit" class="btn btn-submit px-4 py-2">
|
||
// Submit
|
||
// </button>
|
||
// </div>
|
||
// </div>
|
||
// </div>
|
||
// </div>
|
||
// `;
|
||
|
||
// $('#accordion-4').html(html);
|
||
|
||
// // --- Handler Remove Card
|
||
// function refreshRemoveButtons() {
|
||
// const cards = $('#multiple-container .multiple-card');
|
||
// if (cards.length === 1) {
|
||
// cards.find('.remove-card').addClass('d-none');
|
||
// } else {
|
||
// cards.find('.remove-card').removeClass('d-none');
|
||
// }
|
||
// }
|
||
|
||
// // --- Event Handler, hanya aktif jika multiQs.length > 0
|
||
// if (multiQs.length > 0) {
|
||
// $('#accordion-4').off('click', '#add-group').on('click', '#add-group', function() {
|
||
// const idx = $('#multiple-container .multiple-card').length;
|
||
// $('#multiple-container').append(makeMultipleCard(idx));
|
||
// refreshRemoveButtons();
|
||
// updateConditionalQuestions();
|
||
// });
|
||
// $('#accordion-4').off('click', '.remove-card').on('click', '.remove-card', function() {
|
||
// $(this).closest('.multiple-card').remove();
|
||
// refreshRemoveButtons();
|
||
// updateConditionalQuestions();
|
||
// });
|
||
// }
|
||
|
||
// // --- Handler untuk select.form (show/hide desc di bawah select)
|
||
// $('#accordion-4').on('change', 'select.question-input', function() {
|
||
// const $select = $(this);
|
||
// const seq = $select.data('sequence');
|
||
// const val = $select.val();
|
||
// $select.closest('.question-group').find('.form-desc').hide();
|
||
// $select.closest('.question-group').find(`.form-desc[data-form="${val}"]`).show();
|
||
|
||
// updateConditionalQuestions();
|
||
// });
|
||
|
||
// // --- Logic tampil Card Data 1 (dan tombol) hanya jika multiQs.length > 0
|
||
// function checkShowCardData1() {
|
||
// console.log(allowedMethodValue);
|
||
// if (multiQs.length === 0) return; // Tidak ada card, skip.
|
||
|
||
// // -- Logic show/hide sesuai method & question_plus
|
||
// // if (!methodSequence) return;
|
||
// const methodVal = $(`[name="activity_data_${methodSequence}[0]"]`).val();
|
||
|
||
// if(methodVal) {
|
||
// if (!allowedMethodValue || allowedMethodValue === '') {
|
||
// if (methodVal && methodVal !== '') {
|
||
// $('#card-data-1-wrapper').show();
|
||
// $('#add-group').show();
|
||
// } else {
|
||
// $('#card-data-1-wrapper').hide();
|
||
// $('#add-group').hide();
|
||
// }
|
||
// return;
|
||
// }
|
||
// if (methodVal && String(methodVal) === String(allowedMethodValue)) {
|
||
// $('#card-data-1-wrapper').show();
|
||
// $('#add-group').show();
|
||
// } else {
|
||
// $('#card-data-1-wrapper').hide();
|
||
// $('#add-group').hide();
|
||
// }
|
||
// } else {
|
||
// $('#card-data-1-wrapper').show();
|
||
// $('#add-group').show();
|
||
// }
|
||
// }
|
||
|
||
// // --- Panggil checkShowCardData1 saat method berubah, jika ada multiQs
|
||
// if (multiQs.length > 0 && methodSequence) {
|
||
// $('#accordion-4').on('change', `select[name="activity_data_${methodSequence}[0]"]`, function() {
|
||
// checkShowCardData1();
|
||
// });
|
||
// }
|
||
|
||
// // --- Conditional logic show/hide pertanyaan
|
||
// function updateConditionalQuestions() {
|
||
// // Untuk single (bukan multiple-card)
|
||
// $('.question-group').each(function() {
|
||
// const seq = $(this).find('.question-row').data('sequence');
|
||
// const q = questionMap[seq];
|
||
// if (q && q.ad_sequence) {
|
||
// // Parent
|
||
// const parentSeq = q.ad_sequence;
|
||
// let parentVal = $(`[name="activity_data_${parentSeq}[0]"]`).val();
|
||
// if (typeof parentVal === "undefined") parentVal = '';
|
||
// const shouldShow = String(parentVal) === String(q.question_plus);
|
||
// allowedMethodValue = String(parentVal);
|
||
// $(this).toggle(shouldShow);
|
||
// if (!shouldShow) {
|
||
// $(this).find('input,select').val('');
|
||
// $(this).find('.form-desc').hide();
|
||
// }
|
||
// }
|
||
// });
|
||
|
||
// // Untuk multiple card (hanya jika ada multiQs)
|
||
// if (multiQs.length > 0) {
|
||
// $('#multiple-container .multiple-card').each(function(cardIdx) {
|
||
// $(this).find('.question-group').each(function() {
|
||
// const seq = $(this).find('.question-row').data('sequence');
|
||
// const q = questionMap[seq];
|
||
// if (q && q.ad_sequence) {
|
||
// const parentSeq = q.ad_sequence;
|
||
// let parentVal = $(`[name="activity_data_${parentSeq}[0]"]`).val();
|
||
// const shouldShow = String(parentVal) === String(q.question_plus);
|
||
// $(this).toggle(shouldShow);
|
||
// if (!shouldShow) {
|
||
// $(this).find('input,select').val('');
|
||
// $(this).find('.form-desc').hide();
|
||
// }
|
||
// }
|
||
// });
|
||
// });
|
||
// }
|
||
|
||
// checkShowCardData1();
|
||
// }
|
||
|
||
// // --- Init on load
|
||
// $('.form-desc-list').each(function() {
|
||
// $(this).find('.form-desc').hide();
|
||
// const $select = $(this).closest('.question-group').find('select.question-input');
|
||
// const val = $select.val();
|
||
// if (val) {
|
||
// $(this).find(`.form-desc[data-form="${val}"]`).show();
|
||
// }
|
||
// });
|
||
// if (multiQs.length > 0) refreshRemoveButtons();
|
||
// updateConditionalQuestions();
|
||
|
||
// // --- Handler untuk semua input change
|
||
// $('#accordion-4').on('change', '.question-input', function() {
|
||
// updateConditionalQuestions();
|
||
// });
|
||
|
||
// })
|
||
// .fail((xhr, status, error) => {
|
||
// console.error('Gagal mengambil pertanyaan:', status, error);
|
||
// $('#accordion-4').html(
|
||
// '<p class="text-danger small">Terjadi kesalahan saat memuat pertanyaan.</p>'
|
||
// );
|
||
// });
|
||
// }
|
||
|
||
function loadQuestion(mitigation_id) {
|
||
$('#section4').show();
|
||
$('#accordion-4').html('<p class="text-muted ml-1">Loading...</p>');
|
||
|
||
$.get('/mitigasi/form-mitigasi-question', { mitigation_id })
|
||
.done(data => {
|
||
if (!data || !data.length) {
|
||
$('#accordion-4').html(
|
||
'<p class="text-muted ml-1" style="font-size:12px">Pertanyaan tidak tersedia.</p>'
|
||
);
|
||
return;
|
||
}
|
||
window.lastQuestionData = data;
|
||
|
||
// --- Build map
|
||
const questionMap = {};
|
||
data.forEach(q => {
|
||
questionMap[q.sequence] = q;
|
||
});
|
||
|
||
// --- Kumpulkan multiQs template
|
||
const multiQsTemplate = [];
|
||
data.forEach(q => {
|
||
if (q.is_multiple) multiQsTemplate.push(q);
|
||
});
|
||
|
||
// State: Semua card, array of array
|
||
let allMultiQs = [];
|
||
if (multiQsTemplate.length > 0) {
|
||
allMultiQs.push(multiQsTemplate.map(q => ({...q}))); // card pertama
|
||
}
|
||
|
||
// --- Dapatkan sequence method dan question_plus
|
||
const methodQuestion = data.find(q => q.type === 'method');
|
||
const methodSequence = methodQuestion?.sequence;
|
||
let allowedMethodValue;
|
||
|
||
// --- Helper buat satu row
|
||
function makeRow(q, idx, showRemove) {
|
||
let inputEl = "";
|
||
|
||
if (q.type === 'text') {
|
||
inputEl = `<input type="text"
|
||
name="activity_data_${q.sequence}[${idx}]"
|
||
class="form-control mb-2 w-95 question-input"
|
||
data-sequence="${q.sequence}" data-parent="${q.ad_sequence || ''}"
|
||
${q.is_required ? 'required' : ''}>`;
|
||
} else if (q.type === 'form' || q.type === 'method') {
|
||
inputEl = `
|
||
<select name="activity_data_${q.sequence}[${idx}]"
|
||
class="form-control mb-2 w-95 question-input"
|
||
data-sequence="${q.sequence}" data-parent="${q.ad_sequence || ''}"
|
||
${q.is_required ? 'required' : ''}>
|
||
${q.choices.map(c => `<option value="${c.form}">${c.form}</option>`).join('')}
|
||
</select>
|
||
`;
|
||
} else {
|
||
inputEl = `<select name="activity_data_${q.sequence}[${idx}]"
|
||
class="form-control mb-2 w-95 question-input"
|
||
data-sequence="${q.sequence}" data-parent="${q.ad_sequence || ''}"
|
||
${q.is_required ? 'required' : ''}>
|
||
${q.choices.map(c => `<option>${c}</option>`).join('')}
|
||
</select>`;
|
||
}
|
||
|
||
const removeBtn = showRemove
|
||
? `<button type="button" class="btn btn-danger btn-sm ml-2 remove-row">Hapus</button>`
|
||
: `<button type="button" class="btn btn-danger btn-sm ml-2 remove-row d-none">Hapus</button>`;
|
||
|
||
return `
|
||
<div class="mb-2 row-input question-row"
|
||
data-sequence="${q.sequence}" data-parent="${q.ad_sequence || ''}" data-question-plus="${q.question_plus || ''}">
|
||
${inputEl}
|
||
${removeBtn}
|
||
</div>`;
|
||
}
|
||
|
||
// --- Multiple-card builder (now pass dataMultiQs)
|
||
function makeMultipleCard(idx, dataMultiQs) {
|
||
// Render title awal (bisa dinamis di-update di updateConditionalQuestions)
|
||
const title = (
|
||
dataMultiQs.find(q => q.type_emission_reduction && q.title_group) ||
|
||
dataMultiQs.find(q => q.title_group) ||
|
||
{}
|
||
).title_group || '';
|
||
|
||
const rowsHtml = dataMultiQs.map((q, qIdx) => {
|
||
let unitOrDesc = '';
|
||
if (q.type === 'form' || q.type === 'method') {
|
||
unitOrDesc = `
|
||
<div class="form-desc-list mt-1" data-sequence="${q.sequence}">
|
||
${(q.choices || []).map(c => `
|
||
<p class="form-desc" data-form="${c.form}" style="display:none;font-size:12px;margin-bottom:0;">
|
||
${c.desc}
|
||
</p>
|
||
`).join('')}
|
||
</div>`;
|
||
} else if (q.units && q.units.length === 1) {
|
||
unitOrDesc = `<input type="hidden" name="unit_${q.sequence}" value="${q.units[0]}">
|
||
<span class="text-muted small ml-1">${q.units[0]}</span>
|
||
${q.keterangan ? `<p class="text-muted ml-1 mt-2">${q.keterangan}</p>` : ''}`
|
||
} else if (q.units && q.units.length > 1) {
|
||
unitOrDesc = `<select name="unit_${q.sequence}"
|
||
class="form-control-sm d-inline-block w-auto unit-select mt-2" required>
|
||
${q.units.map(u => `<option>${u}</option>`).join('')}
|
||
</select>`;
|
||
}
|
||
|
||
return `
|
||
<div class="form-group question-group" id="group-${q.sequence}-${idx}" style="${q.ad_sequence ? 'display:none' : ''}">
|
||
<label class="${q.is_required ? 'required-label' : ''} font-weight-bold">
|
||
${q.activity_data}
|
||
</label>
|
||
<div class="multiple-input-group" data-sequence="${q.sequence}">
|
||
${makeRow(q, idx, false)}
|
||
</div>
|
||
${unitOrDesc ? `<div class="mt-2">${unitOrDesc}</div>` : ''}
|
||
</div>`;
|
||
}).join('');
|
||
|
||
return `
|
||
<div class="card multiple-card" data-index="${idx}">
|
||
<div class="card-header d-flex justify-content-between align-items-center">
|
||
<strong class="card-title" id="multiple-card-title-${idx}" data-index="${idx}">${title}</strong>
|
||
<button type="button" class="btn btn-delete btn-sm remove-card">
|
||
Hapus Data
|
||
</button>
|
||
</div>
|
||
<div class="card-body">
|
||
${rowsHtml}
|
||
</div>
|
||
</div>`;
|
||
}
|
||
|
||
// --- Build HTML utama (single questions)
|
||
let allHtml = '';
|
||
data.forEach((q, idx) => {
|
||
let unitOrDesc = '';
|
||
if (q.type === 'form' || q.type === 'method') {
|
||
unitOrDesc = `
|
||
<div class="form-desc-list mt-1" data-sequence="${q.sequence}">
|
||
${(q.choices || []).map(c => `
|
||
<p class="form-desc" data-form="${c.form}" style="display:none;font-size:12px;margin-bottom:0;">
|
||
${c.desc}
|
||
</p>
|
||
`).join('')}
|
||
</div>`;
|
||
} else if (q.units && q.units.length === 1) {
|
||
unitOrDesc = `<input type="hidden" name="unit_${q.sequence}" value="${q.units[0]}">
|
||
<span class="text-muted small ml-1">${q.units[0]}</span>
|
||
${q.keterangan ? `<p class="text-muted ml-1 mt-2">${q.keterangan}</p>` : ''}`;
|
||
} else if (q.units && q.units.length > 1) {
|
||
unitOrDesc = `<select name="unit_${q.sequence}"
|
||
class="form-control-sm d-inline-block w-auto unit-select mt-2" required>
|
||
${q.units.map(u => `<option>${u}</option>`).join('')}
|
||
</select>`;
|
||
}
|
||
|
||
if (!q.is_multiple) {
|
||
allHtml += `
|
||
<div class="form-group question-group" id="group-${q.sequence}" style="${q.ad_sequence ? 'display:none' : ''}">
|
||
<label class="${q.is_required ? 'required-label' : ''} font-weight-bold">
|
||
${q.activity_data}
|
||
</label>
|
||
${makeRow(q, 0, false)}
|
||
${unitOrDesc ? `<div class="mt-2">${unitOrDesc}</div>` : ''}
|
||
</div>`;
|
||
}
|
||
});
|
||
|
||
// --- Multiple card wrapper
|
||
let multipleLayout = '';
|
||
if (multiQsTemplate.length > 0) {
|
||
multipleLayout = `
|
||
<div id="card-data-1-wrapper" style="display:none">
|
||
<div id="multiple-container">
|
||
${allMultiQs.map((qs, idx) => makeMultipleCard(idx, qs)).join('')}
|
||
</div>
|
||
<button type="button" id="add-group" class="btn btn-add-data add-row btn-sm mt-2" style="display:none">
|
||
Tambah Data
|
||
</button>
|
||
</div>`;
|
||
}
|
||
|
||
// --- Render final HTML ke DOM
|
||
const html = `
|
||
<div class="card">
|
||
<div class="card-header">
|
||
<h5 class="mb-0">
|
||
<button class="btn d-flex justify-content-between w-100 align-items-center form-title-accordion collapsed"
|
||
data-toggle="collapse" data-target="#collapse6">
|
||
${data[0].title.toUpperCase()}
|
||
<span class="arrow mr-2"><i class="ti ti-angle-right"></i></span>
|
||
</button>
|
||
</h5>
|
||
</div>
|
||
<div id="collapse6" class="collapse" data-parent="#accordion-4">
|
||
<div class="card-body">
|
||
${data[0].activity_desc ? `<p class="text-muted small">${data[0].activity_desc}</p>` : ''}
|
||
${allHtml}
|
||
${multipleLayout}
|
||
<div class="mt-4 text-right">
|
||
<button type="submit" id="final-submit" class="btn btn-submit px-4 py-2">
|
||
Submit
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
`;
|
||
|
||
$('#accordion-4').html(html);
|
||
|
||
// --- Handler Remove Card
|
||
function refreshRemoveButtons() {
|
||
const cards = $('#multiple-container .multiple-card');
|
||
if (cards.length === 1) {
|
||
cards.find('.remove-card').addClass('d-none');
|
||
} else {
|
||
cards.find('.remove-card').removeClass('d-none');
|
||
}
|
||
}
|
||
|
||
// --- Event Handler, hanya aktif jika multiQsTemplate.length > 0
|
||
if (multiQsTemplate.length > 0) {
|
||
$('#accordion-4').off('click', '#add-group').on('click', '#add-group', function() {
|
||
const idx = allMultiQs.length;
|
||
const newQs = multiQsTemplate.map(q => ({...q}));
|
||
allMultiQs.push(newQs);
|
||
$('#multiple-container').append(makeMultipleCard(idx, newQs));
|
||
refreshRemoveButtons();
|
||
updateConditionalQuestions();
|
||
});
|
||
$('#accordion-4').off('click', '.remove-card').on('click', '.remove-card', function() {
|
||
const cardIdx = $(this).closest('.multiple-card').data('index');
|
||
allMultiQs.splice(cardIdx, 1);
|
||
$(this).closest('.multiple-card').remove();
|
||
// Update data-index di DOM supaya urut
|
||
$('#multiple-container .multiple-card').each(function(i) {
|
||
$(this).attr('data-index', i);
|
||
});
|
||
refreshRemoveButtons();
|
||
updateConditionalQuestions();
|
||
});
|
||
}
|
||
|
||
// --- Handler untuk select.form (show/hide desc di bawah select)
|
||
$('#accordion-4').on('change', 'select.question-input', function() {
|
||
const $select = $(this);
|
||
const seq = $select.data('sequence');
|
||
const val = $select.val();
|
||
$select.closest('.question-group').find('.form-desc').hide();
|
||
$select.closest('.question-group').find(`.form-desc[data-form="${val}"]`).show();
|
||
|
||
updateConditionalQuestions();
|
||
});
|
||
|
||
|
||
function checkShowCardData1() {
|
||
const methodVal = $(`[name="activity_data_${methodSequence}[0]"]`).val();
|
||
if(methodVal) {
|
||
if (methodVal && multiQsTemplate.find(q => q.question_plus == String(allowedMethodValue)) && String(methodVal) === String(allowedMethodValue)) {
|
||
$('#card-data-1-wrapper').show();
|
||
$('#add-group').show();
|
||
return
|
||
} else {
|
||
$('#card-data-1-wrapper').hide();
|
||
$('#add-group').hide();
|
||
return
|
||
}
|
||
} else {
|
||
if (multiQsTemplate.find(q => q.title_group && q.title_group !== null && q.title_group !== "")) {
|
||
$('#card-data-1-wrapper').show();
|
||
$('#add-group').show();
|
||
return
|
||
} else {
|
||
$('#card-data-1-wrapper').hide();
|
||
$('#add-group').hide();
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
if (multiQsTemplate.length > 0 && methodSequence) {
|
||
$('#accordion-4').on('change', `select[name="activity_data_${methodSequence}[0]"]`, function() {
|
||
checkShowCardData1();
|
||
});
|
||
}
|
||
|
||
// --- Conditional logic show/hide pertanyaan + UPDATE TITLE
|
||
function updateConditionalQuestions() {
|
||
// Untuk single (bukan multiple-card)
|
||
$('.question-group').each(function() {
|
||
const seq = $(this).find('.question-row').data('sequence');
|
||
const q = questionMap[seq];
|
||
if (q && q.ad_sequence) {
|
||
const parentSeq = q.ad_sequence;
|
||
let parentVal = $(`[name="activity_data_${parentSeq}[0]"]`).val();
|
||
if (typeof parentVal === "undefined") parentVal = '';
|
||
const shouldShow = String(parentVal) === String(q.question_plus);
|
||
allowedMethodValue = String(parentVal);
|
||
$(this).toggle(shouldShow);
|
||
if (!shouldShow) {
|
||
$(this).find('input,select').val('');
|
||
$(this).find('.form-desc').hide();
|
||
}
|
||
}
|
||
});
|
||
|
||
// Untuk multiple card + UPDATE TITLE
|
||
if (multiQsTemplate.length > 0) {
|
||
$('#multiple-container .multiple-card').each(function(cardIdx) {
|
||
// --- Dynamic Title Logic (ganti sesuai kebutuhanmu)
|
||
// Ambil array pertanyaan utk card ini
|
||
const seq = $(this).find('.question-row').data('sequence');
|
||
const q = questionMap[seq];
|
||
const parentSeq = q.ad_sequence;
|
||
let parentVal = $(`[name="activity_data_${parentSeq}[0]"]`).val();
|
||
const dataQs = allMultiQs[cardIdx];
|
||
// Ex: ambil title_group dari yg punya type_emission_reduction, else dari title_group yg ada
|
||
const row = dataQs.find(q =>
|
||
q.title_group &&
|
||
q.question_plus == parentVal
|
||
);
|
||
let newTitle = row ? row.title_group : '';
|
||
if (row) {
|
||
newTitle = row.title_group;
|
||
} else {
|
||
const fallback = dataQs.find(q => q.title_group);
|
||
newTitle = fallback ? fallback.title_group : '';
|
||
}
|
||
// --- Update title di card DOM
|
||
$(this).find('.card-title').text(newTitle);
|
||
|
||
// (opsional: tetap logic show/hide per row per card)
|
||
$(this).find('.question-group').each(function() {
|
||
const seq = $(this).find('.question-row').data('sequence');
|
||
const q = questionMap[seq];
|
||
if (q && q.ad_sequence) {
|
||
const parentSeq = q.ad_sequence;
|
||
let parentVal = $(`[name="activity_data_${parentSeq}[0]"]`).val();
|
||
const shouldShow = String(parentVal) === String(q.question_plus);
|
||
$(this).toggle(shouldShow);
|
||
if (!shouldShow) {
|
||
$(this).find('input,select').val('');
|
||
$(this).find('.form-desc').hide();
|
||
}
|
||
}
|
||
});
|
||
});
|
||
}
|
||
checkShowCardData1();
|
||
}
|
||
|
||
// --- Init on load.
|
||
$('.form-desc-list').each(function() {
|
||
$(this).find('.form-desc').hide();
|
||
const $select = $(this).closest('.question-group').find('select.question-input');
|
||
const val = $select.val();
|
||
if (val) {
|
||
$(this).find(`.form-desc[data-form="${val}"]`).show();
|
||
}
|
||
});
|
||
if (multiQsTemplate.length > 0) refreshRemoveButtons();
|
||
updateConditionalQuestions();
|
||
|
||
// --- Handler untuk semua input change
|
||
$('#accordion-4').on('change', '.question-input', function() {
|
||
updateConditionalQuestions();
|
||
});
|
||
|
||
})
|
||
.fail((xhr, status, error) => {
|
||
console.error('Gagal mengambil pertanyaan:', status, error);
|
||
$('#accordion-4').html(
|
||
'<p class="text-danger small">Terjadi kesalahan saat memuat pertanyaan.</p>'
|
||
);
|
||
});
|
||
}
|
||
|
||
|
||
|
||
|
||
function isFormReadyUntilStep6() {
|
||
// Step 1
|
||
const step1 = $('#sektor-dropdown').val() && $('#subsektor-dropdown').val() && $('#perhitungan-dropdown').val();
|
||
// Step 2
|
||
const step2 = $('[name="nama_kegiatan"]').val() && $('[name="jenis_kegiatan"]:checked').val();
|
||
// Step 6
|
||
let filledActivityData = true;
|
||
$('[name^="activity_data_"]:required').each(function () {
|
||
if (!$(this).val()) filledActivityData = false;
|
||
});
|
||
|
||
return step1 && step2 && filledActivityData;
|
||
}
|
||
|
||
// -------- DOCUMENT READY --------
|
||
$(document).ready(async function() {
|
||
let mitigationId;
|
||
initMap();
|
||
loadKabupaten();
|
||
|
||
attachNumberFormatting('#target');
|
||
attachNumberFormatting('#realisasi', true);
|
||
attachNumberFormatting('#alokasi_apbn');
|
||
attachNumberFormatting('#alokasi_apbd');
|
||
attachNumberFormatting('#alokasi_swasta');
|
||
attachNumberFormatting('#alokasi_sumber_dana_lain');
|
||
attachNumberFormatting('#realisasi_apbn');
|
||
attachNumberFormatting('#realisasi_apbd');
|
||
attachNumberFormatting('#realisasi_swasta');
|
||
attachNumberFormatting('#realisasi_sumber_dana_lain');
|
||
|
||
|
||
// Initialize Select2 with Bootstrap 4 theme
|
||
$('.select2').select2({
|
||
width: '100%',
|
||
theme: 'bootstrap4',
|
||
placeholder: function() {
|
||
return $(this).data('placeholder');
|
||
}
|
||
});
|
||
|
||
$('.select2-checkbox').select2({
|
||
placeholder: "Pilih kaitan SDG",
|
||
closeOnSelect: false,
|
||
width: '100%',
|
||
templateResult: function (data) {
|
||
if (!data.id) return data.text;
|
||
return $('<span>' + data.text + '</span>');
|
||
},
|
||
templateSelection: function (data) {
|
||
return data.text;
|
||
}
|
||
});
|
||
|
||
$('.select2-checkbox').on('select2:open', function () {
|
||
setTimeout(function () {
|
||
$('.select2-dropdown').addClass('select2-checkbox');
|
||
}, 0);
|
||
});
|
||
|
||
// Prefill dropdowns if session data available
|
||
const sessionSektor = "<?php echo e($sessionData['sektor'] ?? ''); ?>";
|
||
const sessionSubSektor = "<?php echo e($sessionData['sub_sektor'] ?? ''); ?>";
|
||
const sessionKategori = "<?php echo e($sessionData['kategori_perhitungan'] ?? ''); ?>";
|
||
const sessionSubActivity = "<?php echo e($sessionData['kategori_sub_aktivitas'] ?? ''); ?>";
|
||
|
||
const sessionRAD = "<?php echo e($sessionData['pelaksana_kegiatan_rad'] ?? ''); ?>";
|
||
const sessionKabkotId = "<?php echo e($sessionData['kabupaten_kota_location'] ?? ''); ?>";
|
||
const sessionKecId = "<?php echo e($sessionData['kecamatan_location'] ?? ''); ?>";
|
||
const sessionKelId = "<?php echo e($sessionData['kelurahan_location'] ?? ''); ?>";
|
||
const mitigation_id = "<?php echo e($sessionData['mitigation_id'] ?? ''); ?>";
|
||
mitigationId = mitigation_id;
|
||
<?php if($readonly ?? false): ?>
|
||
$('#section4').show();
|
||
loadQuestion("<?php echo e($sessionData['mitigation_id']); ?>");
|
||
<?php endif; ?>
|
||
|
||
await loadSektor(sessionSektor);
|
||
if(sessionSektor) {
|
||
$('#sektor-dropdown').val(sessionSektor).trigger('change');
|
||
await loadSubSektor(sessionSektor, sessionSubSektor);
|
||
if (sessionSubSektor) {
|
||
$('#subsektor-dropdown').val(sessionSubSektor).trigger('change');
|
||
await loadPerhitungan(sessionSektor, sessionSubSektor, sessionKategori);
|
||
if(sessionKategori) {
|
||
$('#perhitungan-dropdown').val(sessionKategori).trigger('change');
|
||
await loadSubAktivitas(sessionSektor, sessionSubSektor, sessionKategori);
|
||
if(sessionSubActivity && sessionSubActivity !== "null" && sessionSubActivity !== "undefined" && sessionSubActivity !== "") {
|
||
console.log("masuk");
|
||
$('#sub_activity').show();
|
||
$('#subactivity-dropdown').val(sessionSubActivity).trigger('change');
|
||
await loadRAD(sessionSubSektor, sessionRAD);
|
||
if(checkData()) {
|
||
loadQuestion(mitigation_id);
|
||
}
|
||
} else {
|
||
console.log("masuk2");
|
||
$('#sub_activity').hide();
|
||
await loadRAD(sessionSubSektor, sessionRAD);
|
||
if(checkData()) {
|
||
loadQuestion(mitigation_id);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Event Handlers for dropdown cascading
|
||
let sector = sessionSektor;
|
||
let subSector = sessionSubSektor;
|
||
$('#sektor-dropdown').on('change', async function() {
|
||
sector = $(this).val();
|
||
$('#perhitungan-dropdown').empty().append('<option value="">Pilih Kategori/ Mode Perhitungan</option>');
|
||
if(sector){
|
||
await loadSubSektor(sector);
|
||
} else {
|
||
$('#subsektor-dropdown').empty().append('<option value="">Pilih Sub-Sektor</option>');
|
||
}
|
||
});
|
||
|
||
$('#subsektor-dropdown').on('change', async function() {
|
||
subSector = $(this).val();
|
||
if(subSector){
|
||
await loadRAD(subSector);
|
||
await loadPerhitungan(sector, subSector);
|
||
} else {
|
||
$('#rad-dropdown').empty().append('<option value="">Tambah kegiatan di luar RAD</option>');
|
||
$('#perhitungan-dropdown').empty().append('<option value="">Pilih Kategori/ Mode Perhitungan</option>');
|
||
}
|
||
});
|
||
|
||
$('#perhitungan-dropdown').on('change', async function() {
|
||
const activity = $(this).val();
|
||
if(activity) {
|
||
await loadSubAktivitas(sector, subSector, activity)
|
||
}
|
||
|
||
let selectedOption = $(this).find(':selected');
|
||
let mitigation_id = selectedOption.data('id');
|
||
mitigationId = mitigation_id;
|
||
if(checkData()) {
|
||
console.log("masuk checkData");
|
||
const sector = $('#sektor-dropdown').val() || sessionSektor;
|
||
const subSector = $('#subsektor-dropdown').val() || sessionSubSektor;
|
||
const category = $('#perhitungan-dropdown').val() || sessionKategori;
|
||
const subactivity = $('#subactivity-dropdown').val() || sessionSubActivity;
|
||
loadRAD(subSector);
|
||
loadQuestion(mitigation_id);
|
||
} else {
|
||
$('#section4').hide();
|
||
}
|
||
});
|
||
|
||
$('#subactivity-dropdown').on('change', function() {
|
||
let selectedOption = $(this).find(':selected');
|
||
showSubActivityDesc(selectedOption.data('desc'));
|
||
let mitigation_id = selectedOption.data('id');
|
||
mitigationId = mitigation_id;
|
||
if(checkData()) {
|
||
const sector = $('#sektor-dropdown').val() || sessionSektor;
|
||
const subSector = $('#subsektor-dropdown').val() || sessionSubSektor;
|
||
const category = $('#perhitungan-dropdown').val() || sessionKategori;
|
||
const subactivity = $('#subactivity-dropdown').val() || sessionSubActivity;
|
||
loadRAD(subSector);
|
||
loadQuestion(mitigation_id);
|
||
} else {
|
||
$('#section4').hide();
|
||
}
|
||
})
|
||
|
||
$('#kabupaten').on('change', function() {
|
||
const kabkot_id = $('#kabupaten').val() || sessionKabkotId;
|
||
loadKecamatan(kabkot_id);
|
||
});
|
||
|
||
$('#kecamatan').on('change', function() {
|
||
const kabkot_id = $('#kabupaten').val() || sessionKabkotId;
|
||
const kec_id = $('#kecamatan').val() || sessionKecId;
|
||
loadKelurahan(kabkot_id, kec_id);
|
||
});
|
||
|
||
// FOR SECTION 4
|
||
|
||
|
||
// Form validation & accordion auto-open on invalid input
|
||
$('form').on('submit', function(e) {
|
||
if(!this.checkValidity()){
|
||
e.preventDefault();
|
||
const firstInvalid = this.querySelector(':invalid');
|
||
if(firstInvalid){
|
||
const collapseParent = firstInvalid.closest('.collapse');
|
||
if(collapseParent && !collapseParent.classList.contains('show')){
|
||
new bootstrap.Collapse(collapseParent, { toggle: true });
|
||
}
|
||
firstInvalid.focus();
|
||
}
|
||
}
|
||
});
|
||
|
||
// Handle partial save and accordion navigation
|
||
$('.btn-submit[data-target="#collapse2"]').on('click', function(e){
|
||
e.preventDefault();
|
||
|
||
let formData = $('#collapse1').find('input, select, textarea').serialize();
|
||
formData += '&mitigation_id=' + encodeURIComponent(mitigationId);
|
||
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
|
||
|
||
$.post("<?php echo e(route('mitigasi-form.store-part1')); ?>", formData)
|
||
.done(response => {
|
||
if(response.success){
|
||
$('#collapse1').one('hidden.bs.collapse', () => {
|
||
$('#collapse2').collapse('show');
|
||
});
|
||
$('#collapse1').collapse('hide');
|
||
} else {
|
||
alert(response.message || 'Gagal Menyimpan data bagian Informasi Umum');
|
||
}
|
||
})
|
||
.fail(xhr => {
|
||
let msg = 'Terjadi kesalahan saat menyimpan data Informasi Umum';
|
||
if (xhr.responseJSON && xhr.responseJSON.message) {
|
||
msg = xhr.responseJSON.message;
|
||
}
|
||
alert(msg);
|
||
});
|
||
});
|
||
|
||
$('.btn-submit[data-target="#collapse3"]').click(function(e) {
|
||
e.preventDefault();
|
||
|
||
let formData = $('#collapse2').find('input, select, textarea').serialize();
|
||
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
|
||
|
||
$.post("<?php echo e(route('mitigasi-form.store-part2')); ?>", formData)
|
||
.done(function(response) {
|
||
if (response.success) {
|
||
$('#collapse2').one('hidden.bs.collapse', () => {
|
||
$('#collapse3').collapse('show');
|
||
});
|
||
$('#collapse2').collapse('hide');
|
||
} else {
|
||
alert(response.message || 'Gagal menyimpan data bagian Data Umum Kegiatan Mitigasi');
|
||
}
|
||
})
|
||
.fail(function() {
|
||
alert('Terjadi kesalahan saat menyimpan Data Umum Kegiatan Mitigasi');
|
||
});
|
||
});
|
||
|
||
$('.btn-submit[data-target="#collapse4"]').click(function(e) {
|
||
e.preventDefault();
|
||
|
||
let formData = $('#collapse3').find('input, select, textarea').serialize();
|
||
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
|
||
|
||
$.post("<?php echo e(route('mitigasi-form.store-part3')); ?>", formData)
|
||
.done(function(response) {
|
||
if (response.success) {
|
||
$('#collapse3').one('hidden.bs.collapse', () => {
|
||
$('#collapse4').collapse('show');
|
||
});
|
||
$('#collapse3').collapse('hide');
|
||
} else {
|
||
alert(response.message || 'Gagal menyimpan data bagian Informasi Alokasi/Realisasi Anggaran');
|
||
}
|
||
})
|
||
.fail(function() {
|
||
alert('Terjadi kesalahan saat menyimpan Informasi Alokasi/Realisasi Anggaran');
|
||
});
|
||
});
|
||
|
||
$('.btn-submit[data-target="#collapse5"]').click(function(e) {
|
||
e.preventDefault();
|
||
|
||
let formData = new URLSearchParams();
|
||
document.querySelectorAll('#collapse4 input, #collapse4 select, #collapse4 textarea').forEach(input => {
|
||
if (input.name) {
|
||
formData.append(input.name, input.value);
|
||
}
|
||
});
|
||
|
||
formData.append('_token', document.querySelector('meta[name="csrf-token"]').getAttribute('content'));
|
||
|
||
fetch("<?php echo e(route('mitigasi-form.store-part4')); ?>", {
|
||
method: 'POST',
|
||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||
body: formData.toString()
|
||
})
|
||
.then(response => response.json())
|
||
.then(data => {
|
||
if (data.success) {
|
||
$('#collapse4').one('hidden.bs.collapse', () => {
|
||
$('#collapse5').collapse('show');
|
||
});
|
||
$('#collapse4').collapse('hide');
|
||
} else {
|
||
alert(data.message || 'Gagal menyimpan data bagian Form Sumber Data');
|
||
}
|
||
})
|
||
.catch(() => {
|
||
alert('Terjadi kesalahan saat menyimpan Form Sumber Data');
|
||
});
|
||
});
|
||
|
||
$('.btn-submit[data-target="#collapse6"]').click(function(e) {
|
||
e.preventDefault();
|
||
|
||
let formData = $('#collapse5').find('input, select, textarea').serialize();
|
||
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
|
||
|
||
$.post("<?php echo e(route('mitigasi-form.store-part5')); ?>", formData)
|
||
.done(function(response) {
|
||
if(response.success) {
|
||
$('#collapse5').one('hidden.bs.collapse', () => {
|
||
$('#collapse6').collapse('show');
|
||
});
|
||
$('#collapse5').collapse('hide');
|
||
} else {
|
||
alert(response.message || 'Gagal menyimpan data bagian Form Data Lokasi Kegiatan Mitigasi');
|
||
}
|
||
})
|
||
.fail(function() {
|
||
alert('Terjadi kesalahan saat menyimpan Form Data Lokasi Kegiatan Mitigasi');
|
||
});
|
||
});
|
||
|
||
$(document).on('click', '#final-submit', function() {
|
||
if(!isFormReadyUntilStep6()) {
|
||
alert('Harap lengkapi semua data sampai langkah ke-4 sebelum submit.');
|
||
return;
|
||
}
|
||
|
||
const formData = $('form').serialize();
|
||
|
||
$.ajax({
|
||
url: "<?php echo e(route('mitigasi-form.store-final')); ?>",
|
||
method: 'POST',
|
||
data: formData,
|
||
success: function(response) {
|
||
if (response.success) {
|
||
window.location.href = response.redirect;
|
||
} else {
|
||
alert(response.message || 'Gagal menyimpan data.');
|
||
}
|
||
},
|
||
error: function(xhr) {
|
||
console.error(xhr);
|
||
alert('Terjadi kesalahan saat menyimpan data.');
|
||
}
|
||
});
|
||
});
|
||
});
|
||
</script>
|
||
<?php $__env->stopPush(); ?>
|
||
<?php echo $__env->make('layouts.app', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?><?php /**PATH /var/www/sigd/resources/views/form/index-mitigasi.blade.php ENDPATH**/ ?>
|