templates/backend/t_raw_data/form_file.html.twig line 1

Open in your IDE?
  1. {% extends "@GreenAdmin/modal-layout.html.twig" %}
  2. {% block title %}{{ 'File' }}{% endblock %}
  3. {% block body %}
  4. {# <form action="{{ path('t_raw_data_form_file') }}" method="POST" enctype="multipart/form-data"> #}
  5.     <table class="table table-bordered">
  6.         <tbody>
  7.             {# <tr>
  8.                 <th>Periode <em class="text-danger">*</em></th>
  9.                 {% if null == file.id %}
  10.                     {% if publikasi.periode.id == 5 %}
  11.                         <td>
  12.                             <select name="tanggal" id="" class="form-control" required>
  13.                                 <option value="">-- Pilih Tanggal --</option>
  14.                                 {% for i in 1..31 %}
  15.                                     <option value="{{ i }}">{{ i }}</option>
  16.                                 {% endfor %}
  17.                             </select>
  18.                         </td>
  19.                         <td>
  20.                             <select name="bulan" id="" class="form-control" required>
  21.                                 <option value="">-- Pilih Bulan --</option>
  22.                                 {% for key, val in bulan %}
  23.                                     <option value="{{ key }}">{{ val }}</option>
  24.                                 {% endfor %}
  25.                             </select>
  26.                         </td>
  27.                     {% else %}
  28.                         <td colspan="2">
  29.                             <select name="bulan" id="" class="form-control" required>
  30.                                 <option value="">-- Pilih Periode --</option>
  31.                                 {% for key, val in periode[publikasi.periode.id] %}
  32.                                     <option value="{{ key }}">{{ val }}</option>
  33.                                 {% endfor %}
  34.                             </select>
  35.                         </td>
  36.                     {% endif %}
  37.                 {% else %}
  38.                     
  39.                     <td><input type="text" class="form-control" value="{{ file.periodeAwal | date("d F Y") }}" readonly></td>
  40.                     <td><input type="text" class="form-control" value="{{ file.periodeAkhir | date("d F Y") }}" readonly></td>
  41.                 {% endif %}
  42.             </tr> #}
  43.             {# <tr>
  44.                 <th>Tahun Anggaran <em class="text-danger">*</em></th>
  45.                 <td colspan="2">
  46.                     <select name="tahun_anggaran" class="form-control" id="">
  47.                         {% for a in range(2020, date().format('Y'))|reverse %}
  48.                              <option value="{{ a }}">{{ a }}</option>
  49.                         {% endfor %}
  50.                     </select>
  51.                 </td>
  52.             </tr> #}
  53.             <tr>
  54.                 <th>Periode Upload Sebelumnya <em class="text-danger">*</em></th>
  55.                 <td colspan="2">
  56.                     <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="">
  57.                 </td>
  58.             </tr>
  59.             <tr>
  60.                 <th>File Report Pengadaan <em class="text-danger">*</em></th>
  61.                 <td colspan="2">
  62.                     <input type="file" name="file" class="form-control" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" required>
  63.                     <a href="{{ path('t_raw_data_download_template') }}"> <i class="fa fa-download"></i> <i> Download Template</i> </a>
  64.                 </td>
  65.             </tr>
  66.             
  67.             {# <tr>
  68.                 <th>File Monitoring PR Full <em class="text-danger">*</em></th>
  69.                 <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>
  70.             </tr> #}
  71.         </tbody>
  72.     </table>
  73.     <div class="pull-right">
  74.         {# <button type="submit" class="btn btn-sm btn-info" ><i class="fa fa-save"></i> <span id="submit_label">{{ 'save' | trans }}</span></button> #}
  75.     </div>
  76. {# </form> #}
  77.     {% endblock %}
  78.     {% block form_start %}
  79.     <form id="uploadForm" action="{{ path('t_raw_data_form_file') }}" method="POST" enctype="multipart/form-data" onsubmit="disableSubmitButton(this)">
  80.     {% endblock %}
  81.     {% block form_end %}
  82.         </form>
  83.     {% endblock %}
  84.     
  85.     {% block actions %}
  86.     <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>
  87.     
  88.     {% endblock %}
  89. {% block javascripts %}
  90. {{ parent() }}
  91. <style>
  92.   .flatpickr-calendar { z-index: 2000; }
  93.   .flatpickr-day.has-data { background:#00e676; color:#fff; border-radius:50%; }
  94.   .flatpickr-day.has-data:hover { background:#00c853; color:#fff; }
  95.   .flatpickr-day.today.selected {
  96.     border: none;
  97.   }
  98. </style>
  99. <script>
  100.     let __postingDates = null;
  101.     function getPostingDates() {
  102.         if (__postingDates) return Promise.resolve(__postingDates);
  103.         return fetch('{{ path('dashboard_dates') }}')
  104.             .then(r => r.json())
  105.             .then(d => (__postingDates = d))
  106.             .catch(() => (__postingDates = []));
  107.         }
  108.     function attachFlatpickrTo(el, dates, appendRoot) {
  109.         if (el._flatpickr) return el._flatpickr.open();
  110.         flatpickr(el, {
  111.             dateFormat: 'Y-m-d',
  112.             appendTo: appendRoot || document.body, // jika di modal, arahkan ke modal
  113.             onDayCreate: function(dObj, dStr, fp, dayElem) {
  114.             const ymd = dayElem.dateObj.toLocaleDateString('en-CA');
  115.             if (Array.isArray(dates) && dates.includes(ymd)) {
  116.                 dayElem.classList.add('has-data');
  117.                 dayElem.title = 'Ada data posting';
  118.             }
  119.             }
  120.         }).open();
  121.     }
  122.     document.addEventListener('focusin', function(e) {
  123.     if (!e.target.matches('.datepicker')) return;
  124.         const modalRoot = e.target.closest('.modal') || document.body;
  125.         getPostingDates().then(dates => {
  126.             attachFlatpickrTo(e.target, dates, modalRoot);
  127.         });
  128.     });
  129. </script>
  130. <script>
  131. $(document).ready(function(){
  132.   $(document).on('submit', '#uploadForm', function(e){
  133.     const btn = $(this).find('button[type="submit"], #submitBtn');
  134.     if (btn.length) {
  135.       if (btn.prop('disabled')) { e.preventDefault(); return false; }
  136.       btn.prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i> Sedang menyimpan...');
  137.     }
  138.     return true;
  139.   });
  140. });
  141. </script>
  142. {% endblock %}
  143. {# {% block javascripts %}
  144. <script>
  145.     $(document).ready(function(){
  146.     // Delegasi submit form
  147.     $(document).on('submit', '#uploadForm', function(e){
  148.         const btn = $(this).find('button[type="submit"], #submitBtn');
  149.         if (btn.length) {
  150.             if (btn.prop('disabled')) {
  151.                 e.preventDefault(); // cegah double submit
  152.                 return false;
  153.             }
  154.             btn.prop('disabled', true);
  155.             btn.html('<i class="fa fa-spinner fa-spin"></i> Sedang menyimpan...');
  156.         }
  157.         // biarkan form tetap submit ke server
  158.         return true;
  159.     });
  160. });
  161. </script>
  162. {% endblock %} #}