From a30237557b3f862baafeb77faa990e62e2b6423f Mon Sep 17 00:00:00 2001
From: Benoit Alessandroni <benoit@happy-dev.fr>
Date: Wed, 3 Jun 2020 23:26:58 +0200
Subject: [PATCH] Fixing type filtering + refresh of database when validating a
 resource + refresh of lists after deleting a resource

---
 src/includes/public/resources/list.pug | 11 +++---
 src/scripts/coopstarter.js             | 46 ++++++++++++++++++++------
 2 files changed, 41 insertions(+), 16 deletions(-)

diff --git a/src/includes/public/resources/list.pug b/src/includes/public/resources/list.pug
index 702c97f7..2361decd 100644
--- a/src/includes/public/resources/list.pug
+++ b/src/includes/public/resources/list.pug
@@ -106,8 +106,8 @@ container.block_list.flex.flex_espace
                 
                 sib-display.resource_by_step(
                     data-src=`${endpoints.step1}`,
-                    fields='name, resource_author, format.name, publication_year, description, country, language, fields',
-                    search-fields='search_for_a_resource(name), more_criterias_hidden(format, publication_year, country, language, fields, type)',  
+                    fields='name, resource_author, format.name, publication_year, description, country, languages, fields, type',
+                    search-fields='search_for_a_resource(name), more_criterias_hidden(format, publication_year, country, languages, fields, type)',  
                     search-range-format=`${endpoints.formats}`
                     search-range-languages=`${endpoints.languages}`
                     search-range-fields=`${endpoints.fields}`
@@ -116,8 +116,6 @@ container.block_list.flex.flex_espace
 
                     search-widget-more_criterias_hidden="hidden-widget"
                     search-widget-search_for_a_resource="hidden-widget"
-                    search-multiple-type='sib-form-dropdown'
-                    search-widget-type='sib-form-auto-completion'
                     search-multiple-format='sib-form-dropdown'
                     search-widget-format='sib-form-auto-completion'
                     search-multiple-country='sib-form-dropdown'
@@ -126,7 +124,7 @@ container.block_list.flex.flex_espace
                     search-widget-languages='sib-form-auto-completion'
                     search-multiple-fields='sib-form-dropdown'
                     search-widget-fields='sib-form-auto-completion'
-
+                    search-multiple-type='sib-form-dropdown'
             
                     widget-name='cs-display-property'
                     widget-country='hidden-widget'
@@ -134,11 +132,14 @@ container.block_list.flex.flex_espace
                     widget-description='cs-display-property'
                     widget-fields='hidden-widget'
                     widget-languages="hidden-widget"
+                    widget-type="hidden-widget"
                     widget-resource_author="hidden-widget"
                     widget-format.name='cs-display-resource-property'
                     label-format.name=''
                     label-languages=''
                     multiple-languages
+                    label-type=''
+                    multiple-type
                     label-fields=''
                     multiple-fields
                     class="panel"
diff --git a/src/scripts/coopstarter.js b/src/scripts/coopstarter.js
index d018da06..155d9c1b 100644
--- a/src/scripts/coopstarter.js
+++ b/src/scripts/coopstarter.js
@@ -190,7 +190,6 @@ function selectHiddenManagement(select_hidden, option_selected) {
       select_hidden.setAttribute("value", option_selected.value);
       //Actually selecting the option if it is the good one
       select_hidden.value = option_selected.value;
-      break;
     }
   }
 
@@ -234,12 +233,12 @@ function selectHiddenManagementForType(tab, form) {
       options_hidden = select_hidden.getElementsByTagName("option");
       for (let option_hidden of options_hidden) {
         option_hidden.removeAttribute("selected");
+        // if (option_hidden.value == type_field_search) {
         if (option_hidden.value == '{"@id": "' + type_field_search + '"}') {
           //Actually selecting the option if it is the good one
           option_hidden.setAttribute("selected", "selected");
           select_hidden.setAttribute("value", option_hidden.value);
           select_hidden.value = option_hidden.value;
-          break;
         }
       }
 
@@ -275,7 +274,6 @@ function InitManagementForType() {
               option_hidden.setAttribute("selected", "selected");
               select_hidden.setAttribute("value", option_hidden.value);
               select_hidden.value = option_hidden.value;
-              break;
             }
           }
           
@@ -635,6 +633,26 @@ function listenToInputChangeOnMentorAccountCompletion(originalForm) {
   }
 }
 
+async function refreshDatabase(targetElement) {
+  let form = document.getElementById(targetElement);
+  form.addEventListener("save", async function() {
+    let lists = document.getElementsByClassName('resource_by_step');
+
+    for (let list of lists) {
+      if (list) {
+        list.dataset.src = list.dataset.src;
+        console.log({list, targetElement});
+        let listProxy = await list.component.resource;
+        // Refresh du cache sur la liste
+        console.log({listProxy});
+        if (listProxy) {
+          listProxy.clearCache();
+        }
+      }
+    }
+  });
+}
+
 /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXX ON LOAD XXXXXXXXXXXXXXXXXXXXXXX
@@ -741,6 +759,7 @@ document.addEventListener("DOMContentLoaded", event => {
   refreshList("validation_form", "pending_resources");
   refreshList("refusal_dialog_form", "pending_resources");
   refreshList("improvement_dialog_form", "pending_resources");
+  refreshDatabase("validation_form");
   refreshUser("entrepreneur_profile_creation", "entrepreneur_info");
   refreshUser("entrepreneur_profile_creation", "entrepreneur_contact");
   refreshUser("entrepreneur_profile_creation", "entrepreneur_account_picture");
@@ -878,18 +897,23 @@ document.addEventListener("DOMContentLoaded", event => {
         // Refresh du cache sur la liste
         listProxy.clearCache();
         let confirm_suppress = document.getElementById("confirm_suppress");
-        confirm_suppress.setAttribute("hidden", "hidden");  
+        confirm_suppress.removeAttribute('open');
         //If we supress from the detail resource view, we close this view.
         let mentor_resource_detail = document.getElementById(
           "mentor-resource-detail"
         );
-        mentor_resource_detail.setAttribute("hidden", "hidden");
-        this.dispatchEvent(
-          new CustomEvent("requestNavigation", {
-            bubbles: true,
-            detail: { route: "mentor-dashboard" }
-          })
-        );
+        mentor_resource_detail.removeAttribute('open');
+        
+        let lists = document.getElementsByClassName('resource_by_step');
+        for (let list of lists) {
+          list.dataset.src = list.dataset.src;
+
+          let listProxy = await list.component.resource;
+          // Refresh du cache sur la liste
+          if (listProxy) {
+            listProxy.clearCache();
+          }
+        };
       });
     };
 
-- 
GitLab