28/10/2023 - 16h

recette2
cherif 2023-10-28 20:02:58 +02:00
parent 05dc0b6569
commit d794377bdc
7 changed files with 1131 additions and 40 deletions

View File

@ -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 (
<div className="addclassmanual">
{isLoading && <div className="loader-container">
@ -1566,6 +1750,39 @@ const AddClassManual = (props) => {
/>
</div>
{/* -- debut champs specifiques **/}
<div className="div_row" style={{ "border": 'none' }}>
<hr />
</div>
<div className="div_row" style={{ "padding": "5px", "border": 'none' }}> Vos champs spécifiques<br />
{rows_champs_specifics &&
rows_champs_specifics.map((champ_spec) => (
<div className="training_caract">
<TextField
name={JSON.parse(champ_spec).field_name}
id={JSON.parse(champ_spec).field_name}
label={JSON.parse(champ_spec).field_label}
type="text"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
onChange={(e) => {
change_champs_spec_handle(e.target.value);
//setEmployee_data_changed("1");
}}
/>
</div>
))}
<br />
</div>
{/* -- end champs specifiques **/}
</div>
<div style={{ "width": "100%" }}>
{String(datamodification) === String("1") && <div className="parter_div_filtrer_row">

View File

@ -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,
top: 0,
behavior: "smooth",
});
}
}, [])
@ -1616,6 +1617,8 @@ const Config_Champs_Personnalise = (props) => {
</div>}
<div className="div_row" ref={myRef_detail} id="myRef_detail"> &nbsp; </div>
{String(display_personalised_field) !== "1" && String(add_one_personal_field) === "1" && <div className="div_row">
<h3> Ajout d'un nouveau champ spécifique</h3>

View File

@ -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",
@ -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 (
<div className="displaypartnersession">
@ -5435,13 +5666,13 @@ const DisplayPartnerSession = (props) => {
<a href='/sample/template_import_session_formation.csv' download>Télécharger un fichier modèle</a>
</div>
</div>
<div className="div_row"> &nbsp;</div>
<div className="div_row">
<div className="div_row"> &nbsp; </div>
{selectionModel && selectionModel.length === 1 && <div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_session} className="detail_class_submenu" id='detail_session' name='detail_session'>Détail Session</Button>
<Button variant="outlined" onClick={submenu_preinscrit} className="detail_class_submenu" id='preinscrit' name='preinscrit'>Preinscription ({String(nb_stagiaire_Preinscrit)}) </Button>
<Button variant="outlined" onClick={submenu_inscrit} className="detail_class_submenu" id='inscrit' name='inscrit'>Inscription ({String(nb_stagiaire_Inscrit)}) </Button>
</div>
</div>}
<div>
@ -6027,6 +6258,50 @@ const DisplayPartnerSession = (props) => {
}}
/>
</div>
{/* -- debut champs specifiques **/}
<div className="div_row">
<hr />
</div>
<div className="div_row" style={{ "padding": "5px" }}> Vos champs spécifiques<br />
{rows_champs_specifics &&
rows_champs_specifics.map((champ_spec) => (
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name={JSON.parse(champ_spec).field_name}
id={JSON.parse(champ_spec).field_name}
InputLabelProps={{
shrink: true,
}}
className="disabled_style"
onChange={(e) => {
change_champs_spec_handle(e.target.value);
// setEmployee_data_changed("1");
}}
//onChange={change_champs_spec_handle}
/>
</div>
))}
<br />
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
{/* -- end champs specifiques **/}
</div>
@ -6500,6 +6775,51 @@ const DisplayPartnerSession = (props) => {
}}
/>
</div>
{/* -- debut champs specifiques **/}
<div className="div_row">
<hr />
</div>
<div className="div_row" style={{ "padding": "5px" }}> Vos champs spécifiques<br />
{rows_champs_specifics &&
rows_champs_specifics.map((champ_spec) => (
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name={JSON.parse(champ_spec).field_name}
id={JSON.parse(champ_spec).field_name}
InputLabelProps={{
shrink: true,
}}
className="disabled_style"
onChange={(e) => {
change_champs_spec_handle(e.target.value);
// setEmployee_data_changed("1");
}}
//onChange={change_champs_spec_handle}
/>
</div>
))}
<br />
</div>
<div className="div_row">
&nbsp;
</div>
{/* -- end champs specifiques **/}
</div>

View File

@ -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 (
<div className="displaypartnerstagiaire">
{isLoading && <div className="loader-container">
@ -4408,9 +4639,6 @@ const DisplayPartnerStagiaires = (props) => {
/>
</div>
<div className="session_caract"> Statut Inscription *<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -4454,8 +4682,6 @@ const DisplayPartnerStagiaires = (props) => {
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) => {
</TextField>
</div>
{/* -- debut champs specifiques **/}
<div className="div_row">
<hr />
</div>
<div className="div_row" style={{ "padding": "5px" }}> Vos champs spécifiques<br />
{rows_champs_specifics &&
rows_champs_specifics.map((champ_spec) => (
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name={JSON.parse(champ_spec).field_name}
id={JSON.parse(champ_spec).field_name}
InputLabelProps={{
shrink: true,
}}
className="disabled_style"
onChange={(e) => {
change_champs_spec_handle(e.target.value);
//setEmployee_data_changed("1");
}}
//onChange={change_champs_spec_handle}
/>
</div>
))}
<br />
</div>
{/* -- end champs specifiques **/}
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
@ -4977,8 +5243,49 @@ const DisplayPartnerStagiaires = (props) => {
setparticipant_data_changed("1");
}}
/>
</div>
{/* -- debut champs specifiques **/}
<div className="div_row" style={{ "border": 'none' }}>
<hr />
</div>
<div className="div_row" style={{ "padding": "5px", "border": 'none' }}> Vos champs spécifiques<br />
{rows_champs_specifics &&
rows_champs_specifics.map((champ_spec) => (
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name={JSON.parse(champ_spec).field_name}
id={JSON.parse(champ_spec).field_name}
InputLabelProps={{
shrink: true,
}}
className="disabled_style"
onChange={(e) => {
change_champs_spec_handle(e.target.value);
setparticipant_data_changed("1");
}}
//onChange={change_champs_spec_handle}
/>
</div>
))}
<br />
</div>
{/* -- end champs specifiques **/}
<div className="div_row">
{String(participant_data_changed) === "1" && String(participant_data_edit_mode) === "1" && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
/!\ Pensez à enregistrer les modifications

View File

@ -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));
}
@ -2130,11 +2137,18 @@ 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));
}
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) => {
</TextField>
</div>}
{/* -- debut champs specifiques **/}
<div className="div_row">
<hr />
</div>
@ -4795,7 +4806,7 @@ const Employes = (props) => {
<br />
</div>
{/* -- end champs specifiques **/}
<div className="div_row">
<hr />
@ -5394,7 +5405,7 @@ const Employes = (props) => {
</div>
{/* -- debut champs specifiques **/}
<div className="div_row">
<hr />
@ -5436,7 +5447,7 @@ const Employes = (props) => {
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
{/* -- end champs specifiques **/}
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
{<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>

View File

@ -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 (
<div className='gestionadministrative'>

View File

@ -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