From 8a26cb2f0074f5177297f7962e6bf784d1332e46 Mon Sep 17 00:00:00 2001
From: lucile varloteaux <lucile.varloteaux@inrae.fr>
Date: Tue, 19 Apr 2022 10:55:45 +0200
Subject: [PATCH 1/3] modal des dynamique colonnes finis

---
 .../views/references/ReferenceTableView.vue   | 84 +++++++++++++------
 1 file changed, 60 insertions(+), 24 deletions(-)

diff --git a/ui/src/views/references/ReferenceTableView.vue b/ui/src/views/references/ReferenceTableView.vue
index 6e9cbb4d0..031e9c4d8 100644
--- a/ui/src/views/references/ReferenceTableView.vue
+++ b/ui/src/views/references/ReferenceTableView.vue
@@ -31,24 +31,29 @@
         >
           <span v-if="info(column.id)">
             <b-button
-                size="is-small"
-                type="is-dark"
-                v-if="showBtnTablDynamicColumn(props.row[column.id])"
-                @click="showModal(props.row[column.id])"
-                icon-left="info"
-                rounded
-                style="height: inherit"
+              size="is-small"
+              type="is-dark"
+              v-if="showBtnTablDynamicColumn(props.row[column.id])"
+              @click="showModal(props.row[column.id])"
+              icon-left="info"
+              rounded
+              style="height: inherit"
             ></b-button>
             <p v-else></p>
-            <b-modal
-              v-model="isCardModalActive"
-              width="70%"
-            >
+            <b-modal v-model="isCardModalActive" width="70%">
               <div class="card">
+                <div class="card-header">
+                  <div class="title card-header-title">
+                    <p field="name" style="font-size: 1.5rem">
+                      {{ column.id }}
+                    </p>
+                  </div>
+                </div>
                 <div class="card-content">
-                  <ul>
-                    <li v-for="modalObj in modalArrayObj" :key="modalObj.id">{{ modalObj }}</li>
-                  </ul>
+                  <div class="columns" v-for="key in modalArrayObj" :key="key.id">
+                    <p class="column">{{ key.column }} {{ $t('ponctuation.colon')}}</p>
+                    <p class="column">{{ key.value }}</p>
+                  </div>
                 </div>
               </div>
             </b-modal>
@@ -122,24 +127,48 @@ export default class ReferenceTableView extends Vue {
   // show modal and cards
   isCardModalActive = false;
   modalArrayObj = [];
+  modalTblObj = [];
+  referencesDynamic;
+  display = "__display_" + window.localStorage.lang;
 
-  showModal(tablDynamicColumn) {
+  async showModal(tablDynamicColumn) {
     this.isCardModalActive = true;
-    this.modalArrayObj = Object.entries(tablDynamicColumn).filter(a=>a[1]).map(function(a){let obj = {}; obj[a[0]]=a[1]; return obj});
-    console.log(this.modalArrayObj);
+    this.modalArrayObj = Object.entries(tablDynamicColumn)
+      .filter((a) => a[1])
+      .map(function (a) {
+        let obj = {};
+        obj[a[0]] = a[1];
+        return obj;
+      });
+    for (let i = 0; i < this.referencesDynamic.referenceValues.length; i++) {
+      for (let j = 0; j < this.modalArrayObj.length; j++) {
+        let hierarchicalKey = this.referencesDynamic.referenceValues[i].hierarchicalKey;
+        if (this.modalArrayObj[j][hierarchicalKey]) {
+          let column = this.referencesDynamic.referenceValues[i].values[this.display];
+          let value = this.modalArrayObj[j][hierarchicalKey];
+          this.modalArrayObj[j] = { ...this.modalArrayObj[j], column: column, value: value };
+        }
+      }
+    }
     return this.modalArrayObj;
   }
-  info(column) {
-    let dynamicColumn = Object.entries(this.reference.dynamicColumns).filter(a=>a[1]);
-    for (let i = 0; i< dynamicColumn.length; i++) {
-      if(dynamicColumn[i][0] === column)
-        return true;
+
+  info(refType) {
+    let dynamicColumns = Object.entries(this.reference.dynamicColumns).filter((a) => a[1]);
+    for (let i = 0; i < dynamicColumns.length; i++) {
+      if (dynamicColumns[i][0] === refType) return true;
     }
     return false;
   }
 
   showBtnTablDynamicColumn(tablDynamicColumn) {
-    let showModal = Object.entries(tablDynamicColumn).filter(a=>a[1]).map(function(a){let obj = {}; obj[a[0]]=a[1]; return obj});
+    let showModal = Object.entries(tablDynamicColumn)
+      .filter((a) => a[1])
+      .map(function (a) {
+        let obj = {};
+        obj[a[0]] = a[1];
+        return obj;
+      });
     return showModal.length !== 0;
   }
 
@@ -172,7 +201,7 @@ export default class ReferenceTableView extends Vue {
     }
   }
 
-  setInitialVariables() {
+  async setInitialVariables() {
     if (!this.application?.references) {
       return;
     }
@@ -220,6 +249,13 @@ export default class ReferenceTableView extends Vue {
     if (this.referenceValues) {
       this.tableValues = Object.values(this.referenceValues).map((refValue) => refValue.values);
     }
+    let dynamicColumns = Object.entries(this.reference.dynamicColumns).filter((a) => a[1]);
+    for (let i = 0; i < dynamicColumns.length; i++) {
+      this.referencesDynamic = await this.referenceService.getReferenceValues(
+        this.applicationName,
+        dynamicColumns[i][1].reference
+      );
+    }
   }
 }
 </script>
-- 
GitLab


From a600c445b64b72e05435036088b104278e9ce6da Mon Sep 17 00:00:00 2001
From: lucile varloteaux <lucile.varloteaux@inrae.fr>
Date: Wed, 20 Apr 2022 09:47:04 +0200
Subject: [PATCH 2/3] =?UTF-8?q?pagination=20des=20r=C3=A9f=C3=A9rences?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../model/application/DownloadDatasetQuery.js |  6 +--
 ui/src/style/_common.scss                     |  4 ++
 .../views/references/ReferenceTableView.vue   | 52 +++++++++++--------
 3 files changed, 36 insertions(+), 26 deletions(-)

diff --git a/ui/src/model/application/DownloadDatasetQuery.js b/ui/src/model/application/DownloadDatasetQuery.js
index e15aa3283..9fb6ee4e9 100644
--- a/ui/src/model/application/DownloadDatasetQuery.js
+++ b/ui/src/model/application/DownloadDatasetQuery.js
@@ -7,7 +7,7 @@ export class DownloadDatasetQuery {
   applicationNameOrId;
   dataType;
   offset = 0;
-  limit = 15;
+  limit = 10;
   variableComponentSelects = [];
   variableComponentFilters = [];
   variableComponentOrderBy = [];
@@ -16,7 +16,7 @@ export class DownloadDatasetQuery {
     applicationNameOrId,
     dataType,
     offset = 0,
-    limit = 15,
+    limit = 10,
     variableComponentSelects,
     variableComponentFilters,
     variableComponentOrderBy
@@ -33,7 +33,7 @@ export class DownloadDatasetQuery {
       this.applicationNameOrId = applicationNameOrId;
       this.dataType = dataType;
       this.offset = offset ? offset : 0;
-      this.limit = limit ? limit : 15;
+      this.limit = limit ? limit : 10;
       this.variableComponentSelects = [];
       for (const select in variableComponentSelects) {
         this.variableComponentSelects.push(select);
diff --git a/ui/src/style/_common.scss b/ui/src/style/_common.scss
index 28ab9bbcd..5cf08370f 100644
--- a/ui/src/style/_common.scss
+++ b/ui/src/style/_common.scss
@@ -214,3 +214,7 @@ a.dropdown-item.is-active, .dropdown .dropdown-menu .has-link a.is-active, butto
 .svg-inline--fa.fa-info{
   height: 24px;
 }
+
+.modalCardRef .modal-background {
+  background-color: rgba(10,10,10,0.2);
+}
diff --git a/ui/src/views/references/ReferenceTableView.vue b/ui/src/views/references/ReferenceTableView.vue
index 031e9c4d8..250e51a98 100644
--- a/ui/src/views/references/ReferenceTableView.vue
+++ b/ui/src/views/references/ReferenceTableView.vue
@@ -19,7 +19,27 @@
         :sticky-header="true"
         height="100%"
         style="padding-bottom: 20px; position: relative; z-index: 1"
+        paginated
+        :current-page="currentPage"
+        :per-page="perPage"
       >
+        <template #pagination>
+          <b-pagination
+              v-model="currentPage"
+              :current-page.sync="currentPage"
+              :per-page="perPage"
+              :total="tableValues.length"
+              role="navigation"
+              :aria-label="$t('menu.aria-pagination')"
+              :aria-current-label="$t('menu.aria-curent-page')"
+              :aria-next-label="$t('menu.aria-next-page')"
+              :aria-previous-label="$t('menu.aria-previous-page')"
+              order="is-centered"
+              range-after="3"
+              range-before="3"
+              :rounded="true"
+         />
+       </template>
         <b-table-column
           v-for="column in columns"
           :key="column.id"
@@ -35,17 +55,17 @@
               type="is-dark"
               v-if="showBtnTablDynamicColumn(props.row[column.id])"
               @click="showModal(props.row[column.id])"
-              icon-left="info"
+              icon-left="eye"
               rounded
               style="height: inherit"
             ></b-button>
             <p v-else></p>
-            <b-modal v-model="isCardModalActive" width="70%">
+            <b-modal v-model="isCardModalActive" class="modalCardRef" width="70%">
               <div class="card">
                 <div class="card-header">
                   <div class="title card-header-title">
                     <p field="name" style="font-size: 1.5rem">
-                      {{ column.id }}
+                      {{ column.title }}
                     </p>
                   </div>
                 </div>
@@ -73,22 +93,6 @@
           </b-collapse>
         </b-table-column>
       </b-table>
-      <b-pagination
-        v-if="perPage <= tableValues.length"
-        v-model="currentPage"
-        :per-page="perPage"
-        :total="tableValues.length"
-        role="navigation"
-        :aria-label="$t('menu.aria-pagination')"
-        :aria-current-label="$t('menu.aria-curent-page')"
-        :aria-next-label="$t('menu.aria-next-page')"
-        :aria-previous-label="$t('menu.aria-previous-page')"
-        order="is-centered"
-        range-after="3"
-        range-before="3"
-        :rounded="true"
-      >
-      </b-pagination>
     </div>
   </PageView>
 </template>
@@ -122,7 +126,7 @@ export default class ReferenceTableView extends Vue {
   referenceValues = [];
   tableValues = [];
   currentPage = 1;
-  perPage = 15;
+  perPage = 10;
 
   // show modal and cards
   isCardModalActive = false;
@@ -144,7 +148,8 @@ export default class ReferenceTableView extends Vue {
       for (let j = 0; j < this.modalArrayObj.length; j++) {
         let hierarchicalKey = this.referencesDynamic.referenceValues[i].hierarchicalKey;
         if (this.modalArrayObj[j][hierarchicalKey]) {
-          let column = this.referencesDynamic.referenceValues[i].values[this.display];
+          let column = this.referencesDynamic.referenceValues[i].values[this.display] ?
+              this.referencesDynamic.referenceValues[i].values[this.display] : hierarchicalKey ;
           let value = this.modalArrayObj[j][hierarchicalKey];
           this.modalArrayObj[j] = { ...this.modalArrayObj[j], column: column, value: value };
         }
@@ -174,7 +179,7 @@ export default class ReferenceTableView extends Vue {
 
   async created() {
     await this.init();
-    this.setInitialVariables();
+    await this.setInitialVariables();
   }
 
   async init() {
@@ -193,6 +198,7 @@ export default class ReferenceTableView extends Vue {
         this.applicationName,
         this.refId
       );
+      console.log(this.application);
       if (references) {
         this.referenceValues = references.referenceValues;
       }
@@ -258,4 +264,4 @@ export default class ReferenceTableView extends Vue {
     }
   }
 }
-</script>
+</script>
\ No newline at end of file
-- 
GitLab


From 17d4cad5a7c5ed22e3c14ebb3b13aa1d19b92267 Mon Sep 17 00:00:00 2001
From: lucile varloteaux <lucile.varloteaux@inrae.fr>
Date: Wed, 20 Apr 2022 10:03:43 +0200
Subject: [PATCH 3/3] finalisation de la mise en forme de la modal

---
 ui/src/style/_common.scss                      | 9 ++++++++-
 ui/src/views/references/ReferenceTableView.vue | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/ui/src/style/_common.scss b/ui/src/style/_common.scss
index 5cf08370f..791c74cb6 100644
--- a/ui/src/style/_common.scss
+++ b/ui/src/style/_common.scss
@@ -216,5 +216,12 @@ a.dropdown-item.is-active, .dropdown .dropdown-menu .has-link a.is-active, butto
 }
 
 .modalCardRef .modal-background {
-  background-color: rgba(10,10,10,0.2);
+  background-color: rgba(10,10,10,0.25);
 }
+.modalArrayObj:nth-child(2n) {
+  background-color: rgba(239, 239, 239,0.5);
+}
+.modalArrayObj {
+  background-color: rgb(239, 239, 239);
+  border-bottom: 1px solid rgba(128, 128, 128,0.3);
+}
\ No newline at end of file
diff --git a/ui/src/views/references/ReferenceTableView.vue b/ui/src/views/references/ReferenceTableView.vue
index 250e51a98..73a067f84 100644
--- a/ui/src/views/references/ReferenceTableView.vue
+++ b/ui/src/views/references/ReferenceTableView.vue
@@ -70,7 +70,7 @@
                   </div>
                 </div>
                 <div class="card-content">
-                  <div class="columns" v-for="key in modalArrayObj" :key="key.id">
+                  <div class="columns modalArrayObj" v-for="key in modalArrayObj" :key="key.id">
                     <p class="column">{{ key.column }} {{ $t('ponctuation.colon')}}</p>
                     <p class="column">{{ key.value }}</p>
                   </div>
-- 
GitLab