feat (ui): toevoegen van banner en series info - 01
This commit is contained in:
+24
-6
@@ -4,6 +4,7 @@
|
||||
const state = {
|
||||
sessionId: initSessionId(),
|
||||
selectedSeries: null,
|
||||
selectedSeriesSummary: null,
|
||||
episodes: [],
|
||||
selectedEpisodes: [],
|
||||
selectedFiles: [],
|
||||
@@ -117,8 +118,12 @@
|
||||
}
|
||||
|
||||
function buildTvdbUrl(item) {
|
||||
const summary = state.selectedSeriesSummary || {};
|
||||
const summaryUrl = (summary.tvdb_url || "").toString().trim();
|
||||
if (summaryUrl) return summaryUrl;
|
||||
|
||||
const raw = item.raw || {};
|
||||
const slug = (raw.slug || "").toString().trim();
|
||||
const slug = (summary.slug || raw.slug || "").toString().trim();
|
||||
if (slug) return `https://www.thetvdb.com/series/${encodeURIComponent(slug)}`;
|
||||
|
||||
const tvdbId = (raw.tvdb_id || item.id || "").toString().trim();
|
||||
@@ -133,8 +138,9 @@
|
||||
return;
|
||||
}
|
||||
const raw = item.raw || {};
|
||||
const imageUrl = (raw.image_url || "").toString().trim();
|
||||
const overview = (raw.overview || "").toString().trim();
|
||||
const summary = state.selectedSeriesSummary || {};
|
||||
const imageUrl = (summary.banner_url || summary.poster_url || raw.image_url || "").toString().trim();
|
||||
const overview = (summary.overview || raw.overview || "").toString().trim();
|
||||
const tvdbUrl = buildTvdbUrl(item);
|
||||
|
||||
if (imageUrl) {
|
||||
@@ -145,9 +151,9 @@
|
||||
el.seriesPoster.classList.add("hidden");
|
||||
}
|
||||
|
||||
el.seriesFirstAired.textContent = fallbackText(raw.first_air_time);
|
||||
el.seriesNetwork.textContent = fallbackText(raw.network);
|
||||
el.seriesStatus.textContent = fallbackText(raw.status);
|
||||
el.seriesFirstAired.textContent = fallbackText(summary.first_aired || raw.first_air_time);
|
||||
el.seriesNetwork.textContent = fallbackText(summary.network || raw.network);
|
||||
el.seriesStatus.textContent = fallbackText(summary.status || raw.status);
|
||||
el.seriesOverview.textContent = overview || "No overview available.";
|
||||
|
||||
if (tvdbUrl) {
|
||||
@@ -161,6 +167,11 @@
|
||||
el.seriesDetails.classList.remove("hidden");
|
||||
}
|
||||
|
||||
async function loadSeriesSummary(seriesId) {
|
||||
const data = await api(`/api/tvdb/series/${encodeURIComponent(seriesId)}/summary`);
|
||||
state.selectedSeriesSummary = data || null;
|
||||
}
|
||||
|
||||
function updateMeta() {
|
||||
const epCount = state.selectedEpisodes.length;
|
||||
const fileCount = state.selectedFiles.length;
|
||||
@@ -262,8 +273,15 @@
|
||||
const right = document.createElement("div");
|
||||
right.appendChild(makeBtn("Select", async () => {
|
||||
state.selectedSeries = item;
|
||||
state.selectedSeriesSummary = null;
|
||||
el.seriesInfo.textContent = `Selected: ${item.display_name || item.name}`;
|
||||
renderSelectedSeriesDetails();
|
||||
try {
|
||||
await loadSeriesSummary(item.id);
|
||||
renderSelectedSeriesDetails();
|
||||
} catch (_err) {
|
||||
// Keep UI responsive with search payload fallback if summary lookup fails.
|
||||
}
|
||||
await loadEpisodes();
|
||||
}));
|
||||
li.appendChild(left);
|
||||
|
||||
Reference in New Issue
Block a user