Browse Source

Fix issue with filters and selection

isundil 1 year ago
parent
commit
517a133e1f
2 changed files with 25 additions and 9 deletions
  1. 11 3
      static/public/js/uiMedia.js
  2. 14 6
      static/public/js/uiMediaFullpage.js

+ 11 - 3
static/public/js/uiMedia.js

@@ -49,19 +49,20 @@ $(() => {
         container.appendChild(checkbox);
         container.appendChild(editButton);
         let setSelectionCheckboxValue = function(media, value) {
-            let checked = media.ui.checkbox.checked;
+            media.ui.checkbox.checked = value;
             let indexInSelection = selectedThumbnails.indexOf(media.md5sum);
-            if (checked && indexInSelection < 0) {
+            if (value && indexInSelection < 0) {
                 selectedThumbnails.push(media.md5sum);
                 onItemSelected(media);
                 return true;
-            } else if (!checked && indexInSelection >= 0) {
+            } else if (!value && indexInSelection >= 0) {
                 selectedThumbnails.splice(indexInSelection, 1);
                 onItemDeselected(media);
                 return true;
             }
             return false;
         }
+        mediaItem.setSelectionCheckboxValue = value => setSelectionCheckboxValue(mediaItem, value);
         let cascadeSetSelectionCheckboxValue = function(value) {
             if (!setSelectionCheckboxValue(mediaItem, value))
                 return;
@@ -161,6 +162,11 @@ $(() => {
         lastItemDisplayed = null;
         displayedItemCount = 0;
         targetDisplayedItems = displayItemBatchCount;
+        for (let i of selectedThumbnails) {
+            let media = MediaStorage.Instance.getMediaLocal(i);
+            media?.setSelectionCheckboxValue(false);
+        }
+        lastSelection = null;
         for (let i of MediaStorage.Instance.medias)
             if (window.FilterManager.match(i)) {
                 redraw(newContainer, i);
@@ -182,6 +188,8 @@ $(() => {
         for (let index = lastItemDisplayed ? (MediaStorage.Instance.getMediaIndex(lastItemDisplayed) +1) : 0;
             displayedItemCount < targetDisplayedItems; ++index) {
             let media = MediaStorage.Instance.medias[index];
+            if (!media)
+                return;
             if (window.FilterManager.match(media))
                 redraw(container, media);
         }

+ 14 - 6
static/public/js/uiMediaFullpage.js

@@ -149,15 +149,23 @@ $(() => {
     }
 
     function LoadPreviousMedia() {
-        let media = MediaStorage.Instance.previousMedia(fullPageMediaDisplayed);
-        if (media)
-            window.displayMediaFullPage(media);
+        let i = fullPageMediaDisplayed;
+        while (i = MediaStorage.Instance.previousMedia(i)) {
+            if (window.FilterManager.match(i)) {
+                window.displayMediaFullPage(i);
+                break;
+            }
+        }
     }
 
     function LoadNextMedia() {
-        let media = MediaStorage.Instance.nextMedia(fullPageMediaDisplayed);
-        if (media)
-            window.displayMediaFullPage(media);
+        let i = fullPageMediaDisplayed;
+        while (i = MediaStorage.Instance.nextMedia(i)) {
+            if (window.FilterManager.match(i)) {
+                window.displayMediaFullPage(i);
+                break;
+            }
+        }
     }
 
     function CloseFullpageMedia() {