01/03/26 - 13h30

branche_01062025
Cherif 2026-03-01 13:46:13 +01:00
parent d9c2b6d856
commit 072516011f
12 changed files with 3058 additions and 659 deletions

View File

@ -99,6 +99,9 @@ const AddClassManual = (props) => {
const url = process.env.REACT_APP_API_URL + "/myclass/api/add_partner_account/";
const [inputs, setInputs] = useState({});
const [is_ftion_initiale, setis_ftion_initiale] = useState("0");
const [mypublished, setmypublished] = useState("0");
const [mypublished_label, setmypublished_label] = useState("-");
@ -193,10 +196,10 @@ const AddClassManual = (props) => {
{ field: '_id', headerName: '_id', hide: true },
{ field: 'code', headerName: 'Code', maxWidth: 250, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'titre', headerName: 'Titre', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'credit', headerName: 'Credit', maxWidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'credit', headerName: 'Credit', maxWidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'coefficient', headerName: 'Coef.', maxWidth: 100, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'pres_dist_hyp', headerName: 'Animation', maxWidth: 180,
field: 'pres_dist_hyp', headerName: 'Animation', maxWidth: 180,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
@ -209,7 +212,7 @@ const AddClassManual = (props) => {
}
},
{
field: 'is_noted', headerName: 'Evalué', maxWidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />,
field: 'is_noted', headerName: 'Evalué', maxWidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
@ -221,11 +224,11 @@ const AddClassManual = (props) => {
);
}
},
{ field: 'seuil_validation', headerName: 'Seuil val.', maxWidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'seuil_validation', headerName: 'Seuil val.', maxWidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'duration_concat', headerName: 'Durée', maxidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'duration', headerName: 'Durée', maxWidth: 150, hide: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'duration_concat', headerName: 'Durée', maxidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'duration', headerName: 'Durée', maxWidth: 150, hide: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'duration_unite', headerName: 'Unit.', maxWidth: 150, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
@ -2008,6 +2011,14 @@ const AddClassManual = (props) => {
setmytraining_ref_peda_id("");
if (mylocaltraining.is_ftion_initiale) {
setis_ftion_initiale(mylocaltraining.is_ftion_initiale);
}
else
setis_ftion_initiale("");
if (mylocaltraining.domaine) {
setmytrainingdomaine(mylocaltraining.domaine);
//console.log(" ### mylocaltraining.domaine = ", mylocaltraining.domaine);
@ -2530,7 +2541,7 @@ const AddClassManual = (props) => {
formData.append('categorie', mycategorie);
formData.append('version', version);
formData.append('referentiel_padagogique_id', mytraining_ref_peda_id);
formData.append('is_ftion_initiale', is_ftion_initiale);
formData.append('recyclage_delai', p_detail_recyclage_delai);
@ -3467,6 +3478,12 @@ const AddClassManual = (props) => {
];
const New_Option_is_Ftion_Initiale = [
{ "id": "1", "label": "Oui", "value": "1" },
{ "id": "0", "label": "Non", "value": "0" },
{ "id": "", "label": "", "value": "" },
]
function retourList() {
props.GetAllClass_new();
props.closeTrainingForm();
@ -7992,7 +8009,7 @@ const AddClassManual = (props) => {
disablePortal
name="formateur_id"
id="formateur_id"
className="disabled_style"
options={New_Getall_Training_Employee_No_Filter_result}
value={p_formateur_label}
@ -8410,6 +8427,34 @@ const AddClassManual = (props) => {
</div>}
{New_Option_is_Ftion_Initiale && New_Option_is_Ftion_Initiale.length > 0 &&
<div className="training_caract"> <Autocomplete
disablePortal
name="is_ftion_initiale"
id="is_ftion_initiale"
className="disabled_style"
options={New_Option_is_Ftion_Initiale}
value= {New_Option_is_Ftion_Initiale.filter((data) => (data).value === String(is_ftion_initiale))[0].label}
disabled={!Boolean(props.check_user_acces_right("formation", "write"))}
onChange={(event, value) => {
if (value && value.value) {
setis_ftion_initiale(value.value);
setdatamodification("1");
} else {
setis_ftion_initiale("");
setdatamodification("1");
}
}}
renderInput={(params) => <TextField {...params} label="Ftion. Initiale ?" />
}
/>
</div>}
</div>
</div>
</div>

View File

@ -194,7 +194,7 @@ const DisplayPartnerStagiaires = (props) => {
{ field: 'telephone', headerName: 'Téléphone', hide: true, editable: false, Width: 0 },
{ field: 'date_naissance', headerName: 'date_naissance', hide: true, editable: false, Width: 0 },
{
field: 'warning_recyclage_alert', headerName: 'Alert', hide: false, Width: 150,
@ -302,7 +302,7 @@ const DisplayPartnerStagiaires = (props) => {
},
},
{ field: 'date_debut', headerName: 'Du', minWidth: 90, maxWidth: 100, flex: 1, hideable: true, editable: false, hide: true },
{ field: 'date_debut', headerName: 'Du', minWidth: 90, maxWidth: 100, flex: 1, hideable: true, editable: false, hide: true },
{ field: 'date_fin', headerName: 'Au', minWidth: 90, maxWidth: 100, flex: 1, hideable: true, editable: false, hide: true },
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false },
@ -6236,6 +6236,13 @@ const DisplayPartnerStagiaires = (props) => {
}
else if (String(actionmass_ftion_val) === String("pushdocument")) {
var myid = parseInt(String(selectionModel[0]));
var first_line_selected = JSON.parse(rowss[myid]);
console.log(" first_line_selected == ", first_line_selected);
Get_List_UE_From_Session_Id(first_line_selected.session_id);
// console.log(" #### selectedtraining_emails_liste = ", selectedtraining_emails_liste);
settab_email_pieces_jointes_result([]);
setDialog_PUSH_DOCUMENT_TO_ENT_open(true);
@ -7774,6 +7781,11 @@ const DisplayPartnerStagiaires = (props) => {
setDialog_PUSH_DOCUMENT_TO_ENT_open(false);
settab_email_pieces_jointes_result([]);
setent_push_doc_message_notif("");
settab_selected_list_ue([]);
setNew_Get_List_UE_From_Session_Id_result([]);
setGet_List_UE_From_Session_Id_result([])
}
const [tab_email_pieces_jointes_result, settab_email_pieces_jointes_result] = useState([]);
@ -7906,6 +7918,21 @@ const DisplayPartnerStagiaires = (props) => {
form.append("related_collection", "inscription");
form.append("list_email_dest", selectedtraining_emails_liste);
var tab_eu_ids = [];
for (var i = 0; i < tab_selected_list_ue.length; i++) {
var local_eu_id = tab_selected_list_ue[i]._id;
tab_eu_ids.push(local_eu_id);
}
if (tab_eu_ids.length > 0)
form.append("tab_ue_ids", tab_eu_ids);
else
form.append("tab_ue_ids", "");
if (ent_push_doc_message_notif)
form.append("ent_push_doc_message_notif", ent_push_doc_message_notif);
@ -7921,7 +7948,7 @@ const DisplayPartnerStagiaires = (props) => {
// Important, on ne peut pousser des documents que pour une et unique session, pas de melance de session_id
console.log(" ### selected_list_session_id = ", selected_list_session_id);
// console.log(" ### selected_list_session_id = ", selected_list_session_id);
var local_session_id = "";
var nb_different_session = 0;
const tab_session_id = selected_list_session_id.split(',');
@ -7931,7 +7958,11 @@ const DisplayPartnerStagiaires = (props) => {
local_session_id = tab_session_id[i]
}
console.log(" ### nb_different_session = ", nb_different_session);
// console.log(" ### nb_different_session = ", nb_different_session);
if (nb_different_session > 1) {
setdisplay_alert_mysy("1");
@ -7972,7 +8003,12 @@ const DisplayPartnerStagiaires = (props) => {
setShare_Document_To_Ent_result(res.data.message);
Dialog_PUSH_DOCUMENT_TO_ENT_handleClose();
//alert(res.data.message);
setSelectionModel([]);
setactionmass_ftion_val("");
setselected_id("");
setaddOneParticipant("");
setdisplay_detail_stagiaire("");
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
@ -8475,6 +8511,105 @@ const DisplayPartnerStagiaires = (props) => {
})
}
const fixedVal_list_ue = [];
const [tab_selected_list_ue, settab_selected_list_ue] = useState([...fixedVal_list_ue]);
const [New_Get_List_UE_From_Session_Id_result, setNew_Get_List_UE_From_Session_Id_result] = useState([]);
const [Get_List_UE_From_Session_Id_api, setGet_List_UE_From_Session_Id_api] = useState();
const [Get_List_UE_From_Session_Id_message, setGet_List_UE_From_Session_Id_message] = useState();
const [Get_List_UE_From_Session_Id_result, setGet_List_UE_From_Session_Id_result] = useState([]);
function Get_List_UE_From_Session_Id(local_session_id) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("session_id", local_session_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Unite_Enseignement_Of_Given_Class_From_Session_Id/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Get_List_UE_From_Session_Id res.data.status = " + res.data.status);
//console.log(" In Get_List_UE_From_Session_Id res.data.message r_class = " + res.data.message);
setGet_List_UE_From_Session_Id_api("true");
setGet_List_UE_From_Session_Id_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
var local_code = JSON.parse(x).code;
var local_titre = JSON.parse(x).titre;
var local_class_id = JSON.parse(x).class_id;
var local_internal_url = JSON.parse(x).internal_url;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_code + " - " + String(local_titre).substring(0, 20),
"code": local_code,
"titre": local_titre,
"class_id": local_class_id,
"internal_url": local_internal_url,
};
new_data2.push(node);
});
//---
var node = {
"_id": "",
"id": "",
"label": "",
"code": "",
"titre": "",
"class_id": "",
"internal_url": "",
};
new_data2.push(node);
if (new_data2.length > 0)
setNew_Get_List_UE_From_Session_Id_result(new_data2);
}
else {
setGet_List_UE_From_Session_Id_api("false");
setGet_List_UE_From_Session_Id_message(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Get_List_UE_From_Session_Id = ', error);
setGet_List_UE_From_Session_Id_api("false");
// alert(" Impossible de recuperer la liste des UE de la formation");
setdisplay_alert_mysy("1");
setalert_message(" Impossible de recuperer la liste des UE de la formation");
setalert_type("error");
//setmyApimyApiMessage("")
})
}
return (
<div className="displaypartnerstagiaire">
{isLoading && <div className="loader-container">
@ -8876,7 +9011,37 @@ const DisplayPartnerStagiaires = (props) => {
</div>
<div className="session_caract_Dialog">
Matière / UE
{New_Get_List_UE_From_Session_Id_result.length > 0 &&
<Autocomplete
disablePortal
name="eu_data"
id="eu_data"
className="session_caract_Dialog"
// value={New_Getall_Class_List_UE_result.filter((data) => (data)._id === String(p_filtre1_value))[0].label}
options={New_Get_List_UE_From_Session_Id_result}
value={tab_selected_list_ue}
multiple
onChange={(event, value) => {
settab_selected_list_ue([
...fixedVal_list_ue,
...value.filter((i) => fixedVal_list_ue.indexOf(i) === -1),
]);
console.log("tab_selected_list_ue = ", tab_selected_list_ue)
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une UE"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
}
</div>
<div>
<div className="div_row" style={{ "padding": "5px" }}>
@ -9028,7 +9193,7 @@ const DisplayPartnerStagiaires = (props) => {
setalert_message("Aucun fichier à publier");
setalert_type("error");
return;
} else if (tab_email_pieces_jointes_result.length > 5) {
} else if (tab_email_pieces_jointes_result.length > 50) {
setdisplay_alert_mysy("1");
setalert_message(" Vous ne pouvez pas envoyer plus de 50 emails (destinataires) à la fois.");
setalert_type("error");
@ -10711,7 +10876,7 @@ const DisplayPartnerStagiaires = (props) => {
title: JSON.parse(item).title,
distantiel: JSON.parse(item).distantiel,
presentiel: JSON.parse(item).presentiel,
date_debut: JSON.parse(item).date_du,
date_fin: JSON.parse(item).date_au,
class_internal_url: JSON.parse(item).class_internal_url,
@ -10719,7 +10884,7 @@ const DisplayPartnerStagiaires = (props) => {
telephone: JSON.parse(item).telephone,
date_naissance: JSON.parse(item).date_naissance,
invoiced: JSON.parse(item).invoiced,
invoiced_ref: JSON.parse(item).invoiced_ref,
invoiced_date: JSON.parse(item).invoiced_date,
@ -11186,6 +11351,9 @@ const DisplayPartnerStagiaires = (props) => {
<Button className="bton_enreg" style={{ "width": "90%" }}
onClick={(event) => {
settab_selected_list_ue([]);
setNew_Get_List_UE_From_Session_Id_result([]);
setGet_List_UE_From_Session_Id_result([])
actionmass_ftion_Traitemet();
}}
>
@ -11245,7 +11413,7 @@ const DisplayPartnerStagiaires = (props) => {
{((selected_id && String(selected_id).length > 2) || (String(addOneParticipant) === "1")) && <div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_stagaire} className="detail_class_submenu" id='detail_session' name='detail_session'>Détail Participant</Button>
<Button variant="outlined" ref={myRef} onClick={submenu_detail_stagaire} className="detail_class_submenu" id='detail_session' name='detail_session'>Détail Inscrit</Button>
{/* <Button variant="outlined" onClick={submenu_sessions} className="detail_class_submenu" id='preinscrit' name='preinscrit'>Détail Session </Button>

View File

@ -720,13 +720,15 @@ const DistplayPartnerTraningsPage = (props) => {
return (
<nav style={{ width: '100%', 'textAlign': 'center' }}>
{String(cellValues.row.nb_session_formation).length > 0 && parseInt(String(cellValues.row.nb_session_formation)) <= 0 && <div>
{String(cellValues.row.nb_session_formation).length > 0 && parseInt(String(cellValues.row.nb_session_formation)) <= 0 &&
<div>
{cellValues.row.nb_session_formation}
{cellValues.row.nb_session_formation}
</div>}
</div>}
{String(cellValues.row.nb_session_formation).length > 0 && parseInt(String(cellValues.row.nb_session_formation)) > 0 &&
cellValues.row.is_ftion_initiale !== "1" &&
<nav>
@ -745,6 +747,27 @@ const DistplayPartnerTraningsPage = (props) => {
</Button>
</nav>}
{String(cellValues.row.nb_session_formation).length > 0 && parseInt(String(cellValues.row.nb_session_formation)) > 0 &&
cellValues.row.is_ftion_initiale === "1" &&
<nav>
<Button
onClick={(event) => {
window.open(
process.env.REACT_APP_FRONT_URL + "Partner/mes_promotions/class/" + String(cellValues.row.internal_url),
'_blank'
);
}}
variant="outlined"
>
{cellValues.row.nb_session_formation}
</Button>
</nav>}
</nav>
);
@ -752,6 +775,19 @@ const DistplayPartnerTraningsPage = (props) => {
},
{
field: 'is_ftion_initiale', headerName: 'Ftion. Init.', hide: false, Width: 50, editable: false, renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
{String(cellValues.row.is_ftion_initiale) === "1" && "Oui"}&nbsp;
{String(cellValues.row.is_ftion_initiale) !== "1" && "Non"}&nbsp;
</div>
);
},
},
{ field: 'url', headerName: 'lien', minWidth: 20, hideable: true, hide: true, editable: false, },
@ -3420,29 +3456,29 @@ const DistplayPartnerTraningsPage = (props) => {
height: "700px",
width: '100%',
paddingRight: '2px',
fontFamily:'DM Sans',
fontFamily: 'DM Sans',
'& .cell--published': {
backgroundColor: '#a2cf6e',
color: '#1a3e72',
fontWeight: 'bold',
fontFamily:'DM Sans',
fontFamily: 'DM Sans',
},
'& .cell--unpublished': {
backgroundColor: '#ffac33',
color: '#1a3e72',
fontWeight: 'light',
fontFamily:'DM Sans',
fontFamily: 'DM Sans',
},
'& .line--published': {
backgroundColor: '#E6F7C8',
color: '#0a2a4d',
fontFamily:'DM Sans',
color: '#0a2a4d',
fontFamily: 'DM Sans',
},
'& .line--unpublished': {
backgroundColor: '#FAD7A0',
color: '#0a2a4d',
fontFamily:'DM Sans',
fontFamily: 'DM Sans',
},
"& .MuiDataGrid-columnHeaders": {
@ -3532,6 +3568,8 @@ const DistplayPartnerTraningsPage = (props) => {
version: JSON.parse(item).version,
is_ftion_initiale: JSON.parse(item).is_ftion_initiale,
nb_session_formation: JSON.parse(item).nb_session_formation,
}
@ -3576,7 +3614,7 @@ const DistplayPartnerTraningsPage = (props) => {
}}
getRowClassName={(params) => {
if (String(params.row.published) === "1") {
return 'line--published';

View File

@ -57,7 +57,7 @@ const useStyles = makeStyles((theme) => ({
color: 'gray',
},
}));
const Document_Affichage_Grid = (props) => {

View File

@ -0,0 +1,282 @@
import React, { useRef, useState, useEffect } from "react";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import axios from "axios";
import { useParams } from 'react-router-dom';
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import fileDownload from 'js-file-download'
import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem';
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import Button from '@mui/material/Button';
import VisibilityIcon from '@mui/icons-material/Visibility';
import ArrowCircleDownIcon from '@mui/icons-material/ArrowCircleDown';
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
import { makeStyles } from "@material-ui/core/styles";
import Paper from '@material-ui/core/Paper';
import Draggable from 'react-draggable';
import { IconButton } from '@material-ui/core';
import FilePresentIcon from '@mui/icons-material/FilePresent';
import PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';
import { BsFiletypePdf } from "react-icons/bs";
import { GoFile } from "react-icons/go";
function PaperComponent(props) {
return (
<Draggable
handle="#draggable-dialog-title"
cancel={'[class*="MuiDialogContent-root"]'}
>
<Paper {...props} />
</Draggable>
);
}
const useStyles = makeStyles((theme) => ({
dialog: {
position: 'absolute',
// left: 10,
top: 400
},
paper: {
overflowY: 'unset',
},
customizedButton: {
position: 'absolute',
left: '98%',
top: '-3%',
backgroundColor: 'lightgray',
color: 'gray',
},
}));
const Document_ENT_Affichage_Grid = (props) => {
const classes = useStyles();
const [isLoading, setLoading] = useState();
const [display_alert_mysy, setdisplay_alert_mysy] = useState("");
const [alert_message, setalert_message] = useState("");
const [alert_type, setalert_type] = useState("");
function clear_alert_message() {
setalert_message("");
}
function clear_alert_type() {
setalert_type("");
}
function clear_display_alert_mysy() {
setdisplay_alert_mysy("");
}
useEffect(() => {
}, [props.apprenant_id])
function print_document_pdf(doc_id, file_extention, file_business_object) {
var part_cookie = getCookie('tokenmysypart');
var nom_fichier_cmd = String(file_business_object) + "." + String(file_extention);
// console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- doc_id = ", doc_id);
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Stored_Downloaded_File_From_Id/" + part_cookie + "/" + doc_id;
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
axios.get(url, { responseType: 'blob', },)
.then((res) => {
fileDownload(res.data, nom_fichier_cmd)
}).catch((error) => {
console.error('Error:', error);
});
}
function preview_document_pdf(doc_id, file_extention, file_business_object) {
var part_cookie = getCookie('tokenmysypart');
var nom_fichier_cmd = String(file_business_object) + "." + String(file_extention);
// console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- doc_id = ", doc_id);
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Stored_Downloaded_File_From_Id/" + part_cookie + "/" + doc_id;
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
axios.get(url, { responseType: 'blob', },)
.then((res) => {
const blob = new Blob([res.data], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
setselected_doc_img(url);
// fileDownload(res.data, nom_fichier_cmd)
}).catch((error) => {
console.error('Error:', error);
});
}
const [Dialog_Preview_Doc_message, setDialog_Preview_Doc_message] = React.useState(false);
const [Dialog_Preview_Doc_open, setDialog_Preview_Doc_open] = React.useState(false);
function Dialog_Preview_Doc_handle_change_participant_session(message) {
setDialog_Preview_Doc_message(message);
setDialog_Preview_Doc_open(true);
}
const Dialog_Preview_Doc_handleClose = () => {
};
const Dialog_Preview_Doc_handleClose_buton = () => {
setDialog_Preview_Doc_open(false);
};
const [selected_doc_img, setselected_doc_img] = React.useState("");
const [selected_doc_name, setselected_doc_name] = React.useState("");
return (
<div className="modules_mes_documents">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{/*** Affichage des messages d'alerte*/}
{display_alert_mysy && String(display_alert_mysy) === "1" &&
<Module_Alert_Confirmation alert_message={alert_message}
alert_type={alert_type}
clear_alert_message={clear_alert_message}
clear_alert_type={clear_alert_type}
clear_display_alert_mysy={clear_display_alert_mysy}
/>
}
{/*** FIN Affichage des messages d'alerte*/}
{/***** Dialog Preview Image */}
<Dialog
open={Dialog_Preview_Doc_open}
// onClose={Dialog_Preview_Doc_handleClose}
static
onClose={() => null}
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
position: 'absolute',
top: '7rem',
margin: "2px",
width: '50rem',
maxWidth:'unset',
background:'#efefef',
borderRadius:'20px!important'
},
}}
hideBackdrop={true}
disableScrollLock
classes={{
paper: classes.dialog
}}
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans", paddingBottom:'5px' }} id="draggable-dialog-title" >{selected_doc_name}</DialogTitle>
<DialogContent>
<DialogContentText>
{Dialog_Preview_Doc_message}
</DialogContentText>
<div style={{ width: '100%', height: '45rem' }}> <br />
{selected_doc_img &&
<iframe src={selected_doc_img} style={{ height: '43rem', width: '96%' }}></iframe>}
</div>
</DialogContent>
<DialogActions>
<IconButton
// autoFocus
onClick={Dialog_Preview_Doc_handleClose_buton}
color="primary"
className={classes.customizedButton}
>
<CancelPresentationIcon />
</IconButton>
</DialogActions>
</Dialog>
{/***** FIN Dialog Preview Image */}
<div style={{ width: '100%', float: 'left', }}>
<div style={{ display: 'flex', flexDirection: 'row', gap: '20px', width: '100%', flexWrap: 'wrap',
justifyContent: 'center', padding:'15px', color:"#e0e0e0", overflow:'hidden' }}>
{props.list_document &&
props.list_document.map((document) => (
<div className="file-card">
<div className="file-icon"><GoFile style={{ fontSize: '30px', color: '#81bc3a' }} /> </div>
<div className="file-name" style={{minHeight:'3rem'}}>{JSON.parse(document).file_business_object}</div>
<div className="file-date">Créé le {String(JSON.parse(document).creation_date).substring(0, 16)}</div>
<div className="file-date" style={{ width: '40%', float: 'left', cursor: 'pointer' }} onClick={(e) => {
preview_document_pdf(JSON.parse(document)._id, JSON.parse(document).file_extention, JSON.parse(document).file_business_object);
setselected_doc_name(JSON.parse(document).file_business_object);
setDialog_Preview_Doc_open(true);
}}>
<VisibilityIcon style={{ color: 'white' }} />
</div>
<div className="file-date" style={{ width: '40%', float: 'right', cursor: 'pointer' }} onClick={(e) => {
print_document_pdf(JSON.parse(document)._id, JSON.parse(document).file_extention, JSON.parse(document).file_business_object);
setselected_doc_name(JSON.parse(document).file_business_object);
}}>
<ArrowCircleDownIcon style={{ color: 'white' }} />
</div>
</div>
))}
</div>
</div>
</div>
)
}
export default Document_ENT_Affichage_Grid;

View File

@ -327,6 +327,9 @@ const Ent_Student_Affichage_Ftion_Grid = (props) => {
},
};
return (
<div className="new_formation_2025">
@ -445,7 +448,13 @@ const Ent_Student_Affichage_Ftion_Grid = (props) => {
<font className='discount_block' style={{ fontSize: '14px' }}> ({props.formation.business_prices[0].discount} %) </font></p>
</p>}
<p className="formation_description"> {String(parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))).substring(0, 80)}...</p>
{props.session_code_session && <p className="formation_titre" style={{ textAlign: 'center' }}>
<nav style={{ marginBottom: '10px' }}> {String(parse(String(props.session_code_session).replace(/(<([^>]+)>)/ig, ''))).substring(0, 100)} </nav>
{props.session_date_debut && props.session_date_fin && <nav style={{ fontStyle: 'italic' }}> {props.session_date_debut} - {props.session_date_fin}</nav>}
</p>}
{/*<p className="formation_description"> {String(parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))).substring(0, 80)}...</p>*/}
</div>
</div>
@ -453,6 +462,10 @@ const Ent_Student_Affichage_Ftion_Grid = (props) => {
<button className="block_cats_bton_detail">
<nav className="block_cats_bton_detail_text"
onClick={(e) => {
props.selected_sessionid(props.session_id);
props.setselected_class_titre(props.formation_title);
props.setselected_session_date_debut(props.session_date_debut);
props.setselected_session_date_fin(props.session_date_fin);
e.preventDefault();
props.display_detail_from_grid(props.formationid, props.formation_id, props.session_id,
props.inscription_id, props.class_id)
@ -468,4 +481,5 @@ const Ent_Student_Affichage_Ftion_Grid = (props) => {
}
export default Ent_Student_Affichage_Ftion_Grid;
export default Ent_Student_Affichage_Ftion_Grid;

View File

@ -26,6 +26,8 @@ import InputAdornment from '@mui/material/InputAdornment';
import { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
import Box from '@mui/material/Box';
import Modules_ENT_Mes_Documents from "./Modules_ENT_Mes_Documents";
import { CiTrash } from "react-icons/ci";
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
import Dialog from '@mui/material/Dialog';
@ -138,7 +140,7 @@ const Module_Ent_Mes_Formations = (props) => {
return (
<nav>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop:'5px' }}>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop: '5px' }}>
{expanded ? value : value.slice(0, 50)}&nbsp;
{value.length > 50 && (
@ -154,7 +156,7 @@ const Module_Ent_Mes_Formations = (props) => {
)}
</div>}
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop:'5px' }}>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop: '5px' }}>
&nbsp;
</div>
}
@ -486,9 +488,14 @@ const Module_Ent_Mes_Formations = (props) => {
const [selected_session_id, setselected_session_id] = useState("");
const [selected_inscription_id, setselected_inscription_id] = useState("");
const [selected_class_titre, setselected_class_titre] = useState("");
const [selected_class_external_code, setselected_class_external_code] = useState("");
const [selected_code_session, setselected_code_session] = useState("");
const [selected_session_date_debut, setselected_session_date_debut] = useState("");
const [selected_session_date_fin, setselected_session_date_fin] = useState("");
const [Get_Given_Class_Data_api, setGet_Given_Class_Data_api] = useState();
const [Get_Given_Class_Data_message, setGet_Given_Class_Data_message] = useState();
@ -512,7 +519,7 @@ const Module_Ent_Mes_Formations = (props) => {
setGet_Given_Class_Data_result(res.data.message);
if (document.getElementById('myRef_detail')) {
var divh = document.getElementById('myRef_detail').offsetTop;
var divh = document.getElementById('myRef_detail').offsetTop - 300;
window.scrollTo({
top: divh,
behavior: "smooth",
@ -1615,6 +1622,17 @@ const Module_Ent_Mes_Formations = (props) => {
}
const [is_selected, setis_selected] = useState(false);
const [selecte_session_id, setselecte_session_id] = useState("");
function hilight_class() {
setis_selected(true);
}
function selected_sessionid(val) {
setselecte_session_id(val);
}
return (
<div className="module_ent_mes_formations" >
@ -1912,14 +1930,14 @@ const Module_Ent_Mes_Formations = (props) => {
}
},*/
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily:'DM Sans',
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily: 'DM Sans',
},
'& .line--statut--selected': {
backgroundColor: '#e9f7f1',
backgroundColor: '#e9f7f1',
color: '#0a2a4d',
},
'& .line--statut--pair': {
@ -1938,7 +1956,7 @@ const Module_Ent_Mes_Formations = (props) => {
}}
>
<DataGrid
// checkboxSelection
// checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setSelectionModel(newSelectionModel);
/*if (newSelectionModel.length === 1)
@ -1980,9 +1998,15 @@ const Module_Ent_Mes_Formations = (props) => {
setselected_session_id(newSelectionModel.row.associated_session_id);
setselected_inscription_id(newSelectionModel.row.associated_inscription_id);
setselected_class_titre(newSelectionModel.row.titre);
setselected_class_external_code(newSelectionModel.row.external_code);
setselected_code_session(newSelectionModel.row.session_code_session);
setselected_session_date_debut(newSelectionModel.row.session_date_debut);
setselected_session_date_fin(newSelectionModel.row.session_date_fin);
submenu_detail();
@ -2072,15 +2096,25 @@ const Module_Ent_Mes_Formations = (props) => {
<div className="block_display_flex_formation">
{New_Get_List_Ent_Formation_result && New_Get_List_Ent_Formation_result.map((formation) => (
<div className="block_formation" >
<div className={`block_formation ${formation.associated_session_id === selecte_session_id ? 'grid_selected' : ''}`} >
<Ent_Student_Affichage_Ftion_Grid formation={(formation)} key={(formation).title}
session_id={formation.associated_session_id}
inscription_id={formation.associated_inscription_id}
formation_id={formation._id}
formationid={formation.id}
formation_title={formation.title}
class_id={formation.class_id}
display_detail_from_grid={display_detail_from_grid}
session_code_session={formation.session_code_session}
session_date_debut={formation.session_date_debut}
session_date_fin={formation.session_date_fin}
hilight_class={hilight_class}
selected_sessionid={selected_sessionid}
setselected_class_titre={setselected_class_titre}
setselected_session_date_debut={setselected_session_date_debut}
setselected_session_date_fin={setselected_session_date_fin}
/>
</div>
))}
@ -2097,25 +2131,27 @@ const Module_Ent_Mes_Formations = (props) => {
<Button variant="outlined" onClick={submenu_detail} className="detail_class_submenu" id='detail' name='detail'>Détail</Button>
<Button variant="outlined" onClick={submenu_planning} className="detail_class_submenu" id='planning' name='planning'>Planning </Button>
<Button variant="outlined" onClick={submenu_notes} className="detail_class_submenu" id='notes' name='notes'>Notes </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_piece_jointe} className="detail_class_submenu" id='piece_jointe' name='contrat'>Documents </Button>
</div>
}
{selected_id && String(selected_id).length > 0 && <div className="div_row">
<nav style={{ textAlign: 'center', padding: '10px', fontFamily: 'DM Sans' }}> Formation &nbsp; &nbsp; : <b>{selected_class_external_code} - {selected_code_session} </b> &nbsp; </nav>
<nav style={{ textAlign: 'center', padding: '10px', fontFamily: 'DM Sans', color: "#16274F" }}> <b>{selected_class_titre} <br />
<font style={{ fontWeight: '500' }}>
{selected_code_session} : {selected_session_date_debut} au {selected_session_date_fin} </font> </b> &nbsp; </nav>
</div>}
{
String(submenu) === "detail" && Get_Given_Class_Data_result && Get_Given_Class_Data_result.length > 0 && <div className="div_row" >
<div className="block_central" >
<div className="block_central_gauche" style={{backgroundColor:'white', fontFamily:'DM Sans'}}>
<div className="block_central_gauche" style={{ backgroundColor: 'white', fontFamily: 'DM Sans' }}>
<br />
<div className="block_info_page_pave_title_desc" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
<div className="block_info_page_pave_title_desc_title" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}> Description
<div className="block_info_page_pave_title_desc" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}>
<div className="block_info_page_pave_title_desc_title" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}> Description
</div>
{JSON.parse(Get_Given_Class_Data_result).description && <div className="block_info_page_pave_title_desc description_block" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
{JSON.parse(Get_Given_Class_Data_result).description && <div className="block_info_page_pave_title_desc description_block" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}>
{parse(String(JSON.parse(Get_Given_Class_Data_result).description))}
</div>
@ -2124,10 +2160,10 @@ const Module_Ent_Mes_Formations = (props) => {
<br />
<br />
<div className="block_info_page_pave_title_desc" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
<div className="block_info_page_pave_title_desc_title" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}> Objectif
<div className="block_info_page_pave_title_desc" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}>
<div className="block_info_page_pave_title_desc_title" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}> Objectif
</div>
{JSON.parse(Get_Given_Class_Data_result).objectif && <div className="block_info_page_pave_title_desc description_block" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
{JSON.parse(Get_Given_Class_Data_result).objectif && <div className="block_info_page_pave_title_desc description_block" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}>
{parse(String(JSON.parse(Get_Given_Class_Data_result).objectif))}
</div>}
@ -2135,10 +2171,10 @@ const Module_Ent_Mes_Formations = (props) => {
</div>
<br />
<div className="block_info_page_pave_title_desc" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
<div className="block_info_page_pave_title_desc_title" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}> Programme
<div className="block_info_page_pave_title_desc" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}>
<div className="block_info_page_pave_title_desc_title" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}> Programme
</div>
{JSON.parse(Get_Given_Class_Data_result).objectif && <div className="block_info_page_pave_title_desc description_block" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
{JSON.parse(Get_Given_Class_Data_result).objectif && <div className="block_info_page_pave_title_desc description_block" style={{ backgroundColor: '#f2f3f3', fontFamily: 'DM Sans' }}>
{parse(String(JSON.parse(Get_Given_Class_Data_result).programme))}
</div>}
@ -2225,10 +2261,10 @@ const Module_Ent_Mes_Formations = (props) => {
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily:'DM Sans',
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily: 'DM Sans',
},
@ -2354,42 +2390,127 @@ const Module_Ent_Mes_Formations = (props) => {
</div>
}
{String(submenu) === "piece_jointe" && Get_Given_Class_Data_result && Get_Given_Class_Data_result.length > 0 && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
{String(submenu) === "piece_jointe" && Get_Given_Class_Data_result && Get_Given_Class_Data_result.length > 0 &&
<div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<div>
<div className="div_row" style={{ "border": "None" }}>
<hr className="hr_break" />
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes
</div>
{Get_List_Of_All_PJ_result && <div className="div_row" style={{ "padding": "5px" }}>
<div className="div_row">
Liste des pièces jointes <br />
<div className="div_row">
{Get_List_Of_All_PJ_result && Get_List_Of_All_PJ_result.map((val) => (
<div className="div_row_list_pj" style={{ fontFamily: "DM Sans", fontSize: '14px' }}>
<nav style={{ "color": "green", "cursor": "pointer" }} onClick={Download_one_attached_document} name={(JSON.parse(val).file_name)} id={(JSON.parse(val).file_name)}> Télécharger &nbsp;<i> {(JSON.parse(val).file_business_object)}</i> </nav> <br />
</div>
))}
</div>
</div>
</div>}
</div>
</div>}
<Modules_ENT_Mes_Documents
apprenant_id={props.apprenant_id}
class_id={selected_id}
/>
</div>}
<style>{local_css}</style>
</div >
);
}
export default Module_Ent_Mes_Formations;
export default Module_Ent_Mes_Formations;
const local_css = `
:root {
--bg: #f6f8fb;
--card: #ffffff;
--text: #0f172a;
--muted: #64748b;
--border: #e5e7eb;
--shadow: 0 10px 25px rgba(2, 6, 23, .06);
--green-700: #0f6b53;
--green-600: #167a5e;
--green-100: #e9f7f1;
--blue-600: #2563eb;
--radius: 14px;
--radius-sm: 10px;
}
.grid_selected{
box-shadow: #9cf 0px 0px 0px 2px, rgba(6, 24, 44, 0.65) 0px 4px 6px -1px, #c14413 0px 1px 0px inset ! important;
}
.block_info_page_pave_title_desc{
color: #16274F ! important
}
.Grid_2_col{
margin-top: 12px;
display:grid;
grid-template-columns: 1.2fr 1fr;
gap: 14px;
padding:5px;
}
.Grid_1_col{
margin-top: 12px;
display:grid;
grid-template-columns: 1fr;
gap: 14px;
padding:5px;
}
.Grid_2_col_sub_colone {
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 14px;
box-shadow: 0 6px 18px rgba(2,6,23,.04);
padding: 0px;
display: flex;
flex-direction: column;
gap: 14px;
}
.Grid_2_col_sub_colone_header {
background: #dbeafe;
border-top-right-radius: 10px;
border-top-left-radius: 10px;
text-align: center;
font-family: DM Sans;
font-weight: 700;
height: 2rem;
padding-top: 5px;
font-size: 15px;
}
.Grid_2_col_sub_colone_bottom_menu{
}
.card__header{
background: #e2e8f0;
font-size: small;
text-align: center;
}
.card__title{
display:flex;
align-items:center;
gap: 10px;
}
.card__icon{
width: 34px;
height: 34px;
display:grid;
place-items:center;
border-radius: 12px;
background:#eff6ff;
border:1px solid #dbeafe;
}
.card__header h2{
margin:0;
font-size: 15px;
letter-spacing: -0.01em;
}
.card__actions{ display:flex; align-items:center; gap:8px; }
.block_detail_action{
width: 100%;
float: left;
background: #fafafa;
padding: 10px;
border: unset;
border-radius: 10px;
}
`;

View File

@ -94,7 +94,7 @@ const Module_Ent_Mes_Notes = (props) => {
return (
<nav>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop:'5px' }}>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop: '5px' }}>
{expanded ? value : value.slice(0, 50)}&nbsp;
{value.length > 50 && (
@ -110,7 +110,7 @@ const Module_Ent_Mes_Notes = (props) => {
)}
</div>}
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop:'5px' }}>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop: '5px' }}>
&nbsp;
</div>
}
@ -339,7 +339,7 @@ const Module_Ent_Mes_Notes = (props) => {
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{/*** Affichage des messages d'alerte*/}
{display_alert_mysy && String(display_alert_mysy) === "1" &&
@ -353,169 +353,9 @@ const Module_Ent_Mes_Notes = (props) => {
{/*** FIN Affichage des messages d'alerte*/}
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Notes </h3>
{/*} <div>
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter" >
<TextField
name="filtre1"
label="Choisir un champ"
select
sx={{ m: 1, width: '100%' }}
value={p_filtre1}
onChange={(e) => {
setp_filtre1(e.target.value)
}}
>
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email &nbsp;&nbsp;</MenuItem>
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom &nbsp;</MenuItem>
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom &nbsp;</MenuItem>
</TextField>
</div>
<div className="div_row_droite texte_area_filter_value" >
{p_filtre1 &&
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="filtre1_value"
id="filtre1_value"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_filtre1_value}
onChange={(e) => { setp_filtre1_value(e.target.value); }}
InputProps={{
endAdornment: (
<InputAdornment position="end">
<AiFillCloseCircle
style={{ 'cursor': "pointer", "color": "orangered" }}
onClick={(e) => {
setp_filtre1_value("");
}} />
</InputAdornment>
),
}}
/>
}
</div>
{p_filtre1 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip01" data-tooltip-html="Ajouter une nouvelle ligne de filtre">
&nbsp; <MdAddCircleOutline onClick={(e) => {
setp_filtre2("1");
}} />
</a>
</div>}
{p_filtre1 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip02" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip02" data-tooltip-html="Supprimer cette ligne de filtre">
&nbsp; <MdRemoveCircleOutline onClick={(e) => {
setp_filtre1();
setp_filtre1_value();
}}
/>
</a>
</div>}
</div>
{p_filtre2 &&
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter">
<TextField
name="filtre2"
label="Choisir un champ"
select
sx={{ m: 1, width: '100%' }}
options={filters}
value={p_filtre2}
onChange={(e) => {
setp_filtre2(e.target.value)
}}
>
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email &nbsp;&nbsp;</MenuItem>
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom &nbsp;</MenuItem>
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom &nbsp;</MenuItem>
</TextField>
</div>
<div className="div_row_droite texte_area_filter" >
{String(p_filtre2).length > 3 &&
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="filtre2_value"
id="filtre2_value"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_filtre2_value}
onChange={(e) => setp_filtre2_value(e.target.value)}
InputProps={{
endAdornment: (
<InputAdornment position="end">
<AiFillCloseCircle
style={{ 'cursor': "pointer", "color": "orangered" }}
onClick={(e) => {
setp_filtre2_value("");
}} />
</InputAdornment>
),
}}
/>}
</div>
{String(p_filtre2).length > 3 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip04" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip04" data-tooltip-html="Supprimer cette ligne de filtre">
&nbsp; <MdRemoveCircleOutline
onClick={(e) => {
setp_filtre2();
setp_filtre2_value();
}}
/>
</a>
</div>}
</div>
}
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_enreg" onClick={"Get_All_Apprenant"}>Rechercher
</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_annule" onClick={"clean_all_filters"}>Annuler
</Button>
</div>
</div>}
</div>
<br />*/}
<div className="session_caract_Dialog"> <b> Choisir une Session ou une Promotion </b><br />
<h3 style={{ fontFamily: 'DM Sans', fontSize: '20px', color: "#16274F", textAlign: 'center' }}> Mes Notes </h3>
<div className="session_caract_Dialog" style={{fontSize:'16px'}}> <b> Choisir une Promotion </b><br />
{New_Get_List_Ent_Session_Promotion_result && New_Get_List_Ent_Session_Promotion_result.length > 0 &&
<Autocomplete
disablePortal
@ -551,156 +391,166 @@ const Module_Ent_Mes_Notes = (props) => {
</div>
<br />
{<div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
{selected_session_id && selected_session_id.length > 5 &&
Get_All_Notes_Of_Evaluations_result && Get_All_Notes_Of_Evaluations_result.length > 0 &&
<div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<nav style={{ "border": "None", "fontSize": "20px", "paddingTop": "5px", "paddingLeft": "5px", fontFamily: 'DM Sans' }}> Les notes </nav>
{/*<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" onClick={(event) => {
// Export_Inscrit_Notes();
}}>Export excel</Button>
</div>*/}
<div className="div_row">
&nbsp;
</div>
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" onClick={(event) => {
// Export_Inscrit_Notes();
}}>Export excel</Button>
</div>
<div className="session_data">
<div style={{ "border": "None", paddingRight: '10px' }}>
<div className="session_data">
<div style={{ "border": "None", paddingRight: '10px' }}>
{Get_All_Notes_Of_Evaluations_result && Get_All_Notes_Of_Evaluations_result.length > 0 && <div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
{Get_All_Notes_Of_Evaluations_result && Get_All_Notes_Of_Evaluations_result.length > 0 && <div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily:'DM Sans',
},
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily: 'DM Sans',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: '#0a2a4d',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: '#0a2a4d',
},
'& .line--statut--selected': {
backgroundColor: '#e9f7f1',
color: '#0a2a4d',
},
}}
>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setselectionModel_notes(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_session_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
}
}}
selectionModel={selectionModel_notes}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={Get_All_Notes_Of_Evaluations_result.map((item, index) => (
{
id: index,
_id: JSON.parse(item)._id,
evaluation_id: JSON.parse(item).evaluation_id,
inscription_id: JSON.parse(item).inscription_id,
note_evaluation_id: JSON.parse(item).note_evaluation_id,
class_eu_id: JSON.parse(item).class_eu_id,
type_eval_id: JSON.parse(item).type_eval_id,
class_ue_code: JSON.parse(item).class_ue_code,
class_ue_titre: JSON.parse(item).class_ue_titre,
note_evaluation_code: JSON.parse(item).note_evaluation_code,
eval_date_heure_debut: JSON.parse(item).eval_date_heure_debut,
eval_date_heure_fin: JSON.parse(item).eval_date_heure_fin,
note: JSON.parse(item).note,
}
))}
columns={columns_notes}
pageSize={10}
className="datagridclass"
onRowDoubleClick={(newSelectionModel) => {
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: '#0a2a4d',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: '#0a2a4d',
},
'& .line--statut--selected': {
backgroundColor: '#e9f7f1',
color: '#0a2a4d',
},
}}
>
<DataGrid
checkboxSelection
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
//sx={datagridSx}
getCellClassName={(params) => {
//field === 'distantiel'
if (params.field === 'distantiel' && String(params.value) === "1") {
return 'cell--distantiel';
}
if (params.field === "presentiel" && String(params.value) == "1") {
return 'cell--presentiel';
}
onSelectionModelChange={(newSelectionModel) => {
setselectionModel_notes(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_session_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
}
}}
selectionModel={selectionModel_notes}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={Get_All_Notes_Of_Evaluations_result.map((item, index) => (
{
id: index,
_id: JSON.parse(item)._id,
evaluation_id: JSON.parse(item).evaluation_id,
inscription_id: JSON.parse(item).inscription_id,
note_evaluation_id: JSON.parse(item).note_evaluation_id,
class_eu_id: JSON.parse(item).class_eu_id,
type_eval_id: JSON.parse(item).type_eval_id,
class_ue_code: JSON.parse(item).class_ue_code,
class_ue_titre: JSON.parse(item).class_ue_titre,
note_evaluation_code: JSON.parse(item).note_evaluation_code,
eval_date_heure_debut: JSON.parse(item).eval_date_heure_debut,
eval_date_heure_fin: JSON.parse(item).eval_date_heure_fin,
note: JSON.parse(item).note,
}
))}
columns={columns_notes}
pageSize={10}
className="datagridclass"
onRowDoubleClick={(newSelectionModel) => {
}}
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
//sx={datagridSx}
getCellClassName={(params) => {
//field === 'distantiel'
if (params.field === 'distantiel' && String(params.value) === "1") {
return 'cell--distantiel';
}
if (params.field === "presentiel" && String(params.value) == "1") {
return 'cell--presentiel';
}
//field === "statut"
if (params.field === "status" && String(params.value) == "0") {
return 'cell--statut--preinscrit';
}
//field === "statut"
if (params.field === "status" && String(params.value) == "0") {
return 'cell--statut--preinscrit';
}
if (params.field === "status" && String(params.value) == "1") {
return 'cell--statut--inscrit';
}
if (params.field === "status" && String(params.value) == "1") {
return 'cell--statut--inscrit';
}
if (params.field === "status" && String(params.value) == "-1") {
return 'cell--statut--annule';
}
if (params.field === "status" && String(params.value) == "-1") {
return 'cell--statut--annule';
}
}}
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_id)) {
}}
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_id)) {
return 'line--statut--selected';
}
return 'line--statut--selected';
}
else 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';
}
else 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"}
}}
getEstimatedRowHeight={() => 200}
getRowHeight={() => "auto"}
/>
</Box>
<br />
/>
</Box>
<br />
</div>}
</div>}
</div>
</div>
</div>
</div>}
</div>}
{selected_session_id && selected_session_id.length > 5 &&
Get_All_Notes_Of_Evaluations_result && Get_All_Notes_Of_Evaluations_result.length <= 0 &&
<div style={{color:'darkorange', marginTop:'5rem', fontFamily:'DM Sans', fontSize:'20px'}}>
Aucune note n'a été publiée pour le moment.
</div>}
</div >
);

View File

@ -111,7 +111,7 @@ const useStyles = makeStyles((theme) => ({
color: 'gray',
},
}));
const Module_Ent_Mon_Planning = (props) => {
registerLocale('fr', fr);
const classes = useStyles();
@ -227,7 +227,7 @@ const Module_Ent_Mon_Planning = (props) => {
return (
<nav>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop:'5px' }}>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop: '5px' }}>
{expanded ? value : value.slice(0, 50)}&nbsp;
{value.length > 50 && (
@ -243,7 +243,7 @@ const Module_Ent_Mon_Planning = (props) => {
)}
</div>}
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop:'5px' }}>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop: '5px' }}>
&nbsp;
</div>
}
@ -918,173 +918,14 @@ const Module_Ent_Mon_Planning = (props) => {
{/*** fin dialogue pr agenda */}
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Plannings </h3>
{/*<div>
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter" >
<TextField
name="filtre1"
label="Choisir un champ"
select
sx={{ m: 1, width: '100%' }}
value={p_filtre1}
onChange={(e) => {
setp_filtre1(e.target.value)
}}
>
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email &nbsp;&nbsp;</MenuItem>
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom &nbsp;</MenuItem>
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom &nbsp;</MenuItem>
</TextField>
</div>
<h3 style={{ fontFamily: 'DM Sans', fontSize: '20px', color: "#16274F", textAlign: 'center' }}> Mes Plannings </h3>
<div className="div_row_droite texte_area_filter_value" >
{p_filtre1 &&
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="filtre1_value"
id="filtre1_value"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_filtre1_value}
onChange={(e) => { setp_filtre1_value(e.target.value); }}
InputProps={{
endAdornment: (
<InputAdornment position="end">
<AiFillCloseCircle
style={{ 'cursor': "pointer", "color": "orangered" }}
onClick={(e) => {
setp_filtre1_value("");
}} />
</InputAdornment>
),
}}
/>
}
</div>
{p_filtre1 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip01" data-tooltip-html="Ajouter une nouvelle ligne de filtre">
&nbsp; <MdAddCircleOutline onClick={(e) => {
setp_filtre2("1");
}} />
</a>
</div>}
{p_filtre1 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip02" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip02" data-tooltip-html="Supprimer cette ligne de filtre">
&nbsp; <MdRemoveCircleOutline onClick={(e) => {
setp_filtre1();
setp_filtre1_value();
}}
/>
</a>
</div>}
</div>
{p_filtre2 &&
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter">
<TextField
name="filtre2"
label="Choisir un champ"
select
sx={{ m: 1, width: '100%' }}
options={filters}
value={p_filtre2}
onChange={(e) => {
setp_filtre2(e.target.value)
}}
>
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email &nbsp;&nbsp;</MenuItem>
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom &nbsp;</MenuItem>
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom &nbsp;</MenuItem>
</TextField>
</div>
<div className="div_row_droite texte_area_filter" >
{String(p_filtre2).length > 3 &&
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="filtre2_value"
id="filtre2_value"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_filtre2_value}
onChange={(e) => setp_filtre2_value(e.target.value)}
InputProps={{
endAdornment: (
<InputAdornment position="end">
<AiFillCloseCircle
style={{ 'cursor': "pointer", "color": "orangered" }}
onClick={(e) => {
setp_filtre2_value("");
}} />
</InputAdornment>
),
}}
/>}
</div>
{String(p_filtre2).length > 3 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip04" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip04" data-tooltip-html="Supprimer cette ligne de filtre">
&nbsp; <MdRemoveCircleOutline
onClick={(e) => {
setp_filtre2();
setp_filtre2_value();
}}
/>
</a>
</div>}
</div>
}
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_enreg" onClick={"Get_All_Apprenant"}>Rechercher
</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_annule" onClick={"clean_all_filters"}>Annuler
</Button>
</div>
</div>}
</div>*/}
<br />
<div className="session_caract_Dialog"> <b> Choisir une Session ou une Promotion </b><br />
<div className="session_caract_Dialog" style={{ fontSize: '16px' }}> <b> Choisir une Promotion </b><br />
{New_Get_List_Ent_Session_Promotion_result && New_Get_List_Ent_Session_Promotion_result.length > 0 &&
<Autocomplete
disablePortal
@ -1097,10 +938,10 @@ const Module_Ent_Mon_Planning = (props) => {
onChange={(event, value) => {
if (value && value.session_id) {
setselected_session_id(value.session_id);
Getall_Sequence_Of_Session(value.session_id);
Getall_Sequence_Of_Session(value.session_id);
} else {
setselected_session_id("");
Getall_Sequence_Of_Session("");
Getall_Sequence_Of_Session("");
}
}}
@ -1115,46 +956,52 @@ const Module_Ent_Mon_Planning = (props) => {
</div>
{Getall_Sequence_Of_Session_result_planning_view && Getall_Sequence_Of_Session_result_planning_view.length > 0 && <div className="div_row">
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Planning </nav>
<div className="div_row" style={{ "border": "None" }}></div>
&nbsp;
{selected_session_id && selected_session_id.length > 5 &&
Getall_Sequence_Of_Session_result_planning_view && Getall_Sequence_Of_Session_result_planning_view.length > 0 && <div className="div_row">
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Planning </nav>
<div className="div_row" style={{ "border": "None" }}></div>
&nbsp;
<div style={{ "width": "98%", "marginLeft": "5px", }}>
<FullCalendar
height={550}
locales={allLocales}
locale={'fr'}
editable
selectable
//events={events}
events={Getall_Sequence_Of_Session_result_planning_view}
<div style={{ "width": "98%", "marginLeft": "5px", fontSize:'16px', fontFamily:'DM Sans', color: "#16274F" }}>
<FullCalendar
height={550}
locales={allLocales}
locale={'fr'}
editable
selectable
//events={events}
events={Getall_Sequence_Of_Session_result_planning_view}
select={handleSelect}
headerToolbar={{
start: "today prev next",
center: "title",
end: "dayGridMonth,timeGridWeek,timeGridDay",
}}
//eventContent={(info) => <EventItem info={info} />}
//plugins={[timeGridPlugin]}
plugins={[timeGridPlugin, daygridPlugin, interactionPlugin]}
views={["dayGridMonth", "dayGridWeek", "dayGridDay"]}
slotMinTime={Partner_Debut_Journee}
slotMaxTime={Partner_Fin_Journee}
scrollTime='08:00'
displayEventEnd={true}
eventContent={renderEventContent}
eventClick={handleEventClick}
select={handleSelect}
headerToolbar={{
start: "today prev next",
center: "title",
end: "dayGridMonth,timeGridWeek,timeGridDay",
}}
//eventContent={(info) => <EventItem info={info} />}
//plugins={[timeGridPlugin]}
plugins={[timeGridPlugin, daygridPlugin, interactionPlugin]}
views={["dayGridMonth", "dayGridWeek", "dayGridDay"]}
slotMinTime={Partner_Debut_Journee}
slotMaxTime={Partner_Fin_Journee}
scrollTime='08:00'
displayEventEnd={true}
eventContent={renderEventContent}
eventClick={handleEventClick}
/>
/>
</div>
</div>
</div>
}
{selected_session_id && selected_session_id.length > 5 &&
Getall_Sequence_Of_Session_result_planning_view && Getall_Sequence_Of_Session_result_planning_view.length <= 0 &&
<div style={{color:'darkorange', marginTop:'5rem', fontFamily:'DM Sans', fontSize:'20px'}}>
Aucun planning n'est disponible pour le moment.
</div>}
</div >
);

View File

@ -2231,11 +2231,10 @@ const Module_Session_Notes_Classement = (props) => {
var tab_eu_ids = [];
for (var i = 0; i < tab_selected_list_ue.length; i++) {
var local_eu_id = tab_selected_list_ue[i]._id;
tab_eu_ids.push(local_eu_id);
}
var liste_apprenant = GetSelectedRowsSession();
var form = new FormData();

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ import { useLocation } from "react-router-dom";
import { FaHandPointRight } from "react-icons/fa";
import Intranet_Factures_Client from "./Intranet_Factures_Client";
import Intranet_Tous_Documents from "./Intranet_Tous_Documents";
import Modules_Mes_Documents from "./Modules_Mes_Documents";
import Modules_ENT_Mes_Documents from "./Modules_ENT_Mes_Documents";
import Intranet_Mes_Stagiaires from "./Intranet_Mes_Stagiaires";
import Module_Ent_Mes_Documents from "./Module_Ent_Mes_Documents";
import Module_Ent_Mon_Planning from "./Module_Ent_Mon_Planning";
@ -78,6 +78,7 @@ function Student_Account_Ent() {
history.push("/ent_student");
}
Get_Ent_Message_Alert();
async function fetchData() {
const result = await axios('https://geolocation-db.com/json/',);
@ -106,9 +107,7 @@ function Student_Account_Ent() {
setfirstConnexion(location.state.firstconnexion);
}
Get_Ent_Message_Alert();
console.log(" ## setconnected_user_data = ", connected_user_data)
}, []);
@ -511,129 +510,139 @@ function Student_Account_Ent() {
</div>}
{connected_user_data && connected_user_data.type &&
<h3 style={{ fontFamily: 'DM Sans', textAlign: 'left', paddingLeft:'15px' }}> Espace numérique de travail
</h3>}
<div style={{ width: '100%', maxWidth: '1600px', margin: 'auto', marginTop: '3rem' }}>
<h3 style={{ fontFamily: 'DM Sans', textAlign: 'center', paddingLeft: '15px' }}> Espace numérique de travail {connected_user_data.prenom && connected_user_data.nom && <font> {connected_user_data.prenom.charAt(0).toUpperCase() + connected_user_data.prenom.slice(1).toLocaleLowerCase()} &nbsp;{connected_user_data.nom.toUpperCase()} </font>}
</h3>
</div>}
{/*** Si on A DES MESSAGES d'ALERTE, alors, alors on AFFICHE la zonne */}
{connected_user_data && connected_user_data._id && New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 && <div style={{ width: "100%", float: 'left' }}>
<div style={{ width: '30%', float: 'left', padding: '20px' }}>
{New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 &&
New_Get_Ent_Message_Alert_result.map((message) => (
<Stack sx={{ width: '100%', }} spacing={2}>
{message.priorite === "1" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px' }} severity="warning">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Important </AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
<div style={{ width: '100%', maxWidth: '1600px', margin: 'auto' }}>
{/*** Si on A DES MESSAGES d'ALERTE, alors, alors on AFFICHE la zonne */}
{connected_user_data && connected_user_data._id && New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 && <div style={{ width: "100%", float: 'left' }}>
<div style={{ width: '100%', float: 'left', padding: '20px' }}>
{New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 &&
New_Get_Ent_Message_Alert_result.map((message) => (
<Stack sx={{ width: '100%', }} spacing={2}>
{message.priorite === "1" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px' }} severity="warning">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Important </AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
{message.priorite === "2" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px' }} severity="info">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Information</AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
{message.priorite === "2" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px' }} severity="info">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Information</AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
{message.priorite === "0" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px', }} severity="error">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Urgent </AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
</Stack>
))}
{message.priorite === "0" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px', }} severity="error">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Urgent </AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
</Stack>
))}
</div>
</div>
<div style={{ width: '69%', float: 'right' }}>
<div style={{ width: '100%', float: 'left' }}>
{String(menu) === String("apprenant_account_data") && <UpdateUserInfo apprenant_id={apprenant_id} />}
{String(menu) === String("apprenant_account_data") &&
<UpdateUserInfo apprenant_id={apprenant_id} />}
{String(menu) === String("recherche") && <UserHistoryRecherche />}
{String(menu) === String("recherche") &&
<UserHistoryRecherche />}
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
{String(menu) === String("upgradecompte") &&
<UpgradeToPro />}
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
{String(menu) === String("profil_objectif") &&
<Profil_Objectif />}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
/>}
{String(menu) === String("mon_planning") &&
<Module_Ent_Mon_Planning apprenant_id={apprenant_id}
/>}
{String(menu) === String("mon_planning") &&
<Module_Ent_Mon_Planning apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_notes") &&
<Module_Ent_Mes_Notes apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_notes") &&
<Module_Ent_Mes_Notes apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_documents") &&
<Modules_Mes_Documents apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_documents") &&
<Modules_ENT_Mes_Documents apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_emails") &&
<Module_Ent_Internal_Email_Management
{String(menu) === String("mes_emails") &&
<Module_Ent_Internal_Email_Management
formation_initiale={"1"}
apprenant_id={apprenant_id}
conntected_account_id={connected_user_data._id}
/>
}
formation_initiale={"1"}
apprenant_id={apprenant_id}
conntected_account_id={connected_user_data._id}
/>
}
</div>
</div>
</div>}
</div>}
{/*** Si on A DES PASSSSS MESSAGES d'ALERTE, alors, alors on NNNNN'AFFICHE PASSSSSSSSSSSSla zonne */}
{connected_user_data && connected_user_data._id && New_Get_Ent_Message_Alert_result.length <= 0 && <div style={{ width: "100%", float: 'left' }}>
{/*** Si on A DES PASSSSS MESSAGES d'ALERTE, alors, alors on NNNNN'AFFICHE PASSSSSSSSSSSSla zonne */}
{connected_user_data && connected_user_data._id && New_Get_Ent_Message_Alert_result.length <= 0 && <div style={{ width: "100%", float: 'left' }}>
<div style={{ width: '100%', maxWidth: '1600px', margin: 'auto' }}>
<div style={{ width: '100%', maxWidth: '1600px', margin: 'auto' }}>
{String(menu) === String("apprenant_account_data") && <UpdateUserInfo apprenant_id={apprenant_id} />}
{String(menu) === String("apprenant_account_data") && <UpdateUserInfo apprenant_id={apprenant_id} />}
{String(menu) === String("recherche") && <UserHistoryRecherche />}
{String(menu) === String("recherche") && <UserHistoryRecherche />}
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
/>}
{String(menu) === String("mon_planning") &&
<Module_Ent_Mon_Planning apprenant_id={apprenant_id}
/>}
{String(menu) === String("mon_planning") &&
<Module_Ent_Mon_Planning apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_notes") &&
<Module_Ent_Mes_Notes apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_notes") &&
<Module_Ent_Mes_Notes apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_documents") &&
<Modules_Mes_Documents apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_documents") &&
<Modules_ENT_Mes_Documents apprenant_id={apprenant_id}
type_user_connected={"user_account"}
/>}
{String(menu) === String("mes_emails") &&
{String(menu) === String("mes_emails") &&
<Module_Ent_Internal_Email_Management
<Module_Ent_Internal_Email_Management
formation_initiale={"1"}
apprenant_id={apprenant_id}
conntected_account_id={connected_user_data._id}
/>
formation_initiale={"1"}
apprenant_id={apprenant_id}
conntected_account_id={connected_user_data._id}
/>
}
}
</div>
</div>
</div>}
</div>}
</div>
</div>
</div>