feat: [equipment] 목록 필터 상태를 sessionStorage에 저장/복원

- 검색/필터 후 수정 페이지 이동 → 목록 복귀 시 필터 유지
- 페이지네이션, select 변경 시에도 자동 저장
This commit is contained in:
김보곤
2026-02-25 21:20:14 +09:00
parent b62521213a
commit 0b3ab8d07b

View File

@@ -83,12 +83,50 @@ class="bg-white rounded-lg shadow-sm">
@push('scripts')
<script>
document.getElementById('filterForm').addEventListener('submit', function(e) {
const FILTER_KEY = 'equipment_filter';
const filterForm = document.getElementById('filterForm');
const filterFields = ['search', 'status', 'production_line', 'equipment_type', 'per_page', 'page'];
// 필터 상태 저장
function saveFilter() {
const data = {};
filterFields.forEach(name => {
const el = filterForm.querySelector(`[name="${name}"]`);
if (el) data[name] = el.value;
});
sessionStorage.setItem(FILTER_KEY, JSON.stringify(data));
}
// 필터 상태 복원 (페이지 로드 시)
(function restoreFilter() {
const saved = sessionStorage.getItem(FILTER_KEY);
if (!saved) return;
try {
const data = JSON.parse(saved);
filterFields.forEach(name => {
const el = filterForm.querySelector(`[name="${name}"]`);
if (el && data[name] !== undefined) el.value = data[name];
});
} catch (e) {}
})();
filterForm.addEventListener('submit', function(e) {
e.preventDefault();
document.getElementById('pageInput').value = 1;
saveFilter();
htmx.trigger('#equipment-table', 'filterSubmit');
});
// select 변경 시에도 저장
filterForm.querySelectorAll('select').forEach(el => {
el.addEventListener('change', saveFilter);
});
// HTMX 요청 직전 필터 저장 (페이지네이션 등)
document.body.addEventListener('htmx:configRequest', function() {
saveFilter();
});
function confirmDelete(id, name) {
showDeleteConfirm(name, () => {
fetch(`/api/admin/equipment/${id}`, {