07/12/2023 - 11h30
parent
be9f5dc1d5
commit
52d74a236c
|
@ -630,7 +630,7 @@ const Config_Documents = (props) => {
|
||||||
|
|
||||||
|
|
||||||
if (mylocal_document.duplicate) {
|
if (mylocal_document.duplicate) {
|
||||||
setp_one_detail_duplicate(mylocal_document.sujet);
|
setp_one_detail_duplicate(mylocal_document.duplicate);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
setp_one_detail_duplicate("0");
|
setp_one_detail_duplicate("0");
|
||||||
|
@ -973,6 +973,11 @@ const Config_Documents = (props) => {
|
||||||
setadd_one_document();
|
setadd_one_document();
|
||||||
setdisplay_add_one_document();
|
setdisplay_add_one_document();
|
||||||
Getall_Partner_Document_No_filter();
|
Getall_Partner_Document_No_filter();
|
||||||
|
window.scrollTo({
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
behavior: "smooth",
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
setAdd_one_Partner_Document_api("false");
|
setAdd_one_Partner_Document_api("false");
|
||||||
|
|
|
@ -372,7 +372,7 @@ const Dashbord_Session_Par_Fteur = (props) => {
|
||||||
const stored_cookie = getCookie('tokenmysypart');
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
var nom_fichier_cmd = "export_csv.csv";
|
var nom_fichier_cmd = "export_csv.csv";
|
||||||
console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- local_dashbord_internal_id = ", local_dashbord_internal_id);
|
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- local_dashbord_internal_id = ", local_dashbord_internal_id);
|
||||||
|
|
||||||
var url = process.env.REACT_APP_API_URL + "myclass/api/Export_Dashbord_To_Csv/" + stored_cookie + "/" + local_dashbord_internal_id;
|
var url = process.env.REACT_APP_API_URL + "myclass/api/Export_Dashbord_To_Csv/" + stored_cookie + "/" + local_dashbord_internal_id;
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ import { RiMoreFill } from "react-icons/ri";
|
||||||
import Switch from '@mui/material/Switch';
|
import Switch from '@mui/material/Switch';
|
||||||
import { FcSearch } from "react-icons/fc";
|
import { FcSearch } from "react-icons/fc";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
|
import Module_Historique_Action from "./Module_Historique_Action";
|
||||||
|
|
||||||
const DisplayPartnerStagiaires = (props) => {
|
const DisplayPartnerStagiaires = (props) => {
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
@ -735,6 +736,8 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
|
|
||||||
const [display_detail_absence, setdisplay_detail_absence] = useState("");
|
const [display_detail_absence, setdisplay_detail_absence] = useState("");
|
||||||
|
|
||||||
|
const [display_detail_historique, setdisplay_detail_historique] = useState("");
|
||||||
|
|
||||||
const [selected_id, setselected_id] = useState("");
|
const [selected_id, setselected_id] = useState("");
|
||||||
|
|
||||||
function handleClick_edit_session_From_Line(selected_row_id) {
|
function handleClick_edit_session_From_Line(selected_row_id) {
|
||||||
|
@ -1633,17 +1636,27 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
setsubmenu("sessions");
|
setsubmenu("sessions");
|
||||||
setdisplay_detail_stagiaire();
|
setdisplay_detail_stagiaire();
|
||||||
setdisplay_detail_absence();
|
setdisplay_detail_absence();
|
||||||
|
setdisplay_detail_historique();
|
||||||
desableSessionFields();
|
desableSessionFields();
|
||||||
}
|
}
|
||||||
|
|
||||||
function submenu_absence() {
|
function submenu_absence() {
|
||||||
setsubmenu("absence");
|
setsubmenu("absence");
|
||||||
setdisplay_detail_stagiaire();
|
setdisplay_detail_stagiaire();
|
||||||
|
setdisplay_detail_historique();
|
||||||
setdisplay_detail_absence("1");
|
setdisplay_detail_absence("1");
|
||||||
desableSessionFields();
|
desableSessionFields();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function submenu_historique() {
|
||||||
|
setsubmenu("historique");
|
||||||
|
setdisplay_detail_stagiaire();
|
||||||
|
setdisplay_detail_absence();
|
||||||
|
setdisplay_detail_historique("1");
|
||||||
|
desableSessionFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const [SendEvaluationEmail_api, setSendEvaluationEmail_api] = useState();
|
const [SendEvaluationEmail_api, setSendEvaluationEmail_api] = useState();
|
||||||
const [SendEvaluationEmail_message, setSendEvaluationEmail_message] = useState();
|
const [SendEvaluationEmail_message, setSendEvaluationEmail_message] = useState();
|
||||||
const [SendEvaluationEmail_result, setSendEvaluationEmail_result] = useState();
|
const [SendEvaluationEmail_result, setSendEvaluationEmail_result] = useState();
|
||||||
|
@ -5777,6 +5790,7 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_stagaire} className="detail_class_submenu" id='detail_session' name='detail_session'>Détail Stagiaire</Button>
|
<Button variant="outlined" ref={myRef} onClick={submenu_detail_stagaire} className="detail_class_submenu" id='detail_session' name='detail_session'>Détail Stagiaire</Button>
|
||||||
<Button variant="outlined" onClick={submenu_sessions} className="detail_class_submenu" id='preinscrit' name='preinscrit'>Détail Session </Button>
|
<Button variant="outlined" onClick={submenu_sessions} className="detail_class_submenu" id='preinscrit' name='preinscrit'>Détail Session </Button>
|
||||||
<Button variant="outlined" onClick={submenu_absence} className="detail_class_submenu" id='absence' name='absence'>Absence </Button>
|
<Button variant="outlined" onClick={submenu_absence} className="detail_class_submenu" id='absence' name='absence'>Absence </Button>
|
||||||
|
<Button variant="outlined" onClick={submenu_historique} className="detail_class_submenu" id='historique' name='historique'>Historique </Button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -7726,7 +7740,15 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
{String(submenu) === "absence" && String(display_detail_absence) === "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
|
{String(submenu) === "absence" && String(display_detail_absence) === "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
|
||||||
|
|
||||||
<Module_Absence attendee_email={selectedattendeeemail}
|
<Module_Absence attendee_email={selectedattendeeemail}
|
||||||
|
inscription_id={selected_id}
|
||||||
|
read_access={props.read_access}
|
||||||
|
write_access={props.write_access} />
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
{String(submenu) === "historique" && String(display_detail_historique) === "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
|
||||||
|
|
||||||
|
<Module_Historique_Action related_collection="inscription"
|
||||||
|
related_collection_recid={selected_id}
|
||||||
read_access={props.read_access}
|
read_access={props.read_access}
|
||||||
write_access={props.write_access} />
|
write_access={props.write_access} />
|
||||||
</div>}
|
</div>}
|
||||||
|
|
|
@ -832,6 +832,7 @@ const [Get_Partner_Debut_Fin_Journee_api, setGet_Partner_Debut_Fin_Journee_api]
|
||||||
const stored_cookie = getCookie('tokenmysypart');
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("_id", p_detail_event_id);
|
form.append("_id", p_detail_event_id);
|
||||||
|
form.append("inscription_id", props.inscription_id);
|
||||||
form.append("related_collection", "inscription");
|
form.append("related_collection", "inscription");
|
||||||
|
|
||||||
form.append("event_title", new_title);
|
form.append("event_title", new_title);
|
||||||
|
|
|
@ -0,0 +1,203 @@
|
||||||
|
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 img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
|
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 'react-tooltip/dist/react-tooltip.css'
|
||||||
|
import { Tooltip } from 'react-tooltip'
|
||||||
|
import add_plus from "../mysy_img/plus.png";
|
||||||
|
import Popup from 'reactjs-popup';
|
||||||
|
import 'reactjs-popup/dist/index.css';
|
||||||
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
|
import InputAdornment from '@mui/material/InputAdornment';
|
||||||
|
import { AiFillCloseCircle } 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 { HiOutlineDocumentDuplicate } from "react-icons/hi2";
|
||||||
|
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
|
||||||
|
import { Fab } from "@material-ui/core";
|
||||||
|
import fileDownload from 'js-file-download'
|
||||||
|
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
|
||||||
|
|
||||||
|
import Timeline from '@mui/lab/Timeline';
|
||||||
|
import TimelineItem from '@mui/lab/TimelineItem';
|
||||||
|
import TimelineSeparator from '@mui/lab/TimelineSeparator';
|
||||||
|
import TimelineConnector from '@mui/lab/TimelineConnector';
|
||||||
|
import TimelineContent from '@mui/lab/TimelineContent';
|
||||||
|
|
||||||
|
import TimelineDot from '@mui/lab/TimelineDot';
|
||||||
|
import TimelineOppositeContent, {
|
||||||
|
timelineOppositeContentClasses,
|
||||||
|
} from '@mui/lab/TimelineOppositeContent';
|
||||||
|
|
||||||
|
import FastfoodIcon from '@mui/icons-material/Fastfood';
|
||||||
|
import LaptopMacIcon from '@mui/icons-material/LaptopMac';
|
||||||
|
import HotelIcon from '@mui/icons-material/Hotel';
|
||||||
|
import RepeatIcon from '@mui/icons-material/Repeat';
|
||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const Module_Historique_Action = (props) => {
|
||||||
|
const history = useHistory();
|
||||||
|
const [submenu, setsubmenu] = useState("");
|
||||||
|
|
||||||
|
const [related_collection, setrelated_collection] = useState(props.related_collection);
|
||||||
|
const [related_collection_recid, setrelated_collection_recid] = useState(props.related_collection_recid);
|
||||||
|
|
||||||
|
|
||||||
|
const [Dialog_1_message, setDialog_1_message] = React.useState(false);
|
||||||
|
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
|
||||||
|
function Dialog_1_handle_change_participant_session(message) {
|
||||||
|
setDialog_1_message(message);
|
||||||
|
setDialog_1_open(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Dialog_1_handleClose = () => {
|
||||||
|
//alert(" Utiliser le bouton 'fermer' ");
|
||||||
|
//setOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Dialog_1_handleClose_buton = () => {
|
||||||
|
setDialog_1_open(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
//menu_info();
|
||||||
|
Get_List_Historic_Action();
|
||||||
|
|
||||||
|
var divh = document.getElementById('div_header').offsetTop;
|
||||||
|
window.scrollTo({
|
||||||
|
top: divh,
|
||||||
|
behavior: "smooth",
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}, [related_collection_recid]);
|
||||||
|
|
||||||
|
|
||||||
|
const [Get_List_Historic_Action_api, setGet_List_Historic_Action_api] = useState();
|
||||||
|
const [Get_List_Historic_Action_message, setGet_List_Historic_Action_message] = useState();
|
||||||
|
const [Get_List_Historic_Action_result, setGet_List_Historic_Action_result] = useState();
|
||||||
|
function Get_List_Historic_Action(event) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("related_collection", related_collection);
|
||||||
|
form.append("related_collection_recid", related_collection_recid);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Action_Historique_List/";
|
||||||
|
|
||||||
|
setLoading(true);
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
//console.log(" In Get_List_Historic_Action res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Get_List_Historic_Action res.data.message r_class = " + res.data.message);
|
||||||
|
setLoading(false);
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
setGet_List_Historic_Action_api("true");
|
||||||
|
setGet_List_Historic_Action_result(res.data.message);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (String(res.data.status) === String("Err_Connexion")) {
|
||||||
|
alert('Erreur: ' + res.data.message);
|
||||||
|
history.push("/Connexion");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setGet_List_Historic_Action_api("false");
|
||||||
|
setGet_List_Historic_Action_message(res.data.message);
|
||||||
|
alert(res.data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.warn('Not good man :( Get_List_Historic_Action = ', error);
|
||||||
|
setGet_List_Historic_Action_api("false");
|
||||||
|
alert(" Impossible de récupérer l'historique");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const [isLoading, setLoading] = useState();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="module_historique_action">
|
||||||
|
{isLoading && <div className="loader-container">
|
||||||
|
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
<Dialog
|
||||||
|
open={Dialog_1_open}
|
||||||
|
onClose={Dialog_1_handleClose}
|
||||||
|
|
||||||
|
>
|
||||||
|
|
||||||
|
<DialogTitle>MySy Information</DialogTitle>
|
||||||
|
<DialogContent>
|
||||||
|
<DialogContentText>
|
||||||
|
{Dialog_1_message}
|
||||||
|
</DialogContentText>
|
||||||
|
|
||||||
|
</DialogContent>
|
||||||
|
|
||||||
|
<DialogActions>
|
||||||
|
<Button onClick={Dialog_1_handleClose_buton}>OK</Button>
|
||||||
|
|
||||||
|
</DialogActions>
|
||||||
|
</Dialog>
|
||||||
|
<div className="div_row" id="div_header">
|
||||||
|
<h3> Historique des actions </h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Timeline
|
||||||
|
sx={{
|
||||||
|
[`& .${timelineOppositeContentClasses.root}`]: {
|
||||||
|
flex: 0.2,
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
|
||||||
|
{Get_List_Historic_Action_result &&
|
||||||
|
Get_List_Historic_Action_result.map((event) => (
|
||||||
|
|
||||||
|
<TimelineItem>
|
||||||
|
<TimelineOppositeContent color="textSecondary" style={{"fontSize":"13px"}}>
|
||||||
|
{JSON.parse(event).date_update}
|
||||||
|
</TimelineOppositeContent>
|
||||||
|
<TimelineSeparator>
|
||||||
|
<TimelineDot />
|
||||||
|
<TimelineConnector />
|
||||||
|
</TimelineSeparator>
|
||||||
|
<TimelineContent style={{"fontSize":"13px"}}><b>{JSON.parse(event).connected_user_nom} :</b> {JSON.parse(event).action_description} </TimelineContent>
|
||||||
|
</TimelineItem>
|
||||||
|
|
||||||
|
))}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</Timeline>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Module_Historique_Action;
|
File diff suppressed because it is too large
Load Diff
|
@ -90,4 +90,5 @@
|
||||||
@import "./components/dashbord_session";
|
@import "./components/dashbord_session";
|
||||||
@import "./components/mon_tableau_de_bord";
|
@import "./components/mon_tableau_de_bord";
|
||||||
@import "./components/dashbord_formation";
|
@import "./components/dashbord_formation";
|
||||||
|
@import "./components/module_historique_action";
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue