{% extends "@GreenAdmin/modal-layout.html.twig" %}
{% block title %}{{ 'File' }}{% endblock %}
{% block body %}
{# <form action="{{ path('t_raw_data_form_file') }}" method="POST" enctype="multipart/form-data"> #}
<table class="table table-bordered">
<tbody>
{# <tr>
<th>Periode <em class="text-danger">*</em></th>
{% if null == file.id %}
{% if publikasi.periode.id == 5 %}
<td>
<select name="tanggal" id="" class="form-control" required>
<option value="">-- Pilih Tanggal --</option>
{% for i in 1..31 %}
<option value="{{ i }}">{{ i }}</option>
{% endfor %}
</select>
</td>
<td>
<select name="bulan" id="" class="form-control" required>
<option value="">-- Pilih Bulan --</option>
{% for key, val in bulan %}
<option value="{{ key }}">{{ val }}</option>
{% endfor %}
</select>
</td>
{% else %}
<td colspan="2">
<select name="bulan" id="" class="form-control" required>
<option value="">-- Pilih Periode --</option>
{% for key, val in periode[publikasi.periode.id] %}
<option value="{{ key }}">{{ val }}</option>
{% endfor %}
</select>
</td>
{% endif %}
{% else %}
<td><input type="text" class="form-control" value="{{ file.periodeAwal | date("d F Y") }}" readonly></td>
<td><input type="text" class="form-control" value="{{ file.periodeAkhir | date("d F Y") }}" readonly></td>
{% endif %}
</tr> #}
{# <tr>
<th>Tahun Anggaran <em class="text-danger">*</em></th>
<td colspan="2">
<select name="tahun_anggaran" class="form-control" id="">
{% for a in range(2020, date().format('Y'))|reverse %}
<option value="{{ a }}">{{ a }}</option>
{% endfor %}
</select>
</td>
</tr> #}
<tr>
<th>Periode Upload Sebelumnya <em class="text-danger">*</em></th>
<td colspan="2">
<input type="text" value="{{ (lastUpdate) ? lastUpdate|date('Y-m-d') : null }}" name="periode_upload" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-theme="dark" title="Isi Dengan Periode Upload Sebelumnya yang akan di update datanya" placeholder="Periode Upload" required="" class="form-control datepicker" id="">
</td>
</tr>
<tr>
<th>File Report Pengadaan <em class="text-danger">*</em></th>
<td colspan="2">
<input type="file" name="file" class="form-control" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" required>
<a href="{{ path('t_raw_data_download_template') }}"> <i class="fa fa-download"></i> <i> Download Template</i> </a>
</td>
</tr>
{# <tr>
<th>File Monitoring PR Full <em class="text-danger">*</em></th>
<td colspan="2"><input type="file" name="file_monitoring_full" class="form-control" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" required></td>
</tr> #}
</tbody>
</table>
<div class="pull-right">
{# <button type="submit" class="btn btn-sm btn-info" ><i class="fa fa-save"></i> <span id="submit_label">{{ 'save' | trans }}</span></button> #}
</div>
{# </form> #}
{% endblock %}
{% block form_start %}
<form id="uploadForm" action="{{ path('t_raw_data_form_file') }}" method="POST" enctype="multipart/form-data" onsubmit="disableSubmitButton(this)">
{% endblock %}
{% block form_end %}
</form>
{% endblock %}
{% block actions %}
<button id="submitBtn" type="submit" class="btn btn-sm btn-info" ><i class="fa fa-save"></i> <span id="submit_label">{{ 'Simpan' | trans }}</span></button>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<style>
.flatpickr-calendar { z-index: 2000; }
.flatpickr-day.has-data { background:#00e676; color:#fff; border-radius:50%; }
.flatpickr-day.has-data:hover { background:#00c853; color:#fff; }
.flatpickr-day.today.selected {
border: none;
}
</style>
<script>
let __postingDates = null;
function getPostingDates() {
if (__postingDates) return Promise.resolve(__postingDates);
return fetch('{{ path('dashboard_dates') }}')
.then(r => r.json())
.then(d => (__postingDates = d))
.catch(() => (__postingDates = []));
}
function attachFlatpickrTo(el, dates, appendRoot) {
if (el._flatpickr) return el._flatpickr.open();
flatpickr(el, {
dateFormat: 'Y-m-d',
appendTo: appendRoot || document.body, // jika di modal, arahkan ke modal
onDayCreate: function(dObj, dStr, fp, dayElem) {
const ymd = dayElem.dateObj.toLocaleDateString('en-CA');
if (Array.isArray(dates) && dates.includes(ymd)) {
dayElem.classList.add('has-data');
dayElem.title = 'Ada data posting';
}
}
}).open();
}
document.addEventListener('focusin', function(e) {
if (!e.target.matches('.datepicker')) return;
const modalRoot = e.target.closest('.modal') || document.body;
getPostingDates().then(dates => {
attachFlatpickrTo(e.target, dates, modalRoot);
});
});
</script>
<script>
$(document).ready(function(){
$(document).on('submit', '#uploadForm', function(e){
const btn = $(this).find('button[type="submit"], #submitBtn');
if (btn.length) {
if (btn.prop('disabled')) { e.preventDefault(); return false; }
btn.prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i> Sedang menyimpan...');
}
return true;
});
});
</script>
{% endblock %}
{# {% block javascripts %}
<script>
$(document).ready(function(){
// Delegasi submit form
$(document).on('submit', '#uploadForm', function(e){
const btn = $(this).find('button[type="submit"], #submitBtn');
if (btn.length) {
if (btn.prop('disabled')) {
e.preventDefault(); // cegah double submit
return false;
}
btn.prop('disabled', true);
btn.html('<i class="fa fa-spinner fa-spin"></i> Sedang menyimpan...');
}
// biarkan form tetap submit ke server
return true;
});
});
</script>
{% endblock %} #}