recette2
cherif 2024-07-05 15:06:18 +02:00
parent d6850449bd
commit 672b8a964e
6 changed files with 1242 additions and 690 deletions

View File

@ -2970,6 +2970,10 @@ const DisplayPartnerSession = (props) => {
return; return;
} }
// Gestion du statut d'inscription
if( String(myinscript_status) === ""){
alert(" Vous devez choisir un statut d'inscription ");
}
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA"); //form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart'); const stored_cookie = getCookie('tokenmysypart');
@ -3123,7 +3127,7 @@ const DisplayPartnerSession = (props) => {
const New_status_inscription_add = [ const New_status_inscription_add = [
{ "id": "0", "label": "PréInscription", "value": "0" }, { "id": "0", "label": "PréInscription", "value": "0" },
{ "id": "1", "label": "Inscription", "value": "1" }, // { "id": "1", "label": "Inscription", "value": "1" },
{ "id": "2", "label": "En Cours", "value": "2" }, { "id": "2", "label": "En Cours", "value": "2" },
] ]
@ -3149,7 +3153,7 @@ const DisplayPartnerSession = (props) => {
{ "id": "4", "label": "Rech. Emploi", "value": "4" }, { "id": "4", "label": "Rech. Emploi", "value": "4" },
] ]
const [myinscript_status, setmyinscript_status] = useState(""); const [myinscript_status, setmyinscript_status] = useState("0");
@ -9438,6 +9442,8 @@ const DisplayPartnerSession = (props) => {
setLoading(false); setLoading(false);
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
Dialog_COMMENT_EMARGEMENTE_handleClose_buton();
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status); //console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message); //console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
setUpdate_Comment_Given_Emargement_api("true"); setUpdate_Comment_Given_Emargement_api("true");
@ -17095,7 +17101,7 @@ const DisplayPartnerSession = (props) => {
/> />
</div> </div>
<div className="session_caract"> Statut Inscription <br /> <div className="session_caract"> <b> Statut Inscription </b> <br />
<Autocomplete <Autocomplete
disablePortal disablePortal
@ -17107,6 +17113,9 @@ const DisplayPartnerSession = (props) => {
onChange={(event, value) => { onChange={(event, value) => {
if (value && value.value) { if (value && value.value) {
setmyinscript_status(value.value); setmyinscript_status(value.value);
} else {
setmyinscript_status("");
alert(" Vous devez choisir un statut d'inscription")
} }
}} }}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option" renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
@ -17489,14 +17498,40 @@ const DisplayPartnerSession = (props) => {
{String(addOneParticipant) !== "1" && selected_code_session && selected_internal_url && {String(addOneParticipant) !== "1" && selected_code_session && selected_internal_url &&
<div id='ajout_participant' style={{ "textAlign": "left", "float": "left", "width": "100%" }}> <div id='ajout_participant' style={{ "textAlign": "left", "float": "left", "width": "100%" }}>
<Button variant="outlined" onClick={submenu_import_participant} className="detail_class_submenu bton_import_excel" style={{ <Button variant="outlined"
onClick={(event) => {
if (String(selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
} else if (String(selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
} else {
submenu_import_participant()
}
}}
className="detail_class_submenu bton_import_excel" style={{
"background": "#c8cfd5", "background": "#c8cfd5",
"color": "black", "width": "auto" "color": "black", "width": "auto"
}} }}
id='menu_import_participant' name='menu_import_participant'>Importer des participants excel &nbsp; id='menu_import_participant' name='menu_import_participant'>Importer des participants excel &nbsp;
<img src={excel_icone} alt="ajout csv" className="icon_excel" /> <img src={excel_icone} alt="ajout csv" className="icon_excel" />
</Button> </Button>
<Button variant="outlined" onClick={submenu_add_one_participant}
<Button variant="outlined"
onClick={(event) => {
if (String(selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
} else if (String(selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
} else {
submenu_add_one_participant()
}
}}
className="detail_class_submenu bton_add_session" className="detail_class_submenu bton_add_session"
id='menu_one_participant' name='menu_one_participant'>Ajout 1 participant &nbsp; id='menu_one_participant' name='menu_one_participant'>Ajout 1 participant &nbsp;
<img src={participants} alt="ajout un participant" className="icon_plus" /> <img src={participants} alt="ajout un participant" className="icon_plus" />
@ -17651,7 +17686,7 @@ const DisplayPartnerSession = (props) => {
/> />
</div> </div>
<div className="session_caract"> Statut Inscription <br /> <div className="session_caract"> <b> Statut Inscription </b> <br />
<TextField <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required required
@ -17869,7 +17904,7 @@ const DisplayPartnerSession = (props) => {
/> />
</div> </div>
<div className="session_caract"> Statut Inscription <br /> <div className="session_caract"> <b> Statut Inscription </b> <br />
<Autocomplete <Autocomplete
disablePortal disablePortal
name="one_status_part" name="one_status_part"
@ -17883,6 +17918,9 @@ const DisplayPartnerSession = (props) => {
} else { } else {
setmyinscript_status(""); setmyinscript_status("");
alert(" Vous devez choisir un statut d'inscription")
} }
}} }}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option" renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
@ -18287,14 +18325,43 @@ const DisplayPartnerSession = (props) => {
{String(addOneParticipant) !== "1" && selected_code_session && selected_internal_url && <div id='ajout_participant' style={{ "textAlign": "left", "float": "left", "width": "100%" }}> {String(addOneParticipant) !== "1" && selected_code_session && selected_internal_url && <div id='ajout_participant' style={{ "textAlign": "left", "float": "left", "width": "100%" }}>
<Button variant="outlined" onClick={submenu_import_participant} className="detail_class_submenu bton_import_excel" style={{ <Button variant="outlined"
onClick={(event) => {
if (String(selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
} else if (String(selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
} else {
submenu_import_participant()
}
}}
className="detail_class_submenu bton_import_excel" style={{
"background": "#c8cfd5", "background": "#c8cfd5",
"color": "black", "width": "auto" "color": "black", "width": "auto"
}} }}
id='menu_import_participant' name='menu_import_participant'>Importer des participants excel &nbsp; id='menu_import_participant' name='menu_import_participant'>Importer des participants excel &nbsp;
<img src={excel_icone} alt="ajout csv" className="icon_excel" /> <img src={excel_icone} alt="ajout csv" className="icon_excel" />
</Button> </Button>
<Button variant="outlined" onClick={submenu_add_one_participant} <Button variant="outlined"
onClick={(event) => {
if (String(selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
} else if (String(selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
} else {
submenu_add_one_participant()
}
}}
className="detail_class_submenu bton_add_session" className="detail_class_submenu bton_add_session"
id='menu_one_participant' name='menu_one_participant'>Ajout 1 participant &nbsp; id='menu_one_participant' name='menu_one_participant'>Ajout 1 participant &nbsp;
<img src={participants} alt="ajout un participant" className="icon_plus" /> <img src={participants} alt="ajout un participant" className="icon_plus" />
@ -19526,6 +19593,7 @@ const DisplayPartnerSession = (props) => {
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}> <div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
{String(selected_session_invoiced_statut) !== "1" && String(selected_session_invoiced_statut) !== "2" &&
<Popup <Popup
trigger={ trigger={
<Button className="bton_emarge">Initialiser la liste</Button> <Button className="bton_emarge">Initialiser la liste</Button>
@ -19574,7 +19642,7 @@ const DisplayPartnerSession = (props) => {
</div> </div>
</div> </div>
)} )}
</Popup> </Popup>}
<Button className="bton_emarge" onClick={(event) => { <Button className="bton_emarge" onClick={(event) => {
@ -20268,7 +20336,7 @@ const DisplayPartnerSession = (props) => {
<Module_Session_Planification conntected_employee_id={props.conntected_employee_id} related_collection={"session_formation"} <Module_Session_Planification conntected_employee_id={props.conntected_employee_id} related_collection={"session_formation"}
related_collection_recid={selected_session_id} SessionstartDate={new Date(moment(SessionstartDate, "DD/MM/YYYY"))} related_collection_recid={selected_session_id} SessionstartDate={new Date(moment(SessionstartDate, "DD/MM/YYYY"))}
SessionendDate={new Date(moment(SessionendDate, "DD/MM/YYYY"))} /> SessionendDate={new Date(moment(SessionendDate, "DD/MM/YYYY"))} selected_session_invoiced_statut={selected_session_invoiced_statut} />
</div>} </div>}
@ -20279,7 +20347,9 @@ const DisplayPartnerSession = (props) => {
<Module_Session_Evaluation conntected_employee_id={props.conntected_employee_id} related_collection={"session_formation"} <Module_Session_Evaluation conntected_employee_id={props.conntected_employee_id} related_collection={"session_formation"}
related_collection_recid={selected_session_id} SessionstartDate={new Date(moment(SessionstartDate, "DD/MM/YYYY"))} related_collection_recid={selected_session_id} SessionstartDate={new Date(moment(SessionstartDate, "DD/MM/YYYY"))}
SessionendDate={new Date(moment(SessionendDate, "DD/MM/YYYY"))} session_formateur_id={p_formateur_id} session_class_id={p_detail_session_class_id} /> SessionendDate={new Date(moment(SessionendDate, "DD/MM/YYYY"))} session_formateur_id={p_formateur_id}
session_class_id={p_detail_session_class_id}
selected_session_invoiced_statut={selected_session_invoiced_statut} />
</div>} </div>}

View File

@ -432,6 +432,50 @@ const Employes = (props) => {
] ]
const columns_list_evaluation_enseignant = [
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true },
{ field: 'form_code', headerName: 'Form. Code', hide: true, minwidth: 200, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email', headerName: 'email', minwidth: 300, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'prenom', headerName: 'prenom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'status', headerName: 'Statut', width: 100, editable: false, flex: true,
valueFormatter: (params) => {
if (String(params.value) === "0")
return "Init.";
else if (String(params.value) === "1")
return "Env.";
else if (String(params.value) === "2")
return "Rép.";
else
return " ?";
},
},
{
field: 'date_envoie', headerName: 'Date Envoi', width: 150, editable: false,
valueFormatter: (params) => {
if (params.value)
return String(params.value).substring(0, 16)
else
return ""
},
},
{
field: 'date_reponse', headerName: 'Date Réponse', width: 150, editable: false,
valueFormatter: (params) => {
if (params.value)
return String(params.value).substring(0, 16)
else
return ""
},
},
]
const [tabledata, settabledata] = useState([]); const [tabledata, settabledata] = useState([]);
const [rows_acces_right_v2, setrows_acces_right_v2] = useState([]); const [rows_acces_right_v2, setrows_acces_right_v2] = useState([]);
@ -793,7 +837,52 @@ const Employes = (props) => {
} }
const [selectionModel_evaluation_formateur, setselectionModel_evaluation_formateur] = React.useState([]);
const [rowss_evaluation_formateur, setRows_evaluation_formateur] = useState([]);
const [Getall_Survey_formateur_evaluation_By_Session_api, setGetall_Survey_formateur_evaluation_By_Session_api] = useState();
const [Getall_Survey_formateur_evaluation_By_Session_message, setGetall_Survey_formateur_evaluation_By_Session_message] = useState();
const [Getall_Survey_formateur_evaluation_By_Session_result, setGetall_Survey_formateur_evaluation_By_Session_result] = useState([]);
function Getall_Survey_formateur_evaluation_By_Session(event) {
setselectionModel_evaluation_formateur([])
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("related_collection", "ressource_humaine");
form.append("related_collection_id", selected_id);
form.append("formulaire_type", "human_eval");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Survey_with_filter/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
// console.log(" In Getall_Survey_formateur_evaluation_By_Session res.data.status = " + res.data.status);
//console.log(" In Getall_Survey_formateur_evaluation_By_Session res.data.message r_class = " + res.data.message);
setGetall_Survey_formateur_evaluation_By_Session_api("true");
setGetall_Survey_formateur_evaluation_By_Session_result(res.data.message);
setRows_evaluation_formateur(res.data.message);
}
else {
setGetall_Survey_formateur_evaluation_By_Session_api("false");
setGetall_Survey_formateur_evaluation_By_Session_message(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Getall_Survey_formateur_evaluation_By_Session = ', error);
setGetall_Survey_formateur_evaluation_By_Session_api("false");
//setmyApimyApiMessage("")
})
}
useEffect(() => { useEffect(() => {
Getall_Training_Employee_No_Filter(); Getall_Training_Employee_No_Filter();
@ -804,6 +893,8 @@ const Employes = (props) => {
Get_Partner_Object_Specific_Fields("ressource_humaine"); Get_Partner_Object_Specific_Fields("ressource_humaine");
Getall_Survey_formateur_evaluation_By_Session();
window.scrollTo({ window.scrollTo({
top: 0, top: 0,
behavior: "smooth", behavior: "smooth",
@ -3003,6 +3094,11 @@ const Employes = (props) => {
document.getElementById("piece_jointe").style.color = "black"; document.getElementById("piece_jointe").style.color = "black";
} }
if (document.getElementById("evaluation")) {
document.getElementById("evaluation").style.backgroundColor = "#d8edfc";
document.getElementById("evaluation").style.color = "black";
}
//console.log(" ### employee_data_edit_mode = ", employee_data_edit_mode); //console.log(" ### employee_data_edit_mode = ", employee_data_edit_mode);
if (String(employee_data_edit_mode) !== "1") if (String(employee_data_edit_mode) !== "1")
disable_Employee_DetailFields(); disable_Employee_DetailFields();
@ -3055,6 +3151,11 @@ const Employes = (props) => {
document.getElementById("piece_jointe").style.backgroundColor = "#d8edfc"; document.getElementById("piece_jointe").style.backgroundColor = "#d8edfc";
document.getElementById("piece_jointe").style.color = "black"; document.getElementById("piece_jointe").style.color = "black";
} }
if (document.getElementById("evaluation")) {
document.getElementById("evaluation").style.backgroundColor = "#d8edfc";
document.getElementById("evaluation").style.color = "black";
}
} }
async function submenu_contrat() { async function submenu_contrat() {
@ -3088,6 +3189,55 @@ const Employes = (props) => {
} }
if (document.getElementById("piece_jointe")) {
document.getElementById("piece_jointe").style.backgroundColor = "#d8edfc";
document.getElementById("piece_jointe").style.color = "black";
}
if (document.getElementById("evaluation")) {
document.getElementById("evaluation").style.backgroundColor = "#d8edfc";
document.getElementById("evaluation").style.color = "black";
}
}
async function submenu_evaluation() {
setsubmenu("evaluation");
await sleep(5);
if (document.getElementById("evaluation")) {
document.getElementById("evaluation").style.backgroundColor = "#104277";
document.getElementById("evaluation").style.color = "white";
}
if (document.getElementById("contrat")) {
document.getElementById("contrat").style.backgroundColor = "#d8edfc";
document.getElementById("contrat").style.color = "black";
}
if (document.getElementById("affectation")) {
document.getElementById("affectation").style.backgroundColor = "#d8edfc";
document.getElementById("affectation").style.color = "black";
}
if (document.getElementById("detail_employe")) {
document.getElementById("detail_employe").style.backgroundColor = "#d8edfc";
document.getElementById("detail_employe").style.color = "black";
}
if (document.getElementById("droit_acces")) {
document.getElementById("droit_acces").style.backgroundColor = "#d8edfc";
document.getElementById("droit_acces").style.color = "black";
}
if (document.getElementById("competence")) {
document.getElementById("competence").style.backgroundColor = "#d8edfc";
document.getElementById("competence").style.color = "black";
}
if (document.getElementById("piece_jointe")) { if (document.getElementById("piece_jointe")) {
document.getElementById("piece_jointe").style.backgroundColor = "#d8edfc"; document.getElementById("piece_jointe").style.backgroundColor = "#d8edfc";
document.getElementById("piece_jointe").style.color = "black"; document.getElementById("piece_jointe").style.color = "black";
@ -3134,6 +3284,11 @@ const Employes = (props) => {
document.getElementById("piece_jointe").style.color = "black"; document.getElementById("piece_jointe").style.color = "black";
} }
if (document.getElementById("evaluation")) {
document.getElementById("evaluation").style.backgroundColor = "#d8edfc";
document.getElementById("evaluation").style.color = "black";
}
setSelectionModel_affectations([]); setSelectionModel_affectations([]);
setdisplay_affectation("0"); setdisplay_affectation("0");
setAdd_new_affectation(""); setAdd_new_affectation("");
@ -3216,6 +3371,11 @@ const Employes = (props) => {
document.getElementById("droit_acces").style.color = "black"; document.getElementById("droit_acces").style.color = "black";
} }
if (document.getElementById("evaluation")) {
document.getElementById("evaluation").style.backgroundColor = "#d8edfc";
document.getElementById("evaluation").style.color = "black";
}
} }
@ -3256,6 +3416,12 @@ const Employes = (props) => {
document.getElementById("affectation").style.backgroundColor = "#d8edfc"; document.getElementById("affectation").style.backgroundColor = "#d8edfc";
document.getElementById("affectation").style.color = "black"; document.getElementById("affectation").style.color = "black";
} }
if (document.getElementById("evaluation")) {
document.getElementById("evaluation").style.backgroundColor = "#d8edfc";
document.getElementById("evaluation").style.color = "black";
}
setSelectionModel_affectations([]); setSelectionModel_affectations([]);
setdisplay_affectation("0"); setdisplay_affectation("0");
setAdd_new_affectation(""); setAdd_new_affectation("");
@ -6629,6 +6795,7 @@ const Employes = (props) => {
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button> <Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button> <Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='evaluation' name='evaluation'>Evaluation </Button>
</div> </div>
@ -7782,7 +7949,7 @@ const Employes = (props) => {
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button> <Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button> <Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='evaluation' name='evaluation'>Evaluation </Button>
</div> </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Ajouter un Employé </nav> <nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Ajouter un Employé </nav>
@ -8300,6 +8467,7 @@ const Employes = (props) => {
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button> <Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button> <Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='evaluation' name='evaluation'>Evaluation </Button>
</div> </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Liste Affectations </nav> <nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Liste Affectations </nav>
<div className="session_data"> <div className="session_data">
@ -8864,6 +9032,7 @@ const Employes = (props) => {
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button> <Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button> <Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='evaluation' name='evaluation'>Evaluation </Button>
</div> </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Droits d'accès système </nav> <nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Droits d'accès système </nav>
@ -9111,6 +9280,7 @@ const Employes = (props) => {
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button> <Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button> <Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='evaluation' name='evaluation'>Evaluation </Button>
</div> </div>
&nbsp; &nbsp;
<div style={{ height: 550, width: '100%', paddingRight: '1px', "marginLeft": "10px", "marginRight": "10px", }}> <div style={{ height: 550, width: '100%', paddingRight: '1px', "marginLeft": "10px", "marginRight": "10px", }}>
@ -9220,6 +9390,7 @@ const Employes = (props) => {
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button> <Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button> <Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='evaluation' name='evaluation'>Evaluation </Button>
</div> </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les pièces jointes </nav> <nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les pièces jointes </nav>
@ -9374,6 +9545,7 @@ const Employes = (props) => {
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button> <Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button> <Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='evaluation' name='evaluation'>Evaluation </Button>
</div> </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les Compétences </nav> <nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les Compétences </nav>
<div className="session_data" style={{ "minHeight": '15rem', "paddingLeft": "10px", "paddingRight": "10px" }}> <div className="session_data" style={{ "minHeight": '15rem', "paddingLeft": "10px", "paddingRight": "10px" }}>
@ -9443,6 +9615,152 @@ const Employes = (props) => {
</div>} </div>}
{String(submenu) === "evaluation" && <div className="div_row" style={{ paddingRight: '10px' }}>
<div className="div_row">
<Button variant="outlined" onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_competence} className="detail_class_submenu" id='competence' name='contrat'>Compétences </Button>
<Button variant="outlined" onClick={submenu_piece_jointe} className="detail_class_submenu" id='piece_jointe' name='contrat'>Pièces Jointes </Button>
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_contrat} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='evaluation' name='evaluation'>Evaluation </Button>
</div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les evaluations </nav>
<div className="session_data" style={{ "minHeight": '15rem', "paddingLeft": "10px", "paddingRight": "10px" }}>
<div className="titre1"> Evaluation par les apprenants </div>
Evaluation <br />
<div style={{ height: "650px", width: '100%', padding: "10px" }} className="session_data">
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
[`& .${gridClasses.cell}`]: {
py: 1,
},
'& .line--positionnement_envoye': {
backgroundColor: '#F9E79F',
color: 'black',
},
'& .line--positionnement_repondu': {
backgroundColor: '#ABEBC6',
color: 'black',
fontWeight: '600',
},
}}
>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel_evaluation) => {
setselectionModel_evaluation_formateur(newSelectionModel_evaluation);
//console.log("ch selected--" + newSelectionModel_evaluation);
}}
selectionModel={selectionModel_evaluation_formateur}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={rowss_evaluation_formateur.map((item, index) => (
{
id: index,
_id: JSON.parse(item)._id,
email: JSON.parse(item).email,
nom: JSON.parse(item).nom,
prenom: JSON.parse(item).prenom,
status: JSON.parse(item).statut,
form_code: JSON.parse(item).formulaire.code,
date_envoie: JSON.parse(item).date_envoi,
date_reponse: JSON.parse(item).date_reponse,
}
))}
columns={columns_list_evaluation_enseignant}
pageSize={10}
className="datagridclass"
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
getRowClassName={(params) => {
if (String(params.row.status) === "1") {
return 'line--positionnement_envoye';
}
if (String(params.row.status) === "2") {
return 'line--positionnement_repondu';
}
// Pour la gestion de la couleur de zone double cliquée
if (parseInt(String(params.row.id)) % 2 === 0) {
return 'line--statut--pair';
}
else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair';
}
}}
getEstimatedRowHeight={() => 200}
getRowHeight={() => "auto"}
sx={{
"& .MuiDataGrid-cellContent": {
minHeight: 50,
},
[`& .${gridClasses.cell}`]: {
py: 1,
},
}}
/>
</Box>
<br />
</div>
</div>
<div className="div_row" style={{ "border": "None" }}>
<div className="session_data" style={{ "minHeight": '15rem', "paddingLeft": "10px", "paddingRight": "10px" }}>
<div className="titre1"> Autres évaluations </div>
</div>
</div>
</div>}
</div > </div >

View File

@ -514,7 +514,7 @@ const Module_Session_Evaluation = (props) => {
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
// console.log(" In Getall_Survey_hot_evaluation_By_Session res.data.status = " + res.data.status); // console.log(" In Getall_Survey_hot_evaluation_By_Session res.data.status = " + res.data.status);
console.log(" In Getall_Survey_hot_evaluation_By_Session res.data.message r_class = " + res.data.message); //console.log(" In Getall_Survey_hot_evaluation_By_Session res.data.message r_class = " + res.data.message);
setGetall_Survey_hot_evaluation_By_Session_api("true"); setGetall_Survey_hot_evaluation_By_Session_api("true");
setGetall_Survey_hot_evaluation_By_Session_result(res.data.message); setGetall_Survey_hot_evaluation_By_Session_result(res.data.message);
setRows_evaluation(res.data.message); setRows_evaluation(res.data.message);
@ -592,7 +592,7 @@ const Module_Session_Evaluation = (props) => {
const [selectionModel_evaluation_cold, setSelectionModel_evaluation_cold] = React.useState([]); const [selectionModel_evaluation_cold, setSelectionModel_evaluation_cold] = React.useState([]);
const [rowss_evaluation_cold, setRows_evaluation_cold] = useState([]); const [rowss_evaluation_cold, setRows_evaluation_cold] = useState([]);
const [selectionModel_evaluation_formateur, setSelectionModel_evaluation_formateur] = React.useState([]); const [selectionModel_evaluation_formateur, setselectionModel_evaluation_formateur] = React.useState([]);
const [rowss_evaluation_formateur, setRows_evaluation_formateur] = useState([]); const [rowss_evaluation_formateur, setRows_evaluation_formateur] = useState([]);
/**** Les évaluations a froid */ /**** Les évaluations a froid */
@ -770,7 +770,7 @@ const Module_Session_Evaluation = (props) => {
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
// console.log(" In Getall_Survey_cold_evaluation_By_Session res.data.status = " + res.data.status); // console.log(" In Getall_Survey_cold_evaluation_By_Session res.data.status = " + res.data.status);
console.log(" In Getall_Survey_cold_evaluation_By_Session res.data.message r_class = " + res.data.message); //console.log(" In Getall_Survey_cold_evaluation_By_Session res.data.message r_class = " + res.data.message);
setGetall_Survey_cold_evaluation_By_Session_api("true"); setGetall_Survey_cold_evaluation_By_Session_api("true");
setGetall_Survey_cold_evaluation_By_Session_result(res.data.message); setGetall_Survey_cold_evaluation_By_Session_result(res.data.message);
setRows_evaluation_cold(res.data.message); setRows_evaluation_cold(res.data.message);
@ -794,7 +794,7 @@ const Module_Session_Evaluation = (props) => {
const [Getall_Survey_formateur_evaluation_By_Session_result, setGetall_Survey_formateur_evaluation_By_Session_result] = useState([]); const [Getall_Survey_formateur_evaluation_By_Session_result, setGetall_Survey_formateur_evaluation_By_Session_result] = useState([]);
function Getall_Survey_formateur_evaluation_By_Session(event) { function Getall_Survey_formateur_evaluation_By_Session(event) {
setSelectionModel_evaluation_formateur([]) setselectionModel_evaluation_formateur([])
var form = new FormData(); var form = new FormData();
@ -813,7 +813,7 @@ const Module_Session_Evaluation = (props) => {
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
// console.log(" In Getall_Survey_formateur_evaluation_By_Session res.data.status = " + res.data.status); // console.log(" In Getall_Survey_formateur_evaluation_By_Session res.data.status = " + res.data.status);
console.log(" In Getall_Survey_formateur_evaluation_By_Session res.data.message r_class = " + res.data.message); //console.log(" In Getall_Survey_formateur_evaluation_By_Session res.data.message r_class = " + res.data.message);
setGetall_Survey_formateur_evaluation_By_Session_api("true"); setGetall_Survey_formateur_evaluation_By_Session_api("true");
setGetall_Survey_formateur_evaluation_By_Session_result(res.data.message); setGetall_Survey_formateur_evaluation_By_Session_result(res.data.message);
setRows_evaluation_formateur(res.data.message); setRows_evaluation_formateur(res.data.message);
@ -917,6 +917,7 @@ const Module_Session_Evaluation = (props) => {
setCreate_List_Survey_eval_formateur_For_Session_For_Inscrit_api("true"); setCreate_List_Survey_eval_formateur_For_Session_For_Inscrit_api("true");
setCreate_List_Survey_eval_formateur_For_Session_For_Inscrit_result(res.data.message); setCreate_List_Survey_eval_formateur_For_Session_For_Inscrit_result(res.data.message);
Getall_Survey_formateur_evaluation_By_Session(); Getall_Survey_formateur_evaluation_By_Session();
setselected_formateur_id("");
alert(res.data.message); alert(res.data.message);
} else if (String(res.data.status) === String("Err_Connexion")) { } else if (String(res.data.status) === String("Err_Connexion")) {
@ -938,6 +939,9 @@ const Module_Session_Evaluation = (props) => {
}) })
} }
const [actionmass_eval_formateur, setactionmass_eval_formateur] = useState();
const [actionmass_eval_froid, setactionmass_eval_froid] = useState(); const [actionmass_eval_froid, setactionmass_eval_froid] = useState();
const [actionmass_eval_val, setactionmass_eval_val] = useState(); const [actionmass_eval_val, setactionmass_eval_val] = useState();
@ -969,6 +973,34 @@ const Module_Session_Evaluation = (props) => {
} }
function GetSelectedRows_Evaluation_formateur_Ids() {
var tab_tmp = []
for (var i = 0; i < selectionModel_evaluation_formateur.length; i++) {
var myid = parseInt(String(selectionModel_evaluation_formateur[i]));
//var line = JSON.parse(rowss[myid]);
tab_tmp.push(myid);
}
return tab_tmp;
}
async function actionmass_Formation_Traitemet() {
var liste_formation = GetSelectedRows_Evaluation_formateur_Ids();
var tab_ids_survey = []
for (var i = 0; i < selectionModel_evaluation_formateur.length; i++) {
var myid = parseInt(String(selectionModel_evaluation_formateur[i]));
var line = JSON.parse(rowss_evaluation_formateur[myid]);
var line_id = JSON.parse(rowss_evaluation_formateur[myid])._id;
tab_ids_survey.push(line_id);
}
//SendEvaluationEmail_Many_Ids(tab_ids_inscription);
Send_Survey_By_Email_For_Ids(tab_ids_survey);
}
async function actionmass_Evaluation_Traitemet() { async function actionmass_Evaluation_Traitemet() {
var liste_formation = GetSelectedRows_Evaluation_Ids(); var liste_formation = GetSelectedRows_Evaluation_Ids();
@ -1048,13 +1080,17 @@ const Module_Session_Evaluation = (props) => {
Getall_Survey_hot_evaluation_By_Session(); Getall_Survey_hot_evaluation_By_Session();
Getall_Survey_cold_evaluation_By_Session(); Getall_Survey_cold_evaluation_By_Session();
Getall_Survey_formateur_evaluation_By_Session();
setSelectionModel_evaluation([]); setSelectionModel_evaluation([]);
setSelectionModel_evaluation_cold([]); setSelectionModel_evaluation_cold([]);
setselectionModel_evaluation_formateur([]);
setactionmass_eval_val(""); setactionmass_eval_val("");
setactionmass_eval_froid(""); setactionmass_eval_froid("");
setactionmass_eval_formateur("");
alert(res.data.message); alert(res.data.message);
@ -1113,6 +1149,7 @@ const Module_Session_Evaluation = (props) => {
Getall_Survey_hot_evaluation_By_Session(); Getall_Survey_hot_evaluation_By_Session();
Getall_Survey_cold_evaluation_By_Session(); Getall_Survey_cold_evaluation_By_Session();
Getall_Survey_formateur_evaluation_By_Session();
setSessionendDate(props.SessionendDate); setSessionendDate(props.SessionendDate);
setSessionstartDate(props.SessionstartDate); setSessionstartDate(props.SessionstartDate);
@ -1171,6 +1208,37 @@ const Module_Session_Evaluation = (props) => {
} }
function Export_survey_formateur_eval_datatab_class() {
const stored_cookie = getCookie('tokenmysypart');
var nom_fichier_cmd = "export_reponses.xlsx";
var url = process.env.REACT_APP_API_URL + "myclass/api/Export_To_Excel_Survey_with_filter/" + stored_cookie + "/" + selected_session_id + "/human_eval/";
setLoading(true);
axios.get(url, { responseType: 'blob', },)
.then((res) => {
setLoading(false);
//console.log(" In Export_Dashbord_to_CSV res.data = " + res.data);
if (String(res.data) === String("false")) {
alert("Impossible d'exporter les réponses (2) ");
} else {
fileDownload(res.data, nom_fichier_cmd)
}
}).catch((error) => {
setLoading(false);
console.error('Error:', error);
alert(" Impossible d'exporter les réponses ")
});
setLoading(false);
}
function Export_survey_cold_eval_datatab_class() { function Export_survey_cold_eval_datatab_class() {
const stored_cookie = getCookie('tokenmysypart'); const stored_cookie = getCookie('tokenmysypart');
@ -1261,7 +1329,7 @@ const Module_Session_Evaluation = (props) => {
> >
<DialogTitle>MySy Information</DialogTitle> <DialogTitle>MySy Information</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}> <DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
<DialogContentText> <DialogContentText>
{Dialog_1_message} {Dialog_1_message}
</DialogContentText> </DialogContentText>
@ -1341,7 +1409,7 @@ const Module_Session_Evaluation = (props) => {
> >
<DialogTitle>MySy Information</DialogTitle> <DialogTitle>MySy Information</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}> <DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
<DialogContentText> <DialogContentText>
{Dialog_1_message} {Dialog_1_message}
</DialogContentText> </DialogContentText>
@ -1442,7 +1510,7 @@ const Module_Session_Evaluation = (props) => {
> >
<DialogTitle>MySy Information</DialogTitle> <DialogTitle>MySy Information</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}> <DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
<DialogContentText> <DialogContentText>
{Dialog_1_message} {Dialog_1_message}
</DialogContentText> </DialogContentText>
@ -1494,7 +1562,8 @@ const Module_Session_Evaluation = (props) => {
setselected_formateur_id(value._id); setselected_formateur_id(value._id);
} else { } else {
setselected_formateur_id("");
alert(" Vous devez choisir un formateur ")
} }
}} }}
@ -1733,14 +1802,7 @@ const Module_Session_Evaluation = (props) => {
<nav >Traitement en masse / Evaluation</nav> <nav >Traitement en masse / Evaluation</nav>
&nbsp; &nbsp;
{/* &nbsp;<select
id={"actionmassemarg"} name={"actionmassemarg"}
onChange={actionmass_evaluation}
className="action_mass">
<option selected value="n/a">Choisir une action</option>
<option value="demande evaluation">Demande évaluation</option>
</select> &nbsp;*/}
<Autocomplete <Autocomplete
disablePortal disablePortal
@ -1771,7 +1833,9 @@ const Module_Session_Evaluation = (props) => {
/> />
{actionmass_eval_val && String(actionmass_eval_val).length > 1 && {actionmass_eval_val && String(actionmass_eval_val).length > 1 && String(actionmass_eval_val) !== "" &&
selectionModel_evaluation.length > 0 &&
<Popup <Popup
trigger={<Button className="bton_enreg" > trigger={<Button className="bton_enreg" >
<FcAcceptDatabase /> Traiter <FcAcceptDatabase /> Traiter
@ -2055,8 +2119,8 @@ const Module_Session_Evaluation = (props) => {
} }
/> />
{actionmass_eval_froid && String(actionmass_eval_froid) !== "" && String(actionmass_eval_froid).length > 1 &&
{actionmass_Evaluation_Traitemet_cold && String(actionmass_Evaluation_Traitemet_cold) !== "" && String(actionmass_eval_froid).length > 1 && selectionModel_evaluation_cold.length > 0 &&
<Popup <Popup
trigger={<Button className="bton_enreg" > trigger={<Button className="bton_enreg" >
<FcAcceptDatabase /> Traiter <FcAcceptDatabase /> Traiter
@ -2160,6 +2224,7 @@ const Module_Session_Evaluation = (props) => {
<div style={{ "width": "45%", "float": "left" }}> <div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => { <button className="gest_bton_popup" onClick={(event) => {
Getall_Partner_Formulaires_formateur_evaluation_with_Filter(); Getall_Partner_Formulaires_formateur_evaluation_with_Filter();
setselected_formateur_id("");
setDialog_LIST_EVALUATION_FORMATEUR_open(true); setDialog_LIST_EVALUATION_FORMATEUR_open(true);
close(); close();
}}> Valider </button> }}> Valider </button>
@ -2189,7 +2254,7 @@ const Module_Session_Evaluation = (props) => {
<Button className="bton_emarge" onClick={(event) => { <Button className="bton_emarge" onClick={(event) => {
Export_survey_hot_eval_datatab_class(); Export_survey_formateur_eval_datatab_class();
}}>Exporter (excel)</Button> }}>Exporter (excel)</Button>
</div> </div>
</div> </div>
@ -2238,12 +2303,12 @@ const Module_Session_Evaluation = (props) => {
<DataGrid <DataGrid
checkboxSelection checkboxSelection
onSelectionModelChange={(newSelectionModel_evaluation) => { onSelectionModelChange={(newSelectionModel_evaluation) => {
setSelectionModel_evaluation_formateur(newSelectionModel_evaluation); setselectionModel_evaluation_formateur(newSelectionModel_evaluation);
//console.log("ch selected--" + newSelectionModel_evaluation); //console.log("ch selected--" + newSelectionModel_evaluation);
}} }}
selectionModel={setSelectionModel_evaluation_formateur} selectionModel={selectionModel_evaluation_formateur}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText} localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={rowss_evaluation_formateur.map((item, index) => ( rows={rowss_evaluation_formateur.map((item, index) => (
{ {
@ -2305,9 +2370,9 @@ const Module_Session_Evaluation = (props) => {
/> />
</Box> </Box>
{selectionModel_evaluation_cold && selectionModel_evaluation_cold.length >= 0 && {selectionModel_evaluation_formateur && selectionModel_evaluation_formateur.length >= 0 &&
<div className="block_en_mass"> <div className="block_en_mass">
<nav >Traitement en masse / Evaluation froid</nav> <nav >Traitement en masse / Evaluation Formateur</nav>
&nbsp; &nbsp;
@ -2321,16 +2386,16 @@ const Module_Session_Evaluation = (props) => {
if (value && value.value) { if (value && value.value) {
if (String(value.value) === "demande evaluation") { if (String(value.value) === "demande evaluation") {
setactionmass_eval_froid(value.value); setactionmass_eval_formateur(value.value);
} }
else { else {
setactionmass_eval_froid(""); setactionmass_eval_formateur("");
} }
} }
else { else {
setactionmass_eval_froid(""); setactionmass_eval_formateur("");
} }
}} }}
@ -2340,7 +2405,8 @@ const Module_Session_Evaluation = (props) => {
/> />
{actionmass_Evaluation_Traitemet_cold && String(actionmass_Evaluation_Traitemet_cold) !== "" && String(actionmass_eval_froid).length > 1 && {actionmass_eval_formateur && String(actionmass_eval_formateur) !== "" && String(actionmass_eval_formateur).length > 1 &&
selectionModel_evaluation_formateur.length > 0 &&
<Popup <Popup
trigger={<Button className="bton_enreg" > trigger={<Button className="bton_enreg" >
<FcAcceptDatabase /> Traiter <FcAcceptDatabase /> Traiter
@ -2360,12 +2426,12 @@ const Module_Session_Evaluation = (props) => {
<div className="gest_content"> <div className="gest_content">
{' '} {' '}
Confirmer l'action <b> {actionmass_eval_froid} </b> en masse. Confirmer l'action <b> {actionmass_eval_formateur} </b> en masse.
</div> </div>
<div className="gest_actions"> <div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}> <div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => { <button className="gest_bton_popup" onClick={(event) => {
actionmass_Evaluation_Traitemet_cold(); actionmass_Formation_Traitemet();
close(); close();
}}> Valider </button> }}> Valider </button>

View File

@ -3667,17 +3667,35 @@ const Module_Session_Planification = (props) => {
<Button variant="outlined" <Button variant="outlined"
className="detail_class_submenu bton_add_session bton_add_session_create_automatic" style={{ "width": "40%" }} className="detail_class_submenu bton_add_session bton_add_session_create_automatic" style={{ "width": "40%" }}
id='menu_import_participant' name='menu_import_participant' onClick={(event) => { id='menu_import_participant' name='menu_import_participant' onClick={(event) => {
if (String(props.selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
} else if (String(props.selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
} else {
setDialog_seq_choix_model_emargement_open(true); setDialog_seq_choix_model_emargement_open(true);
setDialog_seq_planif_periode_type(""); setDialog_seq_planif_periode_type("");
}
}} > Planification automatique }} > Planification automatique
<FcMultipleSmartphones /> &nbsp; <FcMultipleSmartphones />
</Button> </Button>
&nbsp; &nbsp;
<Button variant="outlined" onClick={submenu_add_one_sequence} <Button variant="outlined"
onClick={(event) => {
if (String(props.selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
} else if (String(props.selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
} else {
submenu_add_one_sequence()
}
}}
className="detail_class_submenu bton_add_session" className="detail_class_submenu bton_add_session"
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Séquence &nbsp; id='menu_import_participant' name='menu_import_participant'>Ajout 1 Séquence &nbsp;
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} /> <IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />
@ -3811,7 +3829,20 @@ const Module_Session_Planification = (props) => {
</div> </div>
<div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}> <div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
<Button variant="outlined" onClick={submenu_add_one_Ressource} <Button variant="outlined"
onClick={(event) => {
if (String(props.selected_session_invoiced_statut) === "1") {
alert(" La session est en cours de facturation ")
} else if (String(props.selected_session_invoiced_statut) === "2") {
alert(" La session est déjà facturée ")
} else {
submenu_add_one_Ressource()
}
}}
className="detail_class_submenu bton_add_session" className="detail_class_submenu bton_add_session"
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Ressource &nbsp; id='menu_import_participant' name='menu_import_participant'>Ajout 1 Ressource &nbsp;
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} /> <IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />

View File

@ -11,7 +11,7 @@ import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css"; import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import { Editor } from '@tinymce/tinymce-react'; import { Editor } from '@tinymce/tinymce-react';
import parse from 'html-react-parser'; import parse from 'html-react-parser';
import { FcViewDetails, FcDisapprove } from "react-icons/fc"; import { FcViewDetails, FcDisapprove, FcInfo } from "react-icons/fc";
import 'react-tooltip/dist/react-tooltip.css' import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip' import { Tooltip } from 'react-tooltip'
import add_plus from "../mysy_img/plus.png"; import add_plus from "../mysy_img/plus.png";
@ -45,7 +45,7 @@ import { gridClasses } from '@mui/x-data-grid';
import { PiDotsThree } from "react-icons/pi"; import { PiDotsThree } from "react-icons/pi";
import Link from '@mui/material/Link'; import Link from '@mui/material/Link';
import { LiaSave } from "react-icons/lia"; import { LiaSave } from "react-icons/lia";
import Checkbox from '@mui/material/Checkbox';
import { IoMdAddCircleOutline, IoMdRemoveCircleOutline } from "react-icons/io"; import { IoMdAddCircleOutline, IoMdRemoveCircleOutline } from "react-icons/io";
const Partner_Config_Formulaires = (props) => { const Partner_Config_Formulaires = (props) => {
@ -182,11 +182,28 @@ const Partner_Config_Formulaires = (props) => {
const columns_question = [ const columns_question = [
{ field: '_id', headerName: '_id', hide: true }, { field: '_id', headerName: '_id', hide: true },
{ field: 'id', headerName: 'id', hide: true }, { field: 'id', headerName: 'id', hide: true },
{ field: 'list_choix', headerName: 'list_choix', hide: true }, { field: 'list_choix', headerName: 'Liste Choix', hide: true },
{ field: 'list_case_cocher', headerName: 'list_case_cocher', hide: true }, { field: 'list_case_cocher', headerName: 'Liste C.A.C', hide: true },
{ field: 'question', headerName: 'question', flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, }, { field: 'question', headerName: 'Question', flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'type', headerName: 'type', flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, }, { field: 'type', headerName: 'Type', flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'max_note', headerName: 'max_note', flex: 1, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, }, { field: 'max_note', headerName: 'Note MAx', flex: 1, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'is_statistic', headerName: 'Statistique', flex: 1, hide: false, editable: false,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
{String(cellValues.row.is_statistic) === "1" && "Oui"}&nbsp;
{String(cellValues.row.is_statistic) !== "1" && "Non"}&nbsp;
</div>
);
},
},
{ {
field: "delete", headerName: 'Supprimer', field: "delete", headerName: 'Supprimer',
@ -994,6 +1011,13 @@ const Partner_Config_Formulaires = (props) => {
form.append("type", question_type); form.append("type", question_type);
form.append("max_note", question_max_note); form.append("max_note", question_max_note);
if (statistic_checked === true) {
form.append("is_statistic", "1");
} else {
form.append("is_statistic", "0");
}
var local_list_choix = [] var local_list_choix = []
for (let i = 0; i < tab_qcm_choix.length; i++) { for (let i = 0; i < tab_qcm_choix.length; i++) {
var choix = "reponse"; var choix = "reponse";
@ -1041,6 +1065,7 @@ const Partner_Config_Formulaires = (props) => {
settab_qcm_choix([]); settab_qcm_choix([]);
setadd_new_qcm_choix(""); setadd_new_qcm_choix("");
setnew_qcm_choix_value(""); setnew_qcm_choix_value("");
setstatistic_checked(false);
Get_Given_Formulaire_Data(selected_id); Get_Given_Formulaire_Data(selected_id);
@ -1205,6 +1230,11 @@ const Partner_Config_Formulaires = (props) => {
} }
const [statistic_checked, setstatistic_checked] = React.useState(false);
const handleChange_statistic_checked = (event) => {
setstatistic_checked(event.target.checked);
};
return ( return (
<div className="partner_configuration_technique"> <div className="partner_configuration_technique">
@ -1269,6 +1299,9 @@ const Partner_Config_Formulaires = (props) => {
} else { } else {
setquestion_type(""); setquestion_type("");
} }
// Reinitialisation du "statistique"
setstatistic_checked(false);
}} }}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option" renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
@ -1297,6 +1330,8 @@ const Partner_Config_Formulaires = (props) => {
} }
/> />
</div>} </div>}
{String(question_type) === "qcm" && <div className="session_caract_Dialog" > QCM {String(question_type) === "qcm" && <div className="session_caract_Dialog" > QCM
@ -1423,6 +1458,30 @@ const Partner_Config_Formulaires = (props) => {
</div>} </div>}
{(String(question_type) === "note" || String(question_type) === "bool" || String(question_type) === "entier") && <div className="session_caract_Dialog" >
<Tooltip className="tooltip_css" id="statistic_01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="statistic_01" data-tooltip-html="En cochant cette case, le système va créer une statistique associée à la question.">
<nav style={{ width: "100%", float: "left" }}>
<nav style={{ width: "75%", float: "left", "marginTop":'0.5rem' }}>
Créer une statistique &nbsp;<FcInfo /> &nbsp; &nbsp; &nbsp;
</nav>
<nav style={{ width: "20%", float: "left", "textAlign": "right" }}>
<Checkbox
checked={statistic_checked}
onChange={handleChange_statistic_checked}
inputProps={{ 'aria-label': 'controlled' }}
/>
</nav>
</nav>
</a>
</div>}
</DialogContent> </DialogContent>
<DialogActions> <DialogActions>
@ -1893,7 +1952,8 @@ const Partner_Config_Formulaires = (props) => {
<div className="div_row" ref={myRef} id="myRef"> &nbsp;</div> <div className="div_row" ref={myRef} id="myRef"> &nbsp;</div>
</div> </div>
{String(add_new_form) !== "1" && String(display_form) === "1" && String(form_edit_mode) !== "1" && <div className="div_row"> {
String(add_new_form) !== "1" && String(display_form) === "1" && String(form_edit_mode) !== "1" && <div className="div_row">
<div className="session_data"> <div className="session_data">
<br /> <br />
@ -2053,6 +2113,8 @@ const Partner_Config_Formulaires = (props) => {
max_note: (item).max_note, max_note: (item).max_note,
list_choix: (item).list_choix, list_choix: (item).list_choix,
list_case_cocher: (item).list_case_cocher, list_case_cocher: (item).list_case_cocher,
is_statistic: (item).is_statistic,
} }
@ -2146,9 +2208,11 @@ const Partner_Config_Formulaires = (props) => {
</div> </div>
</div>} </div>
}
{String(add_new_form) !== "1" && String(display_form) === "1" && String(form_edit_mode) === "1" && <div className="div_row"> {
String(add_new_form) !== "1" && String(display_form) === "1" && String(form_edit_mode) === "1" && <div className="div_row">
<div className="session_data"> <div className="session_data">
<br /> <br />
@ -2418,9 +2482,11 @@ const Partner_Config_Formulaires = (props) => {
</div> </div>
</div> </div>
</div>} </div>
}
{String(add_new_form) === "1" && <div className="div_row"> {
String(add_new_form) === "1" && <div className="div_row">
<div className="session_data"> <div className="session_data">
Ajouter un nouveau formulaire Ajouter un nouveau formulaire
@ -2586,7 +2652,8 @@ const Partner_Config_Formulaires = (props) => {
</div> </div>
</div>} </div>
}
</div > </div >
) )