Untagged filter
This commit is contained in:
		@@ -2,6 +2,7 @@
 | 
			
		||||
let galleryImages = [];
 | 
			
		||||
let heroImages = [];
 | 
			
		||||
let allTags = []; // global tag list
 | 
			
		||||
let showOnlyUntagged = false;
 | 
			
		||||
 | 
			
		||||
// --- Load images from server on page load ---
 | 
			
		||||
async function loadData() {
 | 
			
		||||
@@ -34,7 +35,15 @@ function updateAllTags() {
 | 
			
		||||
function renderGallery() {
 | 
			
		||||
  const container = document.getElementById('gallery');
 | 
			
		||||
  container.innerHTML = '';
 | 
			
		||||
  galleryImages.forEach((img, i) => {
 | 
			
		||||
 | 
			
		||||
  // Filter images if toggle is on
 | 
			
		||||
  let imagesToShow = galleryImages;
 | 
			
		||||
  if (showOnlyUntagged) {
 | 
			
		||||
    imagesToShow = galleryImages.filter(img => !img.tags || img.tags.length === 0);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  imagesToShow.forEach((img) => {
 | 
			
		||||
    const i = galleryImages.indexOf(img); // Use real index for tag/delete actions
 | 
			
		||||
    const div = document.createElement('div');
 | 
			
		||||
    div.className = 'photo flex-item flex-column';
 | 
			
		||||
    div.innerHTML = `
 | 
			
		||||
@@ -57,31 +66,31 @@ function renderGallery() {
 | 
			
		||||
  // Update gallery count (top)
 | 
			
		||||
  const galleryCount = document.getElementById('gallery-count');
 | 
			
		||||
  if (galleryCount) {
 | 
			
		||||
    galleryCount.innerHTML = `<p>${galleryImages.length} photos</p>`;
 | 
			
		||||
    galleryCount.innerHTML = `<p>${imagesToShow.length} photos</p>`;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Update gallery count (bottom)
 | 
			
		||||
  const galleryCountBottom = document.getElementById('gallery-count-bottom');
 | 
			
		||||
  if (galleryCountBottom) {
 | 
			
		||||
    galleryCountBottom.innerHTML = `<p>${galleryImages.length} photos</p>`;
 | 
			
		||||
    galleryCountBottom.innerHTML = `<p>${imagesToShow.length} photos</p>`;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Show/hide Remove All button (top)
 | 
			
		||||
  const removeAllBtn = document.getElementById('remove-all-gallery');
 | 
			
		||||
  if (removeAllBtn) {
 | 
			
		||||
    removeAllBtn.style.display = galleryImages.length > 0 ? 'inline-block' : 'none';
 | 
			
		||||
    removeAllBtn.style.display = imagesToShow.length > 0 ? 'inline-block' : 'none';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Show/hide bottom upload row
 | 
			
		||||
  const bottomGalleryUpload = document.getElementById('bottom-gallery-upload');
 | 
			
		||||
  if (bottomGalleryUpload) {
 | 
			
		||||
    bottomGalleryUpload.style.display = galleryImages.length > 0 ? 'flex' : 'none';
 | 
			
		||||
    bottomGalleryUpload.style.display = imagesToShow.length > 0 ? 'flex' : 'none';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Show/hide Remove All button (bottom)
 | 
			
		||||
  const removeAllBtnBottom = document.getElementById('remove-all-gallery-bottom');
 | 
			
		||||
  if (removeAllBtnBottom) {
 | 
			
		||||
    removeAllBtnBottom.style.display = galleryImages.length > 0 ? 'inline-block' : 'none';
 | 
			
		||||
    removeAllBtnBottom.style.display = imagesToShow.length > 0 ? 'inline-block' : 'none';
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -475,6 +484,25 @@ document.addEventListener('DOMContentLoaded', () => {
 | 
			
		||||
  document.getElementById('delete-modal-cancel').onclick = hideDeleteModal;
 | 
			
		||||
  document.getElementById('delete-modal-confirm').onclick = confirmDelete;
 | 
			
		||||
 | 
			
		||||
  // --- Radio toggle for gallery filter ---
 | 
			
		||||
  const showAllRadio = document.getElementById('show-all-radio');
 | 
			
		||||
  const showUntaggedRadio = document.getElementById('show-untagged-radio');
 | 
			
		||||
 | 
			
		||||
  if (showAllRadio && showUntaggedRadio) {
 | 
			
		||||
    showAllRadio.addEventListener('change', () => {
 | 
			
		||||
      if (showAllRadio.checked) {
 | 
			
		||||
        showOnlyUntagged = false;
 | 
			
		||||
        renderGallery();
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
    showUntaggedRadio.addEventListener('change', () => {
 | 
			
		||||
      if (showUntaggedRadio.checked) {
 | 
			
		||||
        showOnlyUntagged = true;
 | 
			
		||||
        renderGallery();
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Bulk delete buttons
 | 
			
		||||
  const removeAllGalleryBtn = document.getElementById('remove-all-gallery');
 | 
			
		||||
  const removeAllGalleryBtnBottom = document.getElementById('remove-all-gallery-bottom');
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user