From a93470da3a65274b4f31f74c425c7f36a8e654d2 Mon Sep 17 00:00:00 2001
From: Benoit Alessandroni <benoit@happy-dev.fr>
Date: Mon, 25 May 2020 18:15:51 +0200
Subject: [PATCH] Improve resource creation and account completion scripts

---
 src/scripts/coopstarter.js | 64 ++++++++++++++++----------------------
 1 file changed, 27 insertions(+), 37 deletions(-)

diff --git a/src/scripts/coopstarter.js b/src/scripts/coopstarter.js
index 527f0122..55d598dc 100644
--- a/src/scripts/coopstarter.js
+++ b/src/scripts/coopstarter.js
@@ -122,15 +122,14 @@ async function refreshUser(formId, listId) {
 
     if (list) {
       let listProxy = await list.component.resource;
-      let account = await listProxy['account'];
-
-      // Refresh du cache sur le User
       listProxy.clearCache();
+
+      list.dataset.src = list.dataset.src;
+      let account = await listProxy['account'];
+      // Refresh du cache sur le account du user
       if (account) {
         account.clearCache();
       }
-      
-      list.dataset.src = list.dataset.src;
     }
   });
 }
@@ -667,6 +666,22 @@ function listenToInputChangeOnResourceCreation(originalForm) {
   }
 }
 
+function listenToInputChangeOnMentorAccountCompletion(originalForm) {
+  let submitInput = originalForm.querySelectorAll('input[type=submit]')[0];
+  if (originalForm.querySelectorAll('input[name="first_name"]')[0].value != "" &&
+      originalForm.querySelectorAll('input[name="last_name"]')[0].value != "" &&
+      originalForm.querySelectorAll('input[name="mentorProfile.city"]')[0].value != "" &&
+      originalForm.querySelectorAll('select[name="mentorProfile.languages"]')[0].value != "" &&
+      originalForm.querySelectorAll('select[name="mentorProfile.fields"]')[0].value != "" &&
+      originalForm.querySelectorAll('select[name="mentorProfile.country"]')[0].value != "") {
+    submitInput.disabled = false;
+    submitInput.classList.remove('disabled');
+  } else {
+    submitInput.disabled = true;
+    submitInput.classList.add('disabled');
+  }
+}
+
 /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXX ON LOAD XXXXXXXXXXXXXXXXXXXXXXX
@@ -689,36 +704,11 @@ jQuery(document).ready(function($) {
     submitInput.classList.add('disabled');
     const inputsList = mentorCreationForm.querySelectorAll('input[type="text"]' + ',select');
     inputsList.forEach(function(input) {
-      input.addEventListener('focusout', (() => {
-        let submitInput = mentorCreationForm.querySelectorAll('input[type=submit]')[0];
-        if (mentorCreationForm.querySelectorAll('input[name="first_name"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('input[name="last_name"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('input[name="mentorProfile.city"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('select[name="mentorProfile.languages"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('select[name="mentorProfile.fields"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('select[name="mentorProfile.country"]')[0].value != "") {
-          submitInput.disabled = false;
-          submitInput.classList.remove('disabled');
-        } else {
-          submitInput.disabled = true;
-          submitInput.classList.add('disabled');
-        }
-      }));
-      
       input.addEventListener('change', (() => {
-        let submitInput = mentorCreationForm.querySelectorAll('input[type=submit]')[0];
-        if (mentorCreationForm.querySelectorAll('input[name="first_name"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('input[name="last_name"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('input[name="mentorProfile.city"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('select[name="mentorProfile.languages"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('select[name="mentorProfile.fields"]')[0].value != "" &&
-            mentorCreationForm.querySelectorAll('select[name="mentorProfile.country"]')[0].value != "") {
-          submitInput.disabled = false;
-          submitInput.classList.remove('disabled');
-        } else {
-          submitInput.disabled = true;
-          submitInput.classList.add('disabled');
-        }
+        listenToInputChangeOnMentorAccountCompletion(mentorCreationForm);
+      }));
+      input.addEventListener('input', (() => {
+        listenToInputChangeOnMentorAccountCompletion(mentorCreationForm);
       }));
     });
   });
@@ -730,10 +720,10 @@ jQuery(document).ready(function($) {
     submitInput.classList.add('disabled');
     let inputs = mentorResourceCreationForm.querySelectorAll('input[type="text"]' + ',select' + ',textarea');
     inputs.forEach(function(input) {
-      input.addEventListener('focusout', (() => {
+      input.addEventListener('change', (() => {
         listenToInputChangeOnResourceCreation(mentorResourceCreationForm);
       }));
-      input.addEventListener('change', (() => {
+      input.addEventListener('input', (() => {
         listenToInputChangeOnResourceCreation(mentorResourceCreationForm);
       }));
     });
@@ -746,7 +736,7 @@ jQuery(document).ready(function($) {
     submitInput.classList.add('disabled');
     let inputs = mentorResourceEditionForm.querySelectorAll('input[type="text"]' + ',select' + ',textarea');
     inputs.forEach(function(input) {
-      input.addEventListener('focusout', (() => {
+      input.addEventListener('input', (() => {
         listenToInputChangeOnResourceCreation(mentorResourceEditionForm);
       }));
       input.addEventListener('change', (() => {
-- 
GitLab