diff --git a/src/components/AddClassManual.js b/src/components/AddClassManual.js index 321325e..3034a92 100644 --- a/src/components/AddClassManual.js +++ b/src/components/AddClassManual.js @@ -321,6 +321,10 @@ const AddClassManual = (props) => { } setdatamodification("0"); + + Get_Partner_Object_Specific_Fields("myclass"); + + window.scrollTo({ top: 0, behavior: "smooth", @@ -516,6 +520,41 @@ const AddClassManual = (props) => { document.getElementsByName("zone_diffusion_v2")[0].value = mylocaltraining.zone_diffusion_str; } + /* + * Update 22/10/2023 : + Gestion des champs spécifiques. ils commencent tous par 'my_' + */ + + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + + if (mylocaltraining.hasOwnProperty(field_name)) { + var local_valeur = mylocaltraining[String(field_name)] + + if (document.getElementById(String(field_name))) + document.getElementById(String(field_name)).value = local_valeur; + + var new_val = { 'field_name': field_name, 'field_value': local_valeur } + var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name); + + if (johnIndex > -1) { + spec_field_updated_values[johnIndex] = new_val; + + } else { + spec_field_updated_values.push(new_val); + } + + } else { + + } + } + + setspec_field_updated_values_hooks(spec_field_updated_values); + /* + * end Update 22/10/2023 : + */ + } } else { @@ -602,6 +641,7 @@ const AddClassManual = (props) => { } + var objectif = ""; if (editorRef_objectif.current) { objectif = editorRef_objectif.current.getContent(); @@ -671,8 +711,8 @@ const AddClassManual = (props) => { //console.log(" ### alanlyse du mot "+String(words[i])) if (words[i] && String(words[i]).length > 2 && String(words[i]).length < 50) traited_list_mot_cle.push(String(words[i])); - else if (words[i] && (String(words[i]).length < 2 || String(words[i]).length > 50) ) { - alert(" Chaque mot clé doit faire entre 2 et 50 caractères. Le mot '"+String(words[i])+"' est incorrecte"); + else if (words[i] && (String(words[i]).length < 2 || String(words[i]).length > 50)) { + alert(" Chaque mot clé doit faire entre 2 et 50 caractères. Le mot '" + String(words[i]) + "' est incorrecte"); return; } @@ -749,8 +789,21 @@ const AddClassManual = (props) => { formData.append('img_banner_detail_class', banniereImg); + /* + Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire + */ + for (let i = 0; i < spec_field_updated_values_hooks.length; i++) { + if( String(spec_field_updated_values_hooks[i].field_name) === "float"){ - //console.log(" domaine = "+domaine); + } + else if ( String(spec_field_updated_values_hooks[i].field_name) === "string"){ + + } + + formData.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value)); + } + + //console.log(" formData = "+formData); setLoading(true); fetch( @@ -1186,6 +1239,137 @@ const AddClassManual = (props) => { const [isLoading, setLoading] = useState(); + // Gestion champs specifiques + + /* + *** ALGORITHME + 1 - Récuperer la liste des champs specifiques de la collection concernée - Array : list_nom_champs_spec + 2 - Récupérer les caracteristiques de champs champs spécifique : "id, nom, label, type valeur, etc" + - avec un champ 'value' à vide. Mettre dans le tableau JSON, 'spec_champs_valeur' + + 3 - Créer une nouvelle table qui permettra de gerer les hook : const [rows_champs_specifics, setrows_champs_specifics] = useState([]); + 4 - Afficher en html les elements 'rows_champs_specifics' + 5 - Gerer la modification avec la fonction 'change_champs_spec_handle' + 6 - On recuperer les valeur lors du click d'enregistrement. + + */ + + + const list_nom_champs_spec = [] + const [spec_champs_valeur, setspec_champs_valeur] = useState([]); + + //const spec_champs_valeur = "" + + const [Get_Partner_Object_Specific_Fields_api, setGet_Partner_Object_Specific_Fields_api] = useState(); + const [Get_Partner_Object_Specific_Fields_message, setGet_Partner_Object_Specific_Fields_message] = useState(); + const [Get_Partner_Object_Specific_Fields_result, setGet_Partner_Object_Specific_Fields_result] = useState(); + function Get_Partner_Object_Specific_Fields(local_collection_obj_metier) { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("object_name", local_collection_obj_metier); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Object_Specific_Valide_Displayed_Fields/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status); + //console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message); + + setGet_Partner_Object_Specific_Fields_api("true"); + setGet_Partner_Object_Specific_Fields_result(res.data.message); + + + setrows_champs_specifics(res.data.message); + + + } + else { + setGet_Partner_Object_Specific_Fields_api("false"); + setGet_Partner_Object_Specific_Fields_message(res.data.message); + alert(res.data.message) + } + + }).catch((error) => { + console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error); + setGet_Partner_Object_Specific_Fields_api("false"); + alert(" Impossible de recuperer la liste des collection et champs personnalisables"); + //setmyApimyApiMessage("") + }) + } + + + const [rows_champs_specifics, setrows_champs_specifics] = useState([]); + const [display_champs_specifics, setdisplay_champs_specifics] = useState("0"); + + function afficher_champs_spec() { + + setdisplay_champs_specifics("1"); + //setrows_champs_specifics(spec_champs_valeur); + + } + + function findIndexByProperty(data, key, value) { + for (var i = 0; i < data.length; i++) { + + if (data[i][key] == value) { + return i; + } + } + return -1; + } + + + function findValueByProperty(data, key, value) { + for (var i = 0; i < data.length; i++) { + if (data[i][key] == value) { + + var tmp_val = JSON.parse(data[i]); + + return tmp_val.field_value + + } + } + return ""; + } + + + const spec_field_updated_values = [] + const [spec_field_updated_values_hooks, setspec_field_updated_values_hooks] = useState([]); + + + function change_champs_spec_handle() { + + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + + if (document.getElementsByName(String(field_name))[0]) { + + var field_value = document.getElementsByName(String(field_name))[0].value; + var new_val = { 'field_name': field_name, 'field_value': field_value } + + var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name); + if (johnIndex > -1) { + spec_field_updated_values[johnIndex] = new_val; + + } else { + spec_field_updated_values.push(new_val); + } + } + + } + + //setrows_champs_specifics(spec_champs_valeur); + + //console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); + setspec_field_updated_values_hooks(spec_field_updated_values) + } + // -- end champs specifiques + + return (
{isLoading &&
@@ -1393,7 +1577,7 @@ const AddClassManual = (props) => { > {support_training_list.map((option) => ( - {option.label}   + {option.label}   ))} @@ -1437,7 +1621,7 @@ const AddClassManual = (props) => { value={mytrainingmetier} > {Get_List_Metiers_result && Get_List_Metiers_result.map((option) => ( - + {option}  
))} @@ -1566,6 +1750,39 @@ const AddClassManual = (props) => { />
+ {/* -- debut champs specifiques **/} +
+
+
+
Vos champs spécifiques
+ + {rows_champs_specifics && + rows_champs_specifics.map((champ_spec) => ( + +
+ { + change_champs_spec_handle(e.target.value); + //setEmployee_data_changed("1"); + }} + /> +
+ ))} + +
+ +
+ {/* -- end champs specifiques **/} +
{String(datamodification) === String("1") &&
diff --git a/src/components/Config_Champs_Personnalise.js b/src/components/Config_Champs_Personnalise.js index e5f0873..6ca2ac3 100644 --- a/src/components/Config_Champs_Personnalise.js +++ b/src/components/Config_Champs_Personnalise.js @@ -204,9 +204,9 @@ const Config_Champs_Personnalise = (props) => { //console.log(" ### line.ref_interne = ", line.ref_interne); Get_Given_Specific_Fields(document_id); - if (document.getElementById('myRef')) { + if (document.getElementById('myRef_detail')) { // myRef.current.scrollIntoView({ behavior: "smooth" }); - var divh = document.getElementById('myRef').offsetTop; + var divh = document.getElementById('myRef_detail').offsetTop; window.scrollTo({ top: divh, behavior: "smooth", @@ -542,6 +542,7 @@ const Config_Champs_Personnalise = (props) => { } + const myRef_detail = useRef(null); useEffect(() => { Get_Obj_Metier_Eligible_Cham_Spe(); @@ -549,13 +550,13 @@ const Config_Champs_Personnalise = (props) => { Getall_Partner_Personalised_Fields_No_filter(); // myRef_head.current.scrollIntoView({ behavior: "smooth" }); - if (document.getElementById('myRef_head')) { - var divh = document.getElementById('myRef_head').offsetTop; - window.scrollTo({ - top: divh, - behavior: "smooth", - }); - } + + + window.scrollTo({ + top: 0, + behavior: "smooth", + }); + }, []) @@ -1616,6 +1617,8 @@ const Config_Champs_Personnalise = (props) => {
} + +
 
{String(display_personalised_field) !== "1" && String(add_one_personal_field) === "1" &&

Ajout d'un nouveau champ spécifique

diff --git a/src/components/DisplayPartnerSession.js b/src/components/DisplayPartnerSession.js index 243a9d3..fbca488 100644 --- a/src/components/DisplayPartnerSession.js +++ b/src/components/DisplayPartnerSession.js @@ -860,6 +860,8 @@ const DisplayPartnerSession = (props) => { setdatagrid_columns_size_model2(50); } + Get_Partner_Object_Specific_Fields("session_formation"); + window.scrollTo({ top: 0, behavior: "smooth", @@ -1442,7 +1444,7 @@ const DisplayPartnerSession = (props) => { setOne_Create_Participant_api("true"); setOne_Create_Participant_result(res.data.message); - + setaddOneParticipant("0"); //setreduction_session("1"); GetListePreinscrit(selected_session_id, selected_internal_url); @@ -2071,6 +2073,18 @@ const DisplayPartnerSession = (props) => { document.getElementsByName("sessiondatefininscription")[0].disabled = true; document.getElementsByName("sessiondatefininscription")[0].style.backgroundColor = "#ECEFF1"; + + // Pour les champs spécifiques + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + if (document.getElementsByName(String(field_name))[0]) { + document.getElementsByName(String(field_name))[0].disabled = true; + document.getElementsByName(String(field_name))[0].style.backgroundColor = "#ECEFF1"; + } + } + + setfields1desabled(true); } @@ -2138,6 +2152,16 @@ const DisplayPartnerSession = (props) => { document.getElementsByName("sessiondatefininscription")[0].disabled = false; document.getElementsByName("sessiondatefininscription")[0].style.backgroundColor = "#FFFFFF "; + // Pour les champs spécifiques + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + if (document.getElementsByName(String(field_name))[0]) { + document.getElementsByName(String(field_name))[0].disabled = false; + document.getElementsByName(String(field_name))[0].style.backgroundColor = "#FFFFFF"; + } + } + setfields1desabled(false); } @@ -2470,6 +2494,20 @@ const DisplayPartnerSession = (props) => { } form.append("contenu_ftion", contenu_ftion); + /* + Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire + */ + for (let i = 0; i < spec_field_updated_values_hooks.length; i++) { + if( String(spec_field_updated_values_hooks[i].field_name) === "float"){ + + } + else if ( String(spec_field_updated_values_hooks[i].field_name) === "string"){ + + } + + form.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value)); + } + //console.log(" ### CreateSessionFormation form = ", form); @@ -2655,6 +2693,21 @@ const DisplayPartnerSession = (props) => { } form.append("contenu_ftion", contenu_ftion); + /* + Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire + */ + for (let i = 0; i < spec_field_updated_values_hooks.length; i++) { + + if( String(spec_field_updated_values_hooks[i].field_name) === "float"){ + + } + else if ( String(spec_field_updated_values_hooks[i].field_name) === "string"){ + + } + + form.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value)); + } + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_SessionFormation/"; @@ -2926,6 +2979,42 @@ const DisplayPartnerSession = (props) => { else if (String(mylocaltraining.session_status) === "false") setsessionStatus(false); + /* + * Update 22/10/2023 : + Gestion des champs spécifiques. ils commencent tous par 'my_' + */ + + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + + if (mylocaltraining.hasOwnProperty(field_name)) { + var local_valeur = mylocaltraining[String(field_name)] + + if (document.getElementById(String(field_name))) + document.getElementById(String(field_name)).value = local_valeur; + + var new_val = { 'field_name': field_name, 'field_value': local_valeur } + var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name); + + if (johnIndex > -1) { + spec_field_updated_values[johnIndex] = new_val; + + } else { + spec_field_updated_values.push(new_val); + } + + } else { + + } + } + + setspec_field_updated_values_hooks(spec_field_updated_values); + /* + * end Update 22/10/2023 : + */ + + desableSessionFields(); @@ -4341,6 +4430,17 @@ const DisplayPartnerSession = (props) => { document.getElementsByName("certif_date")[0].style.backgroundColor = "#ECEFF1"; } + + // Pour les champs spécifiques + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + if (document.getElementsByName(String(field_name))[0]) { + document.getElementsByName(String(field_name))[0].disabled = true; + document.getElementsByName(String(field_name))[0].style.backgroundColor = "#ECEFF1"; + } + } + } function EnableAttendeeDetailFields() { @@ -4925,6 +5025,137 @@ const DisplayPartnerSession = (props) => { // -- end action en mass + // Gestion champs specifiques + + /* + *** ALGORITHME + 1 - Récuperer la liste des champs specifiques de la collection concernée - Array : list_nom_champs_spec + 2 - Récupérer les caracteristiques de champs champs spécifique : "id, nom, label, type valeur, etc" + - avec un champ 'value' à vide. Mettre dans le tableau JSON, 'spec_champs_valeur' + + 3 - Créer une nouvelle table qui permettra de gerer les hook : const [rows_champs_specifics, setrows_champs_specifics] = useState([]); + 4 - Afficher en html les elements 'rows_champs_specifics' + 5 - Gerer la modification avec la fonction 'change_champs_spec_handle' + 6 - On recuperer les valeur lors du click d'enregistrement. + + */ + + + const list_nom_champs_spec = [] + const [spec_champs_valeur, setspec_champs_valeur] = useState([]); + + //const spec_champs_valeur = "" + + const [Get_Partner_Object_Specific_Fields_api, setGet_Partner_Object_Specific_Fields_api] = useState(); + const [Get_Partner_Object_Specific_Fields_message, setGet_Partner_Object_Specific_Fields_message] = useState(); + const [Get_Partner_Object_Specific_Fields_result, setGet_Partner_Object_Specific_Fields_result] = useState(); + function Get_Partner_Object_Specific_Fields(local_collection_obj_metier) { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("object_name", local_collection_obj_metier); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Object_Specific_Valide_Displayed_Fields/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status); + //console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message); + + setGet_Partner_Object_Specific_Fields_api("true"); + setGet_Partner_Object_Specific_Fields_result(res.data.message); + + + setrows_champs_specifics(res.data.message); + + + } + else { + setGet_Partner_Object_Specific_Fields_api("false"); + setGet_Partner_Object_Specific_Fields_message(res.data.message); + alert(res.data.message) + } + + }).catch((error) => { + console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error); + setGet_Partner_Object_Specific_Fields_api("false"); + alert(" Impossible de recuperer la liste des collection et champs personnalisables"); + //setmyApimyApiMessage("") + }) + } + + + const [rows_champs_specifics, setrows_champs_specifics] = useState([]); + const [display_champs_specifics, setdisplay_champs_specifics] = useState("0"); + + function afficher_champs_spec() { + + setdisplay_champs_specifics("1"); + //setrows_champs_specifics(spec_champs_valeur); + + } + + function findIndexByProperty(data, key, value) { + for (var i = 0; i < data.length; i++) { + + if (data[i][key] == value) { + return i; + } + } + return -1; + } + + + function findValueByProperty(data, key, value) { + for (var i = 0; i < data.length; i++) { + if (data[i][key] == value) { + + var tmp_val = JSON.parse(data[i]); + + return tmp_val.field_value + + } + } + return ""; + } + + + const spec_field_updated_values = [] + const [spec_field_updated_values_hooks, setspec_field_updated_values_hooks] = useState([]); + + + function change_champs_spec_handle() { + + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + + if (document.getElementsByName(String(field_name))[0]) { + + var field_value = document.getElementsByName(String(field_name))[0].value; + var new_val = { 'field_name': field_name, 'field_value': field_value } + + var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name); + if (johnIndex > -1) { + spec_field_updated_values[johnIndex] = new_val; + + } else { + spec_field_updated_values.push(new_val); + } + } + + } + + //setrows_champs_specifics(spec_champs_valeur); + + //console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); + setspec_field_updated_values_hooks(spec_field_updated_values) + } + // -- end champs specifiques + + return (
@@ -5435,13 +5666,13 @@ const DisplayPartnerSession = (props) => { Télécharger un fichier modèle
-
 
-
+
 
+ {selectionModel && selectionModel.length === 1 &&
-
+
}
@@ -6027,6 +6258,50 @@ const DisplayPartnerSession = (props) => { }} />
+ + {/* -- debut champs specifiques **/} + +
+
+
+
Vos champs spécifiques
+ + {rows_champs_specifics && + rows_champs_specifics.map((champ_spec) => ( + +
{JSON.parse(champ_spec).field_label}
+
+ { + change_champs_spec_handle(e.target.value); + // setEmployee_data_changed("1"); + }} + //onChange={change_champs_spec_handle} + + + /> +
+ ))} + +
+ +
+ +
+   +
+ {/* -- end champs specifiques **/}
@@ -6500,6 +6775,51 @@ const DisplayPartnerSession = (props) => { }} /> + + {/* -- debut champs specifiques **/} +
+
+
+
Vos champs spécifiques
+ + {rows_champs_specifics && + rows_champs_specifics.map((champ_spec) => ( + +
{JSON.parse(champ_spec).field_label}
+
+ { + change_champs_spec_handle(e.target.value); + // setEmployee_data_changed("1"); + }} + //onChange={change_champs_spec_handle} + + + /> +
+ ))} + +
+ +
+ +
+   +
+ + {/* -- end champs specifiques **/} + diff --git a/src/components/DisplayPartnerStagiaires.js b/src/components/DisplayPartnerStagiaires.js index 8ee3b0f..b98bff9 100644 --- a/src/components/DisplayPartnerStagiaires.js +++ b/src/components/DisplayPartnerStagiaires.js @@ -1465,6 +1465,16 @@ const DisplayPartnerStagiaires = (props) => { document.getElementsByName("certif_date")[0].disabled = true; document.getElementsByName("certif_date")[0].style.backgroundColor = "#ECEFF1"; } + + // Pour les champs spécifiques + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + if (document.getElementsByName(String(field_name))[0]) { + document.getElementsByName(String(field_name))[0].disabled = true; + document.getElementsByName(String(field_name))[0].style.backgroundColor = "#ECEFF1"; + } + } } function EnableAttendeeDetailFields() { @@ -1544,6 +1554,18 @@ const DisplayPartnerStagiaires = (props) => { document.getElementsByName("certif_date")[0].disabled = false; document.getElementsByName("certif_date")[0].style.backgroundColor = "#FFFFFF"; + + // Pour les champs spécifiques + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + if (document.getElementsByName(String(field_name))[0]) { + document.getElementsByName(String(field_name))[0].disabled = false; + document.getElementsByName(String(field_name))[0].style.backgroundColor = "#FFFFFF"; + } + } + + } @@ -1911,6 +1933,8 @@ const DisplayPartnerStagiaires = (props) => { setdatagrid_columns_size_model2(10); } + Get_Partner_Object_Specific_Fields("inscription"); + window.scrollTo({ top: 0, behavior: "smooth", @@ -2170,6 +2194,40 @@ const DisplayPartnerStagiaires = (props) => { setattendee_lms_pwd("xxxxxx"); } + /* + * Update 22/10/2023 : + Gestion des champs spécifiques. ils commencent tous par 'my_' + */ + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + + if (mylocalattendee.hasOwnProperty(field_name)) { + var local_valeur = mylocalattendee[String(field_name)] + + if (document.getElementById(String(field_name))) + document.getElementById(String(field_name)).value = local_valeur; + + var new_val = { 'field_name': field_name, 'field_value': local_valeur } + var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name); + + if (johnIndex > -1) { + spec_field_updated_values[johnIndex] = new_val; + + } else { + spec_field_updated_values.push(new_val); + } + + } else { + + } + } + + setspec_field_updated_values_hooks(spec_field_updated_values); + /* + * end Update 22/10/2023 : + */ + var myelement; @@ -2382,6 +2440,22 @@ const DisplayPartnerStagiaires = (props) => { form.append("modefinancement", ""); + + /* + Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire + */ + for (let i = 0; i < spec_field_updated_values_hooks.length; i++) { + if( String(spec_field_updated_values_hooks[i].field_name) === "float"){ + + } + else if ( String(spec_field_updated_values_hooks[i].field_name) === "string"){ + + } + + form.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value)); + } + + //console.log(" #### form = ", form); var myurl = process.env.REACT_APP_API_URL + "myclass/api/AddStagiairetoClass/"; @@ -2479,6 +2553,22 @@ const DisplayPartnerStagiaires = (props) => { else form.append("client_rattachement_id", ""); + /* + Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire +*/ + for (let i = 0; i < spec_field_updated_values_hooks.length; i++) { + + if( String(spec_field_updated_values_hooks[i].field_name) === "float"){ + + } + else if ( String(spec_field_updated_values_hooks[i].field_name) === "string"){ + + } + form.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value)); + + + } + //console.log(" form == ", form); var myurl = process.env.REACT_APP_API_URL + "myclass/api/UpdateStagiairetoClass/"; @@ -3081,6 +3171,16 @@ const DisplayPartnerStagiaires = (props) => { document.getElementsByName("sessiondatefininscription")[0].style.backgroundColor = "#ECEFF1"; } + // Pour les champs spécifiques + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + if (document.getElementsByName(String(field_name))[0]) { + document.getElementsByName(String(field_name))[0].disabled = true; + document.getElementsByName(String(field_name))[0].style.backgroundColor = "#ECEFF1"; + } + } + setfields1desabled(true); } @@ -3410,7 +3510,7 @@ const DisplayPartnerStagiaires = (props) => { //console.log(" ## result['status'] = ", result['status']) if (String(result['status']) === String("true")) { - console.log('Message :', result['message']); + //console.log('Message :', result['message']); setGet_List_Of_All_PJ_result(result['message']); setGet_List_Of_All_PJ_api("true"); @@ -3547,6 +3647,137 @@ const DisplayPartnerStagiaires = (props) => { // -- end action en mass + // Gestion champs specifiques + + /* + *** ALGORITHME + 1 - Récuperer la liste des champs specifiques de la collection concernée - Array : list_nom_champs_spec + 2 - Récupérer les caracteristiques de champs champs spécifique : "id, nom, label, type valeur, etc" + - avec un champ 'value' à vide. Mettre dans le tableau JSON, 'spec_champs_valeur' + + 3 - Créer une nouvelle table qui permettra de gerer les hook : const [rows_champs_specifics, setrows_champs_specifics] = useState([]); + 4 - Afficher en html les elements 'rows_champs_specifics' + 5 - Gerer la modification avec la fonction 'change_champs_spec_handle' + 6 - On recuperer les valeur lors du click d'enregistrement. + + */ + + + const list_nom_champs_spec = [] + const [spec_champs_valeur, setspec_champs_valeur] = useState([]); + + //const spec_champs_valeur = "" + + const [Get_Partner_Object_Specific_Fields_api, setGet_Partner_Object_Specific_Fields_api] = useState(); + const [Get_Partner_Object_Specific_Fields_message, setGet_Partner_Object_Specific_Fields_message] = useState(); + const [Get_Partner_Object_Specific_Fields_result, setGet_Partner_Object_Specific_Fields_result] = useState(); + function Get_Partner_Object_Specific_Fields(local_collection_obj_metier) { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("object_name", local_collection_obj_metier); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Object_Specific_Valide_Displayed_Fields/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status); + //console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message); + + setGet_Partner_Object_Specific_Fields_api("true"); + setGet_Partner_Object_Specific_Fields_result(res.data.message); + + + setrows_champs_specifics(res.data.message); + + + } + else { + setGet_Partner_Object_Specific_Fields_api("false"); + setGet_Partner_Object_Specific_Fields_message(res.data.message); + alert(res.data.message) + } + + }).catch((error) => { + console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error); + setGet_Partner_Object_Specific_Fields_api("false"); + alert(" Impossible de recuperer la liste des collection et champs personnalisables"); + //setmyApimyApiMessage("") + }) + } + + + const [rows_champs_specifics, setrows_champs_specifics] = useState([]); + const [display_champs_specifics, setdisplay_champs_specifics] = useState("0"); + + function afficher_champs_spec() { + + setdisplay_champs_specifics("1"); + //setrows_champs_specifics(spec_champs_valeur); + + } + + function findIndexByProperty(data, key, value) { + for (var i = 0; i < data.length; i++) { + + if (data[i][key] == value) { + return i; + } + } + return -1; + } + + + function findValueByProperty(data, key, value) { + for (var i = 0; i < data.length; i++) { + if (data[i][key] == value) { + + var tmp_val = JSON.parse(data[i]); + + return tmp_val.field_value + + } + } + return ""; + } + + + const spec_field_updated_values = [] + const [spec_field_updated_values_hooks, setspec_field_updated_values_hooks] = useState([]); + + + function change_champs_spec_handle() { + + for (let i = 0; i < rows_champs_specifics.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics[i]).field_name; + + if (document.getElementsByName(String(field_name))[0]) { + + var field_value = document.getElementsByName(String(field_name))[0].value; + var new_val = { 'field_name': field_name, 'field_value': field_value } + + var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name); + if (johnIndex > -1) { + spec_field_updated_values[johnIndex] = new_val; + + } else { + spec_field_updated_values.push(new_val); + } + } + + } + + //setrows_champs_specifics(spec_champs_valeur); + + //console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); + setspec_field_updated_values_hooks(spec_field_updated_values) + } + // -- end champs specifiques + + return (
{isLoading &&
@@ -4408,9 +4639,6 @@ const DisplayPartnerStagiaires = (props) => { />
- - -
Statut Inscription *
{ value={p_one_detail_client_rattachement_id} onChange={(e) => { setp_one_detail_client_rattachement_id(e.target.value); - - //console.log(" setp_one_detail_client_rattachement_id = ", e.target.value); } } @@ -4471,6 +4697,46 @@ const DisplayPartnerStagiaires = (props) => {
+ {/* -- debut champs specifiques **/} +
+
+
+
Vos champs spécifiques
+ + {rows_champs_specifics && + rows_champs_specifics.map((champ_spec) => ( + +
{JSON.parse(champ_spec).field_label}
+
+ { + change_champs_spec_handle(e.target.value); + //setEmployee_data_changed("1"); + }} + //onChange={change_champs_spec_handle} + + + /> +
+ ))} + +
+ +
+ {/* -- end champs specifiques **/} + +
 
@@ -4977,8 +5243,49 @@ const DisplayPartnerStagiaires = (props) => { setparticipant_data_changed("1"); }} /> + +
+ {/* -- debut champs specifiques **/} +
+
+
+
Vos champs spécifiques
+ + {rows_champs_specifics && + rows_champs_specifics.map((champ_spec) => ( + +
{JSON.parse(champ_spec).field_label}
+ + { + change_champs_spec_handle(e.target.value); + setparticipant_data_changed("1"); + }} + //onChange={change_champs_spec_handle} + + + /> +
+ ))} + +
+ +
+ {/* -- end champs specifiques **/} +
{String(participant_data_changed) === "1" && String(participant_data_edit_mode) === "1" &&
/!\ Pensez à enregistrer les modifications diff --git a/src/components/Employes.js b/src/components/Employes.js index 6a30e63..b884cc4 100644 --- a/src/components/Employes.js +++ b/src/components/Employes.js @@ -1572,6 +1572,13 @@ const Employes = (props) => { Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire */ for (let i = 0; i < spec_field_updated_values_hooks.length; i++) { + if( String(spec_field_updated_values_hooks[i].field_name) === "float"){ + + } + else if ( String(spec_field_updated_values_hooks[i].field_name) === "string"){ + + } + form.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value)); } @@ -2126,15 +2133,22 @@ const Employes = (props) => { form.append("ismanager", "0"); - /* - Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire - */ + /* + Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire + */ for (let i = 0; i < spec_field_updated_values_hooks.length; i++) { + if( String(spec_field_updated_values_hooks[i].field_name) === "float"){ + + } + else if ( String(spec_field_updated_values_hooks[i].field_name) === "string"){ + + } + form.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value)); } - console.log(" form == ", form); + //console.log(" form == ", form); var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Ressource_Humaine/"; @@ -3490,10 +3504,6 @@ const Employes = (props) => { } - - - - const [rows_champs_specifics, setrows_champs_specifics] = useState([]); const [display_champs_specifics, setdisplay_champs_specifics] = useState("0"); @@ -3557,7 +3567,7 @@ const Employes = (props) => { //setrows_champs_specifics(spec_champs_valeur); - console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); + //console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); setspec_field_updated_values_hooks(spec_field_updated_values) } // -- end champs specifiques @@ -4759,6 +4769,7 @@ const Employes = (props) => {
} + {/* -- debut champs specifiques **/}

@@ -4785,7 +4796,7 @@ const Employes = (props) => { change_champs_spec_handle(e.target.value); setEmployee_data_changed("1"); }} - //onChange={change_champs_spec_handle} + //onChange={change_champs_spec_handle} /> @@ -4795,7 +4806,7 @@ const Employes = (props) => {
- + {/* -- end champs specifiques **/}

@@ -5394,7 +5405,7 @@ const Employes = (props) => {
- + {/* -- debut champs specifiques **/}

@@ -5422,7 +5433,7 @@ const Employes = (props) => { change_champs_spec_handle(e.target.value); setEmployee_data_changed("1"); }} - //onChange={change_champs_spec_handle} + //onChange={change_champs_spec_handle} /> @@ -5436,7 +5447,7 @@ const Employes = (props) => {
 
- + {/* -- end champs specifiques **/}
{
@@ -5807,7 +5818,7 @@ const Employes = (props) => {  
{String(Affectation_data_changed) === "1" && String(edite_affectation_form) === "1" &&
- /!\ Pensez à enregistrer les modifications + /!\ Pensez à enregistrer les modifications
} diff --git a/src/components/GestionAdministrative.js b/src/components/GestionAdministrative.js index f16763a..1883416 100644 --- a/src/components/GestionAdministrative.js +++ b/src/components/GestionAdministrative.js @@ -5010,6 +5010,239 @@ function GestionAdministrative(props) { ]; + // Gestion champs specifiques + + /* + *** ALGORITHME + 1 - Récuperer la liste des champs specifiques de la collection concernée - Array : list_nom_champs_spec + 2 - Récupérer les caracteristiques de champs champs spécifique : "id, nom, label, type valeur, etc" + - avec un champ 'value' à vide. Mettre dans le tableau JSON, 'spec_champs_valeur' + + 3 - Créer une nouvelle table qui permettra de gerer les hook : const [rows_champs_specifics, setrows_champs_specifics] = useState([]); + 4 - Afficher en html les elements 'rows_champs_specifics' + 5 - Gerer la modification avec la fonction 'change_champs_spec_handle' + 6 - On recuperer les valeur lors du click d'enregistrement. + + */ + + + const list_nom_champs_spec_session = [] + const [spec_champs_valeur_session, setspec_champs_valeur_session] = useState([]); + + //const spec_champs_valeur = "" + + const [Get_Partner_Object_Specific_Fields_session_api, setGet_Partner_Object_Specific_Fields_session_api] = useState(); + const [Get_Partner_Object_Specific_Fields_session_message, setGet_Partner_Object_Specific_Fields_session_message] = useState(); + const [Get_Partner_Object_Specific_Fields_session_result, setGet_Partner_Object_Specific_Fields_session_result] = useState(); + function Get_Partner_Object_Specific_Fields_session(local_collection_obj_metier) { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("object_name", local_collection_obj_metier); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Object_Specific_Valide_Displayed_Fields/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status); + //console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message); + + setGet_Partner_Object_Specific_Fields_session_api("true"); + setGet_Partner_Object_Specific_Fields_session_result(res.data.message); + + + setrows_champs_specifics_session(res.data.message); + + + } + else { + setGet_Partner_Object_Specific_Fields_session_api("false"); + setGet_Partner_Object_Specific_Fields_session_message(res.data.message); + alert(res.data.message) + } + + }).catch((error) => { + console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error); + setGet_Partner_Object_Specific_Fields_session_api("false"); + alert(" Impossible de recuperer la liste des collection et champs personnalisables"); + //setmyApimyApiMessage("") + }) + } + + + const [rows_champs_specifics_session, setrows_champs_specifics_session] = useState([]); + const [display_champs_specifics_session, setdisplay_champs_specifics_session] = useState("0"); + + function afficher_champs_spec_session() { + + setdisplay_champs_specifics_session("1"); + //setrows_champs_specifics(spec_champs_valeur); + + } + + function findIndexByProperty(data, key, value) { + for (var i = 0; i < data.length; i++) { + + if (data[i][key] == value) { + return i; + } + } + return -1; + } + + + function findValueByProperty(data, key, value) { + for (var i = 0; i < data.length; i++) { + if (data[i][key] == value) { + + var tmp_val = JSON.parse(data[i]); + + return tmp_val.field_value + + } + } + return ""; + } + + + const spec_field_updated_values_session = [] + const [spec_field_updated_values_hooks_session, setspec_field_updated_values_hooks_session] = useState([]); + + + function change_champs_spec_handle_session() { + + for (let i = 0; i < rows_champs_specifics_session.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics_session[i]).field_name; + + if (document.getElementsByName(String(field_name))[0]) { + + var field_value = document.getElementsByName(String(field_name))[0].value; + var new_val = { 'field_name': field_name, 'field_value': field_value } + + var johnIndex = findIndexByProperty(spec_field_updated_values_session, 'field_name', field_name); + if (johnIndex > -1) { + spec_field_updated_values_session[johnIndex] = new_val; + + } else { + spec_field_updated_values_session.push(new_val); + } + } + + } + + //setrows_champs_specifics(spec_champs_valeur); + + //console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); + setspec_field_updated_values_hooks_session(spec_field_updated_values_session) + } + + + const list_nom_champs_spec_stagiaire = [] + const [spec_champs_valeur_stagiaire, setspec_champs_valeur_stagiaire] = useState([]); + + //const spec_champs_valeur = "" + + const [Get_Partner_Object_Specific_Fields_stagiaire_api, setGet_Partner_Object_Specific_Fields_stagiaire_api] = useState(); + const [Get_Partner_Object_Specific_Fields_stagiaire_message, setGet_Partner_Object_Specific_Fields_stagiaire_message] = useState(); + const [Get_Partner_Object_Specific_Fields_stagiaire_result, setGet_Partner_Object_Specific_Fields_stagiaire_result] = useState(); + function Get_Partner_Object_Specific_Fields_stagiaire(local_collection_obj_metier) { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("object_name", local_collection_obj_metier); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Object_Specific_Valide_Displayed_Fields/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status); + //console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message); + + setGet_Partner_Object_Specific_Fields_stagiaire_api("true"); + setGet_Partner_Object_Specific_Fields_stagiaire_result(res.data.message); + + + setrows_champs_specifics_stagiaire(res.data.message); + + + } + else { + setGet_Partner_Object_Specific_Fields_stagiaire_api("false"); + setGet_Partner_Object_Specific_Fields_stagiaire_message(res.data.message); + alert(res.data.message) + } + + }).catch((error) => { + console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error); + setGet_Partner_Object_Specific_Fields_stagiaire_api("false"); + alert(" Impossible de recuperer la liste des collection et champs personnalisables"); + //setmyApimyApiMessage("") + }) + } + + + const [rows_champs_specifics_stagiaire, setrows_champs_specifics_stagiaire] = useState([]); + const [display_champs_specifics_stagiaire, setdisplay_champs_specifics_stagiaire] = useState("0"); + + function afficher_champs_spec_stagiaire() { + + setdisplay_champs_specifics_stagiaire("1"); + //setrows_champs_specifics(spec_champs_valeur); + + } + + + + + const spec_field_updated_values_stagiaire = [] + const [spec_field_updated_values_hooks_stagiaire, setspec_field_updated_values_hooks_stagiaire] = useState([]); + + + function change_champs_spec_handle_stagiaire() { + + for (let i = 0; i < rows_champs_specifics_stagiaire.length; i++) { + + var field_name = JSON.parse(rows_champs_specifics_stagiaire[i]).field_name; + + if (document.getElementsByName(String(field_name))[0]) { + + var field_value = document.getElementsByName(String(field_name))[0].value; + var new_val = { 'field_name': field_name, 'field_value': field_value } + + var johnIndex = findIndexByProperty(spec_field_updated_values_stagiaire, 'field_name', field_name); + if (johnIndex > -1) { + spec_field_updated_values_stagiaire[johnIndex] = new_val; + + } else { + spec_field_updated_values_stagiaire.push(new_val); + } + } + + } + + //setrows_champs_specifics(spec_champs_valeur); + + //console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); + setspec_field_updated_values_hooks_stagiaire(spec_field_updated_values_stagiaire) + } + // -- end champs specifiques + + + + + + + // -- end champs specifiques + + + + + return (
diff --git a/src/components/TestUrl_new.js b/src/components/TestUrl_new.js index 928d146..8db00ae 100644 --- a/src/components/TestUrl_new.js +++ b/src/components/TestUrl_new.js @@ -419,7 +419,7 @@ const TestUrl_New = (props) => { //setrows_champs_specifics(spec_champs_valeur); - console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); + //console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values); } // -- end champs specifiques