diff --git a/src/components/Apprenant.js b/src/components/Apprenant.js
index f62ef8f..3327e04 100644
--- a/src/components/Apprenant.js
+++ b/src/components/Apprenant.js
@@ -285,7 +285,7 @@ const Apprenant = (props) => {
]
-
+
const columns_apprenant_inscriptions = [
{ field: 'id', headerName: 'id', hide: true },
diff --git a/src/components/Module_Agenda.js b/src/components/Module_Agenda.js
index 861432a..9d9f7a0 100644
--- a/src/components/Module_Agenda.js
+++ b/src/components/Module_Agenda.js
@@ -1661,7 +1661,7 @@ const Module_Agenda = (props) => {
{agenda_owner_name && String(agenda_owner_name) === "Mon Planning" &&
{agenda_owner_name}
}
{agenda_owner_name && String(agenda_owner_name) !== "Mon Planning" && tab_selected_users.length === 1 &&
Vous êtes sur le planning de {agenda_owner_name} - ({agenda_owner_type})
}
diff --git a/src/components/Module_Connexion_Ent_Student.js b/src/components/Module_Connexion_Ent_Student.js
index 722914e..3da1469 100644
--- a/src/components/Module_Connexion_Ent_Student.js
+++ b/src/components/Module_Connexion_Ent_Student.js
@@ -14,7 +14,7 @@ import Visibility from '@mui/icons-material/Visibility';
import VisibilityOff from '@mui/icons-material/VisibilityOff';
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
-
+
function Module_Connexion_Ent_Student() {
const [isconnected, setisconnected] = useState("");
diff --git a/src/components/Module_Ent_Mes_Documents.js b/src/components/Module_Ent_Mes_Documents.js
new file mode 100644
index 0000000..f70a6fa
--- /dev/null
+++ b/src/components/Module_Ent_Mes_Documents.js
@@ -0,0 +1,477 @@
+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 { FcViewDetails, FcDisapprove } from "react-icons/fc";
+import 'react-tooltip/dist/react-tooltip.css'
+import { Tooltip } from 'react-tooltip'
+import Checkbox from '@mui/material/Checkbox';
+import excel_icone from "../mysy_img/excel_icone.png";
+
+import fileDownload from 'js-file-download'
+import { FcInfo } from "react-icons/fc";
+import Popup from 'reactjs-popup';
+import 'reactjs-popup/dist/index.css';
+
+import { FcAcceptDatabase, } from "react-icons/fc";
+import { format } from 'date-fns'
+import InputAdornment from '@mui/material/InputAdornment';
+import { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
+import Box from '@mui/material/Box';
+
+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 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 { FcEditImage } from "react-icons/fc";
+import ToggleSwitch from "./ToggleSwitch";
+
+import { FcSpeaker } from "react-icons/fc";
+import Autocomplete from '@mui/material/Autocomplete';
+import { FcOpenedFolder } from "react-icons/fc";
+import Module_Absence from "./Module_Absence";
+import { RiMoreFill } from "react-icons/ri";
+import DatePicker from "react-datepicker";
+import "react-datepicker/dist/react-datepicker.css";
+import moment from "moment";
+import 'moment/locale/fr';
+import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
+import { gridClasses } from '@mui/x-data-grid';
+import Link from '@mui/material/Link';
+import { PiDotsThree } from "react-icons/pi";
+import {
+ GridToolbarContainer, GridToolbarExport, GridToolbarColumnsButton,
+ GridToolbarFilterButton, GridToolbarDensitySelector, GridToolbarExportContainer, useGridApiContext,
+ gridFilteredSortedRowIdsSelector,
+ gridVisibleColumnFieldsSelector,
+ GridValueGetterParams,
+ GridPreferencePanelsValue,
+
+} from '@mui/x-data-grid';
+import * as XLSX from 'xlsx';
+import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
+
+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';
+
+function PaperComponent(props) {
+ return (
+
+
+
+ );
+}
+
+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_Ent_Mes_Documents = (props) => {
+
+ const classes = useStyles();
+
+ const history = useHistory();
+ const [submenu, setsubmenu] = useState("");
+
+
+
+ const filters = [
+ { value: 'email', label: 'Email' },
+ { value: 'nom', label: 'Nom' },
+ { value: 'prenom', label: 'Prénom' }
+ ]
+
+ const [selectedfilt1, setselectedfilt1] = useState("");
+ const [selectedfilt2, setselectedfilt2] = useState("");
+ const [selectedfilt3, setselectedfilt3] = useState("");
+
+
+ function ExpandableCell_50({ value }) {
+ const [expanded, setExpanded] = React.useState(false);
+
+ return (
+
+ );
+ }
+
+
+
+ function Display_Colunm_text({ value }) {
+
+ return (
+
+ {value}
+
+
+ );
+ }
+ const columns_apprenant_inscriptions = [
+ { field: 'id', headerName: 'id', hide: true },
+ { field: '_id', headerName: '_id', hide: true },
+ { field: 'session_id', headerName: 'session_id', hide: true, Width: 1 },
+ { field: 'session_code', headerName: 'Code Session', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'class_title', headerName: 'Titre Formation', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'class_internal_url', headerName: 'class_internal_url', hide: true, Width: 1 },
+ {
+ field: 'status', headerName: 'Statut', hide: false, flex: 1, minWidth: 50, maxWidth: 70,
+ valueFormatter: (params) => {
+ if (String(params.value) === "0")
+ return "Pré.";
+ else if (String(params.value) === "1")
+ return "Ins";
+ else if (String(params.value) === "-1")
+ return "Ann";
+ else if (String(params.value) === "2")
+ return "Enc";
+ else
+ return "???";
+ }
+ },
+
+ { field: 'client_rattachement_id', headerName: 'client__id', hide: true, Width: 1 },
+ { field: 'client_rattachement_nom', headerName: 'Client', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+
+ { field: 'date_debut', headerName: 'Début', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'date_fin', headerName: 'Fin', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'presentiel', headerName: 'Présentiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
+ { field: 'distanciel', headerName: 'Distantiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
+
+ { field: 'class_recyclage_delai', headerName: 'Recycl. Delai', hide: false, flex: 1, minWidth: 100, },
+ { field: 'class_recyclage_periodicite', headerName: 'Recycl. Perio', hide: false, flex: 1, minWidth: 100, },
+ { field: 'nb_jour_avant_recyclage', headerName: 'Jrs avant Recycl.', hide: false, flex: 1, minWidth: 100, },
+
+
+ {
+ field: "Detail", headerName: 'Voir détail',
+ renderCell: (cellValues) => {
+ return (
+
+
+
+ );
+ }
+ },
+
+ {
+ field: "delete", headerName: 'Supprimer',
+ renderCell: (cellValues) => {
+ return (
+
+
+
+
+ }
+ modal
+ nested
+ position="center center"
+ >
+ {close => (
+
+
+
MySy Information
+
+ {' '}
+
+ En confirmant cette opération, l'inscription sera définitivement supprimée.
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+
+
+
+ );
+ }
+ },
+
+
+ ]
+
+ return (
+
+
+ {isLoading &&
}
+
+
+ {/*** Affichage des messages d'alerte*/}
+ {display_alert_mysy && String(display_alert_mysy) === "1" &&
+
+ }
+ {/*** FIN Affichage des messages d'alerte*/}
+
+
+
Mes Documents
+
+
Utilisez les filtres !
+
+
+ {
+ setp_filtre1(e.target.value)
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+ {p_filtre1 &&
+
{ setp_filtre1_value(e.target.value); }}
+ InputProps={{
+ endAdornment: (
+
+ {
+ setp_filtre1_value("");
+ }} />
+
+ ),
+ }}
+
+ />
+
+ }
+
+ {p_filtre1 &&
}
+ {p_filtre1 &&
}
+
+
+
+
+ {p_filtre2 &&
+
+
+ {
+ setp_filtre2(e.target.value)
+ }}
+ >
+
+
+
+
+
+
+
+
+ {String(p_filtre2).length > 3 &&
+
setp_filtre2_value(e.target.value)}
+ InputProps={{
+ endAdornment: (
+
+ {
+ setp_filtre2_value("");
+ }} />
+
+ ),
+ }}
+
+ />}
+
+
+
+ {String(p_filtre2).length > 3 &&
}
+
+ }
+
+
+ {
+
+
+
+
+
+
+
+
+
+
+
}
+
+
+
+
+
+ );
+}
+
+export default Module_Ent_Mes_Documents;
\ No newline at end of file
diff --git a/src/components/Module_Ent_Mes_Formations.js b/src/components/Module_Ent_Mes_Formations.js
new file mode 100644
index 0000000..88445da
--- /dev/null
+++ b/src/components/Module_Ent_Mes_Formations.js
@@ -0,0 +1,477 @@
+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 { FcViewDetails, FcDisapprove } from "react-icons/fc";
+import 'react-tooltip/dist/react-tooltip.css'
+import { Tooltip } from 'react-tooltip'
+import Checkbox from '@mui/material/Checkbox';
+import excel_icone from "../mysy_img/excel_icone.png";
+
+import fileDownload from 'js-file-download'
+import { FcInfo } from "react-icons/fc";
+import Popup from 'reactjs-popup';
+import 'reactjs-popup/dist/index.css';
+
+import { FcAcceptDatabase, } from "react-icons/fc";
+import { format } from 'date-fns'
+import InputAdornment from '@mui/material/InputAdornment';
+import { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
+import Box from '@mui/material/Box';
+
+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 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 { FcEditImage } from "react-icons/fc";
+import ToggleSwitch from "./ToggleSwitch";
+
+import { FcSpeaker } from "react-icons/fc";
+import Autocomplete from '@mui/material/Autocomplete';
+import { FcOpenedFolder } from "react-icons/fc";
+import Module_Absence from "./Module_Absence";
+import { RiMoreFill } from "react-icons/ri";
+import DatePicker from "react-datepicker";
+import "react-datepicker/dist/react-datepicker.css";
+import moment from "moment";
+import 'moment/locale/fr';
+import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
+import { gridClasses } from '@mui/x-data-grid';
+import Link from '@mui/material/Link';
+import { PiDotsThree } from "react-icons/pi";
+import {
+ GridToolbarContainer, GridToolbarExport, GridToolbarColumnsButton,
+ GridToolbarFilterButton, GridToolbarDensitySelector, GridToolbarExportContainer, useGridApiContext,
+ gridFilteredSortedRowIdsSelector,
+ gridVisibleColumnFieldsSelector,
+ GridValueGetterParams,
+ GridPreferencePanelsValue,
+
+} from '@mui/x-data-grid';
+import * as XLSX from 'xlsx';
+import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
+
+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';
+
+function PaperComponent(props) {
+ return (
+
+
+
+ );
+}
+
+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_Ent_Mes_Formations = (props) => {
+
+ const classes = useStyles();
+
+ const history = useHistory();
+ const [submenu, setsubmenu] = useState("");
+
+
+
+ const filters = [
+ { value: 'email', label: 'Email' },
+ { value: 'nom', label: 'Nom' },
+ { value: 'prenom', label: 'Prénom' }
+ ]
+
+ const [selectedfilt1, setselectedfilt1] = useState("");
+ const [selectedfilt2, setselectedfilt2] = useState("");
+ const [selectedfilt3, setselectedfilt3] = useState("");
+
+
+ function ExpandableCell_50({ value }) {
+ const [expanded, setExpanded] = React.useState(false);
+
+ return (
+
+ {value &&
+
+ {expanded ? value : value.slice(0, 50)}
+ {value.length > 50 && (
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
+
setExpanded(!expanded)}
+ >
+ {expanded ?
Réduire :
Voir}
+
+ )}
+
}
+
+ {value &&
+
+
+ }
+
+ );
+ }
+
+
+
+ function Display_Colunm_text({ value }) {
+
+ return (
+
+ {value}
+
+
+ );
+ }
+ const columns_apprenant_inscriptions = [
+ { field: 'id', headerName: 'id', hide: true },
+ { field: '_id', headerName: '_id', hide: true },
+ { field: 'session_id', headerName: 'session_id', hide: true, Width: 1 },
+ { field: 'session_code', headerName: 'Code Session', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'class_title', headerName: 'Titre Formation', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'class_internal_url', headerName: 'class_internal_url', hide: true, Width: 1 },
+ {
+ field: 'status', headerName: 'Statut', hide: false, flex: 1, minWidth: 50, maxWidth: 70,
+ valueFormatter: (params) => {
+ if (String(params.value) === "0")
+ return "Pré.";
+ else if (String(params.value) === "1")
+ return "Ins";
+ else if (String(params.value) === "-1")
+ return "Ann";
+ else if (String(params.value) === "2")
+ return "Enc";
+ else
+ return "???";
+ }
+ },
+
+ { field: 'client_rattachement_id', headerName: 'client__id', hide: true, Width: 1 },
+ { field: 'client_rattachement_nom', headerName: 'Client', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+
+ { field: 'date_debut', headerName: 'Début', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'date_fin', headerName: 'Fin', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'presentiel', headerName: 'Présentiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
+ { field: 'distanciel', headerName: 'Distantiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
+
+ { field: 'class_recyclage_delai', headerName: 'Recycl. Delai', hide: false, flex: 1, minWidth: 100, },
+ { field: 'class_recyclage_periodicite', headerName: 'Recycl. Perio', hide: false, flex: 1, minWidth: 100, },
+ { field: 'nb_jour_avant_recyclage', headerName: 'Jrs avant Recycl.', hide: false, flex: 1, minWidth: 100, },
+
+
+ {
+ field: "Detail", headerName: 'Voir détail',
+ renderCell: (cellValues) => {
+ return (
+
+
+
+ );
+ }
+ },
+
+ {
+ field: "delete", headerName: 'Supprimer',
+ renderCell: (cellValues) => {
+ return (
+
+
+
+
+ }
+ modal
+ nested
+ position="center center"
+ >
+ {close => (
+
+
+
MySy Information
+
+ {' '}
+
+ En confirmant cette opération, l'inscription sera définitivement supprimée.
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+
+
+
+ );
+ }
+ },
+
+
+ ]
+
+ return (
+
+
+ {isLoading &&
}
+
+
+ {/*** Affichage des messages d'alerte*/}
+ {display_alert_mysy && String(display_alert_mysy) === "1" &&
+
+ }
+ {/*** FIN Affichage des messages d'alerte*/}
+
+
+
Mes Formations
+
+
Utilisez les filtres !
+
+
+ {
+ setp_filtre1(e.target.value)
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+ {p_filtre1 &&
+
{ setp_filtre1_value(e.target.value); }}
+ InputProps={{
+ endAdornment: (
+
+ {
+ setp_filtre1_value("");
+ }} />
+
+ ),
+ }}
+
+ />
+
+ }
+
+ {p_filtre1 &&
}
+ {p_filtre1 &&
}
+
+
+
+
+ {p_filtre2 &&
+
+
+ {
+ setp_filtre2(e.target.value)
+ }}
+ >
+
+
+
+
+
+
+
+
+ {String(p_filtre2).length > 3 &&
+
setp_filtre2_value(e.target.value)}
+ InputProps={{
+ endAdornment: (
+
+ {
+ setp_filtre2_value("");
+ }} />
+
+ ),
+ }}
+
+ />}
+
+
+
+ {String(p_filtre2).length > 3 &&
}
+
+ }
+
+
+ {
+
+
+
+
+
+
+
+
+
+
+
}
+
+
+
+
+
+ );
+}
+
+export default Module_Ent_Mes_Formations;
\ No newline at end of file
diff --git a/src/components/Module_Ent_Mes_Notes.js b/src/components/Module_Ent_Mes_Notes.js
new file mode 100644
index 0000000..6ecfc59
--- /dev/null
+++ b/src/components/Module_Ent_Mes_Notes.js
@@ -0,0 +1,477 @@
+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 { FcViewDetails, FcDisapprove } from "react-icons/fc";
+import 'react-tooltip/dist/react-tooltip.css'
+import { Tooltip } from 'react-tooltip'
+import Checkbox from '@mui/material/Checkbox';
+import excel_icone from "../mysy_img/excel_icone.png";
+
+import fileDownload from 'js-file-download'
+import { FcInfo } from "react-icons/fc";
+import Popup from 'reactjs-popup';
+import 'reactjs-popup/dist/index.css';
+
+import { FcAcceptDatabase, } from "react-icons/fc";
+import { format } from 'date-fns'
+import InputAdornment from '@mui/material/InputAdornment';
+import { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
+import Box from '@mui/material/Box';
+
+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 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 { FcEditImage } from "react-icons/fc";
+import ToggleSwitch from "./ToggleSwitch";
+
+import { FcSpeaker } from "react-icons/fc";
+import Autocomplete from '@mui/material/Autocomplete';
+import { FcOpenedFolder } from "react-icons/fc";
+import Module_Absence from "./Module_Absence";
+import { RiMoreFill } from "react-icons/ri";
+import DatePicker from "react-datepicker";
+import "react-datepicker/dist/react-datepicker.css";
+import moment from "moment";
+import 'moment/locale/fr';
+import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
+import { gridClasses } from '@mui/x-data-grid';
+import Link from '@mui/material/Link';
+import { PiDotsThree } from "react-icons/pi";
+import {
+ GridToolbarContainer, GridToolbarExport, GridToolbarColumnsButton,
+ GridToolbarFilterButton, GridToolbarDensitySelector, GridToolbarExportContainer, useGridApiContext,
+ gridFilteredSortedRowIdsSelector,
+ gridVisibleColumnFieldsSelector,
+ GridValueGetterParams,
+ GridPreferencePanelsValue,
+
+} from '@mui/x-data-grid';
+import * as XLSX from 'xlsx';
+import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
+
+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';
+
+function PaperComponent(props) {
+ return (
+
+
+
+ );
+}
+
+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_Ent_Mes_Notes = (props) => {
+
+ const classes = useStyles();
+
+ const history = useHistory();
+ const [submenu, setsubmenu] = useState("");
+
+
+
+ const filters = [
+ { value: 'email', label: 'Email' },
+ { value: 'nom', label: 'Nom' },
+ { value: 'prenom', label: 'Prénom' }
+ ]
+
+ const [selectedfilt1, setselectedfilt1] = useState("");
+ const [selectedfilt2, setselectedfilt2] = useState("");
+ const [selectedfilt3, setselectedfilt3] = useState("");
+
+
+ function ExpandableCell_50({ value }) {
+ const [expanded, setExpanded] = React.useState(false);
+
+ return (
+
+ {value &&
+
+ {expanded ? value : value.slice(0, 50)}
+ {value.length > 50 && (
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
+
setExpanded(!expanded)}
+ >
+ {expanded ?
Réduire :
Voir}
+
+ )}
+
}
+
+ {value &&
+
+
+ }
+
+ );
+ }
+
+
+
+ function Display_Colunm_text({ value }) {
+
+ return (
+
+ {value}
+
+
+ );
+ }
+ const columns_apprenant_inscriptions = [
+ { field: 'id', headerName: 'id', hide: true },
+ { field: '_id', headerName: '_id', hide: true },
+ { field: 'session_id', headerName: 'session_id', hide: true, Width: 1 },
+ { field: 'session_code', headerName: 'Code Session', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'class_title', headerName: 'Titre Formation', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'class_internal_url', headerName: 'class_internal_url', hide: true, Width: 1 },
+ {
+ field: 'status', headerName: 'Statut', hide: false, flex: 1, minWidth: 50, maxWidth: 70,
+ valueFormatter: (params) => {
+ if (String(params.value) === "0")
+ return "Pré.";
+ else if (String(params.value) === "1")
+ return "Ins";
+ else if (String(params.value) === "-1")
+ return "Ann";
+ else if (String(params.value) === "2")
+ return "Enc";
+ else
+ return "???";
+ }
+ },
+
+ { field: 'client_rattachement_id', headerName: 'client__id', hide: true, Width: 1 },
+ { field: 'client_rattachement_nom', headerName: 'Client', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+
+ { field: 'date_debut', headerName: 'Début', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'date_fin', headerName: 'Fin', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'presentiel', headerName: 'Présentiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
+ { field: 'distanciel', headerName: 'Distantiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
+
+ { field: 'class_recyclage_delai', headerName: 'Recycl. Delai', hide: false, flex: 1, minWidth: 100, },
+ { field: 'class_recyclage_periodicite', headerName: 'Recycl. Perio', hide: false, flex: 1, minWidth: 100, },
+ { field: 'nb_jour_avant_recyclage', headerName: 'Jrs avant Recycl.', hide: false, flex: 1, minWidth: 100, },
+
+
+ {
+ field: "Detail", headerName: 'Voir détail',
+ renderCell: (cellValues) => {
+ return (
+
+
+
+ );
+ }
+ },
+
+ {
+ field: "delete", headerName: 'Supprimer',
+ renderCell: (cellValues) => {
+ return (
+
+
+
+
+ }
+ modal
+ nested
+ position="center center"
+ >
+ {close => (
+
+
+
MySy Information
+
+ {' '}
+
+ En confirmant cette opération, l'inscription sera définitivement supprimée.
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+
+
+
+ );
+ }
+ },
+
+
+ ]
+
+ return (
+
+
+ {isLoading &&
}
+
+
+ {/*** Affichage des messages d'alerte*/}
+ {display_alert_mysy && String(display_alert_mysy) === "1" &&
+
+ }
+ {/*** FIN Affichage des messages d'alerte*/}
+
+
+
Mes Notes
+
+
Utilisez les filtres !
+
+
+ {
+ setp_filtre1(e.target.value)
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+ {p_filtre1 &&
+
{ setp_filtre1_value(e.target.value); }}
+ InputProps={{
+ endAdornment: (
+
+ {
+ setp_filtre1_value("");
+ }} />
+
+ ),
+ }}
+
+ />
+
+ }
+
+ {p_filtre1 &&
}
+ {p_filtre1 &&
}
+
+
+
+
+ {p_filtre2 &&
+
+
+ {
+ setp_filtre2(e.target.value)
+ }}
+ >
+
+
+
+
+
+
+
+
+ {String(p_filtre2).length > 3 &&
+
setp_filtre2_value(e.target.value)}
+ InputProps={{
+ endAdornment: (
+
+ {
+ setp_filtre2_value("");
+ }} />
+
+ ),
+ }}
+
+ />}
+
+
+
+ {String(p_filtre2).length > 3 &&
}
+
+ }
+
+
+ {
+
+
+
+
+
+
+
+
+
+
+
}
+
+
+
+
+
+ );
+}
+
+export default Module_Ent_Mes_Notes;
\ No newline at end of file
diff --git a/src/components/Module_Ent_Mon_Planning.js b/src/components/Module_Ent_Mon_Planning.js
new file mode 100644
index 0000000..89cec9f
--- /dev/null
+++ b/src/components/Module_Ent_Mon_Planning.js
@@ -0,0 +1,477 @@
+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 { FcViewDetails, FcDisapprove } from "react-icons/fc";
+import 'react-tooltip/dist/react-tooltip.css'
+import { Tooltip } from 'react-tooltip'
+import Checkbox from '@mui/material/Checkbox';
+import excel_icone from "../mysy_img/excel_icone.png";
+
+import fileDownload from 'js-file-download'
+import { FcInfo } from "react-icons/fc";
+import Popup from 'reactjs-popup';
+import 'reactjs-popup/dist/index.css';
+
+import { FcAcceptDatabase, } from "react-icons/fc";
+import { format } from 'date-fns'
+import InputAdornment from '@mui/material/InputAdornment';
+import { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
+import Box from '@mui/material/Box';
+
+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 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 { FcEditImage } from "react-icons/fc";
+import ToggleSwitch from "./ToggleSwitch";
+
+import { FcSpeaker } from "react-icons/fc";
+import Autocomplete from '@mui/material/Autocomplete';
+import { FcOpenedFolder } from "react-icons/fc";
+import Module_Absence from "./Module_Absence";
+import { RiMoreFill } from "react-icons/ri";
+import DatePicker from "react-datepicker";
+import "react-datepicker/dist/react-datepicker.css";
+import moment from "moment";
+import 'moment/locale/fr';
+import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
+import { gridClasses } from '@mui/x-data-grid';
+import Link from '@mui/material/Link';
+import { PiDotsThree } from "react-icons/pi";
+import {
+ GridToolbarContainer, GridToolbarExport, GridToolbarColumnsButton,
+ GridToolbarFilterButton, GridToolbarDensitySelector, GridToolbarExportContainer, useGridApiContext,
+ gridFilteredSortedRowIdsSelector,
+ gridVisibleColumnFieldsSelector,
+ GridValueGetterParams,
+ GridPreferencePanelsValue,
+
+} from '@mui/x-data-grid';
+import * as XLSX from 'xlsx';
+import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
+
+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';
+
+function PaperComponent(props) {
+ return (
+
+
+
+ );
+}
+
+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_Ent_Mon_Planning = (props) => {
+
+ const classes = useStyles();
+
+ const history = useHistory();
+ const [submenu, setsubmenu] = useState("");
+
+
+
+ const filters = [
+ { value: 'email', label: 'Email' },
+ { value: 'nom', label: 'Nom' },
+ { value: 'prenom', label: 'Prénom' }
+ ]
+
+ const [selectedfilt1, setselectedfilt1] = useState("");
+ const [selectedfilt2, setselectedfilt2] = useState("");
+ const [selectedfilt3, setselectedfilt3] = useState("");
+
+
+ function ExpandableCell_50({ value }) {
+ const [expanded, setExpanded] = React.useState(false);
+
+ return (
+
+ {value &&
+
+ {expanded ? value : value.slice(0, 50)}
+ {value.length > 50 && (
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
+
setExpanded(!expanded)}
+ >
+ {expanded ?
Réduire :
Voir}
+
+ )}
+
}
+
+ {value &&
+
+
+ }
+
+ );
+ }
+
+
+
+ function Display_Colunm_text({ value }) {
+
+ return (
+
+ {value}
+
+
+ );
+ }
+ const columns_apprenant_inscriptions = [
+ { field: 'id', headerName: 'id', hide: true },
+ { field: '_id', headerName: '_id', hide: true },
+ { field: 'session_id', headerName: 'session_id', hide: true, Width: 1 },
+ { field: 'session_code', headerName: 'Code Session', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'class_title', headerName: 'Titre Formation', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'class_internal_url', headerName: 'class_internal_url', hide: true, Width: 1 },
+ {
+ field: 'status', headerName: 'Statut', hide: false, flex: 1, minWidth: 50, maxWidth: 70,
+ valueFormatter: (params) => {
+ if (String(params.value) === "0")
+ return "Pré.";
+ else if (String(params.value) === "1")
+ return "Ins";
+ else if (String(params.value) === "-1")
+ return "Ann";
+ else if (String(params.value) === "2")
+ return "Enc";
+ else
+ return "???";
+ }
+ },
+
+ { field: 'client_rattachement_id', headerName: 'client__id', hide: true, Width: 1 },
+ { field: 'client_rattachement_nom', headerName: 'Client', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+
+ { field: 'date_debut', headerName: 'Début', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'date_fin', headerName: 'Fin', hide: false, minWidth: 200, flex: 1, renderCell: (params) =>
, },
+ { field: 'presentiel', headerName: 'Présentiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
+ { field: 'distanciel', headerName: 'Distantiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
+
+ { field: 'class_recyclage_delai', headerName: 'Recycl. Delai', hide: false, flex: 1, minWidth: 100, },
+ { field: 'class_recyclage_periodicite', headerName: 'Recycl. Perio', hide: false, flex: 1, minWidth: 100, },
+ { field: 'nb_jour_avant_recyclage', headerName: 'Jrs avant Recycl.', hide: false, flex: 1, minWidth: 100, },
+
+
+ {
+ field: "Detail", headerName: 'Voir détail',
+ renderCell: (cellValues) => {
+ return (
+
+
+
+ );
+ }
+ },
+
+ {
+ field: "delete", headerName: 'Supprimer',
+ renderCell: (cellValues) => {
+ return (
+
+
+
+
+ }
+ modal
+ nested
+ position="center center"
+ >
+ {close => (
+
+
+
MySy Information
+
+ {' '}
+
+ En confirmant cette opération, l'inscription sera définitivement supprimée.
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+
+
+
+ );
+ }
+ },
+
+
+ ]
+
+ return (
+
+
+ {isLoading &&
}
+
+
+ {/*** Affichage des messages d'alerte*/}
+ {display_alert_mysy && String(display_alert_mysy) === "1" &&
+
+ }
+ {/*** FIN Affichage des messages d'alerte*/}
+
+
+
Mes apprenants
+
+
Utilisez les filtres !
+
+
+ {
+ setp_filtre1(e.target.value)
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+ {p_filtre1 &&
+
{ setp_filtre1_value(e.target.value); }}
+ InputProps={{
+ endAdornment: (
+
+ {
+ setp_filtre1_value("");
+ }} />
+
+ ),
+ }}
+
+ />
+
+ }
+
+ {p_filtre1 &&
}
+ {p_filtre1 &&
}
+
+
+
+
+ {p_filtre2 &&
+
+
+ {
+ setp_filtre2(e.target.value)
+ }}
+ >
+
+
+
+
+
+
+
+
+ {String(p_filtre2).length > 3 &&
+
setp_filtre2_value(e.target.value)}
+ InputProps={{
+ endAdornment: (
+
+ {
+ setp_filtre2_value("");
+ }} />
+
+ ),
+ }}
+
+ />}
+
+
+
+ {String(p_filtre2).length > 3 &&
}
+
+ }
+
+
+ {
+
+
+
+
+
+
+
+
+
+
+
}
+
+
+
+
+
+ );
+}
+
+export default Module_Ent_Mon_Planning;
\ No newline at end of file
diff --git a/src/components/Student_Account.js b/src/components/Student_Account.js
index 971f934..8d72a57 100644
--- a/src/components/Student_Account.js
+++ b/src/components/Student_Account.js
@@ -21,6 +21,10 @@ 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 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";
+import Module_Ent_Mes_Formations from "./Module_Ent_Mes_Formations";
+import Module_Ent_Mes_Notes from "./Module_Ent_Mes_Notes";
function Student_Account() {
const [menu, setmenu] = useState("mes_stagiaires");
@@ -449,7 +453,7 @@ function Student_Account() {
}
- {connected_user_data && connected_user_data.type &&