From b452c84543a33ec8d6efdf9c2a28be5451e8fe7f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr>
Date: Tue, 30 Nov 2021 11:24:59 +0100
Subject: [PATCH] remove pagination from map

---
 src/components/feature/FeatureListTable.vue |  71 +++++++++----
 src/views/feature/Feature_list.vue          | 105 +++++---------------
 2 files changed, 80 insertions(+), 96 deletions(-)

diff --git a/src/components/feature/FeatureListTable.vue b/src/components/feature/FeatureListTable.vue
index 570423d0..7846bbc7 100644
--- a/src/components/feature/FeatureListTable.vue
+++ b/src/components/feature/FeatureListTable.vue
@@ -170,8 +170,8 @@
         </tr>
       </tbody>
     </table>
-    <!-- v-if="nbPages.length > 1" -->
-<!--     <div
+    <!-- v-if="pageNumbers.length > 1" -->
+    <div
       id="table-features_info"
       class="dataTables_info"
       role="status"
@@ -182,7 +182,7 @@
       sur {{ featuresCount }} éléments
     </div>
     <div
-      v-if="nbPages.length > 1"
+      v-if="pageNumbers.length > 1"
       id="table-features_paginate"
       class="dataTables_paginate paging_simple_numbers"
     >
@@ -200,7 +200,7 @@
       >
       <span>
         <a
-          v-for="pageNumber in nbPages"
+          v-for="pageNumber in pageNumbers"
           :key="'page' + pageNumber"
           @click="toPage(pageNumber)"
           :class="[
@@ -218,7 +218,7 @@
         id="table-features_next"
         :class="[
           'paginate_button next',
-          { disabled: pagination.currentPage === nbPages.length },
+          { disabled: pagination.currentPage === pageNumbers.length },
         ]"
         aria-controls="table-features"
         data-dt-idx="7"
@@ -226,7 +226,7 @@
         @click="toNextPage"
         >Suivant</a
       >
-    </div> -->
+    </div>
   </div>
 </template>
 
@@ -236,11 +236,11 @@ import { mapState, mapGetters } from "vuex";
 export default {
   name: "FeatureListTable",
 
-  props: ["geojsonFeatures", "checkedFeatures", "featuresCount"],
+  props: ["geojsonFeatures", "checkedFeatures", "featuresCount", "pagination", "pageNumbers"],
 
   data() {
     return {
-/*       pagination: {
+            /* pagination: {
         currentPage: 1,
         pagesize: 15,
         start: 0,
@@ -305,13 +305,14 @@ export default {
       return sortedFeatures;
     },
 
-/*     nbPages() {
-      let N = Math.ceil(this.featuresCount / this.pagination.pagesize);
-      const arr = [...Array(N).keys()].map(function (x) {
-        ++x;
-        return x;
+/*     pageNumbers() {
+      const totalPages = Math.ceil(
+        this.featuresCount / this.pagination.pagesize
+      );
+      return [...Array(totalPages).keys()].map((pageNumb) => {
+        ++pageNumb;
+        return pageNumb;
       });
-      return arr;
     }, */
 
     checked: {
@@ -322,12 +323,12 @@ export default {
         this.$store.commit("feature/UPDATE_CHECKED_FEATURES", newChecked);
       },
     },
-/* 
+    
     displayedPageEnd() {
       return this.featuresCount <= this.pagination.end
         ? this.featuresCount
         : this.pagination.end;
-    }, */
+    },
   },
 
   methods: {
@@ -358,14 +359,48 @@ export default {
       }
     },
 
+    toPage(pageNumber) {
+      console.log(pageNumber);
+      this.$emit("update:page", pageNumber);
+      /* 
+      const toAddOrRemove =
+        (pageNumber - this.pagination.currentPage) * this.pagination.pagesize;
+      this.pagination.start += toAddOrRemove;
+      this.pagination.end += toAddOrRemove;
+      this.pagination.currentPage = pageNumber;
+      this.updateFeatures(); */
+    },
+
+    toPreviousPage() {
+      this.$emit("update:page", "previous");
+      /* if (this.pagination.currentPage !== 1) {
+        if (this.pagination.start > 0) {
+          this.pagination.start -= this.pagination.pagesize;
+          this.pagination.end -= this.pagination.pagesize;
+          this.pagination.currentPage -= 1;
+        }
+        this.updateFeatures(this.previous);
+      } */
+    },
 
+    toNextPage() {
+      this.$emit("update:page", "next");
+      /* if (this.pagination.currentPage !== this.pageNumbers.length) {
+        if (this.pagination.end < this.featuresCount) {
+          this.pagination.start += this.pagination.pagesize;
+          this.pagination.end += this.pagination.pagesize;
+          this.pagination.currentPage += 1;
+        }
+        this.updateFeatures(this.next);
+      } */
+    },
   },
 };
 </script>
 
 <style scoped>
 /* datatables */
-/* .dataTables_wrapper {
+.dataTables_wrapper {
   position: relative;
   clear: both;
 }
@@ -442,7 +477,7 @@ export default {
   border: 1px solid transparent;
   background: transparent;
   box-shadow: none;
-} */
+}
 
 i.icon.sort:not(.down):not(.up) {
   color: rgb(220, 220, 220);
diff --git a/src/views/feature/Feature_list.vue b/src/views/feature/Feature_list.vue
index 07d41bbd..51435ead 100644
--- a/src/views/feature/Feature_list.vue
+++ b/src/views/feature/Feature_list.vue
@@ -141,75 +141,17 @@
       <div id="map" ref="map"></div>
       <SidebarLayers v-if="basemaps && map" />
     </div>
-      <!-- v-on:update:page="changePage" -->
+    <!-- | -->
     <FeatureListTable
       v-show="!showMap"
+      v-on:update:page="handlePageChange"
       :geojsonFeatures="geojsonFeatures"
       :checkedFeatures.sync="checkedFeatures"
       :featuresCount="featuresCount"
+      :pagination="pagination"
+      :pageNumbers="pageNumbers"
     />
 
-    <!-- PAGINATION START -->
-    <div data-tab="list" class="dataTables_wrapper no-footer">
-      <div
-        id="table-features_info"
-        class="dataTables_info"
-        role="status"
-        aria-live="polite"
-      >
-        Affichage de l'élément {{ pagination.start + 1 }} à
-        {{ displayedPageEnd }}
-        sur {{ featuresCount }} éléments
-      </div>
-      <div
-        v-if="nbPages.length > 1"
-        id="table-features_paginate"
-        class="dataTables_paginate paging_simple_numbers"
-      >
-        <a
-          @click="toPreviousPage"
-          id="table-features_previous"
-          :class="[
-            'paginate_button previous',
-            { disabled: pagination.currentPage === 1 },
-          ]"
-          aria-controls="table-features"
-          data-dt-idx="0"
-          tabindex="0"
-          >Précédent</a
-        >
-        <span>
-          <a
-            v-for="pageNumber in nbPages"
-            :key="'page' + pageNumber"
-            @click="toPage(pageNumber)"
-            :class="[
-              'paginate_button',
-              { current: pageNumber === pagination.currentPage },
-            ]"
-            aria-controls="table-features"
-            data-dt-idx="1"
-            tabindex="0"
-            >{{ pageNumber }}</a
-          >
-        </span>
-        <!-- // TODO : <span v-if="nbPages > 4" class="ellipsis">...</span> -->
-        <a
-          id="table-features_next"
-          :class="[
-            'paginate_button next',
-            { disabled: pagination.currentPage === nbPages.length },
-          ]"
-          aria-controls="table-features"
-          data-dt-idx="7"
-          tabindex="0"
-          @click="toNextPage"
-          >Suivant</a
-        >
-      </div>
-    </div>
-    <!-- PAGINATION END -->
-
     <!-- MODAL ALL DELETE FEATURE TYPE -->
     <div
       v-if="modalAllDeleteOpen"
@@ -342,20 +284,26 @@ export default {
       );
     },
 
-    nbPages() {
-      let N = Math.ceil(this.featuresCount / this.pagination.pagesize);
-      const arr = [...Array(N).keys()].map(function (x) {
-        ++x;
-        return x;
+    pageNumbers() {
+      const totalPages = Math.ceil(
+        this.featuresCount / this.pagination.pagesize
+      );
+      return [...Array(totalPages).keys()].map((pageNumb) => {
+        ++pageNumb;
+        return pageNumb;
       });
-      return arr;
     },
 
-    displayedPageEnd() {
+    /* displayedPageNumbers() {
+      return this.pageNumbers;
+      //return [...this.pageNumbers].splice(0, 4);
+    }, */
+
+    /* displayedPageEnd() {
       return this.featuresCount <= this.pagination.end
         ? this.featuresCount
         : this.pagination.end;
-    },
+    }, */
   },
 
   methods: {
@@ -453,19 +401,20 @@ export default {
       }, 1000);
     },
 
-/*     changePage(page) {
+    handlePageChange(page) {
+      console.log("handlePageChange", page, typeof page)
       if (page === "next") {
-        this.updateFeatures(this.next);
+        this.toNextPage();
       } else if (page === "previous") {
-        this.updateFeatures(this.previous);
-      } else if (typeof page === Number) {
+        this.toPreviousPage();
+      } else if (typeof page === "number") {
         //* update limit and offset
-        this.updateFeatures();
+        this.toPage(page);
       }
-    }, */
+    },
 
     toPage(pageNumber) {
-      console.log(pageNumber);
+      console.log("toPage", pageNumber);
       const toAddOrRemove =
         (pageNumber - this.pagination.currentPage) * this.pagination.pagesize;
       this.pagination.start += toAddOrRemove;
@@ -486,7 +435,7 @@ export default {
     },
 
     toNextPage() {
-      if (this.pagination.currentPage !== this.nbPages.length) {
+      if (this.pagination.currentPage !== this.pageNumbers.length) {
         if (this.pagination.end < this.featuresCount) {
           this.pagination.start += this.pagination.pagesize;
           this.pagination.end += this.pagination.pagesize;
-- 
GitLab