Răsfoiți Sursa

fix: missing pagination on search results (#942)

NGPixel 5 ani în urmă
părinte
comite
9c40975aeb
1 a modificat fișierele cu 7 adăugiri și 4 ștergeri
  1. 7 4
      client/components/common/search-results.vue

+ 7 - 4
client/components/common/search-results.vue

@@ -16,14 +16,14 @@
         .subheading {{$t('common:header.searchNoResult')}}
       template(v-if='results && results.length > 0')
         v-subheader.white--text {{$t('common:header.searchResultsCount', { total: response.totalHits })}}
-        v-list.search-results-items.radius-7.py-0(two-line)
+        v-list.search-results-items.radius-7.py-0(two-line, dense)
           template(v-for='(item, idx) of results')
             v-list-item(@click='goToPage(item)', :key='item.id', :class='idx === cursor ? `highlighted` : ``')
               v-list-item-avatar(tile)
                 img(src='/svg/icon-selective-highlighting.svg')
               v-list-item-content
                 v-list-item-title(v-html='item.title')
-                v-list-item-subtitle(v-html='item.description')
+                v-list-item-subtitle.caption(v-html='item.description')
                 .caption.grey--text(v-html='item.path')
               v-list-item-action
                 v-chip(label, outlined) {{item.locale.toUpperCase()}}
@@ -33,6 +33,7 @@
           dark
           v-model='pagination'
           :length='paginationLength'
+          circle
         )
       template(v-if='suggestions && suggestions.length > 0')
         v-subheader.white--text.mt-3 {{$t('common:header.searchDidYouMean')}}
@@ -68,6 +69,7 @@ export default {
     return {
       cursor: 0,
       pagination: 1,
+      perPage: 10,
       response: {
         results: [],
         suggestions: [],
@@ -82,7 +84,8 @@ export default {
     searchRestrictLocale: sync('site/searchRestrictLocale'),
     searchRestrictPath: sync('site/searchRestrictPath'),
     results() {
-      return this.response.results ? this.response.results : []
+      const currentIndex = (this.pagination - 1) * this.perPage
+      return this.response.results ? _.slice(this.response.results, currentIndex, currentIndex + this.perPage) : []
     },
     hits() {
       return this.response.totalHits ? this.response.totalHits : 0
@@ -91,7 +94,7 @@ export default {
       return this.response.suggestions ? this.response.suggestions : []
     },
     paginationLength() {
-      return (this.response.totalHits > 0) ? 0 : Math.ceil(this.response.totalHits / 10)
+      return (this.response.totalHits > 0) ? Math.ceil(this.response.totalHits / this.perPage) : 0
     }
   },
   watch: {