Browse Source

Рефакторинг, небольшие улучшения

Book Pauk 2 years ago
parent
commit
634d646622

+ 15 - 19
client/components/Search/AuthorList/AuthorList.vue

@@ -176,19 +176,22 @@ const componentOptions = {
         showDeleted() {
             this.updateTableData();
         },
+        ready(newValue) {
+            if (newValue)
+                this.refresh();//no await
+        }
     },
 };
 class AuthorList extends BaseList {
     _options = componentOptions;
     _props = {
+        ready: Boolean,
         list: Object,
         search: Object,
         genreMap: Object,
         liberamaReady: Boolean,
     };
     
-    ready = false;
-
     loadingMessage = '';
     loadingMessage2 = '';
 
@@ -214,20 +217,11 @@ class AuthorList extends BaseList {
 
     created() {
         this.commit = this.$store.commit;
+        this.api = this.$root.api;
 
         this.loadSettings();
     }
 
-    mounted() {
-        (async() => {
-            //локальный кеш
-            this.api = this.$root.api;
-
-            this.ready = true;
-            this.refresh();//no await
-        })();
-    }
-
     loadSettings() {
         const settings = this.settings;
 
@@ -821,7 +815,15 @@ class AuthorList extends BaseList {
         if (!this.ready)
             return;
 
-        //оптимизация
+        //параметры запроса
+        const newQuery = _.cloneDeep(this.search);
+        newQuery.offset = (newQuery.page - 1)*newQuery.limit;
+
+        if (_.isEqual(newQuery, this.prevQuery))
+            return;
+        this.prevQuery = newQuery;
+
+        //оптимизация, вместо запроса к серверу, берем из кеша
         if (this.abCacheEnabled && this.search.author && this.search.author[0] == '=') {
             const authorSearch = this.search.author.substring(1);
             const author = this.cachedAuthors[authorSearch];
@@ -840,12 +842,6 @@ class AuthorList extends BaseList {
             }
         }
 
-        //параметры запроса
-        const offset = (this.search.page - 1)*this.search.limit;
-
-        const newQuery = _.cloneDeep(this.search);
-        newQuery.offset = offset;
-
         this.queryExecute = newQuery;
 
         if (this.refreshing)

+ 6 - 3
client/components/Search/Search.vue

@@ -111,7 +111,7 @@
             </div>
 
             <!-- Формирование списка ------------------------------------------------------------------------>
-            <AuthorList :list="list" :search="search" :genre-map="genreMap" :liberama-ready="liberamaReady" @list-event="listEvent" />
+            <AuthorList :ready="ready" :list="list" :search="search" :genre-map="genreMap" :liberama-ready="liberamaReady" @list-event="listEvent" />
             <!-- Формирование списка конец ------------------------------------------------------------------>
 
             <div class="row justify-center">
@@ -248,6 +248,8 @@ const componentOptions = {
 class Search {
     _options = componentOptions;
     
+    ready = false;
+
     collection = '';
     projectName = '';
 
@@ -312,6 +314,7 @@ class Search {
 
     created() {
         this.commit = this.$store.commit;
+        this.api = this.$root.api;
 
         this.loadSettings();
     }
@@ -331,8 +334,6 @@ class Search {
             //локальный кеш
             await authorBooksStorage.init();
 
-            this.api = this.$root.api;
-
             if (!this.$root.isMobileDevice)
                 this.$refs.authorInput.focus();
 
@@ -340,6 +341,8 @@ class Search {
             this.updateSearchFromRouteQuery(this.$route);
 
             this.sendMessage({type: 'mes', data: 'hello-from-inpx-web'});
+
+            this.ready = true;
         })();
     }