sigd/storage/framework/views/e1fbe0a9c7896d8c0d449c31d99...

2224 lines
115 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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: '&copy; 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**/ ?>