20/12/2023 - 18h

recette2
cherif 2023-12-20 18:07:24 +01:00
parent 3c495a2327
commit a98bfdfbf6
14 changed files with 575 additions and 57959 deletions

1
.env
View File

@ -6,5 +6,6 @@ REACT_APP_API_URL_prod=https://apimysy.mysy-training.com/
REACT_APP_API_URL_recette=https://devapimysy.mysy-training.com/
REACT_APP_API_URL=http://localhost:5001/
REACT_APP_BASE_URL=http://localhost:3009/recherche-formation
REACT_APP_FRONT_URL=http://localhost:3009/
REACT_APP_ENV=DEV
GENERATE_SOURCEMAP=false

57669
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -148,8 +148,8 @@
"wysiwyg": "^2.0.0"
},
"scripts": {
"start": "set \"GENERATE_SOURCEMAP=false\" && react-scripts start --max-old-space-size=16384",
"build": "react-scripts build --max-old-space-size=16384",
"start": "set \"GENERATE_SOURCEMAP=false\" && react-scripts --max_old_space_size=16384 start",
"build": "react-scripts --max_old_space_size=16384 build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"winBuild": "set \"GENERATE_SOURCEMAP=false\" && react-scripts build"

View File

@ -78,6 +78,10 @@ function App() {
<Route path="/Display-Detail-Article/:articleId" exact component={DisplayDetailArticle} />
<Route path="/Display-Detail-formation-Coeur/:classId" exact component={CoupDeCoeur} />
<Route path="/Partner/:action/:orderid/:packs" exact component={Partner} />
<Route path="/Partner/:action/:orderid" exact component={Partner} />
<Route path="/Partner/:action" exact component={Partner} />
<Route path="/Partner" exact component={Partner} />
<Route path="/PartnerLogin" exact component={PartnerLogin} />

View File

@ -435,7 +435,7 @@ const AddParnerClient = (props) => {
setformedit_mode_invoice("0");
submenu_donnee_client();
fillfield(props.client_mail);
fillfield();
setdatamodification("0");
setdatamodification_invoice("0");

View File

@ -26,7 +26,7 @@ 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 { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
import Box from '@mui/material/Box';
import { Typography, LinearProgress } from '@mui/material';
import styled from 'styled-components';
@ -48,8 +48,10 @@ 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";
const DisplayPartnerSession = (props) => {
const history = useHistory();
const [submenu, setsubmenu] = useState("");
const [rowss, setRows] = useState([]);
@ -142,7 +144,7 @@ const DisplayPartnerSession = (props) => {
field: 'etape', headerName: 'Etape', hide: false, width: datagrid_columns_size_model2,
},
{ field: 'class_external_code', headerName: 'Code Formation', align: "center", hideable: true, flex: 1, hide: false, minWidth: 150 },
{ field: 'class_external_code', headerName: 'Code Formation', align: "center", hideable: true, flex: 1, hide: true, minWidth: 150 },
{ field: 'date_debut', headerName: 'Debut', hide: false, width: datagrid_columns_size_model2, },
{ field: 'date_fin', headerName: 'Fin', hideable: false, width: datagrid_columns_size_model2, },
{
@ -275,7 +277,7 @@ const DisplayPartnerSession = (props) => {
);
}
}
},
]
@ -1021,7 +1023,7 @@ const DisplayPartnerSession = (props) => {
setLoading(false);
console.warn('Not good man :( Getall_TrainingSession = ', error);
setGetall_TrainingSession_api("false");
alert("Impossible de lancer la recherche")
alert("Impossible de lancer la recherche");
//setmyApimyApiMessage("")
})
}
@ -1094,6 +1096,8 @@ const DisplayPartnerSession = (props) => {
const [session_selected_row_id, setsession_selected_row_id] = useState("");
const [selected_class_external_code, setselected_class_external_code] = useState("");
function handleClick_edit_session_From_Line(selected_row_id) {
setaddOneSession("0");
setEdite_session("0");
@ -1115,6 +1119,8 @@ const DisplayPartnerSession = (props) => {
var session_id = line._id;
setselected_session_id(session_id);
setselected_class_external_code(line.class_external_code);
Getall_Sequence_Of_Session(session_id);
@ -1130,6 +1136,41 @@ const DisplayPartnerSession = (props) => {
GetListeEmargement(line._id, line.class_internal_url);
}
// lorsqu'on rentre dans ce fichier avec deja un session_id (cas des directions )
function Display_session_From_Props(props_session_id, props_class_internal_url) {
setLoading(true);
setaddOneSession("0");
setEdite_session("0");
setnb_stagiaire_Preinscrit("0");
setnb_stagiaire_Inscrit("0");
setselectionModel_preinsc([]);
setSelectionModel_insc([]);
setselected_internal_url(props_class_internal_url);
setselected_session_id(props_session_id);
Getall_Sequence_Of_Session(props_session_id);
submenu_detail_session();
GetCurrentSession(props_session_id, props_class_internal_url);
GetListePreinscrit(props_session_id, props_class_internal_url);
GetListeInscrit(props_session_id, props_class_internal_url);
GetListeEmargement(props_session_id, props_class_internal_url);
setLoading(false);
}
const [Get_List_Partner_Clients_api, setGet_List_Partner_Clients_api] = useState();
const [Get_List_Partner_Clients_message, setGet_List_Partner_Clients_message] = useState();
const [Get_List_Partner_Clients_result, setGet_List_Partner_Clients_result] = useState();
@ -1316,6 +1357,7 @@ const DisplayPartnerSession = (props) => {
useEffect(() => {
Get_Partner_Object_Specific_Fields_stagiaire();
Getall_Training_Employee_No_Filter();
@ -1334,10 +1376,18 @@ const DisplayPartnerSession = (props) => {
Get_Partner_Object_Specific_Fields("session_formation");
if (String(props.object_key).length > 3) {
setLoading(true);
GetCurrentSession(props.object_key, props.class_internal_url);
Display_session_From_Props(props.object_key, props.class_internal_url);
setLoading(false);
} else {
window.scrollTo({
top: 0,
behavior: "smooth",
});
}
}, [])
@ -3908,11 +3958,8 @@ const DisplayPartnerSession = (props) => {
setp_session_etape(mylocaltraining.session_etape);
setp_session_etape_label(mylocaltraining.session_etape);
} else {
setp_session_etape_label("Projet");
setp_session_etape("0");
}
@ -3951,9 +3998,16 @@ const DisplayPartnerSession = (props) => {
setp_myclass_title(mylocaltraining.myclass[0].title);
if (mylocaltraining.class_external_code)
setselected_class_external_code(mylocaltraining.class_external_code);
document.getElementsByName("code_session")[0].value = "";
if (mylocaltraining.code_session)
if (mylocaltraining.code_session) {
setp_code_session(mylocaltraining.code_session);
setselected_code_session(mylocaltraining.code_session);
}
document.getElementsByName("nb_participant")[0].value = "";
if (mylocaltraining.nb_participant)
@ -4032,6 +4086,12 @@ const DisplayPartnerSession = (props) => {
setp_detail_titre(mylocaltraining.titre);
}
if (mylocaltraining.title) {
setselected_class_title(mylocaltraining.title);
}
if (mylocaltraining.location_type) {
setp_detail_location_type(mylocaltraining.location_type);
}
@ -9223,7 +9283,6 @@ const DisplayPartnerSession = (props) => {
prix_session: JSON.parse(item).prix_session,
published: JSON.parse(item).class_published,
session_title: JSON.parse(item).titre,
}
))}
@ -9480,19 +9539,31 @@ const DisplayPartnerSession = (props) => {
shrink: true,
}}
disabled={true}
className="disabled_style enable_style"
className="disabled_style enable_style disabled_style_left_text_with_visualiser_icone"
value={p_myclass_title}
onChange={(e) => {
setone_selected_internal_url(e.target.value);
setp_myclass_title(e.target.value)
Get_Class_Data(e.target.value);
}}
/>
<Tooltip id="detail_01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="detail_01" data-tooltip-content="Voir les détails">
<div className="disabled_style disabled_style_right_bton_visualiser" onClick={(event) => {
if (selected_internal_url && String(selected_internal_url).length > 2) {
window.open(
process.env.REACT_APP_FRONT_URL + "Partner/affichage/" + String(selected_class_external_code) + "/" + String(selected_internal_url),
'_blank'
);
}
}
}
>
<div className="disabled_style_with_visualiser_icone" >
<FcOpenedFolder />
</div>
</div>
</a>
</div>
<div className="session_caract"><b> Code Session </b><br />

View File

@ -10,7 +10,7 @@ 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 { FcDisapprove } from "react-icons/fc";
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import add_plus from "../mysy_img/plus.png";
@ -44,12 +44,14 @@ import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
import { AiTwotoneSave } from "react-icons/ai";
import Module_Absence from "./Module_Absence";
import { RiMoreFill } from "react-icons/ri";
import Switch from '@mui/material/Switch';
import { FcSearch } from "react-icons/fc";
import { useHistory } from "react-router-dom";
import Module_Historique_Action from "./Module_Historique_Action";
import ToggleSwitch from "./ToggleSwitch";
import Autocomplete from '@mui/material/Autocomplete';
import { FcDownRight, FcRight, FcSearch, FcViewDetails, FcOpenedFolder } from "react-icons/fc";
import { MdOutlineVisibility } from "react-icons/md";
const DisplayPartnerStagiaires = (props) => {
const history = useHistory();
@ -92,11 +94,12 @@ const DisplayPartnerStagiaires = (props) => {
{ field: 'prenom', headerName: 'Prénom', minWidth: 150, flex: 1, hide: false, editable: false },
{ field: 'email', headerName: 'Email', minWidth: 200, flex: 1, hideable: false, editable: false },
{ field: 'employeur', headerName: 'Employeur', minWidth: 150, hide: true, editable: false },
{ field: 'client_nom', headerName: 'Client', minWidth: 150, flex: 1, hide: false, editable: false },
{
field: 'status', headerName: 'Statut', hide: false, width: datagrid_columns_size_model2,
valueFormatter: (params) => {
if (String(params.value) === "0")
return "Préinscrit";
return "PréIns.";
else if (String(params.value) === "1")
return "Inscrit";
else if (String(params.value) === "-1")
@ -167,7 +170,7 @@ const DisplayPartnerStagiaires = (props) => {
trigger={<Button
>
<FcCancel /> Annuler
Annuler
</Button>}
modal
@ -334,7 +337,7 @@ const DisplayPartnerStagiaires = (props) => {
},
{
field: "Imprimer", headerName: 'Imprimer detail',
field: "Impr.", headerName: 'Imprimer detail',
renderCell: (cellValues) => {
return (
@ -5899,6 +5902,7 @@ const DisplayPartnerStagiaires = (props) => {
nom: JSON.parse(item).nom,
prenom: JSON.parse(item).prenom,
employeur: JSON.parse(item).employeur,
client_nom: JSON.parse(item).client_rattachement_nom,
status: JSON.parse(item).status,
title: JSON.parse(item).title,
distantiel: JSON.parse(item).distantiel,
@ -6674,9 +6678,9 @@ const DisplayPartnerStagiaires = (props) => {
<div className="session_data" >
<div>
{String(participant_data_edit_mode) !== "1" && <div className="session_caract"> <b> Session </b><br />
{String(participant_data_edit_mode) !== "1" && <div className="session_caract" tyle={{ "width": "80%", "float": "left" }}> <b> Session</b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 } }}
required
name="detail_session_class"
id="detail_session_class"
@ -6685,11 +6689,30 @@ const DisplayPartnerStagiaires = (props) => {
shrink: true,
}}
disabled={false}
className="disabled_style"
className="disabled_style disabled_style_left_text_with_visualiser_icone"
value={p_detail_session_class}
/>
<Tooltip id="detail_01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="detail_01" data-tooltip-content="Voir les détails">
<div className="disabled_style disabled_style_right_bton_visualiser" onClick={(event) => {
if (selected_session_id && selected_internal_url && String(selected_session_id).length > 2 && String(selected_internal_url).length > 2) {
window.open(
process.env.REACT_APP_FRONT_URL + "Partner/mes_sessions/" + String(selected_session_id) + "/" + String(selected_internal_url),
'_blank'
);
}
}
}
>
<div className="disabled_style_with_visualiser_icone" >
<FcOpenedFolder />
</div>
</div>
</a>
</div>}
@ -6772,10 +6795,33 @@ const DisplayPartnerStagiaires = (props) => {
shrink: true,
}}
disabled={false}
className="disabled_style"
className="disabled_style disabled_style_left_text_with_visualiser_icone"
value={p_detail_client_rattachement_nom}
/>
<Tooltip id="detail_01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="detail_01" data-tooltip-content="Voir les détails">
<div className="disabled_style disabled_style_right_bton_visualiser" onClick={(event) => {
if (p_detail_client_rattachement_id && String(p_detail_client_rattachement_id).length > 2) {
window.open(
process.env.REACT_APP_FRONT_URL + "Partner/mes_clients/" + String(p_detail_client_rattachement_id),
'_blank'
);
}
else{
alert(" Aucun client selectionné")
}
}
}
>
<div className="disabled_style_with_visualiser_icone" >
<FcOpenedFolder />
</div>
</div>
</a>
</div>}

View File

@ -7,8 +7,7 @@ import Button from '@mui/material/Button';
import Select from 'react-select'
import { getCookie } from 'react-use-cookie';
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import Footer from "./Fotter";
import tick_ko from "../mysy_img/tick_KO.png";
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import { AiFillCloseCircle, } from "react-icons/ai";
@ -881,6 +880,18 @@ const DistplayPartnerTraningsPage = (props) => {
//GetAllClass();
GetAllClass_new();
if (String(props.class_internal_url).length > 3 && String(props.class_external_code).length > 3 ) {
setLoading(true);
setreftrainingtoupdate(props.class_internal_url);
setexternalcodetraining_toupdate(props.class_external_code);
setupdatetraining(true);
setLoading(false);
} else {
window.scrollTo({
top: 0,
behavior: "smooth",
@ -891,6 +902,7 @@ const DistplayPartnerTraningsPage = (props) => {
setismobilephone_columns_hide(true);
setdatagrid_columns_size_model2(10);
}
}
}, []);
function Clearselectedfilt1() {

View File

@ -103,7 +103,7 @@ const Partner = (props) => {
const [firstConnexion, setfirstConnexion] = useState("");
const [part_is_partner_admin_account, setpart_is_partner_admin_account] = useState("");
const { action, orderid, packs } = useParams()
const { action, orderid, packs, object_key, class_internal_url } = useParams()
const changeHandler = (event) => {
@ -1327,7 +1327,8 @@ const Partner = (props) => {
{String(menu) === "affichage" &&
<div className="div_droite">
<PartnerTranings ispending={partnerstatus} currentpack={partnerPackService} />
<PartnerTranings ispending={partnerstatus} currentpack={partnerPackService} conntected_employee_id={conntected_employee_id}
class_external_code={orderid} class_internal_url={packs}/>
</div>
}
@ -1483,7 +1484,9 @@ const Partner = (props) => {
{String(menu) === "mes_sessions" &&
<div className="div_droite">
<DisplayPartnerSession conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("session", "read")} write_access={check_user_acces_right("session", "write")} />
<DisplayPartnerSession 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")} />
</div>
}
@ -1550,7 +1553,8 @@ const Partner = (props) => {
{String(menu) === "mes_clients" && <div className="div_droite">
<Partner_Client conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("client", "read")} write_access={check_user_acces_right("client", "write")} />
<Partner_Client conntected_employee_id={conntected_employee_id} object_key={orderid}
read_access={check_user_acces_right("client", "read")} write_access={check_user_acces_right("client", "write")} />
</div>
}

View File

@ -292,11 +292,18 @@ const Partner_Client = (props) => {
useEffect(() => {
//menu_info();
Get_List_Partner_Clients();
if (String(props.object_key).length > 3) {
handleClick_edit_session_From_Props(props.object_key);
} else {
window.scrollTo({
top: 0,
left: 0,
behavior: "smooth",
});
}
}, []);
@ -424,9 +431,24 @@ const Partner_Client = (props) => {
});
}
}
function handleClick_edit_session_From_Props(props_client_id) {
setselected_id(props_client_id);
setEdite_Client("1");
window.scrollTo({
top: 800,
left: 0,
behavior: "smooth",
});
}
}
const [p_filtre1, setp_filtre1] = useState();

View File

@ -13,7 +13,6 @@ import MenuItem from '@mui/material/MenuItem';
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import { Calendar, dateFnsLocalizer } from 'react-big-calendar'
import format from 'date-fns/format'
import parse from 'date-fns/parse'
@ -34,8 +33,8 @@ 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 Typography from '@mui/material/Typography';
import Menu from '@mui/material/Menu';
const locales = {
'en-US': enUS,
@ -531,7 +530,38 @@ const TestUrl_New = (props) => {
setOpen(false);
};
const [contextMenu, setContextMenu] = React.useState(null);
const handleContextMenu = (event) => {
event.preventDefault();
setContextMenu(
contextMenu === null
? {
mouseX: event.clientX + 2,
mouseY: event.clientY - 6,
}
: // repeated contextmenu when it is already open closes it with Chrome 84 on Ubuntu
// Other native context menus might behave different.
// With this behavior we prevent contextmenu from the backdrop to re-locale existing context menus.
null,
);
};
const handleClose22 = () => {
alert(" 22");
setContextMenu(null);
};
const handleClose23 = () => {
alert(" 23");
setContextMenu(null);
};
const handleClose24 = () => {
alert(" 24");
setContextMenu(null);
};
const handleClose25 = () => {
setContextMenu(null);
};
return (
<div className="testurl_new">
<Helmet>
@ -569,6 +599,37 @@ const TestUrl_New = (props) => {
<div className="div_mobile">
<div onContextMenu={handleContextMenu} style={{ cursor: 'context-menu' }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="detail_session_class"
id="detail_session_class"
value={"uuuuuuuuuuu"}
//onContextMenu={handleContextMenu}
>
</TextField>
<Menu
open={contextMenu !== null}
onClose={handleClose}
anchorReference="anchorPosition"
anchorPosition={
contextMenu !== null
? { top: contextMenu.mouseY, left: contextMenu.mouseX }
: undefined
}
>
<MenuItem onClick={handleClose22} style={{"width":"100%"}}>Copy</MenuItem>
<MenuItem onClick={handleClose22} style={{"width":"100%"}}>Print</MenuItem>
<MenuItem onClick={handleClose22} style={{"width":"100%"}}>Highlight</MenuItem>
<MenuItem onClick={handleClose22} style={{"width":"100%"}}>Email</MenuItem>
</Menu>
</div>
<h3> Page de test * testurl_new </h3>
parametres courseid = {courseid}, tabid = {tabid}
<br />

View File

@ -2527,6 +2527,32 @@
// end media
.disabled_style_with_visualiser {
width: 80% !important;
}
.disabled_style_with_visualiser_icone{
float: left;
text-align: center;
width: 100%;
font-size: large;
padding-top: 10px;
}
.disabled_style_left_text_with_visualiser_icone{
width: 80% !important;
float: left;
}
.disabled_style_right_bton_visualiser{
width: 9% !important;
float: left;
cursor: pointer;
}
.css-md26zr-MuiInputBase-root-MuiOutlinedInput-root{
height: 3rem !important;
}

View File

@ -24,6 +24,7 @@
background-color: red;
color: black;
}
.mysy_spinner {
border-radius: 5px;
border: 1px solid black;
@ -228,6 +229,7 @@
border-radius: 10px;
margin-top: 10px;
margin-bottom: 10px;
padding-right: 10px;
}
@ -607,12 +609,6 @@
margin-bottom: 1rem;
}
.block_en_mass_bton_action {
width: 100%;
float: left;
margin-bottom: 1rem;
padding-top: 0.5rem !important;
}
.div_row_list_pj {
width: 100%;
@ -639,6 +635,14 @@
margin-bottom: 1rem;
padding-top: 0.5rem !important;
}
.tuteur_field {
width: 100%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
}
}
@media only screen and (min-width: 601px) and (max-width: 991px) {
@ -1162,7 +1166,7 @@
border-radius: 5px;
background: white;
border: solid gainsboro 1px;
padding-top: 0.5rem !important;
padding-top: 0px !important;
border: none !important;
}
@ -1210,12 +1214,6 @@
margin-bottom: 1rem;
}
.block_en_mass_bton_action {
width: 45%;
float: left;
margin-bottom: 1rem;
padding-top: 0.5rem !important;
}
.div_row_list_pj {
width: 50%;
@ -1242,6 +1240,13 @@
margin-bottom: 1rem;
padding-top: 0.5rem !important;
}
.tuteur_field {
width: 50%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
}
}
@ -1736,6 +1741,14 @@
padding-top: 0.5rem !important;
}
.tuteur_field {
width: 50%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
}
}
@media only screen and (min-width: 1200px) {
@ -1874,6 +1887,8 @@
border: solid gainsboro 1px;
}
.training_caract {
width: 30%;
padding: 5px;
@ -2315,6 +2330,29 @@
// end media
.disabled_style_with_visualiser {
width: 80% !important;
}
.disabled_style_with_visualiser_icone{
float: left;
text-align: center;
width: 100%;
font-size: large;
padding-top: 10px;
}
.disabled_style_left_text_with_visualiser_icone{
width: 80% !important;
float: left;
}
.disabled_style_right_bton_visualiser{
width: 9% !important;
float: left;
cursor: pointer;
}
.css-1v4ccyo {
height: 3.5rem !important;
font-size: small;

View File

@ -194,7 +194,7 @@
float: center;
//border: 1px solid black;
border-width: 0.01rem;
width: 97%;
width: 98%;
height: auto;
margin: auto;
padding: 5px;