프리티어 변경

필터링 AND OR 조건 추가
데이터 JSON 구조 변경
(오류 발생 리스트 형식 안나오는중)
This commit is contained in:
2026-02-22 15:11:22 +09:00
parent 42b5c0f047
commit c8e0aa46f9
11 changed files with 1206 additions and 908 deletions

View File

@@ -33,6 +33,8 @@ export const state = {
/** 화면 보기 모드 ('grid' | 'table') */
viewMode: 'grid',
tagMode: 'AND', // 태그 필터링 모드 ('AND' 또는 'OR')
/** 장바구니/내보내기 등을 위해 선택된 상품 ID 세트 (세션 스토리지 복원) */
selectedIds: new Set(JSON.parse(sessionStorage.getItem('selectedProductIds') || '[]')),
@@ -60,4 +62,31 @@ export const state = {
export function saveSelection() {
const idsArray = Array.from(state.selectedIds);
sessionStorage.setItem('selectedProductIds', JSON.stringify(idsArray));
}
}
window.toggleViewMode = function (mode) {
// 1. 이미 해당 모드라면 실행 중단
if (state.viewMode === mode) return;
// 2. 상태 변경
state.viewMode = mode;
// 3. 버튼 UI 업데이트 (활성화된 아이콘 강조)
const gridBtn = document.getElementById('view-grid-btn'); // HTML의 그리드 아이콘 ID
const listBtn = document.getElementById('view-list-btn'); // HTML의 리스트 아이콘 ID
if (gridBtn && listBtn) {
if (mode === 'grid') {
gridBtn.classList.add('text-primary', 'dark:text-white'); // 강조색
listBtn.classList.remove('text-primary', 'dark:text-white');
listBtn.classList.add('text-slate-400'); // 비활성색
} else {
listBtn.classList.add('text-primary', 'dark:text-white');
gridBtn.classList.remove('text-primary', 'dark:text-white');
gridBtn.classList.add('text-slate-400');
}
}
// 4. 즉시 화면 다시 그리기
renderProducts(state.currentPage);
};