Bulk Source Update
+Change source for multiple items at once
+ +Manual Scan
-Run manual scans on your media library
+Scan specific folders or perform full library scans
-Custom Directory Scan
-Scan a specific directory or path
-diff --git a/nfoguard-web/static/css/styles.css b/nfoguard-web/static/css/styles.css index 678e734..ba017d1 100644 --- a/nfoguard-web/static/css/styles.css +++ b/nfoguard-web/static/css/styles.css @@ -49,32 +49,10 @@ body { text-align: center; } -/* Header Logo and Text Layout */ -.header-logo { - display: flex; - align-items: center; - justify-content: center; - gap: 1rem; -} - -.header-logo .logo { - height: 60px; - width: auto; - /* Clean display for new logo */ - object-fit: contain; -} - -.header-text { - display: flex; - flex-direction: column; - align-items: flex-start; - text-align: left; -} - .header-content h1 { font-size: 2rem; font-weight: 300; - margin-bottom: 0.25rem; + margin-bottom: 0.5rem; } .header-content h1 i { @@ -84,28 +62,6 @@ body { .header-content p { opacity: 0.9; font-size: 1rem; - margin: 0; -} - -/* Responsive logo layout */ -@media (max-width: 768px) { - .header-logo { - flex-direction: column; - gap: 0.5rem; - } - - .header-text { - align-items: center; - text-align: center; - } - - .header-logo .logo { - height: 45px; - } - - .header-content h1 { - font-size: 1.5rem; - } } /* Authentication Status */ @@ -888,454 +844,59 @@ body { .justify-content-between { justify-content: space-between; } .align-items-center { align-items: center; } -/* Database Admin Tools Styles */ -.query-results { +/* Manual Scan Styles */ +.scan-status { margin-top: 1rem; padding: 1rem; - background: #f8f9fa; + background-color: var(--light-color); border: 1px solid var(--border-color); border-radius: 0.375rem; } -.query-info { - padding: 1rem; - border-radius: 0.375rem; +.scan-progress { margin-bottom: 1rem; - font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; - font-size: 0.875rem; } -.query-info.success { - background-color: #d4edda; - border: 1px solid #c3e6cb; - color: #155724; -} - -.query-info.error { - background-color: #f8d7da; - border: 1px solid #f5c6cb; - color: #721c24; -} - -.results-table { +.progress-bar { width: 100%; - border-collapse: collapse; - font-size: 0.875rem; - background: white; + height: 1.5rem; + background-color: #e9ecef; border-radius: 0.375rem; overflow: hidden; - box-shadow: var(--shadow); -} - -.results-table th { - background-color: var(--dark-color); - color: white; - padding: 0.75rem; - text-align: left; - font-weight: 600; -} - -.results-table td { - padding: 0.75rem; - border-bottom: 1px solid var(--border-color); - vertical-align: top; -} - -.results-table tr:hover { - background-color: #f8f9fa; -} - -.results-table td em { - color: var(--text-muted); - font-style: italic; -} - -.query-results .table-container, -.admin-results .table-container { - max-height: 400px; - overflow-y: auto; - border: 1px solid var(--border-color); - border-radius: 0.375rem; -} - -/* NFO Repair Table Styling */ -.nfo-repair-table-container { - background: white; - border-radius: 0.5rem; - box-shadow: var(--shadow); - overflow-x: auto; - overflow-y: auto; - max-height: 600px; - margin-bottom: 1rem; - border: 1px solid var(--border-color); -} - -.nfo-repair-table { - width: 100%; - min-width: 800px; - border-collapse: collapse; - font-size: 0.875rem; - background: white; -} - -.nfo-repair-table th { - background-color: var(--dark-color); - color: white; - padding: 0.75rem 0.5rem; - text-align: left; - font-weight: 600; - position: sticky; - top: 0; - z-index: 10; -} - -.nfo-repair-table td { - padding: 0.75rem 0.5rem; - border-bottom: 1px solid var(--border-color); - vertical-align: top; -} - -.nfo-repair-table tr:hover { - background-color: #f8f9fa; -} - -.media-type-badge { - padding: 0.25rem 0.5rem; - border-radius: 0.25rem; - font-size: 0.75rem; - font-weight: 600; - text-transform: uppercase; -} - -.media-type-badge.episode { - background-color: #e3f2fd; - color: #1976d2; -} - -.media-type-badge.movie { - background-color: #f3e5f5; - color: #7b1fa2; -} - -.status-ready { - color: #2e7d32; - font-weight: 600; - font-size: 0.75rem; -} - -.status-missing { - color: #d32f2f; - font-weight: 600; - font-size: 0.75rem; -} - -.text-center { - text-align: center; -} - -.text-muted { - color: #6c757d; -} - -.nfo-fix-actions { - margin-top: 1rem; - padding: 1rem; - background-color: #f8f9fa; - border-radius: 0.5rem; - text-align: center; -} - -.nfo-fix-actions .btn { margin-bottom: 0.5rem; } -.admin-tools { +.progress-fill { + height: 100%; + background: linear-gradient(90deg, var(--primary-color), var(--success-color)); + transition: width 0.3s ease; + width: 0%; +} + +.scan-info { display: flex; - flex-direction: column; - gap: 0.5rem; + justify-content: space-between; + align-items: center; + font-size: 0.875rem; } -.admin-tools .btn { - text-align: left; - justify-content: flex-start; -} - -.admin-results { - margin-top: 1rem; - padding: 1rem; - background: #f8f9fa; - border: 1px solid var(--border-color); - border-radius: 0.375rem; -} - -.scan-summary, -.fix-summary { - padding: 1rem; - border-radius: 0.375rem; - margin-bottom: 1rem; -} - -.scan-summary { - background-color: #e7f3ff; - border: 1px solid #b3d9ff; -} - -.fix-summary.success { - background-color: #d4edda; - border: 1px solid #c3e6cb; - color: #155724; -} - -.fix-errors { - background-color: #fff3cd; - border: 1px solid #ffeaa7; - padding: 1rem; - border-radius: 0.375rem; - margin-top: 1rem; -} - -.fix-errors ul { - margin: 0.5rem 0 0 1rem; -} - -.missing-episodes { - margin-top: 1rem; -} - -.loading { - text-align: center; - padding: 2rem; +.scan-info span:first-child { color: var(--text-muted); - font-style: italic; } -.loading::before { - content: "âŗ "; -} - -.success { - background-color: #d4edda; - border: 1px solid #c3e6cb; - color: #155724; - padding: 1rem; - border-radius: 0.375rem; - margin: 1rem 0; -} - -.error { - background-color: #f8d7da; - border: 1px solid #f5c6cb; - color: #721c24; - padding: 1rem; - border-radius: 0.375rem; - margin: 1rem 0; -} - -/* Make text areas more distinctive */ -textarea { - font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; - font-size: 0.875rem; - resize: vertical; -} - -/* Button variations for admin tools */ -.btn.btn-info { - background-color: #17a2b8; - border-color: #17a2b8; - color: white; -} - -.btn.btn-info:hover { - background-color: #138496; - border-color: #117a8b; -} - -/* Missing IMDb Items Styles */ -.missing-imdb-table-container { - overflow-x: auto; - max-height: 600px; - border: 1px solid var(--border-color); - border-radius: 8px; - margin: 1rem 0; -} - -.missing-imdb-table { - width: 100%; - border-collapse: collapse; - min-width: 800px; -} - -.missing-imdb-table thead { - background-color: var(--bg-secondary); - position: sticky; - top: 0; - z-index: 1; -} - -.missing-imdb-table th, -.missing-imdb-table td { - padding: 0.75rem; - text-align: left; - border-bottom: 1px solid var(--border-color); - vertical-align: top; -} - -.missing-imdb-table th { +.scan-info span:last-child { font-weight: 600; - color: var(--text-primary); - white-space: nowrap; -} - -.missing-imdb-table td { - color: var(--text-secondary); -} - -.missing-imdb-table .file-path { - font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; - font-size: 0.85rem; - max-width: 300px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.media-type-badge { - display: inline-block; - padding: 0.25rem 0.5rem; - border-radius: 4px; - font-size: 0.75rem; - font-weight: 600; - text-transform: uppercase; -} - -.media-type-badge.tv-series { - background-color: #e3f2fd; - color: #1976d2; -} - -.media-type-badge.movie { - background-color: #fff3e0; - color: #f57c00; -} - -.missing-imdb-actions { - background-color: var(--bg-secondary); - padding: 1rem; - border-radius: 8px; - margin-top: 1rem; -} - -.missing-imdb-actions ul { - margin: 0.5rem 0 0 1rem; - padding: 0; -} - -.missing-imdb-actions li { - margin-bottom: 0.5rem; -} - -.missing-imdb-actions code { - background-color: var(--bg-primary); - padding: 0.25rem 0.5rem; - border-radius: 4px; - font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; - font-size: 0.85rem; - border: 1px solid var(--border-color); -} - -.btn-small { - padding: 0.25rem 0.5rem; - font-size: 0.75rem; - min-width: auto; -} - -/* NFO Statistics Styling */ -.nfo-stats-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 1rem; - margin: 1rem 0; -} - -.stat-box { - background-color: var(--bg-secondary); - border: 1px solid var(--border-color); - border-radius: 8px; - padding: 1rem; - text-align: center; -} - -.stat-number { - font-size: 2rem; - font-weight: 700; color: var(--primary-color); - margin-bottom: 0.5rem; } -.stat-label { +.form-group small { + display: block; + margin-top: 0.25rem; + color: var(--text-muted); font-size: 0.875rem; - color: var(--text-secondary); - font-weight: 500; } -.recommendation-box { - background-color: #fff3cd; - border: 1px solid #ffeaa7; - border-radius: 8px; - padding: 1rem; - margin: 1rem 0; -} - -.recommendation-box ul { - margin: 0.5rem 0 0 1rem; - padding: 0; -} - -.recommendation-box li { - margin-bottom: 0.5rem; -} - -.success-box { - background-color: #d4edda; - border: 1px solid #c3e6cb; - color: #155724; - border-radius: 8px; - padding: 1rem; - margin: 1rem 0; - text-align: center; - font-weight: 600; -} - -/* Responsive adjustments for admin tools */ -@media (max-width: 768px) { - .table-container { - max-height: 300px; - } - - .results-table { - font-size: 0.75rem; - } - - .results-table th, - .results-table td { - padding: 0.5rem; - } - - .admin-tools { - gap: 0.75rem; - } - - .missing-imdb-table { - min-width: 600px; - } - - .missing-imdb-table th, - .missing-imdb-table td { - padding: 0.5rem; - font-size: 0.85rem; - } - - .missing-imdb-table .file-path { - max-width: 200px; - } +.btn-sm { + padding: 0.375rem 0.75rem; + font-size: 0.875rem; } \ No newline at end of file diff --git a/nfoguard-web/static/index.html b/nfoguard-web/static/index.html index 1f5a72a..45f2b3a 100644 --- a/nfoguard-web/static/index.html +++ b/nfoguard-web/static/index.html @@ -4,7 +4,7 @@
Database Management & Reporting
-Database Management & Reporting