feat: PDF 매칭 필터링 및 서적 정보 UI 개선
- 서적 편집 페이지에서 PDF 매칭 드롭다운이 현재 서적의 PDF만 표시하도록 수정 - PDF 관리 페이지에 서적 정보 표시 UI 추가 - 타입 안전한 비교로 book_id 필터링 개선 - PDF 통계 카드에 서적별 분류 추가 - 필터 기능에 '서적 포함' 옵션 추가 - 디버깅 로그 추가로 문제 추적 개선 주요 변경사항: - book-editor.js: String() 타입 변환으로 안전한 book_id 비교 - pdf-manager.html/js: 서적 정보 배지 및 통계 카드 추가 - book-documents.js: HTML 문서 필터링 로직 개선
This commit is contained in:
@@ -41,7 +41,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 통계 카드 -->
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8">
|
||||
<div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-8">
|
||||
<div class="bg-white rounded-lg shadow-sm border p-6">
|
||||
<div class="flex items-center">
|
||||
<div class="w-12 h-12 bg-red-100 rounded-lg flex items-center justify-center mr-4">
|
||||
@@ -54,13 +54,25 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-lg shadow-sm border p-6">
|
||||
<div class="flex items-center">
|
||||
<div class="w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center mr-4">
|
||||
<i class="fas fa-book text-blue-600 text-xl"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="text-lg font-semibold text-gray-900">서적 포함</h3>
|
||||
<p class="text-2xl font-bold text-blue-600" x-text="bookPDFs"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-lg shadow-sm border p-6">
|
||||
<div class="flex items-center">
|
||||
<div class="w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center mr-4">
|
||||
<i class="fas fa-link text-green-600 text-xl"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="text-lg font-semibold text-gray-900">연결된 PDF</h3>
|
||||
<h3 class="text-lg font-semibold text-gray-900">HTML 연결</h3>
|
||||
<p class="text-2xl font-bold text-green-600" x-text="linkedPDFs"></p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -72,7 +84,7 @@
|
||||
<i class="fas fa-unlink text-yellow-600 text-xl"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="text-lg font-semibold text-gray-900">독립 PDF</h3>
|
||||
<h3 class="text-lg font-semibold text-gray-900">독립 파일</h3>
|
||||
<p class="text-2xl font-bold text-yellow-600" x-text="standalonePDFs"></p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -86,21 +98,26 @@
|
||||
<h2 class="text-lg font-semibold text-gray-900">PDF 파일 목록</h2>
|
||||
|
||||
<!-- 필터 버튼 -->
|
||||
<div class="flex space-x-2">
|
||||
<div class="flex flex-wrap gap-2">
|
||||
<button @click="filterType = 'all'"
|
||||
:class="filterType === 'all' ? 'bg-blue-600 text-white' : 'bg-gray-200 text-gray-700'"
|
||||
:class="filterType === 'all' ? 'bg-gray-600 text-white' : 'bg-gray-200 text-gray-700'"
|
||||
class="px-3 py-1.5 rounded-lg text-sm transition-colors">
|
||||
전체
|
||||
</button>
|
||||
<button @click="filterType = 'book'"
|
||||
:class="filterType === 'book' ? 'bg-blue-600 text-white' : 'bg-gray-200 text-gray-700'"
|
||||
class="px-3 py-1.5 rounded-lg text-sm transition-colors">
|
||||
서적 포함
|
||||
</button>
|
||||
<button @click="filterType = 'linked'"
|
||||
:class="filterType === 'linked' ? 'bg-green-600 text-white' : 'bg-gray-200 text-gray-700'"
|
||||
class="px-3 py-1.5 rounded-lg text-sm transition-colors">
|
||||
연결됨
|
||||
HTML 연결
|
||||
</button>
|
||||
<button @click="filterType = 'standalone'"
|
||||
:class="filterType === 'standalone' ? 'bg-yellow-600 text-white' : 'bg-gray-200 text-gray-700'"
|
||||
class="px-3 py-1.5 rounded-lg text-sm transition-colors">
|
||||
독립
|
||||
독립 파일
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -129,26 +146,47 @@
|
||||
<p class="text-sm text-gray-500 mb-2" x-text="pdf.original_filename"></p>
|
||||
<p class="text-sm text-gray-600 line-clamp-2" x-text="pdf.description || '설명이 없습니다'"></p>
|
||||
|
||||
<!-- 연결 상태 -->
|
||||
<div class="mt-3 flex items-center space-x-4">
|
||||
<span class="text-sm text-gray-500">
|
||||
<i class="fas fa-calendar mr-1"></i>
|
||||
<span x-text="formatDate(pdf.created_at)"></span>
|
||||
</span>
|
||||
|
||||
<div x-show="pdf.isLinked">
|
||||
<span class="inline-flex items-center px-2 py-1 bg-green-100 text-green-800 text-xs rounded-full">
|
||||
<!-- 서적 정보 및 연결 상태 -->
|
||||
<div class="mt-3 space-y-2">
|
||||
<!-- 서적 정보 -->
|
||||
<div x-show="pdf.book_title" class="flex items-center space-x-2">
|
||||
<span class="inline-flex items-center px-3 py-1 bg-blue-100 text-blue-800 text-sm rounded-full">
|
||||
<i class="fas fa-book mr-1"></i>
|
||||
<span x-text="pdf.book_title"></span>
|
||||
</span>
|
||||
<span x-show="pdf.isLinked" class="inline-flex items-center px-2 py-1 bg-green-100 text-green-800 text-xs rounded-full">
|
||||
<i class="fas fa-link mr-1"></i>
|
||||
연결됨
|
||||
HTML 연결됨
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div x-show="!pdf.isLinked">
|
||||
<span class="inline-flex items-center px-2 py-1 bg-yellow-100 text-yellow-800 text-xs rounded-full">
|
||||
<!-- 서적 없는 경우 -->
|
||||
<div x-show="!pdf.book_title" class="flex items-center space-x-2">
|
||||
<span class="inline-flex items-center px-3 py-1 bg-gray-100 text-gray-600 text-sm rounded-full">
|
||||
<i class="fas fa-file mr-1"></i>
|
||||
서적 미분류
|
||||
</span>
|
||||
<span x-show="pdf.isLinked" class="inline-flex items-center px-2 py-1 bg-green-100 text-green-800 text-xs rounded-full">
|
||||
<i class="fas fa-link mr-1"></i>
|
||||
HTML 연결됨
|
||||
</span>
|
||||
<span x-show="!pdf.isLinked" class="inline-flex items-center px-2 py-1 bg-yellow-100 text-yellow-800 text-xs rounded-full">
|
||||
<i class="fas fa-unlink mr-1"></i>
|
||||
독립 파일
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- 업로드 날짜 -->
|
||||
<div class="flex items-center space-x-4">
|
||||
<span class="text-sm text-gray-500">
|
||||
<i class="fas fa-calendar mr-1"></i>
|
||||
<span x-text="formatDate(pdf.created_at)"></span>
|
||||
</span>
|
||||
<span x-show="pdf.uploaded_by" class="text-sm text-gray-500">
|
||||
<i class="fas fa-user mr-1"></i>
|
||||
<span x-text="pdf.uploaded_by"></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -179,7 +217,8 @@
|
||||
<h3 class="text-lg font-medium text-gray-900 mb-2">PDF 파일이 없습니다</h3>
|
||||
<p class="text-gray-500">
|
||||
<span x-show="filterType === 'all'">업로드된 PDF 파일이 없습니다</span>
|
||||
<span x-show="filterType === 'linked'">연결된 PDF 파일이 없습니다</span>
|
||||
<span x-show="filterType === 'book'">서적에 포함된 PDF 파일이 없습니다</span>
|
||||
<span x-show="filterType === 'linked'">HTML과 연결된 PDF 파일이 없습니다</span>
|
||||
<span x-show="filterType === 'standalone'">독립 PDF 파일이 없습니다</span>
|
||||
</p>
|
||||
</div>
|
||||
@@ -190,6 +229,6 @@
|
||||
<script src="/static/js/api.js?v=2025012384"></script>
|
||||
<script src="/static/js/auth.js?v=2025012351"></script>
|
||||
<script src="/static/js/header-loader.js?v=2025012351"></script>
|
||||
<script src="/static/js/pdf-manager.js?v=2025012388"></script>
|
||||
<script src="/static/js/pdf-manager.js?v=2025012459"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user