03/05/2025 - 20h

recette2
cherif 2025-05-03 19:34:05 +02:00
parent cc205abb96
commit d6f3869c16
13 changed files with 3964 additions and 74 deletions

View File

@ -33,7 +33,7 @@ import Box from '@mui/material/Box';
import { Typography, LinearProgress } from '@mui/material';
import styled from 'styled-components';
import { CiTrash } from "react-icons/ci";
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
@ -42,9 +42,10 @@ import DialogTitle from '@mui/material/DialogTitle';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import { Fab } from "@material-ui/core";
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
import { AiTwotoneSave } from "react-icons/ai";
import { AiTwotoneSave } from "react-icons/ai";
import ToggleSwitch from "./ToggleSwitch";
import Module_Historique_Action from "./Module_Historique_Action";
import Module_Session_Notes_Classement from "./Module_Session_Notes_Classement";
import Autocomplete from '@mui/material/Autocomplete';
import { FcOpenedFolder } from "react-icons/fc";
@ -3535,7 +3536,7 @@ const DisplayPartnerSession = (props) => {
async function submenu_evaluation_session() {
setsubmenu("evaluation_session");
submenu_color_management("evaluation_session");
}
@ -3564,11 +3565,21 @@ const DisplayPartnerSession = (props) => {
}
async function submenu_notes_classement() {
setsubmenu("notes_classement");
submenu_color_management("notes_classement");
// await sleep(5);
if (!edit_session_form) {
desableSessionFields();
}
}
function submenu_color_management(current_menu) {
const list_sous_menu = ["historique", "attestation", "evaluation", "editique", "emargement", "sequence_session", "detail_session", "inscrit",
"preinscrit", "emargement", "piece_jointe", "q_positionnement", "planification_session", "evaluation_session"]
"preinscrit", "emargement", "piece_jointe", "q_positionnement", "planification_session", "evaluation_session", "notes_classement"]
for (let i = 0; i < list_sous_menu.length; i++) {
@ -3831,12 +3842,12 @@ const DisplayPartnerSession = (props) => {
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Sequence_Of_Session res.data.status = " + res.data.status);
//console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
// console.log(" In Getall_Sequence_Of_Session res.data.nb_sequence r_class = " + res.data.nb_sequence);
// console.log(" In Getall_Sequence_Of_Session res.data.nb_sequence r_class = " + res.data.nb_sequence);
setGetall_Sequence_Of_Session_api("true");
setGetall_Sequence_Of_Session_result(res.data.message);
setnb_sequence(res.data.nb_sequence);
// console.log(" ##NB_Sequence iii = ", res.data.nb_sequence);
// console.log(" ##NB_Sequence iii = ", res.data.nb_sequence);
var new_data2 = [];
@ -18083,7 +18094,7 @@ const DisplayPartnerSession = (props) => {
{/* FIN Dialog pour gerer les FACTURATION_FORMATION */}
<h3 style={{ fontFamily:'DM Sans' }}> Mes sessions de formation </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Mes sessions de formation </h3>
<div>
<div className="titre1"> Utilisez les filtres !</div>
@ -20221,6 +20232,9 @@ const DisplayPartnerSession = (props) => {
<Button variant="outlined" ref={myRef} onClick={submenu_evaluation_session} className="detail_class_submenu" id='evaluation_session' name='evaluation_session'> Evaluation</Button>
<Button variant="outlined" onClick={submenu_piece_jointe} className="detail_class_submenu" id='piece_jointe' name='piece_jointe'>Pièces Jointes </Button>
{String(props.formation_initiale) === "1" && <Button variant="outlined" onClick={submenu_notes_classement} className="detail_class_submenu" id='notes_classement' name='notes_classement'>Notes & Classem.</Button>}
{String(history_securite_read) === "1" && <Button variant="outlined" onClick={submenu_historique} className="detail_class_submenu" id='historique' name='historique'>Historique </Button>}
@ -22356,7 +22370,7 @@ const DisplayPartnerSession = (props) => {
{display_view && String(display_view) === "planning" && Getall_Sequence_Of_Session_result_planning_view &&
<div style={{ "border": "None" }}>
<h3 style={{ fontFamily:'DM Sans' }}> Affichage planning </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Affichage planning </h3>
&nbsp;
<div style={{ "width": "98%", "marginLeft": "5px", }}>
@ -26044,8 +26058,8 @@ const DisplayPartnerSession = (props) => {
<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"))}
SessionendDate={new Date(moment(SessionendDate, "DD/MM/YYYY"))} selected_session_invoiced_statut={selected_session_invoiced_statut}
session_class_id={session_selected_class_id}
/>
session_class_id={session_selected_class_id}
/>
</div>}
@ -26060,6 +26074,16 @@ const DisplayPartnerSession = (props) => {
</div>}
{String(submenu) === String("notes_classement") && <div style={{ "border": "None" }}>
<Module_Session_Notes_Classement 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"))}
SessionendDate={new Date(moment(SessionendDate, "DD/MM/YYYY"))} session_formateur_id={p_formateur_id}
session_class_id={session_selected_class_id}
selected_session_invoiced_statut={selected_session_invoiced_statut} />
</div>}
</div>

View File

@ -5446,9 +5446,9 @@ const DisplayPartnerStagiaires = (props) => {
setliste_selected_inscription_id(liste_session);
setselectedtraining_emails(liste_session);
// console.log(" liste_session = ", liste_session);
// console.log(" liste_session = ", liste_session);
// console.log(" actionmass_ftion_val = ", actionmass_ftion_val);
// console.log(" actionmass_ftion_val = ", actionmass_ftion_val);
//console.log(" actionmass_ftion_val = ", actionmass_ftion_val);
@ -5479,7 +5479,7 @@ const DisplayPartnerStagiaires = (props) => {
Recyclage_Desactivation(liste_session);
}
else if (String(actionmass_ftion_val) === String("sendemail")) {
// console.log(" #### selectedtraining_emails_liste = ", selectedtraining_emails_liste);
// console.log(" #### selectedtraining_emails_liste = ", selectedtraining_emails_liste);
setDialog_SEND_EMAIL_open(true);
}
}
@ -6859,7 +6859,7 @@ const DisplayPartnerStagiaires = (props) => {
position: 'absolute',
top: '7rem',
margin: "2px",
maxWidth:'800px'
maxWidth: '800px'
},
}}
hideBackdrop={true}
@ -6895,7 +6895,7 @@ const DisplayPartnerStagiaires = (props) => {
>
<CancelPresentationIcon />
</IconButton>
</DialogActions>
@ -7913,7 +7913,7 @@ const DisplayPartnerStagiaires = (props) => {
</Dialog>
{ /**** FIN Dialog Convention */}
<h3 style={{ fontFamily:'DM Sans' }}> Mes stagiaires </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Mes stagiaires </h3>
<div className="div_row">
<div className="titre1"> Utilisez les filtres !</div>
@ -11306,7 +11306,7 @@ const DisplayPartnerStagiaires = (props) => {
{String(props.formation_initiale) === "1" && String(submenu) === "ue" && String(addOneParticipant) !== "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<h3 style={{ fontFamily:'DM Sans' }}> Gestion des UE d'un inscrit </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Gestion des UE d'un inscrit </h3>
<div className="div_row">
<div className="session_caract"> <b>Unite D'enseignement </b> <br />
@ -11448,11 +11448,16 @@ const DisplayPartnerStagiaires = (props) => {
</div>
<div className="div_row">
Afficher ici les notes finales par UE xxx <br/>
</div>
</div>}
{String(props.formation_initiale) === "1" && String(submenu) === "notes" && String(display_notes) === "1" && String(addOneParticipant) !== "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<h3 style={{ fontFamily:'DM Sans' }}> Les notes de l'inscrit </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Les notes de l'inscrit </h3>
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" onClick={(event) => {
Export_Inscrit_Notes();

View File

@ -10,13 +10,12 @@ import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import fileDownload from 'js-file-download'
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import { FcSearch } from "react-icons/fc";
import { FcAlarmClock, FcMultipleSmartphones, FcWorkflow } from "react-icons/fc";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import { format } from 'date-fns'

View File

@ -0,0 +1,838 @@
import React, { useRef, useState, useEffect } from "react";
import TextField from '@mui/material/TextField';
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import 'react-tooltip/dist/react-tooltip.css'
import fileDownload from 'js-file-download'
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import { format } from 'date-fns'
import moment from "moment";
import 'moment/locale/fr';
import Box from '@mui/material/Box';
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 { ResetTvRounded, RestoreFromTrashRounded } from "@mui/icons-material";
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import Autocomplete from '@mui/material/Autocomplete';
import { FcOpenedFolder } from "react-icons/fc";
import { gridClasses } from '@mui/x-data-grid';
import Link from '@mui/material/Link';
import { PiDotsThree } from "react-icons/pi";
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 CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcPlanner } from "react-icons/fc";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
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 Module_Session_Notes_Classement = (props) => {
const classes = useStyles();
const history = useHistory();
const [submenu, setsubmenu] = useState("");
const [rowss, setRows] = useState([]);
const [isLoading, setLoading] = useState();
function ExpandableCell_50({ value }) {
const [expanded, setExpanded] = React.useState(false);
return (
<nav>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
{expanded ? value : String(value).slice(0, 50)}&nbsp;
{value.length > 50 && (
// eslint-disable-next-line jsx-a11y/anchor-is-valid
<Link
type="button"
component="button"
sx={{ fontSize: 'inherit' }}
onClick={() => setExpanded(!expanded)}
>
{expanded ? <nav> <PiDotsThree />Réduire</nav> : <nav> <PiDotsThree />Voir</nav>}
</Link>
)}
</div>}
{!value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
&nbsp;
</div>
}
</nav>
);
}
function Display_Colunm_text({ value }) {
return (
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
{value}&nbsp;
</div>
);
}
const columns_list_evaluation_detail_note_classement_final = [
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true },
{ field: 'inscription_id', headerName: 'inscription_id', hide: true },
{ field: 'session_id', headerName: 'session_id', hide: true },
{ field: 'ue_id', headerName: 'ue_id', hide: true },
{ field: 'class_id', headerName: 'class_id', hide: true },
{ field: 'class_id_external_code', headerName: 'Code Formation', hide: true },
{ field: 'ue_id_code', headerName: 'UE Code', minwidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'inscription_id_nom', headerName: 'Nom', minwidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'inscription_id_prenom', headerName: 'Prenom', minwidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'type_eval', headerName: 'Type eval', minwidth: 100, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'moyenne', headerName: 'moyenne', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'somme', headerName: 'somme', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nb_evaluation', headerName: 'nb_evaluation', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'inscription_id_mail', headerName: 'Email', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'detail', headerName: 'Detail Note', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
]
const columns_list_evaluation_note_classement_final = [
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true },
{ field: 'inscription_id', headerName: 'inscription_id', hide: true },
{ field: 'session_id', headerName: 'session_id', hide: true },
{ field: 'ue_id', headerName: 'ue_id', hide: true },
{ field: 'class_id', headerName: 'class_id', hide: true },
{ field: 'class_id_external_code', headerName: 'Code Formation', hide: true },
{ field: 'ue_id_code', headerName: 'UE Code', minwidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'inscription_id_nom', headerName: 'Nom', minwidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'inscription_id_prenom', headerName: 'Prenom', minwidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'type_eval', headerName: 'Type eval', minwidth: 100, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'note_td', headerName: 'note_td', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'note_tp', headerName: 'note_tp', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'note_examen', headerName: 'note_examen', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'note_finale', headerName: 'note_finale', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'rang', headerName: 'rang', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'inscription_id_mail', headerName: 'Email', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'detail', headerName: 'Detail Note', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
]
const [New_Getall_Session_Detail_Final_Note_Classement_result, setNew_Getall_Session_Detail_Final_Note_Classement_result] = useState([]);
const [Getall_Session_Detail_Final_Note_Classement_api, setGetall_Session_Detail_Final_Note_Classement_api] = useState();
const [Getall_Session_Detail_Final_Note_Classement_message, setGetall_Session_Detail_Final_Note_Classement_message] = useState();
const [Getall_Session_Detail_Final_Note_Classement_result, setGetall_Session_Detail_Final_Note_Classement_result] = useState([]);
function Getall_Session_Detail_Final_Note_Classement(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("tab_session_id", props.related_collection_recid);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Evaluation_Final_Note_Classement_Detail_With_Filter";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
// console.log(" In Getall_Session_Detail_Final_Note_Classement res.data.status = " + res.data.status);
// console.log(" In Getall_Session_Detail_Final_Note_Classement res.data.message r_class = " + res.data.message);
setGetall_Session_Detail_Final_Note_Classement_api("true");
setGetall_Session_Detail_Final_Note_Classement_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 inscription_id = JSON.parse(x).inscription_id;
var session_id = JSON.parse(x).session_id;
var type_eval = JSON.parse(x).type_eval;
var ue_id = JSON.parse(x).ue_id;
var class_id = JSON.parse(x).class_id;
var moyenne = JSON.parse(x).moyenne;
var somme = JSON.parse(x).somme;
var nb_evaluation = JSON.parse(x).nb_evaluation;
var ue_id_code = JSON.parse(x).ue_id_code;
var class_id_external_code = JSON.parse(x).class_id_external_code;
var inscription_id_mail = JSON.parse(x).inscription_id_mail;
var inscription_id_nom = JSON.parse(x).inscription_id_nom;
var inscription_id_prenom = JSON.parse(x).inscription_id_prenom;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_id,
"inscription_id": inscription_id,
"session_id": session_id,
"type_eval": type_eval,
"ue_id": ue_id,
"class_id": class_id,
"moyenne": moyenne,
"somme": somme,
"nb_evaluation": nb_evaluation,
"ue_id_code": ue_id_code,
"class_id_external_code": class_id_external_code,
"inscription_id_mail": inscription_id_mail,
"inscription_id_nom": inscription_id_nom,
"inscription_id_prenom": inscription_id_prenom,
};
new_data2.push(node);
});
//---
var node = {
"_id": "",
"id": "",
"label": "",
"inscription_id": "",
"session_id": "",
"type_eval": "",
"ue_id": "",
"class_id": "",
"moyenne": "",
"somme": "",
"nb_evaluation": "",
"ue_id_code": "",
"class_id_external_code": "",
"inscription_id_mail": "",
"inscription_id_nom": "",
"inscription_id_prenom": "",
};
new_data2.push(node);
if (new_data2.length > 0)
setNew_Getall_Session_Detail_Final_Note_Classement_result(new_data2);
}
else {
setGetall_Session_Detail_Final_Note_Classement_api("false");
setGetall_Session_Detail_Final_Note_Classement_message(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
console.warn('Not good man :( Getall_Session_Detail_Final_Note_Classement = ', error);
setGetall_Session_Detail_Final_Note_Classement_api("false");
// alert(" Impossible de recuperer la liste des évaluations");
setdisplay_alert_mysy("1");
setalert_message(" Impossible de recuperer la liste des évaluations");
setalert_type("error");
//setmyApimyApiMessage("")
})
}
const [New_Getall_Session_Final_Note_Classement_result, setNew_Getall_Session_Final_Note_Classement_result] = useState([]);
const [Getall_Session_Final_Note_Classement_api, setGetall_Session_Final_Note_Classement_api] = useState();
const [Getall_Session_Final_Note_Classement_message, setGetall_Session_Final_Note_Classement_message] = useState();
const [Getall_Session_Final_Note_Classement_result, setGetall_Session_Final_Note_Classement_result] = useState([]);
function Getall_Session_Final_Note_Classement(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("tab_session_id", props.related_collection_recid);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Evaluation_Final_Note_Classement_With_Filter";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
// console.log(" In Getall_Session_Final_Note_Classement res.data.status = " + res.data.status);
//console.log(" In Getall_Session_Final_Note_Classement res.data.message r_class = " + res.data.message);
setGetall_Session_Final_Note_Classement_api("true");
setGetall_Session_Final_Note_Classement_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 inscription_id = JSON.parse(x).inscription_id;
var session_id = JSON.parse(x).session_id;
var type_eval = JSON.parse(x).type_eval;
var ue_id = JSON.parse(x).ue_id;
var class_id = JSON.parse(x).class_id;
var note_td = JSON.parse(x).note_td;
var note_tp = JSON.parse(x).note_tp;
var note_examen = JSON.parse(x).note_examen;
var regle_calcul = JSON.parse(x).regle_calcul;
var note_finale = JSON.parse(x).note_finale;
var ue_id_code = JSON.parse(x).ue_id_code;
var class_id_external_code = JSON.parse(x).class_id_external_code;
var inscription_id_mail = JSON.parse(x).inscription_id_mail;
var inscription_id_nom = JSON.parse(x).inscription_id_nom;
var inscription_id_prenom = JSON.parse(x).inscription_id_prenom;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_id,
"inscription_id": inscription_id,
"session_id": session_id,
"type_eval": type_eval,
"ue_id": ue_id,
"class_id": class_id,
"note_td": note_td,
"note_tp": note_tp,
"note_examen": note_examen,
"regle_calcul": regle_calcul,
"note_finale": note_finale,
"ue_id_code": ue_id_code,
"class_id_external_code": class_id_external_code,
"inscription_id_mail": inscription_id_mail,
"inscription_id_nom": inscription_id_nom,
"inscription_id_prenom": inscription_id_prenom,
};
new_data2.push(node);
});
//---
var node = {
"_id": "",
"id": "",
"label": "",
"inscription_id": "",
"session_id": "",
"type_eval": "",
"ue_id": "",
"note_td": "",
"note_tp": "",
"note_examen": "",
"regle_calcul": "",
"note_finale": "",
"ue_id_code": "",
"class_id_external_code": "",
"inscription_id_mail": "",
"inscription_id_nom": "",
"inscription_id_prenom": "",
};
new_data2.push(node);
if (new_data2.length > 0)
setNew_Getall_Session_Final_Note_Classement_result(new_data2);
}
else {
setGetall_Session_Final_Note_Classement_api("false");
setGetall_Session_Final_Note_Classement_message(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
console.warn('Not good man :( Getall_Session_Final_Note_Classement = ', error);
setGetall_Session_Final_Note_Classement_api("false");
// alert(" Impossible de recuperer la liste des évaluations");
setdisplay_alert_mysy("1");
setalert_message(" Impossible de recuperer la liste des évaluations");
setalert_type("error");
//setmyApimyApiMessage("")
})
}
useEffect(() => {
Getall_Session_Detail_Final_Note_Classement();
Getall_Session_Final_Note_Classement();
}, [])
const [gridline_id, setgridline_id] = useState("");
const [selectionModel_note_finale_classement, setselectionModel_note_finale_classement] = React.useState([]);
const [gridline_detail_id, setgridline_detail_id] = useState("");
const [selectionModel_detail_note_finale_classement, setselectionModel_detail_note_finale_classement] = React.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("");
}
return (
<div className="module_session_note_classement">
{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*/}
<div style={{ "border": "None" }}>
<div className="div_row" style={{ paddingRight: '10px' }}>
<div className="session_data">
<div style={{ "border": "None" }}>
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<nav style={{ textAlign: 'center' }}> Matrice des notes & Rand</nav>
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
// Gestion des cellule a distance ou presentiel
'& .cell--distantiel': {
backgroundColor: '#AFE1AF',
color: 'black',
},
'& .cell--presentiel': {
backgroundColor: '#AFE1AF',
color: 'black',
},
// gestion couleur des lignes avec le statut d'inscription
'& .line--statut--annule': {
backgroundColor: '#D8D8D8',
color: 'white',
},
'& .line--statut--inscrit': {
backgroundColor: '#CEF6D8',
color: 'black',
},
'& .line--statut--preinscrit': {
backgroundColor: '#F7F2E0',
color: 'black',
},
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
"& .MuiDataGrid-row": {
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
}
},*/
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
'& .line--statut--selected': {
backgroundColor: '#FBF2EF',
color: 'black',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: 'black',
},
[`& .${gridClasses.cell}`]: {
py: 1,
},
}}
>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setselectionModel_note_finale_classement(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_employee_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
/* setsubmenu();
setdisplay_detail_employe();
setadd_One_Employee();*/
}
}}
selectionModel={selectionModel_note_finale_classement}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={Getall_Session_Final_Note_Classement_result.map((item, index) => (
{
id: index,
_id: JSON.parse(item)._id,
inscription_id: JSON.parse(item).inscription_id,
session_id: JSON.parse(item).session_id,
type_eval: JSON.parse(item).type_eval,
ue_id: JSON.parse(item).ue_id,
class_id: JSON.parse(item).class_id,
note_td: JSON.parse(item).note_td,
note_tp: JSON.parse(item).note_tp,
note_examen: JSON.parse(item).note_examen,
note_finale: JSON.parse(item).note_finale,
rang: JSON.parse(item).rang,
ue_id_code: JSON.parse(item).ue_id_code,
class_id_external_code: JSON.parse(item).class_id_external_code,
inscription_id_mail: JSON.parse(item).inscription_id_mail,
inscription_id_nom: JSON.parse(item).inscription_id_nom,
inscription_id_prenom: JSON.parse(item).inscription_id_prenom,
}
))}
columns={columns_list_evaluation_note_classement_final}
pageSize={10}
className="datagridclass"
onRowDoubleClick={(newSelectionModel) => {
}}
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
//sx={datagridSx}
getCellClassName={(params) => {
}}
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';
}
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"}
sx={{
"& .MuiDataGrid-cellContent": {
minHeight: 50,
}
}}
/>
</Box>
<br />
</div>
</div>
</div>
</div>
</div>
<div style={{ "border": "None" }}>
<div className="div_row" style={{ paddingRight: '10px' }}>
<div className="session_data">
<div style={{ "border": "None" }}>
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<nav style={{ textAlign: 'center' }}> Matrice détaillée des notes </nav>
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
// Gestion des cellule a distance ou presentiel
'& .cell--distantiel': {
backgroundColor: '#AFE1AF',
color: 'black',
},
'& .cell--presentiel': {
backgroundColor: '#AFE1AF',
color: 'black',
},
// gestion couleur des lignes avec le statut d'inscription
'& .line--statut--annule': {
backgroundColor: '#D8D8D8',
color: 'white',
},
'& .line--statut--inscrit': {
backgroundColor: '#CEF6D8',
color: 'black',
},
'& .line--statut--preinscrit': {
backgroundColor: '#F7F2E0',
color: 'black',
},
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
"& .MuiDataGrid-row": {
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
}
},*/
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
'& .line--statut--selected': {
backgroundColor: '#FBF2EF',
color: 'black',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: 'black',
},
[`& .${gridClasses.cell}`]: {
py: 1,
},
}}
>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setselectionModel_detail_note_finale_classement(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_employee_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
/* setsubmenu();
setdisplay_detail_employe();
setadd_One_Employee();*/
}
}}
selectionModel={selectionModel_detail_note_finale_classement}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={Getall_Session_Detail_Final_Note_Classement_result.map((item, index) => (
{
id: index,
_id: JSON.parse(item)._id,
inscription_id: JSON.parse(item).inscription_id,
session_id: JSON.parse(item).session_id,
type_eval: JSON.parse(item).type_eval,
ue_id: JSON.parse(item).ue_id,
class_id: JSON.parse(item).class_id,
moyenne: JSON.parse(item).moyenne,
somme: JSON.parse(item).somme,
nb_evaluation: JSON.parse(item).nb_evaluation,
ue_id_code: JSON.parse(item).ue_id_code,
class_id_external_code: JSON.parse(item).class_id_external_code,
inscription_id_mail: JSON.parse(item).inscription_id_mail,
inscription_id_nom: JSON.parse(item).inscription_id_nom,
inscription_id_prenom: JSON.parse(item).inscription_id_prenom,
}
))}
columns={columns_list_evaluation_detail_note_classement_final}
pageSize={10}
className="datagridclass"
onRowDoubleClick={(newSelectionModel) => {
/* Getall_Evaluation_Participant_List(newSelectionModel.row._id);
setselected_id(newSelectionModel.row._id);
setgridline_id(newSelectionModel.row.id);
handleClick_edit_evaluation_From_Line(newSelectionModel.row.id);
setselectionModel_evalutions_participant([]);
settab_convention_pieces_jointes_result([]);*/
}}
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
//sx={datagridSx}
getCellClassName={(params) => {
}}
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';
}
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"}
sx={{
"& .MuiDataGrid-cellContent": {
minHeight: 50,
}
}}
/>
</Box>
<br />
</div>
</div>
</div>
</div>
</div>
</div >
);
}
export default Module_Session_Notes_Classement;

View File

@ -1,25 +1,23 @@
import React, { useRef, useState, useEffect } from "react";
import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem';
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import CheckOut from "./CheckOut";
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import { Editor } from '@tinymce/tinymce-react';
import parse from 'html-react-parser';
import { FcViewDetails, FcDisapprove } from "react-icons/fc";
import { FcPodiumWithAudience } from "react-icons/fc";
import { FcInfo } from "react-icons/fc";
import { LiaDharmachakraSolid } from "react-icons/lia";
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import add_plus from "../mysy_img/plus.png";
import excel_icone from "../mysy_img/excel_icone.png";
import participants from "../mysy_img/participants.png";
import fileDownload from 'js-file-download';
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
@ -31,8 +29,7 @@ import moment from "moment";
import InputAdornment from '@mui/material/InputAdornment';
import { AiFillCloseCircle } from "react-icons/ai";
import Box from '@mui/material/Box';
import { Typography, LinearProgress } from '@mui/material';
import styled from 'styled-components';
import { CiTrash } from "react-icons/ci";
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
import Dialog from '@mui/material/Dialog';
@ -41,8 +38,7 @@ import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import Visibility from '@mui/icons-material/Visibility';
import VisibilityOff from '@mui/icons-material/VisibilityOff';
import { Fab } from "@material-ui/core";
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
@ -56,7 +52,7 @@ import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import Rating from '@mui/material/Rating';
import Module_Selection_Evaluation_Apprenants from "./Module_Selection_Evaluation_Apprenants";
import AttachFileIcon from '@mui/icons-material/AttachFile';
import { GoDuplicate } from "react-icons/go";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
const Notes_Evaluation = (props) => {
@ -227,6 +223,62 @@ const Notes_Evaluation = (props) => {
{ field: 'eval_date_heure_debut', headerName: 'Début', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'eval_date_heure_fin', headerName: 'Fin', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: "dupliquer", headerName: 'Dupliquer',
renderCell: (cellValues) => {
return (
<Popup
trigger={<Button
>
<GoDuplicate />
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'évaluation sera <i> duppliquée </i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
Duplicate_Evaluation_Data(cellValues.row._id);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
);
}
},
{
field: "Detail", headerName: 'Voir detail',
@ -1936,6 +1988,83 @@ const Notes_Evaluation = (props) => {
})
}
const [Duplicate_Evaluation_Data_api, setDuplicate_Evaluation_Data_api] = useState();
const [Duplicate_Evaluation_Data_message, setDuplicate_Evaluation_Data_message] = useState();
const [Duplicate_Evaluation_Data_result, setDuplicate_Evaluation_Data_result] = useState();
function Duplicate_Evaluation_Data(local_evaluation_id) {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("evaluation_id", local_evaluation_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Duplicate_Evaluation_Planification/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Duplicate_Evaluation_Data res.data.status = " + res.data.status);
//console.log(" In Duplicate_Evaluation_Data res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setDuplicate_Evaluation_Data_api("true");
setDuplicate_Evaluation_Data_result(res.data.message);
Disable_Evaluation_DetailFields();
setevaluation_data_changed("");
setevaluation_data_edit_mode("");
Disable_Evaluation_DetailFields();
setevaluation_data_changed("");
setevaluation_data_edit_mode("");
setdisplay_evaluation("");
setadd_one_evaluation("");
setsubmenu("");
var divh = document.getElementById('myRef').offsetTop;
window.scrollTo({
top: 0,
behavior: "smooth",
});
Getall_Partner_Evaluation();
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
}
else {
setDuplicate_Evaluation_Data_api("false");
setDuplicate_Evaluation_Data_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.log('UpdateStagiaireData : Not good man :( Duplicate_Evaluation_Data = ' + error);
setDuplicate_Evaluation_Data_api("false");
// alert(" Impossible d'ajouter ou mettre à jour l'évaluation");
setdisplay_alert_mysy("1");
setalert_message(" Impossible d'ajouter ou mettre à jour l'évaluation");
setalert_type("error");
})
}
function Annule_Evaluaton_DetailFields() {
Get_Given_Evaluation_Data(selected_id);

View File

@ -75,6 +75,8 @@ import { AiOutlineUserAdd } from "react-icons/ai";
import PartnerClientActivite from "./PartnerClient_Activite";
import Mon_Tableau_De_Bord from "./Mon_Tableau_De_Bord";
import Dashbord_Formation from "./Dashbord_Formation";
import Partner_Prix_Achat from "./Partner_Prix_Achat";
@ -129,10 +131,11 @@ import Partner_Product_Service from "./Partner_Product_Service";
import Module_Email_Management from "./Module_Email_Management";
import ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox';
import Badge from '@mui/material/Badge';
import { styled } from '@mui/material/styles';
import IconButton from '@mui/material/IconButton';
import ShoppingCartIcon from '@mui/icons-material/ShoppingCart';
import Modules_Mes_Documents from "./Modules_Mes_Documents";
@ -2469,6 +2472,7 @@ const Partner = (props) => {
<DisplayPartnerSession
conntected_account_id={conntected_account_id}
conntected_employee_id={conntected_employee_id}
formation_initiale={formation_initiale}
object_key={orderid}
class_internal_url={packs}
read_access={check_user_acces_right("session", "read")}
@ -3234,6 +3238,7 @@ const Partner = (props) => {
<DisplayPartnerSession
conntected_account_id={conntected_account_id}
formation_initiale={formation_initiale}
conntected_employee_id={conntected_employee_id} object_key={orderid} class_internal_url={packs}
read_access={check_user_acces_right("session", "read")} write_access={check_user_acces_right("session", "write")}
check_user_acces_right={check_user_acces_right} reduce={"1"} />

View File

@ -1,47 +1,23 @@
import React, { useRef, useState, useEffect } from "react";
import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem';
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import CheckOut from "./CheckOut";
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import { Editor } from '@tinymce/tinymce-react';
import parse from 'html-react-parser';
import { FcViewDetails, FcDisapprove } from "react-icons/fc";
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import Autocomplete from '@mui/material/Autocomplete';
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import { format } from 'date-fns'
import moment from "moment";
import InputAdornment from '@mui/material/InputAdornment';
import { AiFillCloseCircle } from "react-icons/ai";
import Box from '@mui/material/Box';
import { Typography, LinearProgress, sliderClasses } from '@mui/material';
import styled from 'styled-components';
import { CiTrash } from "react-icons/ci";
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
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 { TransitionProps } from '@mui/material/transitions';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import ToggleSwitch from "./ToggleSwitch";
import { FcInfo } from "react-icons/fc";
import Link from '@mui/material/Link';
import { PiDotsThree } from "react-icons/pi";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
const Partner_Config_Ftion_Initiale = (props) => {
@ -192,7 +168,10 @@ const Partner_Config_Ftion_Initiale = (props) => {
setgridline_type_eval_id("");
alert(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
if (document.getElementById('myRef_head')) {
var divh = document.getElementById('myRef_head').offsetTop;
window.scrollTo({
@ -206,7 +185,10 @@ const Partner_Config_Ftion_Initiale = (props) => {
else {
sethandleClick_delete_Type_Evaluation_api("false");
sethandleClick_delete_Type_Evaluation_message(res.data.message);
alert(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
@ -304,7 +286,10 @@ const Partner_Config_Ftion_Initiale = (props) => {
else {
setGetall_Parter_config_type_evaluation_api("false");
setGetall_Parter_config_type_evaluation_message(res.data.message);
alert(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
@ -553,7 +538,11 @@ const Partner_Config_Ftion_Initiale = (props) => {
setgridline_type_eval_id("");
alert(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
if (document.getElementById('myRef_head')) {
var divh = document.getElementById('myRef_head').offsetTop;
window.scrollTo({
@ -566,7 +555,10 @@ const Partner_Config_Ftion_Initiale = (props) => {
else {
setAdd_Config_Type_Eval_api("false");
setAdd_Config_Type_Eval_message(res.data.message);
alert(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
@ -620,8 +612,10 @@ const Partner_Config_Ftion_Initiale = (props) => {
setadd_config_type_eval("");
setgridline_type_eval_id("");
alert(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
if (document.getElementById('myRef_head')) {
var divh = document.getElementById('myRef_head').offsetTop;
window.scrollTo({
@ -634,7 +628,10 @@ const Partner_Config_Ftion_Initiale = (props) => {
else {
setUpdate_Config_Type_Eval_api("false");
setUpdate_Config_Type_Eval_message(res.data.message);
alert(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
@ -657,12 +654,38 @@ const Partner_Config_Ftion_Initiale = (props) => {
setdisplay_detail_type_eval("");
setadd_config_type_eval("1");
}
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("");
}
return (
<div className="partner_ftion_initiale_configuration">
{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*/}
<h3 style={{ fontFamily: 'DM Sans' }}> Formation Initale configuration </h3>
<div className="div_row" ref={myRef_head} id="myRef_head" >
@ -1133,7 +1156,7 @@ const Partner_Config_Ftion_Initiale = (props) => {
<div className="div_row" style={{ fontFamily: 'DM Sans' }}>
Règle 3 : <br />
Description : <br />
(Moyenne Art.(TD) + Moyenne Art.(Controle Continue) + Exemen Final*1.5 ) / 3
(Moyenne Art.(TD) + Moyenne Art.(Controle Continue) + Exemen Final*1.5 ) / 3
</div>

File diff suppressed because it is too large Load Diff

View File

@ -2809,7 +2809,7 @@
.MuiPaper-root{
border-radius: 10px !important;
background: #F8F9F9 !important;
// background: #F8F9F9 !important;
}
}

View File

@ -2804,7 +2804,7 @@
.MuiPaper-root{
border-radius: 10px !important;
background: #F8F9F9 !important;
// background: #F8F9F9 !important;
}
}

View File

@ -2820,7 +2820,7 @@
.MuiPaper-root{
border-radius: 10px !important;
background: #FFFFFF !important;
// background: #FFFFFF !important;
max-width: none !important;
}

View File

@ -2804,7 +2804,7 @@
.MuiPaper-root{
border-radius: 10px !important;
background: #F8F9F9 !important;
// background: #F8F9F9 !important;
}
}

View File

@ -196,6 +196,7 @@
@import "./components/module_connexion_intranet_client";
@import "./components/module_alert_confirmation";
@import "./components/equipe_team";
@import "./components/module_session_note_classement";
// New Design 2025