sigd/storage/framework/views/1a478153a4bcd7e9a3a312ec9c7...

661 lines
32 KiB
PHP

<?php $__env->startSection('title', 'New Adaptation'); ?>
<?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;">ADAPTASI</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%;">Formulir Jenis Adaptasi</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">
<div class="form-group">
<label class="required-label bold" for="nama_kegiatan">
Nama Kegiatan
</label>
<input
type="text"
class="form-control"
name="nama_kegiatan"
placeholder="Masukkan Nama Kegiatan"
value="<?php echo e(isset($sessionData['nama_kegiatan']) ? $sessionData['nama_kegiatan'] : ''); ?>"
>
</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">
<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_aksi">
Kategori Aksi
</label>
<select class="form-control select-button select2" name="kategori_aksi" id="kategoriaksi-dropdown" required data-placeholder="Pilih Kategori Aksi">
<option value="">Pilih Kategori Aksi</option>
</select>
</div>
<!-- <div class="form-group mt-4">
<label class="label-title bold" for="jenis_aksi">
Jenis Aksi
</label>
<select class="form-control select-button select2" name="jenis_aksi" id="jenisaksi-dropdown" data-placeholder="Pilih Jenis Aksi">
<option value="">Pilih Jenis Aksi</option>
</select>
</div>
<div class="form-group mt-4">
<label class="label-title bold" for="aksi">
Aksi
</label>
<select class="form-control select-button select2" name="aksi" id="aksi-dropdown" data-placeholder="Pilih Jenis Aksi">
<option value="">Pilih Aksi</option>
</select>
</div> -->
<div class="form-group mt-4">
<label class="label-title bold" for="pelaksana_kegiatan">
Pelaksana Kegiatan
</label>
<input
type="text"
class="form-control"
name="pelaksana_kegiatan"
placeholder="Masukkan Pelaksana Kegiatan"
value="<?php echo e(isset($sessionData['pelaksana_kegiatan']) ? $sessionData['pelaksana_kegiatan'] : ''); ?>"
>
</div>
<div class="form-group mt-4">
<label class="label-title bold" for="lokasi_kegiatan">
Lokasi Pelaksana Kegiatan Aksi
</label>
<input
type="text"
class="form-control"
name="lokasi_kegiatan"
placeholder="Masukkan Lokasi Kegiatan Aksi"
value="<?php echo e(isset($sessionData['lokasi_kegiatan']) ? $sessionData['lokasi_kegiatan'] : ''); ?>"
>
</div>
<div class="form-group mt-4">
<label class="label-title bold" for="waktu_kegiatan">
Waktu Pelaksana Kegiatan Aksi
</label>
<input
type="text"
class="form-control"
name="waktu_kegiatan"
placeholder="Masukkan Waktu Kegiatan Aksi"
value="<?php echo e(isset($sessionData['waktu_kegiatan']) ? $sessionData['waktu_kegiatan'] : ''); ?>"
>
</div>
<div class="form-group mt-4">
<label class="label-title bold" for="dokumen">
Dokumen / Kebijakan Terkait
</label>
<input
type="text"
class="form-control"
name="dokumen"
placeholder="Masukkan Waktu Kegiatan Aksi"
value="<?php echo e(isset($sessionData['dokumen']) ? $sessionData['dokumen'] : ''); ?>"
>
</div>
<div class="mt-4 mb-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">
INFORMASI ALOKASI/REALISASI ANGGARAN
<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">
<div class="row">
<div class="col-md-6">
<p class="text-muted" style="font-size: 14px;">1.2.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.2.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 mb-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">
KEGIATAN
<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="form-group">
<label class="label-title" for="detail_kegiatan">
Detail Kegiatan
</label>
<textarea
class="form-control"
name="detail_kegiatan"
id="detail_kegiatan"
rows="3"
placeholder="Isi detail kegiatan di sini"
><?php echo e(isset($sessionData['detail_kegiatan']) ? $sessionData['detail_kegiatan'] : ''); ?></textarea>
</div>
<div class="mt-4 mb-4 text-right">
<button type="submit" id="final-submit" class="btn btn-submit px-4 py-2">
Simpan
</button>
</div>
</div>
</div>
</div>
</div>
</form>
<?php $__env->stopSection(); ?>
<?php $__env->startPush('styles'); ?>
<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" />
<?php $__env->stopPush(); ?>
<?php $__env->startPush('scripts'); ?>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.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);
}
// ------- ALOKASI AND REALISASI --------
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));
});
}
// -------- DROPDOWN LOADING FUNCTIONS WITH PROMISE --------
function decodeHtml(html) {
const txt = document.createElement('textarea');
txt.innerHTML = html;
return txt.value;
}
function loadSektor(selectedValue = null) {
return $.get('/adaptasi/form-adaptasi-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('/adaptasi/form-adaptasi-subsector-dropdown', { sector })
.then(data => {
const $dropdown = $('#subsektor-dropdown').empty();
$dropdown.append('<option value="">Pilih Sub-Sektor</option>');
data.forEach(item => {
const selected = decodeHtml(item) === decodeHtml(selectedValue) ? 'selected' : '';
$dropdown.append(`<option value="${decodeHtml(item)}" ${selected}>${decodeHtml(item)}</option>`);
});
})
.catch(() => alert('Gagal memuat data Sub-Sektor'));
}
function loadKategoriAksi(sector, subSector, selectedValue = null) {
return $.get('/adaptasi/form-adaptasi-kategoriaksi-dropdown', { sub_sector: subSector, sector: sector })
.then(data => {
const $dropdown = $('#kategoriaksi-dropdown').empty();
$dropdown.append('<option value="">Pilih Kategori Aksi</option>');
data.forEach(item => {
const selected = item.kategori_aksi === selectedValue ? 'selected' : '';
$dropdown.append(
`<option value="${item.kategori_aksi}" data-id="${item.id}" ${selected}>${item.kategori_aksi}</option>`
);
});
})
.catch(() => alert('gagal memuat data Kategori Aksi'));
}
// function loadJenisAksi(sector, subSector, kategori, selectedValue = null) {
// return $.get('/adaptasi/form-adaptasi-jenisaksi-dropdown', { sub_sector: subSector, sector: sector, kategori: kategori })
// .then(data => {
// const $dropdown = $('#jenisaksi-dropdown').empty();
// $dropdown.append('<option value="">Pilih Jenis Aksi</option>');
// data.forEach(item => {
// const selected = item === selectedValue ? 'selected' : '';
// $dropdown.append(`<option value="${item}" ${selected}>${item}</option>`);
// });
// })
// .catch(() => alert('gagal memuat data Jenis Aksi'));
// }
// function loadAksi(sector, subSector, kategori, jenis, selectedValue = null) {
// return $.get('/adaptasi/form-adaptasi-aksi-dropdown', { sub_sector: subSector, sector: sector, kategori: kategori, jenis: jenis })
// .then(data => {
// const $dropdown = $('#aksi-dropdown').empty();
// $dropdown.append('<option value="">Pilih Aksi</option>');
// data.forEach(item => {
// const selected = item.aksi === selectedValue ? 'selected' : '';
// $dropdown.append(`<option value="${item.aksi}" data-id="${item.id}" ${selected}>${item.aksi}</option>`);
// });
// })
// .catch(() => alert('gagal memuat data Aksi'));
// }
$(document).ready(async function() {
let adaptationId;
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');
}
});
// 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_aksi'] ?? ''); ?>";
const sessionJenis = "<?php echo e($sessionData['jenis_aksi'] ?? ''); ?>";
const sessionAksi = "<?php echo e($sessionData['aksi'] ?? ''); ?>";
const adaptation_id = "<?php echo e($sessionData['adaptation_id'] ?? ''); ?>";
adaptationId = adaptation_id;
await loadSektor(sessionSektor);
if(sessionSektor) {
$('#sektor-dropdown').val(sessionSektor).trigger('change');
await loadSubSektor(sessionSektor, sessionSubSektor);
if(sessionSubSektor) {
$('#subsektor-dropdown').val(sessionSubSektor).trigger('change');
await loadKategoriAksi(sessionSektor, sessionSubSektor, sessionKategori);
if(sessionKategori) {
$('#kategoriaksi-dropdown').val(sessionKategori).trigger('change');
// await loadJenisAksi(sessionSektor, sessionSubSektor, sessionKategori, sessionJenis);
// if(sessionJenis) {
// $('#jenisaksi-dropdown').val(sessionJenis).trigger('change');
// await loadAksi(sessionSektor, sessionSubSektor, sessionKategori, sessionJenis, sessionAksi);
// }
}
}
}
// Event Handlers for dropdown cascading
let sector = sessionSektor;
let subSector = sessionSubSektor;
let kategori = sessionKategori;
let jenis = sessionJenis;
let aksi = sessionAksi;
$('#sektor-dropdown').on('change', async function() {
sector = $(this).val();
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 loadKategoriAksi(sector, subSector);
} else {
$('#kategoriaksi-dropdown').empty().append('<option value="">Pilih Kategori Aksi</option>');
}
});
$('#kategoriaksi-dropdown').on('change', async function() {
kategori = $(this).val();
if(kategori) {
let selectedOption = $(this).find(':selected');
// await loadJenisAksi(sector, subSector, kategori);
let adaptation_id = selectedOption.data('id');
adaptationId = adaptation_id;
// } else {
// $('#jenisaksi-dropdown').empty().append('<option value="">Pilih Jenis Aksi</option>');
}
});
// $('#jenisaksi-dropdown').on('change', async function() {
// jenis = $(this).val();
// if(jenis) {
// await loadAksi(sector, subSector, kategori, jenis);
// } else {
// $('#aksi-dropdown').empty().append('<option value="">Pilih Aksi</option>');
// }
// });
// $('#aksi-dropdown').on('change', async function() {
// let selectedOption = $(this).find(':selected');
// let adaptation_id = selectedOption.data('id');
// adaptationId = adaptation_id;
// });
// 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 += '&adaptation_id=' + encodeURIComponent(adaptationId);
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
console.log(formData)
$.post("<?php echo e(route('adaptasi-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 => {
console.log(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('adaptasi-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 Informasi Alokasi/Realisasi Anggaran');
}
})
.fail(function() {
alert('Terjadi kesalahan saat menyimpan Data Informasi Alokasi/Realisasi Anggaran');
});
});
$(document).on('click', '#final-submit', function() {
const formData = $('form').serialize();
$.ajax({
url: "<?php echo e(route('adaptasi-form.store-final')); ?>",
method: 'POST',
data: formData,
success: function(response) {
if(response.success) {
window.location.href = response.redirect;
} else {
console.log(response);
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-adaptasi.blade.php ENDPATH**/ ?>