This commit is contained in:
+23
-6
@@ -157,13 +157,30 @@
|
||||
<div class="content-header">
|
||||
<h2><i class="fas fa-tv"></i> TV Series Database</h2>
|
||||
<div class="content-controls">
|
||||
<div class="search-box">
|
||||
<i class="fas fa-search"></i>
|
||||
<input type="text" id="series-search" placeholder="Search series...">
|
||||
<div class="search-controls">
|
||||
<div class="search-box">
|
||||
<i class="fas fa-search"></i>
|
||||
<input type="text" id="series-search" placeholder="Search title/path...">
|
||||
</div>
|
||||
<div class="search-box">
|
||||
<i class="fas fa-hashtag"></i>
|
||||
<input type="text" id="series-imdb-search" placeholder="Search IMDb ID...">
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-controls">
|
||||
<select id="series-filter-date">
|
||||
<option value="">All Series</option>
|
||||
<option value="complete">Fully Dated</option>
|
||||
<option value="incomplete">Missing Dates</option>
|
||||
<option value="none">No Dates</option>
|
||||
</select>
|
||||
<select id="series-filter-source">
|
||||
<option value="">All Sources</option>
|
||||
</select>
|
||||
<button class="btn btn-primary" onclick="refreshSeries()">
|
||||
<i class="fas fa-sync"></i> Refresh
|
||||
</button>
|
||||
</div>
|
||||
<button class="btn btn-primary" onclick="refreshSeries()">
|
||||
<i class="fas fa-sync"></i> Refresh
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
initializeTabs();
|
||||
initializeEventListeners();
|
||||
loadDashboard();
|
||||
loadSeriesSources();
|
||||
});
|
||||
|
||||
// Tab management
|
||||
@@ -63,10 +64,13 @@ function initializeEventListeners() {
|
||||
document.getElementById('movies-search').addEventListener('input', debounce(loadMovies, 500));
|
||||
document.getElementById('movies-imdb-search').addEventListener('input', debounce(loadMovies, 500));
|
||||
document.getElementById('series-search').addEventListener('input', debounce(loadSeries, 500));
|
||||
document.getElementById('series-imdb-search').addEventListener('input', debounce(loadSeries, 500));
|
||||
|
||||
// Filter dropdowns
|
||||
document.getElementById('movies-filter-date').addEventListener('change', loadMovies);
|
||||
document.getElementById('movies-filter-source').addEventListener('change', loadMovies);
|
||||
document.getElementById('series-filter-date').addEventListener('change', loadSeries);
|
||||
document.getElementById('series-filter-source').addEventListener('change', loadSeries);
|
||||
|
||||
// Forms
|
||||
document.getElementById('edit-form').addEventListener('submit', handleEditSubmit);
|
||||
@@ -296,6 +300,23 @@ function updateMoviesSourceFilter(data) {
|
||||
}
|
||||
}
|
||||
|
||||
async function loadSeriesSources() {
|
||||
try {
|
||||
const data = await apiCall('/api/series/sources');
|
||||
const select = document.getElementById('series-filter-source');
|
||||
const currentValue = select.value;
|
||||
|
||||
select.innerHTML = '<option value="">All Sources</option>';
|
||||
data.sources.forEach(source => {
|
||||
select.innerHTML += `<option value="${source}">${source}</option>`;
|
||||
});
|
||||
|
||||
select.value = currentValue;
|
||||
} catch (error) {
|
||||
console.error('Failed to load series sources:', error);
|
||||
}
|
||||
}
|
||||
|
||||
function refreshMovies() {
|
||||
loadMovies(currentMoviesPage);
|
||||
}
|
||||
@@ -303,6 +324,9 @@ function refreshMovies() {
|
||||
// TV Series
|
||||
async function loadSeries(page = 1) {
|
||||
const search = document.getElementById('series-search').value;
|
||||
const imdbSearch = document.getElementById('series-imdb-search').value;
|
||||
const dateFilter = document.getElementById('series-filter-date').value;
|
||||
const sourceFilter = document.getElementById('series-filter-source').value;
|
||||
|
||||
const params = new URLSearchParams({
|
||||
skip: (page - 1) * 50,
|
||||
@@ -310,6 +334,9 @@ async function loadSeries(page = 1) {
|
||||
});
|
||||
|
||||
if (search) params.append('search', search);
|
||||
if (imdbSearch) params.append('imdb_search', imdbSearch);
|
||||
if (dateFilter) params.append('date_filter', dateFilter);
|
||||
if (sourceFilter) params.append('source_filter', sourceFilter);
|
||||
|
||||
try {
|
||||
const data = await apiCall(`/api/series?${params}`);
|
||||
|
||||
Reference in New Issue
Block a user