// /app/static/js/gallery-series-editor.js // Series editor wired into the bulk-editor panel on series-filtered gallery views. // No-ops when the page has no series context. document.addEventListener('DOMContentLoaded', () => { const seriesInfo = window.galleryState && window.galleryState.seriesInfo; if (!seriesInfo) return; const startPageInput = document.getElementById('startPageInput'); const bulkAddToSeriesBtn = document.getElementById('bulkAddToSeriesBtn'); const feedbackEl = document.getElementById('seriesEditorFeedback'); if (!startPageInput || !bulkAddToSeriesBtn || !feedbackEl) return; const seriesTagId = seriesInfo.tag_id; function updateAddButtonState() { const selectedCount = window.selectedImages ? window.selectedImages.size : 0; bulkAddToSeriesBtn.disabled = selectedCount === 0; bulkAddToSeriesBtn.textContent = selectedCount > 0 ? `Add ${selectedCount} to Series` : 'Add to Series'; } document.addEventListener('selectionChanged', updateAddButtonState); bulkAddToSeriesBtn.addEventListener('click', async () => { if (!window.selectedImages || window.selectedImages.size === 0) return; const imageIds = window.selectionOrder ? [...window.selectionOrder] : Array.from(window.selectedImages); const startPage = parseInt(startPageInput.value) || 1; bulkAddToSeriesBtn.disabled = true; bulkAddToSeriesBtn.textContent = 'Adding...'; feedbackEl.innerHTML = ''; try { const r = await fetch(`/api/series/${seriesTagId}/pages/bulk-add`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ image_ids: imageIds, start_page: startPage }) }); const data = await r.json(); if (data.ok) { let msg = `Added ${data.added.length} image(s) to series.`; if (data.skipped.length > 0) { msg += ` Skipped ${data.skipped.length}.`; } feedbackEl.innerHTML = `