feat(currency): tambahkan fitur filter pada ekspor data mata uang

- Modifikasi `CurrencyController`:
  - Tambahkan parameter `Request` pada method `export` untuk menerima input filter `search`.
  - Perbarui logika ekspor agar mendukung pencarian berbasis parameter `search`.

- Perubahan pada `CurrencyExport`:
  - Tambahkan konstruktor untuk menerima dan menyimpan parameter pencarian (`search`).
  - Modifikasi query pada method `collection` untuk menambahkan filter berdasarkan `code`, `name`, atau `decimal_places` yang sesuai dengan parameter `search`.
  - Hapus kolom `updated_at` dan `deleted_at` dari output ekspor.
  - Perbaikan format data pada method `columnFormats`.

- Update pada view `currency/index.blade.php`:
  - Tambahkan elemen JavaScript untuk mengatur URL parameter `search` pada tombol ekspor.
  - Ganti event `change` pada input pencarian dengan `input` untuk meningkatkan respon pencarian secara real-time.
  - Pastikan URL ekspor diperbarui setiap kali pengguna mengetik dalam kolom pencarian.

- Penyesuaian minor pada `branch/index.blade.php`:
  - Hapus log yang tidak relevan sebelum proses ekspor.

Fitur ini memastikan proses ekspor data mata uang dapat disaring berdasarkan pencarian spesifik, memberikan fleksibilitas lebih kepada pengguna.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-05-19 09:08:33 +07:00
parent 0bb12812a5
commit 8d190cb10d
4 changed files with 47 additions and 10 deletions

View File

@@ -20,7 +20,7 @@
<div class="flex flex-wrap gap-2.5">
<div class="h-[24px] border border-r-gray-200"></div>
@can('basic-data.export')
<a class="btn btn-sm btn-light" href="{{ route('basicdata.currency.export') }}"> Export to Excel </a>
<a id="export-btn" class="btn btn-sm btn-light" href="{{ route('basicdata.currency.export') }}"> Export to Excel </a>
@endcan
@can('basic-data.create')
<a class="btn btn-sm btn-primary" href="{{ route('basicdata.currency.create') }}"> Tambah Mata Uang </a>
@@ -152,6 +152,7 @@
<script type="module">
const element = document.querySelector('#currency-table');
const searchInput = document.getElementById('search');
const exportBtn = document.getElementById('export-btn');
const deleteSelectedButton = document.getElementById('deleteSelected');
const apiUrl = element.getAttribute('data-api-url');
@@ -206,11 +207,28 @@
};
let dataTable = new KTDataTable(element, dataTableOptions);
// Update export URL with filters
function updateExportUrl() {
let url = new URL(exportBtn.href);
if (searchInput.value) {
url.searchParams.set('search', searchInput.value);
} else {
url.searchParams.delete('search');
}
exportBtn.href = url.toString();
}
// Custom search functionality
searchInput.addEventListener('change', function () {
searchInput.addEventListener('input', function () {
const searchValue = this.value.trim();
dataTable.goPage(1);
dataTable.search(searchValue, true);
// Update export URL with search parameter
updateExportUrl();
});
function updateDeleteButtonVisibility() {