19/06/2025 -18h

branche_01062025
Cherif 2025-06-19 18:10:25 +02:00
parent 29da61b65a
commit 35f4b013e5
12 changed files with 185 additions and 644 deletions

View File

@ -1,3 +1,3 @@
formation_code_externe;code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;pays;date_debut_inscription;date_fin_inscription;distanciel;presentiel;prix_session;session_status;lms_class_code;session_etape;formateur_email;titre;location_type;is_bpf
MYSY_Demo_AP_v2;SESS_01_DEMO_AP_V2;05/07/2024;15/07/2024;10;2 passage de la Providence 01;75001;Paris 1;France;03/01/2024;05/07/2024;1;0;1550;1;;0;;Session Fev;intra;1
MYSY_Demo_AP_v2;SESS_02_DEMO_AP_V2;20/08/2024;30/08/2024;15;3 passage de la Providence 03;75001;Paris 2;France;04/01/2024;20/08/2024;0;1;1550;1;;0;;Session Avril;extra;1
formation_code_externe;code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;pays;date_debut_inscription;date_fin_inscription;distanciel;presentiel;prix_session;session_status;lms_class_code;session_etape;formateur_email;titre;location_type;is_bpf;type_session
MYSY_Demo_AP_v2;SESS_01_DEMO_AP_V2;05/07/2024;15/07/2024;10;2 passage de la Providence 01;75001;Paris 1;France;03/01/2024;05/07/2024;1;0;1550;1;;0;;Session Fev;intra;1;0
MYSY_Demo_AP_v2;SESS_02_DEMO_AP_V2;20/08/2024;30/08/2024;15;3 passage de la Providence 03;75001;Paris 2;France;04/01/2024;20/08/2024;0;1;1550;1;;0;;Session Avril;extra;1;0

1 formation_code_externe code_session date_debut date_fin nb_participant adresse code_postal ville pays date_debut_inscription date_fin_inscription distanciel presentiel prix_session session_status lms_class_code session_etape formateur_email titre location_type is_bpf type_session
2 MYSY_Demo_AP_v2 SESS_01_DEMO_AP_V2 05/07/2024 15/07/2024 10 2 passage de la Providence 01 75001 Paris 1 France 03/01/2024 05/07/2024 1 0 1550 1 0 Session Fev intra 1 0
3 MYSY_Demo_AP_v2 SESS_02_DEMO_AP_V2 20/08/2024 30/08/2024 15 3 passage de la Providence 03 75001 Paris 2 France 04/01/2024 20/08/2024 0 1 1550 1 0 Session Avril extra 1 0

View File

@ -51,7 +51,7 @@ import AutoAwesomeOutlinedIcon from '@mui/icons-material/AutoAwesomeOutlined';
import AutoFixHighOutlinedIcon from '@mui/icons-material/AutoFixHighOutlined';
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
import MySyIA from "./Module_IA";
import { FcInfo } from "react-icons/fc";
import { makeStyles } from "@material-ui/core/styles";
import Paper from '@material-ui/core/Paper';
import Draggable from 'react-draggable';
@ -182,8 +182,8 @@ const AddClassManual = (props) => {
{ field: '_id', headerName: '_id', hide: true },
{ field: 'code', headerName: 'Code', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'titre', headerName: 'Titre', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'credit', headerName: 'Credit', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'coefficient', headerName: 'Coef.', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'credit', headerName: 'Credit', minWidth: 100, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'coefficient', headerName: 'Coef.', minWidth: 100, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'pres_dist_hyp', headerName: 'Animation', minWidth: 150, flex: 1,
renderCell: (cellValues) => {
@ -407,6 +407,7 @@ const AddClassManual = (props) => {
);
}
},
{ field: 'ponderation_type_eval', headerName: 'Poids. Type Eval.', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'max_note', headerName: 'max_note', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
@ -506,7 +507,8 @@ const AddClassManual = (props) => {
setselected_ue_id("");
setselected_eu_evalution_id("");
setsetgridline_evaluation_ue_id("");
setp_detail_max_node("");
setp_detail_max_note("");
setp_detail_ponderation_type_eval("");
setclass_unite_enseignement_type_evaluation_id("");
}
@ -1199,6 +1201,7 @@ const AddClassManual = (props) => {
var local_class_ue_id = JSON.parse(x).class_ue_id;
var local_type_evaluation_id = JSON.parse(x).type_evaluation_id;
var local_max_note = JSON.parse(x).max_note;
var local_ponderation_type_eval = JSON.parse(x).ponderation_type_eval;
//---
@ -1210,7 +1213,7 @@ const AddClassManual = (props) => {
"class_ue_id": local_class_ue_id,
"type_evaluation_id": local_type_evaluation_id,
"max_note": local_max_note,
"ponderation_type_eval": local_ponderation_type_eval,
};
new_data2.push(node);
@ -1225,6 +1228,7 @@ const AddClassManual = (props) => {
"class_ue_id": "",
"type_evaluation_id": "",
"max_note": "",
"ponderation_type_eval": ""
};
new_data2.push(node);
@ -1247,7 +1251,7 @@ const AddClassManual = (props) => {
setLoading(false);
console.warn('Not good man :( Getall_Class_List_Evalution = ', error);
setGetall_Class_List_Evalution_api("false");
alert(" Impossible de recuperer la liste des évaluations de la formatio");
alert(" Impossible de recuperer la liste des évaluations de la formation");
//setmyApimyApiMessage("")
})
}
@ -4283,8 +4287,8 @@ const AddClassManual = (props) => {
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("max_note", p_detail_max_node);
form.append("max_note", p_detail_max_note);
form.append("ponderation_type_eval", p_detail_ponderation_type_eval);
var myurl = "";
@ -4316,7 +4320,8 @@ const AddClassManual = (props) => {
setselected_ue_id("");
setselected_eu_evalution_id("");
setsetgridline_evaluation_ue_id("");
setp_detail_max_node("");
setp_detail_max_note("");
setp_detail_ponderation_type_eval("");
setclass_unite_enseignement_type_evaluation_id("");
Getall_Class_List_Evalution();
@ -4397,7 +4402,9 @@ const AddClassManual = (props) => {
const [class_unite_enseignement_type_evaluation_id, setclass_unite_enseignement_type_evaluation_id] = React.useState("");
const [p_detail_max_node, setp_detail_max_node] = React.useState("");
const [p_detail_max_note, setp_detail_max_note] = React.useState("");
const [p_detail_ponderation_type_eval, setp_detail_ponderation_type_eval] = React.useState("");
const [add_ue_evalution, setadd_ue_evalution] = React.useState("");
@ -5406,6 +5413,23 @@ const AddClassManual = (props) => {
/>
</div>}
<div className="session_caract_Dialog" > <b> Ponderation Type Eval </b>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_ponderation_type_eval"
id="event_dialog_ponderation_type_eval"
type="number"
fullWidth
value={p_detail_ponderation_type_eval}
onChange={(e) => {
setp_detail_ponderation_type_eval(e.target.value);
}
}
/>
</div>
<div className="session_caract_Dialog" > <b> Max Note </b>
<TextField
@ -5415,9 +5439,9 @@ const AddClassManual = (props) => {
id="event_dialog_credit"
type="number"
fullWidth
value={p_detail_max_node}
value={p_detail_max_note}
onChange={(e) => {
setp_detail_max_node(e.target.value);
setp_detail_max_note(e.target.value);
}
}
@ -5756,8 +5780,7 @@ const AddClassManual = (props) => {
class_ue_id: JSON.parse(item).class_ue_id,
type_evaluation_id: JSON.parse(item).type_evaluation_id,
max_note: JSON.parse(item).max_note,
ponderation_type_eval: JSON.parse(item).ponderation_type_eval,
}
))}
@ -5771,7 +5794,8 @@ const AddClassManual = (props) => {
setsetgridline_evaluation_ue_id(newSelectionModel.row.id);
setselected_eu_evalution_id(newSelectionModel.row.type_evaluation_id)
setselected_ue_id(newSelectionModel.row.class_ue_id);
setp_detail_max_node(newSelectionModel.row.max_note);
setp_detail_max_note(newSelectionModel.row.max_note);
setp_detail_ponderation_type_eval(newSelectionModel.row.ponderation_type_eval);
setclass_unite_enseignement_type_evaluation_id(newSelectionModel.row._id);
Getall_Partner_Type_Evalution_List();
@ -5840,12 +5864,18 @@ const AddClassManual = (props) => {
<br />
<div className="div_row" style={{ "border": "None" }}>
<h3> Regle de calcul note finale </h3>
<br />
<nav>
{New_Get_List_Regle_Calcul_Note_Formation_result && New_Get_List_Regle_Calcul_Note_Formation_result.length > 0 && <nav>
Règle de calcul : &nbsp;
{New_Get_List_Regle_Calcul_Note_Formation_result && New_Get_List_Regle_Calcul_Note_Formation_result.length > 0 && <Autocomplete
Règle de calcul de la note finale: &nbsp;
<Tooltip className="tooltip_css" id="detail_regle_calcul2" />
<a data-tooltip-id="detail_regle_calcul2" data-tooltip-html={New_Get_List_Regle_Calcul_Note_Formation_result.filter((data) => (data)._id === String(selected_class_note_calculation_id))[0].calcul_rule}>
<FcInfo />
</a>
<br/>
<Autocomplete
disablePortal
name="regle_calcul_note_formation"
id="regle_calcul_note_formation"
@ -5864,13 +5894,12 @@ const AddClassManual = (props) => {
}
}}
renderInput={(params) => <TextField {...params} label="Formateur" />
renderInput={(params) => <TextField {...params} label="Mode de calcul" />
}
/>}
/>
<br />
Exemple de calcul : Moyenne finale = [ UE * Coef (UE) ] / nb_coef
</nav>
</nav>}
</div>
</div>
@ -6094,7 +6123,7 @@ const AddClassManual = (props) => {
</div>}
</div>
</div>
</div>
</div>}
@ -6801,23 +6830,23 @@ const AddClassManual = (props) => {
rows_champs_specifics.map((champ_spec) => (
<div className="training_caract">
{String(JSON.parse(champ_spec).field_type) === "float" &&
<TextField
name={JSON.parse(champ_spec).field_name}
id={JSON.parse(champ_spec).field_name}
label={JSON.parse(champ_spec).field_label}
type="number"
inputProps={{ min: "1", max: "999999", step: "1" }}
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
onChange={(e) => {
change_champs_spec_handle(e.target.value);
//setEmployee_data_changed("1");
}}
/>}
{String(JSON.parse(champ_spec).field_type) === "float" &&
<TextField
name={JSON.parse(champ_spec).field_name}
id={JSON.parse(champ_spec).field_name}
label={JSON.parse(champ_spec).field_label}
type="number"
inputProps={{ min: "1", max: "999999", step: "1" }}
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
onChange={(e) => {
change_champs_spec_handle(e.target.value);
//setEmployee_data_changed("1");
}}
/>}
{String(JSON.parse(champ_spec).field_type) === "string" && <TextField
name={JSON.parse(champ_spec).field_name}

View File

@ -2191,6 +2191,7 @@ const DisplayPartnerPromotion = (props) => {
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("type_session", "1");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
@ -2372,6 +2373,7 @@ const DisplayPartnerPromotion = (props) => {
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("archive", "0");
form.append("type_session", "1");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
@ -2384,7 +2386,7 @@ const DisplayPartnerPromotion = (props) => {
setGetall_TrainingSession_result(res.data.message);
setRows(res.data.message);
var new_data2 = [];
var timeline_item = [];
@ -2664,6 +2666,7 @@ const DisplayPartnerPromotion = (props) => {
form.append(filtre1, filtre1_value);
form.append("archive", "0");
form.append("type_session", "1");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List_filter_like/";
@ -6418,7 +6421,7 @@ const DisplayPartnerPromotion = (props) => {
if (new_code_session.trim() == "") {
// alert(" Le Code Promoest obligatoire");
setdisplay_alert_mysy("1");
setalert_message("Le Code Promoest obligatoire");
setalert_message("Le Code Promo est obligatoire");
setalert_type("error");
return;
}
@ -6571,23 +6574,9 @@ const DisplayPartnerPromotion = (props) => {
form.append("session_status", p_session_status);
form.append("session_etape", p_session_etape);
form.append("type_session", "1");
/*
var contenu_ftion = "";
if (editorRef_contenu_ftion.current) {
contenu_ftion = editorRef_contenu_ftion.current.getContent();
if (parse(contenu_ftion.replace(/(<([^>]+)>)/ig, '')).length > editorRef_contenu_ftion_limite) {
setdisplay_alert_mysy("1");
setalert_message("Champ 'Contenu de la formation', limite depassée !");
setalert_type("error");
// alert(" Champ 'Contenu de la formation', limite depassée !")
return;
}
}
form.append("contenu_ftion", contenu_ftion);
*/
/*
Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire
*/
@ -6653,13 +6642,6 @@ const DisplayPartnerPromotion = (props) => {
setalert_type("success");
window.scrollTo({
top: 0,
behavior: "smooth",
});
} else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
@ -6853,22 +6835,9 @@ const DisplayPartnerPromotion = (props) => {
form.append("attestation_certif", "");
form.append("type_session", "1");
/*
var contenu_ftion = "";
if (one_editorRef_contenu_ftion.current) {
contenu_ftion = one_editorRef_contenu_ftion.current.getContent();
if (parse(contenu_ftion.replace(/(<([^>]+)>)/ig, '')).length > one_editorRef_contenu_ftion_limite) {
// alert(" Champ 'Contenu de la formation', limite depassée !")
setdisplay_alert_mysy("1");
setalert_message("Champ 'Contenu de la formation', limite depassée !");
setalert_type("error");
return;
}
}
form.append("contenu_ftion", contenu_ftion);
*/
/*
Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire
*/
@ -6940,7 +6909,7 @@ const DisplayPartnerPromotion = (props) => {
setalert_type("success");
if (document.getElementById('myRef_head')) {
if (document.getElementById('myRef_head')) {
var divh = document.getElementById('myRef_head').offsetTop;
window.scrollTo({
@ -18080,7 +18049,7 @@ const DisplayPartnerPromotion = (props) => {
<div className="div_row_dialog">
<div className="div_row_gauche_dialog_session" style={{ "textAlign": 'left' }}>
Code session
Code Promo
</div>
{rowss && String(session_selected_row_id).length > 0 && <div className="div_row_droite_dialog_session" style={{ "textAlign": 'right' }}>
{JSON.parse(rowss[session_selected_row_id]).code_session}
@ -18733,13 +18702,13 @@ const DisplayPartnerPromotion = (props) => {
<DialogContent className="DialogContent_width" style={{ "minHeight": "10rem" }}>
<DialogContentText>
<div style={{ "textAlign": "left" }}>
En confirmation cette action, toute la session de formation sera facturée.
En confirmation cette action, toute la promotion de formation sera facturée.
Verifier les informations
<ul>
<li> Prix de session </li>
<li> Prix </li>
<li> Données client </li>
<li> etc </li>
</ul>
@ -20999,8 +20968,8 @@ const DisplayPartnerPromotion = (props) => {
{selected_code_session && String(selected_code_session).length > 0 && <div className="div_row">
<nav style={{ textAlign: 'center', padding: '10px', fontFamily: 'DM Sans' }}> Promotion <b>{info_affiche_code_session} </b> du &nbsp;
<b>{info_affiche_date_debut}</b> au <b> {info_affiche_date_fin}</b>
&nbsp; &nbsp; Pl. disponible(s) : <b> {info_affiche_place_disponible} </b> </nav>
<b>{String(info_affiche_date_debut)}</b> au <b> {String(info_affiche_date_fin)}</b>
&nbsp; &nbsp; Pl. disponible(s) : <b> {String(info_affiche_place_disponible)} </b> </nav>
</div>}
<div>
@ -21577,7 +21546,7 @@ const DisplayPartnerPromotion = (props) => {
}
}
}
readOnly={!edit_session_form}
readOnly={!edit_session_form}
showTimeSelect={false}
filterTime={filterPassedTime_start}
dateFormat="dd/MM/yyyy"
@ -21602,7 +21571,7 @@ const DisplayPartnerPromotion = (props) => {
}
}
}
readOnly={!edit_session_form}
readOnly={!edit_session_form}
showTimeSelect={false}
filterTime={filterPassedTime_end}
dateFormat="dd/MM/yyyy"
@ -21689,7 +21658,7 @@ const DisplayPartnerPromotion = (props) => {
<div className="session_caract"> Prix session <br />
<div className="session_caract"> Prix Inscription <br />
<TextField sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="prix_session"
@ -23186,7 +23155,7 @@ const DisplayPartnerPromotion = (props) => {
{String(addOneParticipant) === "1" && <div className="div_row session_data" style={{ "border": "None", "backgroundColor": "#F0F0F0" }}>
<div className="titre1"> Ajout d'un nouveau participant à la session <u> {selected_code_session} </u> de la formation <u> {selected_class_title} </u></div>
<div className="titre1"> Ajout d'un nouveau participant à <u> {selected_code_session} </u> de la formation <u> {selected_class_title} </u></div>
<div className="session_caract"> <b> Civilité </b><br />
@ -23744,9 +23713,9 @@ const DisplayPartnerPromotion = (props) => {
<Button variant="outlined"
onClick={(event) => {
if (String(selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
alert(" La promo est en cours de facturation ")
} else if (String(selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
alert(" La promo est déjà facturée ")
} else {
submenu_import_participant()
@ -23765,9 +23734,9 @@ const DisplayPartnerPromotion = (props) => {
<Button variant="outlined"
onClick={(event) => {
if (String(selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
alert(" La promo est en cours de facturation ")
} else if (String(selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
alert(" La promo est déjà facturée ")
} else {
submenu_add_one_participant()
@ -24037,7 +24006,7 @@ const DisplayPartnerPromotion = (props) => {
</div>}
{String(addOneParticipant) === "1" && <div className="div_row session_data" style={{ "border": "None", "backgroundColor": "#F0F0F0" }}>
<div className="titre1"> Ajout d'un nouveau participant à la session <u> {selected_code_session} </u> de la formation <u> {selected_class_title} </u></div>
<div className="titre1"> Ajout d'un nouveau participant à <u> {selected_code_session} </u> de la formation <u> {selected_class_title} </u></div>
<div className="session_caract"> <b> Civilité </b><br />
@ -24604,12 +24573,12 @@ const DisplayPartnerPromotion = (props) => {
{String(actionmass_insc_val) === "confirmation" &&
<nav>
Confirmer l'inscription à la session de la session de formation ?
Confirmer l'inscription à la formation ?
</nav>}
{String(actionmass_insc_val) === "annule inscription" &&
<nav>
Annuler l'inscription à la session de la session de formation ?
Annuler l'inscription à la formation ?
</nav>}
{String(actionmass_insc_val) === "facturer" &&
@ -24668,9 +24637,9 @@ const DisplayPartnerPromotion = (props) => {
onClick={(event) => {
if (String(selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
alert(" La promo est en cours de facturation ")
} else if (String(selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
alert(" La promo est déjà facturée ")
} else {
submenu_import_participant()

View File

@ -174,7 +174,7 @@ const DisplayPartnerSession = (props) => {
const [one_field_contenu_ftion, setone_field_contenu_ftion] = useState("");
const filters = [
{ value: 'code_session', label: 'Code Promotion' },
{ value: 'code_session', label: 'Code Session' },
{ value: 'class_title', label: 'Titre Formation' },
{ value: 'certif', label: 'Certification' }
]
@ -318,7 +318,7 @@ const DisplayPartnerSession = (props) => {
},
{ field: 'code_session', headerName: 'Code Promo', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'code_session', headerName: 'Code Session', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'session_title', headerName: 'Titre', hide: false, flex: 1, minWidth: 250, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
@ -2191,6 +2191,7 @@ const DisplayPartnerSession = (props) => {
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("type_session", "0");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
@ -2372,6 +2373,8 @@ const DisplayPartnerSession = (props) => {
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("archive", "0");
form.append("type_session", "0");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
@ -2664,6 +2667,7 @@ const DisplayPartnerSession = (props) => {
form.append(filtre1, filtre1_value);
form.append("archive", "0");
form.append("type_session", "0");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List_filter_like/";
@ -6418,7 +6422,7 @@ const DisplayPartnerSession = (props) => {
if (new_code_session.trim() == "") {
// alert(" Le Code Promoest obligatoire");
setdisplay_alert_mysy("1");
setalert_message("Le Code Promoest obligatoire");
setalert_message("Le Code Session est obligatoire");
setalert_type("error");
return;
}
@ -6572,6 +6576,8 @@ const DisplayPartnerSession = (props) => {
form.append("session_status", p_session_status);
form.append("session_etape", p_session_etape);
form.append("type_session", "0");
/*
var contenu_ftion = "";
@ -6653,12 +6659,6 @@ const DisplayPartnerSession = (props) => {
setalert_type("success");
window.scrollTo({
top: 0,
behavior: "smooth",
});
} else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
@ -6853,22 +6853,9 @@ const DisplayPartnerSession = (props) => {
form.append("attestation_certif", "");
form.append("type_session", "0");
/*
var contenu_ftion = "";
if (one_editorRef_contenu_ftion.current) {
contenu_ftion = one_editorRef_contenu_ftion.current.getContent();
if (parse(contenu_ftion.replace(/(<([^>]+)>)/ig, '')).length > one_editorRef_contenu_ftion_limite) {
// alert(" Champ 'Contenu de la formation', limite depassée !")
setdisplay_alert_mysy("1");
setalert_message("Champ 'Contenu de la formation', limite depassée !");
setalert_type("error");
return;
}
}
form.append("contenu_ftion", contenu_ftion);
*/
/*
Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire
*/
@ -12716,13 +12703,13 @@ const DisplayPartnerSession = (props) => {
]
const New_Price_by = [
{ "id": "persession", "label": "Par Promotion", "value": "persession" },
{ "id": "persession", "label": "Par Session", "value": "persession" },
{ "id": "perstagiaire", "label": "Par Stagiaire", "value": "perstagiaire" },
{ "id": "", "label": "", "value": "" },
]
const New_Option_Filter = [
{ "id": "code_session", "label": "Code Promotion", "value": "code_session" },
{ "id": "code_session", "label": "Code Session", "value": "code_session" },
{ "id": "class_external_code", "label": "Ref. Interne", "value": "class_external_code" },
{ "id": "class_title", "label": "Titre Formation", "value": "class_title" },
{ "id": "session_start_date", "label": "Date début session", "value": "session_start_date" },
@ -15227,7 +15214,7 @@ const DisplayPartnerSession = (props) => {
/>
</div>}
<div className="session_caract_Dialog" > Date Promotion<br />
<div className="session_caract_Dialog" > Date Session<br />
<div style={{ width: "45%", float: "left", textAlign: "left" }}>
<DatePicker
name="date_du"
@ -18783,7 +18770,7 @@ const DisplayPartnerSession = (props) => {
{/* FIN Dialog pour gerer les FACTURATION_FORMATION */}
<h3 style={{ fontFamily: 'DM Sans' }}> Les promotions </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Les sessions de formation </h3>
<div>
<div className="titre1"> Utilisez les filtres !</div>
@ -19785,7 +19772,7 @@ const DisplayPartnerSession = (props) => {
<TimelineHeaders>
<SidebarHeader>
{({ getRootProps }) => {
return <div {...getRootProps()}> Date/ <br /> Code Promo</div>
return <div {...getRootProps()}> Date/ <br /> Code Session</div>
}}
</SidebarHeader>
<DateHeader unit="month"
@ -20787,7 +20774,7 @@ const DisplayPartnerSession = (props) => {
<TimelineHeaders>
<SidebarHeader>
{({ getRootProps }) => {
return <div {...getRootProps()}> Date/ <br /> Code Promo</div>
return <div {...getRootProps()}> Date/ <br /> Code Session</div>
}}
</SidebarHeader>
<DateHeader unit="month"
@ -20936,7 +20923,7 @@ const DisplayPartnerSession = (props) => {
<Button variant="outlined" onClick={submenu_import_session} className="detail_class_submenu bton_import_excel"
id='menu_import_participant' name='menu_import_participant'>Importer des Promo Excel &nbsp;
id='menu_import_participant' name='menu_import_participant'>Importer des Sessions Excel &nbsp;
<img src={excel_icone} alt="ajout csv" className="icon_excel" />
</Button>
@ -20947,7 +20934,7 @@ const DisplayPartnerSession = (props) => {
}}
className="detail_class_submenu bton_add_session"
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Promo &nbsp;
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Session &nbsp;
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />
</Button>
@ -20998,9 +20985,9 @@ const DisplayPartnerSession = (props) => {
</div>}
{selected_code_session && String(selected_code_session).length > 0 && <div className="div_row">
<nav style={{ textAlign: 'center', padding: '10px', fontFamily: 'DM Sans' }}> Promotion <b>{info_affiche_code_session} </b> du &nbsp;
<b>{info_affiche_date_debut}</b> au <b> {info_affiche_date_fin}</b>
&nbsp; &nbsp; Pl. disponible(s) : <b> {info_affiche_place_disponible} </b> </nav>
<nav style={{ textAlign: 'center', padding: '10px', fontFamily: 'DM Sans' }}> Session <b>{info_affiche_code_session} </b> du &nbsp;
<b>{String(info_affiche_date_debut)}</b> au <b> {String(info_affiche_date_fin)}</b>
&nbsp; &nbsp; Pl. disponible(s) : <b> {String(info_affiche_place_disponible)} </b> </nav>
</div>}
<div>
@ -21061,7 +21048,7 @@ const DisplayPartnerSession = (props) => {
</a>
</div>
<div className="session_caract"><b> Code Promo </b><br />
<div className="session_caract"><b> Code Session </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -21079,7 +21066,7 @@ const DisplayPartnerSession = (props) => {
/>
</div>
<div className="session_caract"> Titre Promo<br />
<div className="session_caract"> Titre <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -22089,7 +22076,7 @@ const DisplayPartnerSession = (props) => {
</div>
<div className="session_caract"><b> Code Promotion</b><br />
<div className="session_caract"><b> Code Session</b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -22107,7 +22094,7 @@ const DisplayPartnerSession = (props) => {
/>
</div>
<div className="session_caract"> Titre Promo<br />
<div className="session_caract"> Titre <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -24799,7 +24786,7 @@ const DisplayPartnerSession = (props) => {
<div className="session_data" >
<div>
{String(participant_data_edit_mode) !== "1" && <div className="session_caract"> <b> Promotion </b><br />
{String(participant_data_edit_mode) !== "1" && <div className="session_caract"> <b> Session </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -24819,7 +24806,7 @@ const DisplayPartnerSession = (props) => {
</div>}
{String(participant_data_edit_mode) === "1" && <div className="session_caract"> Promotion <br />
{String(participant_data_edit_mode) === "1" && <div className="session_caract"> Session <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required

View File

@ -775,11 +775,11 @@ const DisplayPartnerUnite_Enseignement = (props) => {
if (local_ue.niveau_competence) {
setp_detail_tab_competence(local_ue.niveau_competence);
var tab_tmp = String(local_ue.niveau_competence).split(",");
// setVal(tab_tmp);
// setVal(tab_tmp);
} else {
setp_detail_tab_competence([]);
// setVal([]);
// setVal([]);
}
if (local_ue.list_competence_code) {
@ -790,7 +790,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
}
if (local_ue.tab_competence_JSON) {
if (local_ue.tab_competence_JSON) {
setVal(local_ue.tab_competence_JSON);
} else {
@ -1003,7 +1003,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
form.append("niveau_competence", tab_competence_id);
// console.log(" ### val = ", val);
// console.log(" ### val = ", val);
//console.log(" ### tab_competence_id = ", tab_competence_id);
@ -1166,6 +1166,8 @@ const DisplayPartnerUnite_Enseignement = (props) => {
setdisplay_ue("0");
setue_data_edit_mode("");
setadd_one_ue("1");
setVal([]);
if (document.getElementById('myRef')) {
var divh = document.getElementById('myRef').offsetTop;
@ -1295,6 +1297,11 @@ const DisplayPartnerUnite_Enseignement = (props) => {
setdisplay_ue("0");
setue_data_edit_mode("");
setadd_one_ue("");
setVal([]);
window.scrollTo({
top: 0,
behavior: "smooth",
});
}
const New_Option_Filter = [
@ -2617,7 +2624,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
onRowDoubleClick={(newSelectionModel) => {
// handleClick_edit_config_From_Line(newSelectionModel.row.id);
setVal([]);
setselected_id(newSelectionModel.row._id);
handleClick_edit_ue_From_Line(newSelectionModel.row.id);
setsession_file_name("");
@ -2878,7 +2885,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
/>
</div>}
</div>}
{ue_data_edit_mode && String(ue_data_edit_mode) === "1" && <div>
<div className="session_caract"> Compétences<br />
@ -2889,7 +2896,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
...fixedVal,
...newValue.filter((i) => fixedVal.indexOf(i) === -1),
]);
}}
value={val}
options={New_Getall_Partner_Competence_List_result}
@ -2902,7 +2909,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
/>
)}
/>
</div>
@ -2931,7 +2938,14 @@ const DisplayPartnerUnite_Enseignement = (props) => {
</div>}
{ue_data_edit_mode && String(ue_data_edit_mode) === "1" && New_Get_List_Regle_Calcul_Note_UE_result && New_Get_List_Regle_Calcul_Note_UE_result.length > 0 &&
<div className="session_caract"> Règle de calcul note <br />
<div className="session_caract"> Règle de calcul note &nbsp;
<Tooltip className="tooltip_css" id="detail_regle_calcul2" />
<a data-tooltip-id="detail_regle_calcul2" data-tooltip-html={New_Get_List_Regle_Calcul_Note_UE_result.filter((data) => (data)._id === String(p_detail_note_ue_calculation_rule_id))[0].calcul_rule}>
<FcInfo />
</a>
<br />
<Autocomplete
disablePortal
name="detail_ue_note_ue_calculation_rule_id"
@ -2957,7 +2971,15 @@ const DisplayPartnerUnite_Enseignement = (props) => {
{ue_data_edit_mode && String(ue_data_edit_mode) !== "1" && New_Get_List_Regle_Calcul_Note_UE_result && New_Get_List_Regle_Calcul_Note_UE_result.length > 0 &&
<div className="session_caract"> Règle de calcul note <br />
<div className="session_caract"> Règle de calcul note &nbsp;
<Tooltip className="tooltip_css" id="detail_regle_calcul" />
<a data-tooltip-id="detail_regle_calcul" data-tooltip-html={New_Get_List_Regle_Calcul_Note_UE_result.filter((data) => (data)._id === String(p_detail_note_ue_calculation_rule_id))[0].calcul_rule}>
<FcInfo />
</a>
<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -2968,8 +2990,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
InputLabelProps={{
shrink: true,
}}
//disabled={true}
disabled={true}
value={New_Get_List_Regle_Calcul_Note_UE_result.filter((data) => (data)._id === String(p_detail_note_ue_calculation_rule_id))[0].label}
@ -4053,7 +4074,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
</div>}
<div className="session_caract"> Compétence <br />
<div className="session_caract"> Compétence <br />
<Autocomplete
multiple
onChange={(event, newValue) => {
@ -4098,7 +4119,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
}
}}
renderInput={(params) => <TextField {...params} label="Formateur" />
renderInput={(params) => <TextField {...params} label="Formule de calcul" />
}
/>}

View File

@ -9288,8 +9288,6 @@ const Employes = (props) => {
{String(employee_data_edit_mode) === "1" && New_Get_List_RH_Profils_result && New_Get_List_RH_Profils_result.length > 0 &&
<div className="session_caract"> Profil <br />
<Autocomplete
disablePortal
name="detail_profil"

View File

@ -425,7 +425,7 @@ const Module_Selection_Evaluation_Apprenants = (props) => {
var line_json = line;
console.log(" line_json = ", line_json);
// console.log(" line_json = ", line_json);
//console.log(" line_json['_id'] = ", line_json['_id']);
tab_mongo_preins_ids.push(line_json._id)

View File

@ -23,7 +23,7 @@ import axios from "axios";
import Rating from '@mui/material/Rating';
import parse from 'html-react-parser'
import { CiLocationOn } from "react-icons/ci";
const New_C_Formation_2025 = (props) => {
const [userconnected, setuserconnected] = useState("0");
const [partnerconnected, setpartnerconnected] = useState("0");
@ -420,7 +420,7 @@ const New_C_Formation_2025 = (props) => {
{/*props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par : <br />
{String(props.formation.institut_formation)} </div>*/}
</div>}
<div className="block_main_contente">
<div className="block_top_content">
@ -472,473 +472,7 @@ const New_C_Formation_2025 = (props) => {
</div>
{/*
<div style={{ "width": "100%", marginLeft: '20px' }}>
{class_img_stored_in_bdd && String(class_img_stored_in_bdd).length > 50 && <div className="forma_img_gauche">
<img src={class_img_stored_in_bdd} alt="informatique" style={styles.image} />
</div>
}
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) !== "0" && String(ismetiermanaged) !== "1" &&
<div className="forma_img_gauche">
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("it") &&
String(isclassimage) === "False" && <img src={img_met_program} alt="informatique" style={styles.image} />}
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("graphisme") &&
String(isclassimage) === "False" && <img src={img_met_graphisme} alt="graphisme" style={styles.image} />}
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("management") &&
String(isclassimage) === "False" && <img src={img_met_management} alt="management" style={styles.image} />}
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("digital") &&
String(isclassimage) === "False" && <img src={img_met_digital} alt="digital" style={styles.image} />}
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("office") &&
String(isclassimage) === "False" && <img src={img_met_bureautic} alt="office" style={styles.image} />}
{!props.formation.img_url || String(props.formation.img_url).length <= 0 &&
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("rh") &&
String(isclassimage) === "False" && <img src={img_met_rh} alt="ressources humaines" style={styles.image} />}
{!props.formation.img_url || String(props.formation.img_url).length <= 0 &&
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("vente") &&
String(isclassimage) === "False" && <img src={img_met_vente} alt="vente" style={styles.image} />}
{!props.formation.img_url || String(props.formation.img_url).length <= 0 &&
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("dev_perso") &&
String(isclassimage) === "False" && <img src={img_met_dev_perso} alt="developpement personnel" style={styles.image} />}
{String(isclassimage) === "True" && <img src={userimgclassprofil} alt="developpement personnel" style={styles.image} />}
</div>
}
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) === "0" && String(userimgclassprofil).length > 100 && <div className="forma_img_gauche">
<img src={userimgclassprofil} alt="autre" style={styles.image} />
{props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par :<br /> {String(props.formation.institut_formation)} </div>}
</div>}
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) === "0" && String(userimgclassprofil).length <= 100 && <div className="forma_img_gauche">
<img src={img_met_autre} alt="autre" style={styles.image} />
{props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par :<br /> {String(props.formation.institut_formation)} </div>}
</div>}
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) === "1" && <div className="forma_img_gauche">
<img src={props.formation.img_url} alt="autre" style={styles.image} />
{props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par : <br /> {String(props.formation.institut_formation)} </div>}
</div>}
<div className="forma_rightbox"
onClick={(e) => {
e.preventDefault();
if (props.formation.url && props.formation.url.length > 5) {
window.open(
props.formation.url,
'_blank'
);
} else {
window.open(
"/Display-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}
}}>
<div className="p_forma">
<div className="div_row">
<div className="div_row_gauche" style={{ "marginTop": "5px" }}>
{props.formation.note && String(props.formation.note).length === 1 &&
parseInt(String(props.formation.note)) <= 5 &&
<Rating name="half-rating-read" defaultValue={props.formation.note} precision={0.5} readOnly />
}
</div>
<div className="div_row_droite div_row_droite_cpf">
<div className="block_cpf">
<div className="block_cpf_txt">
{props.formation.cpf && String(props.formation.cpf) === String("1") &&
<div>
OUI Éligible au CPF &nbsp;
</div>}
{props.formation.cpf && String(props.formation.cpf) !== String("1") &&
<div>
NON Éligible au CPF &nbsp;
</div>}
{!props.formation.cpf &&
<div>
NON Éligible au CPF &nbsp;
</div>}
</div>
</div>
</div>
</div>
<div className="div_row row_formation_title">
<p className="p_class training_title">
<b>
{String(parse(String(props.formation.title).replace(/(<([^>]+)>)/ig, ''))).substring(0, 100)}
</b>
</p>
</div>
<div className="div_row">
{String(props.formation.price).length == 9 &&
<div className="training_price" > <i>Prix : Non communiqué</i> &nbsp;
</div>
}
{String(props.formation.price).length != 9 && String(props.formation.price) === String("0") &&
<div className="training_price">Gratuit &nbsp;
</div>
}
{String(props.formation.price).length != 9 && String(props.formation.price) !== String("0") && (!props.formation.business_prices ||
Object.keys(props.formation.business_prices).length <= 0) &&
<div className="training_price">{props.formation.price} HT&nbsp;
</div>
}
{String(props.formation.price).length != 9 && String(props.formation.price) !== String("0") &&
props.formation.business_prices && Object.keys(props.formation.business_prices).length > 0 &&
<div className="training_price">
<nav className="discounted_price">{String(props.formation.business_prices[0].discounted_price)} HT</nav>
<nav className="training_price_barre">
{props.formation.price} HT&nbsp;
</nav>
<nav className="discount_block"> (- {String(props.formation.business_prices[0].discount)} % )
</nav>
</div>
}
</div>
<div className="div_row row_formation_desc">
{parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))}
</div>
{GetCurrentClass_trainingsession_cities_result && GetCurrentClass_trainingsession_cities_result.length > 0 &&
<nav style={{ "width": "100%", "float": "left", "textAlign": "left", "color": "#619E31" }}>
<nav style={{ "width": "auto", "float": "left" }}> <CiLocationOn className="icone_location" />&nbsp; </nav>
{GetCurrentClass_trainingsession_cities_result && GetCurrentClass_trainingsession_cities_result.sort().slice(0, 5).map((formation_ville) => (
<nav style={{ "width": "auto", "float": "left" }}>
{formation_ville &&
<b> {formation_ville.replaceAll('"', '').substring(0, 20).toLocaleLowerCase().charAt(0).toUpperCase() +
formation_ville.replaceAll('"', '').substring(0, 20).toLocaleLowerCase().slice(1)} &nbsp;&nbsp; </b>
}
</nav>
))}
</nav>
}
{!GetCurrentClass_result || GetCurrentClass_result.length <= 0 &&
<nav style={{ "width": "100%", "float": "left", "textAlign": "left", "fontWeight": "700" }}><CiLocationOn className="icone_location" />&nbsp; A venir </nav>
}
</div>
</div>
<div className="div_row row_formation_crit">
<hr style={{ "width": "90%", "marginLeft": "auto", "marginRight": "auto", "marginBottom": "2px", "marginTop": "2px" }} />
<div className="div_row_gauche div_row_gauche_critere" >
<div className="div_row_critere" style={{ "marginTop": "0.5rem", "marginBottom": "0.3rem" }}>
{!props.formation.extented_search &&
<div className="div_row_gauche">
{props.formation.duration_unit &&
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">Durée
</div>
{String(props.formation.duration_unit) === "heure" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} hr(s) &nbsp;
</div>}
{String(props.formation.duration_unit) === "heures" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} hr(s) &nbsp;
</div>}
{String(props.formation.duration_unit) === "jour" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} jr(s) &nbsp;
</div>}
{String(props.formation.duration_unit) === "mois" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} mois(s)
</div>}
{String(props.formation.duration_unit) === "semaine" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} Sem (s)
</div>}
{String(props.formation.duration_unit) === "user_rythme" &&
<div className="criteres ftion_tab_droite">
A votre rythme
</div>}
</div>
}
{!props.formation.duration_unit &&
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">Durée
</div>
{props.formation.duration && <div className="criteres ftion_tab_droite">
{props.formation.duration} jr(s) &nbsp;
</div>}
{!props.formation.duration && <div className="criteres ftion_tab_droite">
<i> En traitement &nbsp; </i>
</div>}
</div>
}
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">
Certification
</div>
<div className="criteres ftion_tab_droite">
{props.formation.certif && String(props.formation.certif) === String("1") &&
<div>
Oui &nbsp;
</div>}
{props.formation.certif && String(props.formation.certif) !== String("1") &&
<div>
Non &nbsp;
</div>}
{!props.formation.certif &&
<div>
NC &nbsp;
</div>}
</div>
</div>
<div className="media_sociaux" style={{ 'float': "left", marginTop: "0.2rem", }}>
<FacebookShareButton
url={"https://www.mysy-training.com/Display-Detail-formation/" + props.formation.internal_url}
quote={props.formation.title + " -- " + props.formation.description}
hashtag={"ySyTraining"}
>
<SocialIcon network="facebook" style={{ height: 20, width: 20 }} />
</FacebookShareButton>
&nbsp;
<TwitterShareButton
url={"https://www.mysy-training.com/Display-Detail-formation/" + props.formation.internal_url}
hashtag={"#MySy-Formation"}
>
<SocialIcon network="twitter" style={{ height: 20, width: 20 }} />
</TwitterShareButton>
&nbsp;
<LinkedinShareButton
url={"https://www.mysy-training.com/Display-Detail-formation/" + props.formation.internal_url}
title={" Une nouvelle formation : " + props.formation.title}
summary={props.formation.title + " -- " + props.formation.description}
source={"https://www.mysy-training.com/"}
>
<SocialIcon network="linkedin" style={{ height: 20, width: 20 }} />
</LinkedinShareButton>
</div>
</div>}
<div className="div_row_droite" style={{ textAlign: "center" }}>
{String(props.formation.coeur) === String("1") && <div>
<img class="imgcoeur" src={coeurimg} alt="coup de coeur" />
</div>}
<div style={{ "width": "100%", "float": "right" }}>
<div className="criteres ftion_tab_gauche">
Sur site
</div>
{props.formation.presentiel && props.formation.presentiel.presentiel &&
String(props.formation.presentiel.presentiel) === String("1") && <div className="criteres ftion_tab_droite">
Oui
</div>}
{props.formation.presentiel && props.formation.presentiel.presentiel &&
String(props.formation.presentiel.presentiel) !== String("1") && <div className="criteres ftion_tab_droite">
Non
</div>}
{!props.formation.presentiel || !props.formation.presentiel.presentiel &&
<div className="criteres ftion_tab_droite">
NC
</div>}
</div>
<div style={{ "width": "100%", "float": "right" }}>
<div className="criteres ftion_tab_gauche">
A distance
</div>
{props.formation.presentiel && props.formation.presentiel.distantiel &&
String(props.formation.presentiel.distantiel) === String("1") && <div className="criteres ftion_tab_droite">
Oui
</div>}
{props.formation.presentiel && props.formation.presentiel.distantiel &&
String(props.formation.presentiel.distantiel) !== String("1") && <div className="criteres ftion_tab_droite">
Non
</div>}
{!props.formation.presentiel || !props.formation.presentiel.distantiel &&
<div className="criteres ftion_tab_droite">
NC
</div>}
</div>
<div style={{ "width": "100%", "float": "right" }}>
<div className="criteres ftion_tab_gauche">
Support
</div>
{props.formation.support &&
<div className="criteres ftion_tab_droite">
{props.formation.support}
</div>}
{!props.formation.support &&
<div className="criteres ftion_tab_droite">
NC
</div>}
</div>
</div>
</div>
</div>
<div className="div_row_droite div_row_droite_critere" >
{!props.formation.extented_search && props.formation.coeur != "1" &&
<div style={{ 'float': "right", "width": "100%", textAlign: "right", marginTop: "0rem", }}>
<Button className="bton_se_renseinger"
onClick={(e) => {
e.preventDefault();
if (props.formation.url && props.formation.url.length > 5) {
window.open(
props.formation.url,
'_blank'
);
} else {
window.open(
"/Display-Detail-formation/" + props.formation.internal_url + "/Information",
'_blank'
);
}
}}
>Se renseigner </Button>
<Button className="bton_voir_detail"
onClick={(e) => {
e.preventDefault();
//test(props.formation.external_code);
if (props.formation.url && props.formation.url.length > 5) {
window.open(
props.formation.url,
'_blank'
);
} else {
window.open(
"/Display-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}
}}
>Voir details</Button>
{GetCurrentClass_result && GetCurrentClass_result.length > 0 &&
<Button variant="contained" className="bton_sinscrire"
onClick={(e) => {
e.preventDefault();
window.open(
"/Display-Detail-formation/" + props.formation.internal_url + "/Inscription",
'_blank'
);
}}
>S'incrire</Button>
}
</div>}
</div>
</div>
</div>
*/}
</div>
)

View File

@ -2353,8 +2353,8 @@ const Notes_Evaluation = (props) => {
setLoading(true);
axios.post(myurl, form).then(res => {
console.log(" In Record_Evaluation_Participants_Notes res.data.status = " + res.data.status);
console.log(" In Record_Evaluation_Participants_Notes res.data.message r_class = " + res.data.message);
// console.log(" In Record_Evaluation_Participants_Notes res.data.status = " + res.data.status);
// console.log(" In Record_Evaluation_Participants_Notes res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
@ -3959,7 +3959,7 @@ const Notes_Evaluation = (props) => {
</Dialog>
{/*** Fin ajout ressource */}
<h3 style={{ fontFamily: 'DM Sans' }}> Les Evaluations </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Notes & évaluations </h3>
<div className="div_row">
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
@ -4344,17 +4344,13 @@ const Notes_Evaluation = (props) => {
onRowDoubleClick={(newSelectionModel) => {
Getall_Evaluation_Participant_List(newSelectionModel.row._id);
setselected_id(newSelectionModel.row._id);
setgridline_id(newSelectionModel.row.id);
Getall_Evaluation_Participant_List(newSelectionModel.row._id);
handleClick_edit_evaluation_From_Line(newSelectionModel.row.id);
setselectionModel_evalutions_participant([]);
settab_convention_pieces_jointes_result([]);
setselected_id(newSelectionModel.row._id);
setgridline_id(newSelectionModel.row.id);
}}
rowsPerPageOptions={[10]}
@ -4427,7 +4423,7 @@ const Notes_Evaluation = (props) => {
{selected_id && String(selected_id).length > 5 && p_detail_type_eval_id && New_Getall_Partner_Type_Evalution_List_result.length > 0 &&
<div className="div_row">
<nav style={{ textAlign: 'center', padding: '10px', fontFamily: 'DM Sans' }}> Evaluation <b>{New_Getall_Partner_Type_Evalution_List_result.filter((data) => (data)._id === String(p_detail_type_eval_id))[0].label} &nbsp; {p_detail_code} </b> du &nbsp;
<b>{p_detail_eval_date_heure_debut}</b> au <b> {p_detail_eval_date_heure_fin}</b>
<b>{String(p_detail_eval_date_heure_debut)}</b> au <b> {String(p_detail_eval_date_heure_fin)}</b>
</nav>
</div>}
@ -5234,7 +5230,7 @@ const Notes_Evaluation = (props) => {
</div>
<div className="session_caract"> <b> titre </b> <br />
<div className="session_caract"> <b> Titre </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required

View File

@ -1465,7 +1465,7 @@ const New_C_Detail_Formation_2025 = (props) => {
<nav className="training_price_barre" style={{ with: '50%', float: 'left', fontSize: '14px' }}> {String(DetailTraining["price"])} HT </nav>
<nav className="discount_block" style={{ with: '50%', float: 'left', fontSize: '14px' }}> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
</div>}
</div>}
</div>}
</div>

View File

@ -1,5 +1,12 @@
.addclassmanual {
.tooltip_css {
background: #81BC3A;
z-index: 9999;
font-family: "DM Sans", "sans-serif";
font-size: "10px" !important;
}
.block_archive {
background-color: #774a10;
width: calc(100% - 20px);
@ -15,7 +22,7 @@
font-weight: 600;
font-size: 14px;
}
.loader-container {
width: 100%;
height: 100vh;

View File

@ -5,7 +5,7 @@
z-index: 9999;
}
.css-1bp1ao6 {
height: 3.5rem !important;
}