18/05/2024 - 22h30

recette2
cherif 2024-05-18 22:38:38 +02:00
parent 98de5feea3
commit 8f1a903e07
5 changed files with 4156 additions and 1109 deletions

View File

@ -0,0 +1,152 @@
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 { 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, FcInfo } from "react-icons/fc";
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';
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'
import moment from "moment";
import 'moment/locale/fr';
import InputAdornment from '@mui/material/InputAdornment';
import { AiFillCloseCircle, AiOutlineConsoleSql } 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';
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 { RestoreFromTrashRounded } from "@mui/icons-material";
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 { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
import { confirmAlert } from 'react-confirm-alert';
import ToggleSwitch from "./ToggleSwitch";
import Module_Historique_Action from "./Module_Historique_Action";
import { HiDocumentCheck } from "react-icons/hi2";
import { BsSend } from "react-icons/bs";
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 Module_Editique from "./Module_Editique";
import Module_Attestation_Formation from "./Module_Attestation_Formation";
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcPlanner } from "react-icons/fc";
import { CiBoxList } from "react-icons/ci";
import FullCalendar from "@fullcalendar/react";
import daygridPlugin from "@fullcalendar/daygrid";
import interactionPlugin from "@fullcalendar/interaction";
import timeGridPlugin from "@fullcalendar/timegrid";
import resourceTimeGridPlugin from '@fullcalendar/resource-timegrid';
import Radio from '@mui/material/Radio';
import RadioGroup from '@mui/material/RadioGroup';
import FormControlLabel from '@mui/material/FormControlLabel';
import FormControl from '@mui/material/FormControl';
import FormLabel from '@mui/material/FormLabel';
import allLocales from '@fullcalendar/core/locales-all'
import listPlugin from '@fullcalendar/list';
import multiMonthPlugin from '@fullcalendar/multimonth'
const Module_Selection_Evaluation_Apprenants = (props) => {
const history = useHistory();
const [submenu, setsubmenu] = useState("");
const [rowss, setRows] = 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 [isLoading, setLoading] = useState();
return (
<div className="moduleselectionevaluationapprenants">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "paddingTop": "10px", "paddingLeft": "5px" }}> Selection des Apprenant & Groupe d'apprenants </nav>
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
Les critère de selection : <br/>
- Formation : avec valeur par default <br/>
- classe / session : Avec critères par default <br/>
- type de groupe : [groupe TD, groupe TP, groupe Autre, etc]
- Incrit : Choisir par mis les types <br />
&nbsp;
</div>
</div >
);
}
export default Module_Selection_Evaluation_Apprenants;

View File

@ -54,6 +54,7 @@ import Link from '@mui/material/Link';
import { PiDotsThree } from "react-icons/pi";
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import Rating from '@mui/material/Rating';
import Module_Selection_Evaluation_Apprenants from "./Module_Selection_Evaluation_Apprenants";
const Notes_Evaluation = (props) => {
const history = useHistory();
@ -280,47 +281,20 @@ const Notes_Evaluation = (props) => {
function handleClick_edit_evaluation_From_Line(selected_row_id) {
setdisplay_evaluation("1");
setevaluation_data_changed("");
setevaluation_data_edit_mode("");
var line = JSON.parse(Getall_Partner_Evaluation_result[selected_row_id]);
setselected_id(line._id);
setgridline_id(selected_row_id);
Get_Given_Evaluation_Data(line._id);
setdisplay_evaluation("1");
setadd_one_evaluation("");
setevaluation_data_changed("");
setevaluation_data_edit_mode("");
setsubmenu("detail_evaluation");
/*
var employe_email = line.email;
setselected_employe_email(employe_email);
Display_Detail_Employe(employe_id);
Get_List_Managers();
Get_List_RH_Profils();
Get_Employee_Related_Target_Collection_Data();
if (document.getElementById('myRef')) {
var divh = document.getElementById('myRef').offsetTop;
window.scrollTo({
top: divh,
behavior: "smooth",
});
}
Getall_Employee_Affectation(employe_id);
Getall_Employee_Acces_Right(employe_id);
Getall_Employee_Contrat(employe_id);
Get_Partner_Purchase_Prices();
Get_List_Of_All_PJ(employe_id);
*/
}
@ -1326,32 +1300,43 @@ const Notes_Evaluation = (props) => {
async function Disable_Evaluation_DetailFields() {
sleep(10);
await sleep(5);
setevaluation_data_edit_mode("0");
var liste_champs = ['detail_code', 'detail_titre', 'detail_description', 'detail_classe',
'detail_ftion', 'detail_ue', 'detail_type_eval', 'detail_debut', 'detail_fin', 'detail_adresse',
'detail_cp', 'detail_ville', 'detail_pays', 'detail_responsable']
'detail_cp', 'detail_ville', 'detail_pays', 'detail_responsable', 'detail_titre_01']
for (let i = 0; i < liste_champs.length; i++) {
if (document.getElementsByName(String(liste_champs[i])) && document.getElementsByName(String(liste_champs[i]))[0]) {
document.getElementsByName(String(liste_champs[i]))[0].disabled = true;
document.getElementsByName(String(liste_champs[i]))[0].style.backgroundColor = "#ECEFF1";
}
}
if (document.getElementsByName("detail_titre_01") && document.getElementsByName("detail_titre_01")[0]) {
document.getElementsByName("detail_titre_01")[0].disabled = true;
document.getElementsByName("detail_titre_01")[0].style.backgroundColor = "#ECEFF1";
}
}
function planifier_one_evaluation() {
clear_DetailFieds();
setevaluation_data_edit_mode("");
setevaluation_data_changed("");
setdisplay_evaluation("");
setselected_id("");
setgridline_id("");
setadd_one_evaluation("1");
setsubmenu("add_eval");
setsubmenu("detail_evaluation");
}
@ -1367,6 +1352,63 @@ const Notes_Evaluation = (props) => {
}
async function submenu_detail() {
await sleep(5);
setsubmenu("detail_evaluation");
inactive_active_menu_header("detail_evaluation");
if (String(evaluation_data_edit_mode) !== "1") {
Disable_Evaluation_DetailFields();
}
}
async function submenu_apprenant() {
await sleep(5);
setsubmenu("apprenant");
inactive_active_menu_header("apprenant");
}
async function submenu_piece_jointe() {
await sleep(5);
setsubmenu("piece_jointe");
inactive_active_menu_header("piece_jointe");
}
async function submenu_ressources() {
await sleep(5);
setsubmenu("ressources");
inactive_active_menu_header("ressources");
}
async function submenu_selection() {
await sleep(5);
setsubmenu("selection");
inactive_active_menu_header("selection");
}
// Cette fontion desactive tous les menu header et reactive just le menu_header concerné
function inactive_active_menu_header(current_menu_header) {
const list_menu_header_names = ['detail_evaluation', 'apprenant', 'piece_jointe', 'selection', 'ressources']
for (let i = 0; i < list_menu_header_names.length; i++) {
if (document.getElementsByName(String(list_menu_header_names[i])) && document.getElementsByName(String(list_menu_header_names[i]))[0]) {
document.getElementsByName(String(list_menu_header_names[i]))[0].style.fontWeight = "400";
}
}
if (document.getElementsByName(String(current_menu_header)) && document.getElementsByName(String(current_menu_header))[0]) {
document.getElementsByName(String(current_menu_header))[0].style.fontWeight = "700";
}
}
return (
<div className="note_evaluation">
{isLoading && <div className="loader-container">
@ -1823,22 +1865,24 @@ const Notes_Evaluation = (props) => {
<div className="div_row" ref={myRef} id="myRef"> &nbsp; </div>
{selected_id && String(selected_id).length > 5 && <div className="div_row">
<Button variant="outlined" onClick={submenu_detail} className="detail_class_submenu" id='detail_evaluation' name='detail_evaluation'>Détail Evaluation</Button>
<Button variant="outlined" onClick={submenu_apprenant} className="detail_class_submenu" id='apprenant' name='apprenant'>Apprenants & Groupes</Button>
<Button variant="outlined" onClick={submenu_ressources} className="detail_class_submenu" id='ressources' name='ressources'>Ressources </Button>
<Button variant="outlined" onClick={submenu_selection} className="detail_class_submenu" id='selection' name='selection'>Selection </Button>
<Button variant="outlined" onClick={submenu_piece_jointe} className="detail_class_submenu" id='piece_jointe' name='piece_jointe'>Pièces Jointes </Button>
{String(submenu) === "detail_evaluation" && String(display_evaluation) === "1" && <div className="div_row">
<div className="div_row">
<Button variant="outlined" onClick={'submenu_detail_employe'} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={'submenu_competence'} className="detail_class_submenu" id='competence' name='contrat'>Compétences </Button>
<Button variant="outlined" onClick={'submenu_piece_jointe'} className="detail_class_submenu" id='piece_jointe' name='contrat'>Pièces Jointes </Button>
<Button variant="outlined" onClick={'submenu_droit_acces'} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'accès </Button>
<Button variant="outlined" onClick={'submenu_affectation'} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={'submenu_contrat'} className="detail_class_submenu" id='affectation' name='contrat'>Contrat </Button>
</div>
</div>}
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Evaluation </nav>
{String(submenu) === "detail_evaluation" && <div>
{String(display_evaluation) === "1" && String(add_one_evaluation) !== "1" && <div className="div_row session_data" >
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "paddingTop": "10px", "paddingLeft": "5px" }}> Détail Evaluation </nav>
{String(evaluation_data_edit_mode) !== "1" && <div>
<div className="session_data" >
<div>
<div className="session_caract"> <b> Code </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -1861,8 +1905,8 @@ const Notes_Evaluation = (props) => {
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="detail_titre"
id="detail_titre"
name="detail_titre_01"
id="detail_titre_01"
InputLabelProps={{
shrink: true,
@ -2110,7 +2154,7 @@ const Notes_Evaluation = (props) => {
{String(evaluation_data_edit_mode) === "1" && <div>
<div className="session_data" >
<div>
<div className="session_caract"> <b> Code </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -2535,13 +2579,13 @@ const Notes_Evaluation = (props) => {
</div>}
{String(submenu) === "add_eval" && String(add_one_evaluation) === "1" && <div className="div_row">
{String(add_one_evaluation) === "1" && String(display_evaluation) !== "1" && <div className="div_row session_data">
Planifier une nouvelle évaluation <br />
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "paddingTop": "10px", "paddingLeft": "5px" }}> Planifier une nouvelle évaluation </nav>
<div>
<div className="session_data" >
<div>
<div className="session_caract"> <b> Code </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -2938,7 +2982,7 @@ const Notes_Evaluation = (props) => {
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_enreg" onClick={Add_Update_Evaluation_Data}>Enregistrer les modifications
<Button variant="contained" className="bton_enreg" onClick={Add_Update_Evaluation_Data}>Enregistrer
</Button>
</div>
@ -2950,12 +2994,7 @@ const Notes_Evaluation = (props) => {
</div>
{String(evaluation_data_edit_mode) !== "1" && <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_edit" onClick={Enable_Evaluation_DetailFields}>Editer
</Button>
</div>}
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
@ -2963,6 +3002,31 @@ const Notes_Evaluation = (props) => {
</div>}
</div>}
{String(submenu) === "apprenant" && <div>
<h3> Liste des apprenants ou Groupes d'apprenants</h3>
</div>}
{String(submenu) === "ressources" && <div>
<h3> Ressources Humaines & Materielles</h3>
</div>}
{String(submenu) === "selection" && <div className="div_row session_data">
<Module_Selection_Evaluation_Apprenants note_evaluation_id={selected_id} session_id={p_detail_session_id}
class_id={p_detail_class_id} class_eu_id={p_detail_class_eu_id} type_eval_id={p_detail_type_eval_id} />
</div>}
{String(submenu) === "piece_jointe" && <div>
<h3> Liste des Pièces jointes</h3>
</div>}
</div >
);
}

File diff suppressed because it is too large Load Diff

View File

@ -126,6 +126,7 @@
letter-spacing: 0.1rem;
font-weight: normal;
width: 100%;
height: 2rem !important;
}
.detail_class_submenu:hover:active,
@ -687,7 +688,7 @@
margin-right: 1rem;
padding: 0.3rem;
margin-bottom: 0.5rem;
width: 11rem;
min-width: 12rem;
text-align: center;
border: 1px solid #9cf;
color: #3b3e40;
@ -695,6 +696,7 @@
font-size: small;
letter-spacing: 0.1rem;
font-weight: normal;
height: 2rem !important;
}
.detail_class_submenu:hover:active,
@ -1315,7 +1317,7 @@
margin-right: 1rem;
padding: 0.3rem;
margin-bottom: 0.5rem;
width: 11rem;
min-width: 15rem;
text-align: center;
border: 1px solid #9cf;
color: #3b3e40;
@ -1323,6 +1325,7 @@
font-size: small;
letter-spacing: 0.1rem;
font-weight: normal;
height: 2rem !important;
}
.detail_class_submenu:hover:active,
@ -1816,7 +1819,7 @@
margin-right: 1rem;
padding: 0.3rem;
margin-bottom: 0.5rem;
min-width: 12rem;
min-width: 15rem;
text-align: center;
border: 1px solid #9cf;
color: #3b3e40;
@ -1824,6 +1827,7 @@
font-size: small;
letter-spacing: 0.1rem;
font-weight: normal;
height: 2rem !important;
}
.detail_class_submenu:hover:active,

View File

@ -113,3 +113,4 @@
@import "./components/modulesessionevaluation";
@import "./components/partner_ftion_initiale_configuration";
@import "./components/note_evaluation";
@import "./components/moduleselectionevaluationapprenants";