Bladeren bron

Small fixes

isundil 1 jaar geleden
bovenliggende
commit
38d424b096
4 gewijzigde bestanden met toevoegingen van 38 en 29 verwijderingen
  1. 5 0
      static/public/css/style.css
  2. 1 29
      static/public/js/common.js
  3. 30 0
      static/public/js/medias.js
  4. 2 0
      static/public/js/uiFilter.js

+ 5 - 0
static/public/css/style.css

@@ -39,6 +39,11 @@ body.filter-active #pch-navbar .bt-filter-inactive {
     display: none;
 }
 
+#pch-filterbar .dashboardcode-bsmultiselect .dropdown-menu {
+    max-height: 55vh;
+    overflow-y: auto;
+}
+
 #pch-page {
     margin-top: 6rem;
     padding: 1em 3em;

+ 1 - 29
static/public/js/common.js

@@ -1,33 +1,5 @@
 
 $(() => {
-    let loadingMediaList = false;
-    function ReadMediaList() {
-        if (loadingMediaList)
-            return;
-        LoadingTasks.push(() => {
-            return new Promise(ok => {
-                let chronology = window.chronology.isInitialized() ? "" : "&chronology"
-                let oldest = (MediaStorage.Instance.oldest?.date?.getTime() || 0);
-                let oldestArg = oldest ? `&from=${oldest}` : "";
-                let requestCount = 300;
-                $.get(`/api/media/list?count=${requestCount}${chronology}${oldestArg}`, data => {
-                    MediaStorage.Instance.pushAll(data.data.map(i => new Media(i)));
-                    if (data.first || data.last)
-                        window.chronology.rebuildRange(data.first, data.last);
-                    loadingMediaList = false;
-                    if ((data.data?.length || 0) < requestCount) {
-                        loadingMediaList = true;
-                        document.getElementById("pch-infiniteScrollLoading").classList.add("hidden");
-                        window.ReloadFilters(MediaStorage.Instance);
-                    }
-                    else
-                        setTimeout(ReadMediaList, 25);
-                    ok();
-                });
-            });
-        });
-    }
-
     function loadHash(md5sum) {
         if (md5sum && md5sum.length)
             LoadingTasks.push(async () => displayMediaFullPage(await MediaStorage.Instance.getMedia(md5sum)));
@@ -61,6 +33,6 @@ $(() => {
 
     AccessManager.RebuildAccess();
     loadHash(document.location?.hash?.substr(1));
-    ReadMediaList();
+    MediaStorage.Instance.downloadMetaList();
 });
 

+ 30 - 0
static/public/js/medias.js

@@ -77,6 +77,33 @@ class MediaStorage extends EventTarget
         this.newest = null;
     }
 
+    downloadMetaList() {
+        if (this.isLoading())
+            return;
+        this.#isLoading = true;
+        LoadingTasks.push(() => {
+            return new Promise(ok => {
+                let chronology = window.chronology.isInitialized() ? "" : "&chronology"
+                let oldest = (this.oldest?.date?.getTime() || 0);
+                let oldestArg = oldest ? `&from=${oldest}` : "";
+                let requestCount = 300;
+                $.get(`/api/media/list?count=${requestCount}${chronology}${oldestArg}`, data => {
+                    this.pushAll(data.data.map(i => new Media(i)));
+                    if (data.first || data.last)
+                        window.chronology.rebuildRange(data.first, data.last);
+                    this.#isLoading = false;
+                    if ((data.data?.length || 0) < requestCount) {
+                        document.getElementById("pch-infiniteScrollLoading").classList.add("hidden");
+                        window.ReloadFilters(MediaStorage.Instance);
+                    }
+                    else
+                        setTimeout(this.downloadMetaList.bind(this), 25);
+                    ok();
+                });
+            });
+        });
+    }
+
     #pushMeta(metaKey, metaVal) {
         if (metaKey === 'dateTime')
             return;
@@ -109,6 +136,9 @@ class MediaStorage extends EventTarget
         this.medias.push(media);
     }
 
+    #isLoading = false;
+    isLoading() { return this.#isLoading; }
+
     pushAll(arr, partialLoad) {
         let result = [];
         let reorder = false;

+ 2 - 0
static/public/js/uiFilter.js

@@ -86,6 +86,8 @@ $(() => {
 
         let container = document.getElementById('pch-filterbar');
         container.textContent = '';
+        if (MediaStorage.Instance.isLoading())
+            return;
         for (let i of Object.keys(mediaManager.allMetaTypes).filter(i => mediaManager.allMetaTypes[i].type === 'string' ||
                 [].indexOf(i) >= 0)) {
             let filterUi = buildFilterBar(i, mediaManager.allMetaTypes[i].canBeEmpty, Array.from(mediaManager.allMeta[i]).sort());