Compare commits
No commits in common. "main" and "branche_01062025" have entirely different histories.
main
...
branche_01
26
src/App.js
26
src/App.js
|
@ -13,15 +13,15 @@ import Recherche_new_v4 from "./pages/recherche_new_v4";
|
|||
import Mon_Catalogue_Public from "./pages/mon_catalogue_public";
|
||||
import Mon_Intranet_Public from "./pages/mon_intranet_public";
|
||||
|
||||
import Mon_Ent_Student from "./pages/mon_ent_student";
|
||||
|
||||
|
||||
import TestUrl from "./pages/testurl";
|
||||
import Account from "./pages/account";
|
||||
|
||||
import DisplayDetailClass_new_v2 from "./pages/displaydetailclass_new_v2";
|
||||
import DisplayDetailClass_new_v3 from "./pages/displaydetailclass_new_v3";
|
||||
import Student_Account from "./pages/student_account";
|
||||
|
||||
import Display_Partner_Catalog_DetailClass_new_v2 from "./pages/display_partner_catalog_detailclass_new_v2"
|
||||
|
||||
import DisplayDetailArticle from "./pages/displaydetailarticle";
|
||||
import AddArticleAvis from "./pages/addarticleavis";
|
||||
import Acceuil from "./pages/acceuil";
|
||||
import Partner from "./pages/partner";
|
||||
|
@ -34,9 +34,6 @@ import RechecheArticles from "./pages/recherchearticles";
|
|||
import AddArticle from "./pages/addarticle";
|
||||
import ResetUserPwd from "./pages/resetuserpwd";
|
||||
import DeleteUserAccount from "./pages/deleteuseraccount";
|
||||
|
||||
import ContactezNous from "./pages/contactez_nous";
|
||||
import CoupDeCoeur from "./pages/coupdecoeur";
|
||||
import AccountUserActivated from "./pages/accountuseractivated";
|
||||
import ProduitsService from "./pages/produitservice";
|
||||
|
||||
|
@ -50,8 +47,6 @@ import SeDesabonner from './pages/sedesabonner';
|
|||
import OrderConfirmation_3DS from "./pages/orderconfirmation_3DS";
|
||||
import Training_Inactive_Or_Not_Found from "./pages/Traning_Inactif_Or_Not_Exist";
|
||||
import TestUrl_New from "./pages/testurl_new";
|
||||
import QuiSommesNous_v3 from "./pages/quisommesnous_v3";
|
||||
import Fonctionnalites from "./pages/fonctionnalite";
|
||||
import Test_Drag_Drop from "./pages/test_drag_drop";
|
||||
import Test_Drag_Drop2 from "./pages/test_dnd";
|
||||
import ESign from "./pages/eSigne";
|
||||
|
@ -123,8 +118,7 @@ function App() {
|
|||
|
||||
var tab_action = ['/moncatalog', '/Display-Partner-Catalog-Detail-formation', 'Display-Partner-Catalog-Detail-formation', 'moncatalog'];
|
||||
|
||||
|
||||
|
||||
|
||||
if (tab_myurl_pathname.length > 0 && !tab_action.includes(tab_myurl_pathname[1]) && !tab_reserved_subdomain.includes(subdomain)) {
|
||||
|
||||
var new_url = window.location.protocol + "//" + domain.split('.')[0] + "." + domain.split('.')[1] + "/moncatalog";
|
||||
|
@ -151,17 +145,16 @@ function App() {
|
|||
<scrollToTop />
|
||||
<Switch>
|
||||
|
||||
|
||||
|
||||
<Route path="/v3" exact component={Recherche_new_v3} />
|
||||
<Route path="/v4" exact component={Recherche_new_v4} />
|
||||
|
||||
|
||||
<Route path="/subdomain" exact component={Subdomain_Recherche_new_v2} />
|
||||
|
||||
<Route path="/moncatalog" exact component={Mon_Catalogue_Public} />
|
||||
<Route path="/intranet" exact component={Mon_Intranet_Public} />
|
||||
|
||||
<Route path="/ent_student" exact component={Mon_Ent_Student} />
|
||||
|
||||
|
||||
<Route path="/acceuil" exact component={Acceuil} />
|
||||
|
||||
|
@ -184,9 +177,6 @@ function App() {
|
|||
<Route path="/Display-Partner-Catalog-Detail-formation/:classId/:action" exact component={Display_Partner_Catalog_DetailClass_new_v2} />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<Route path="/mysy-account-activated/" exact component={AccountUserActivated} />
|
||||
{/* <Route path="/Produits-Services/" exact component={ProduitsService} />*/}
|
||||
<Route path="/tarifs_produits_services/" exact component={ProduitsService} />
|
||||
|
@ -284,7 +274,7 @@ function App() {
|
|||
|
||||
<Route path="/DeleteUserAccount/:token" exact component={DeleteUserAccount} />
|
||||
|
||||
|
||||
<Route path="/mysy-student-account" exact component={Student_Account} />
|
||||
|
||||
{/* Fin Migration */}
|
||||
|
||||
|
|
|
@ -934,8 +934,8 @@ function Abonnement(props) {
|
|||
|
||||
setnew_nb_formations(event.target.value);
|
||||
|
||||
// document.getElementById('div_nb_formation').style.color = "#104277";
|
||||
//document.getElementById('div_ttc').style.color = "#104277";
|
||||
// document.getElementById('div_nb_formation').style.color = "#107758";
|
||||
//document.getElementById('div_ttc').style.color = "#107758";
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -398,7 +398,7 @@ function Account() {
|
|||
{isSelected && <div className="nonlable">
|
||||
<Button variant="outlined" onClick={sendImage} >Enregistrer</Button>
|
||||
</div>}
|
||||
|
||||
|
||||
</div>
|
||||
<div className="nom_prenom"> {username && <b> {username} </b>}
|
||||
{!username && <b> xxxx </b>} </div>
|
||||
|
@ -443,7 +443,7 @@ function Account() {
|
|||
|
||||
{/** Menu pour un utilisateur NON type 'user' exemple un apprenant */}
|
||||
{connected_user_data && connected_user_data.type &&
|
||||
String(connected_user_data.type) !== "user" &&
|
||||
String(connected_user_data.type) !== "student" &&
|
||||
<div>
|
||||
<div className="sousmenu" onClick={displayPersoInfo}> INFORMATIONS PERSONNELLES</div>
|
||||
<hr className="my_hr" />
|
||||
|
@ -568,8 +568,6 @@ function Account() {
|
|||
/>}
|
||||
|
||||
|
||||
|
||||
|
||||
{String(menu) === String("mes_documents") && <Profil_Objectif />}
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -228,7 +228,7 @@ const AddParnerClient = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementsByName(String(current_menu_header)) && document.getElementsByName(String(current_menu_header))[0]) {
|
||||
document.getElementsByName(String(current_menu_header))[0].style.background = "#104277";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.background = "#107758";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -409,16 +409,16 @@ const AddParnerClient = (props) => {
|
|||
|
||||
|
||||
if (String(submenu) === "submenu_donnee_client") {
|
||||
document.getElementById("submenu_donnee_client").style.background = "#104277";
|
||||
document.getElementById("submenu_donnee_client").style.background = "#107758";
|
||||
document.getElementById("submenu_donnee_client").style.color = "white";
|
||||
}
|
||||
else if (String(submenu) === "submenu_donnees_facturation") {
|
||||
document.getElementById("submenu_donnee_facturation").style.background = "#104277";
|
||||
document.getElementById("submenu_donnee_facturation").style.background = "#107758";
|
||||
document.getElementById("submenu_donnee_facturation").style.color = "white";
|
||||
}
|
||||
|
||||
else if (String(submenu) === "submenu_piece_jointe") {
|
||||
document.getElementById("submenu_piece_jointe").style.background = "#104277";
|
||||
document.getElementById("submenu_piece_jointe").style.background = "#107758";
|
||||
document.getElementById("submenu_piece_jointe").style.color = "white";
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -63,7 +63,7 @@ const Article = (props) => {
|
|||
<Button variant="contained" color="success"
|
||||
style={{
|
||||
'borderRadius': "10rem", "width": "100%",
|
||||
"width": "60% !important", background: "#104277"
|
||||
"width": "60% !important", background: "#107758"
|
||||
}}
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
|
|
|
@ -485,7 +485,7 @@ const ButtonHilight = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>Contactez Nous</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Contactez Nous</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
@ -625,7 +625,7 @@ const ButtonHilight = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion
|
||||
|
|
|
@ -1166,8 +1166,8 @@ function CheckOut(props) {
|
|||
|
||||
setnb_formations(event.target.value);
|
||||
}
|
||||
document.getElementById('div_nb_formation').style.color = "#104277";
|
||||
document.getElementById('div_ttc').style.color = "#104277";
|
||||
document.getElementById('div_nb_formation').style.color = "#107758";
|
||||
document.getElementById('div_ttc').style.color = "#107758";
|
||||
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2256,7 +2256,7 @@ const Config_Documents = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -2158,7 +2158,7 @@ const Config_Documents_Super_Admin = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -2178,7 +2178,7 @@ const Config_Documents_Super_Admin = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
<div className="session_caract_Dialog" > Type Document
|
||||
|
|
|
@ -1665,7 +1665,7 @@ const CRM_Opportunite = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -1227,7 +1227,7 @@ const DisplayDetailClass_new_v3 = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>Contactez Nous</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Contactez Nous</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +1,12 @@
|
|||
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';
|
||||
|
@ -14,23 +14,20 @@ 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 add_plus from "../mysy_img/plus.png";
|
||||
|
||||
import excel_icone from "../mysy_img/excel_icone.png";
|
||||
|
||||
import Popup from 'reactjs-popup';
|
||||
import { FcInfo } from "react-icons/fc";
|
||||
import Autocomplete from '@mui/material/Autocomplete';
|
||||
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';
|
||||
|
@ -789,6 +786,24 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
setVal([]);
|
||||
}
|
||||
|
||||
if (local_ue.list_competence_code) {
|
||||
setp_detail_list_competence_code(local_ue.list_competence_code);
|
||||
|
||||
} else {
|
||||
setp_detail_list_competence_code("");
|
||||
|
||||
}
|
||||
|
||||
if (local_ue.tab_competence_JSON) {
|
||||
|
||||
setVal(local_ue.tab_competence_JSON);
|
||||
|
||||
} else {
|
||||
setp_detail_tab_competence([]);
|
||||
setVal([]);
|
||||
}
|
||||
|
||||
|
||||
if (local_ue.note_ue_calculation_rule_id) {
|
||||
setp_detail_note_ue_calculation_rule_id(local_ue.note_ue_calculation_rule_id);
|
||||
} else {
|
||||
|
@ -918,6 +933,8 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
|
||||
Getall_Parter_Unite_Enseignement();
|
||||
|
||||
Getall_Partner_Competence_List();
|
||||
|
||||
if (document.getElementById('myRef_head')) {
|
||||
var divh = document.getElementById('myRef_head').offsetTop;
|
||||
window.scrollTo({
|
||||
|
@ -984,7 +1001,15 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
form.append("note_ue_calculation_rule_id", p_detail_note_ue_calculation_rule_id);
|
||||
|
||||
|
||||
form.append("niveau_competence", val);
|
||||
var tab_competence_id = []
|
||||
for (var i = 0; i < val.length; i++) {
|
||||
tab_competence_id.push(val[i]._id)
|
||||
}
|
||||
|
||||
form.append("niveau_competence", tab_competence_id);
|
||||
|
||||
console.log(" ### val = ", val);
|
||||
console.log(" ### tab_competence_id = ", tab_competence_id);
|
||||
|
||||
|
||||
var description = "";
|
||||
|
@ -992,7 +1017,10 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
description = editorRef_description.current.getContent();
|
||||
|
||||
if (parse(description.replace(/(<([^>]+)>)/ig, '')).length > editorRef_description_limite) {
|
||||
alert(" Champ 'Description', limite depassée !")
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Champ 'Description', limite depassée !");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1004,7 +1032,10 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
objectif = editorRef_objectif.current.getContent();
|
||||
|
||||
if (parse(objectif.replace(/(<([^>]+)>)/ig, '')).length > editorRef_objectif_limite) {
|
||||
alert(" Champ 'Objectif', limite depassée !")
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Champ 'Objectif', limite depassée !");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1016,7 +1047,10 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
prerequis = editorRef_prerequis.current.getContent();
|
||||
|
||||
if (parse(prerequis.replace(/(<([^>]+)>)/ig, '')).length > editorRef_prerequis_limite) {
|
||||
alert(" Champ 'Pré-requis', limite depassée !")
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Champ 'Pré-requis', limite depassée !");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1028,7 +1062,10 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
programme = editorRef_programme.current.getContent();
|
||||
|
||||
if (parse(programme.replace(/(<([^>]+)>)/ig, '')).length > editorRef_prerequis_limite) {
|
||||
alert(" Champ 'Programme', limite depassée !")
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Champ 'Programme', limite depassée !");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1041,7 +1078,10 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
methode_eval = editorRef_methode_eval.current.getContent();
|
||||
|
||||
if (parse(methode_eval.replace(/(<([^>]+)>)/ig, '')).length > editorRef_methode_eval_limite) {
|
||||
alert(" Champ 'Suivi & Evaluation', limite depassée !")
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Champ 'Suivi & Evaluation', limite depassée !");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1054,7 +1094,10 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
methode_pedago = editorRef_methode_pedago.current.getContent();
|
||||
|
||||
if (parse(methode_pedago.replace(/(<([^>]+)>)/ig, '')).length > editorRef_methode_eval_limite) {
|
||||
alert(" Champ 'Méhode Pédagogique', limite depassée !")
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Champ 'Méhode Pédagogique', limite depassée !");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1153,6 +1196,8 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
|
||||
const [p_detail_domaine, setp_detail_domaine] = useState("");
|
||||
|
||||
const [p_detail_list_competence_code, setp_detail_list_competence_code] = useState("");
|
||||
|
||||
|
||||
const [p_detail_support, setp_detail_support] = useState("");
|
||||
const [p_detail_duration, setp_detail_duration] = useState("");
|
||||
|
@ -1345,6 +1390,88 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
}
|
||||
|
||||
|
||||
const [New_Get_List_Competence_result, setNew_Get_List_Competence_result] = useState([]);
|
||||
|
||||
const [Get_List_Competence_api, setGet_List_Competence_api] = useState();
|
||||
const [Get_List_Competence_message, setGet_List_Competence_message] = useState();
|
||||
const [Get_List_Competence_result, setGet_List_Competence_result] = useState();
|
||||
function Get_List_Competence() {
|
||||
var form = new FormData();
|
||||
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Competence_no_filter/";
|
||||
|
||||
fetch(myurl,
|
||||
{
|
||||
method: 'POST',
|
||||
body: form,
|
||||
})
|
||||
.then((data) => data.json())
|
||||
.then((data) => {
|
||||
//console.log(' IN Get_List_Competence Success:', data['message'], "data['status'] = ", data['status']);
|
||||
|
||||
if (String(data['status']) === String("true")) {
|
||||
setGet_List_Competence_api("true");
|
||||
setGet_List_Competence_result(data['message']);
|
||||
|
||||
var new_data2 = [];
|
||||
const new_data = data['message'].map((x) => {
|
||||
|
||||
//---
|
||||
var localid = JSON.parse(x).id;
|
||||
var local_id = JSON.parse(x)._id;
|
||||
var local_code = JSON.parse(x).code;
|
||||
var local_nom = JSON.parse(x).nom;
|
||||
|
||||
|
||||
//---
|
||||
var node = {
|
||||
"id": localid,
|
||||
"_id": local_id,
|
||||
"nom": local_nom,
|
||||
"code": local_code,
|
||||
"label": local_nom,
|
||||
|
||||
|
||||
};
|
||||
new_data2.push(node);
|
||||
});
|
||||
|
||||
var node = {
|
||||
"id": "",
|
||||
"_id": "",
|
||||
"nom": "",
|
||||
"code": "",
|
||||
"label": "",
|
||||
|
||||
|
||||
};
|
||||
new_data2.push(node);
|
||||
|
||||
if (new_data2.length > 0) {
|
||||
setNew_Get_List_Competence_result(new_data2);
|
||||
|
||||
// console.log(" ## new_data2 = ", new_data2);
|
||||
// console.log(" ## New_Get_List_Competence_result = ", New_Get_List_Competence_result);
|
||||
} else {
|
||||
setNew_Get_List_Competence_result([])
|
||||
}
|
||||
}
|
||||
else {
|
||||
setGet_List_Competence_api("false");
|
||||
setGet_List_Competence_message(data['message']);
|
||||
}
|
||||
|
||||
}).catch((error) => {
|
||||
console.error('Error Get_List_Competence :', error);
|
||||
setGet_List_Competence_api("false");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
const [New_Get_List_Regle_Calcul_Note_UE_result, setNew_Get_List_Regle_Calcul_Note_UE_result] = useState([]);
|
||||
|
||||
const [Get_List_Regle_Calcul_Note_UE_api, setGet_List_Regle_Calcul_Note_UE_api] = useState();
|
||||
|
@ -1552,7 +1679,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -1806,6 +1933,87 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
/**** fin gestion fichier csv a importer */
|
||||
|
||||
|
||||
const [New_Getall_Partner_Competence_List_result, setNew_Getall_Partner_Competence_List_result] = useState([]);
|
||||
|
||||
const [Getall_Partner_Competence_List_api, setGetall_Partner_Competence_List_api] = useState();
|
||||
const [Getall_Partner_Competence_List_message, setGetall_Partner_Competence_List_message] = useState();
|
||||
const [Getall_Partner_Competence_List_result, setGetall_Partner_Competence_List_result] = useState([]);
|
||||
function Getall_Partner_Competence_List(event) {
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Competence_no_filter/";
|
||||
|
||||
setLoading(true);
|
||||
axios.post(myurl, form).then(res => {
|
||||
setLoading(false);
|
||||
|
||||
if (String(res.data.status) === String("true")) {
|
||||
//console.log(" In Getall_Partner_Competence_List res.data.status = " + res.data.status);
|
||||
// console.log(" In Getall_Partner_Competence_List res.data.message r_class = " + res.data.message);
|
||||
setGetall_Partner_Competence_List_api("true");
|
||||
setGetall_Partner_Competence_List_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 local_description = JSON.parse(x).description;
|
||||
var local_code = JSON.parse(x).code;
|
||||
//---
|
||||
var node = {
|
||||
"_id": local_id,
|
||||
"id": localid,
|
||||
"label": local_code,
|
||||
"code": local_code,
|
||||
"description": local_description,
|
||||
|
||||
};
|
||||
new_data2.push(node);
|
||||
|
||||
});
|
||||
|
||||
//---
|
||||
var node = {
|
||||
"_id": "",
|
||||
"id": "",
|
||||
"label": "",
|
||||
"code": "",
|
||||
"description": "",
|
||||
|
||||
};
|
||||
new_data2.push(node);
|
||||
|
||||
|
||||
if (new_data2.length > 0)
|
||||
setNew_Getall_Partner_Competence_List_result(new_data2);
|
||||
|
||||
|
||||
}
|
||||
else {
|
||||
setGetall_Partner_Competence_List_api("false");
|
||||
setGetall_Partner_Competence_List_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.warn('Not good man :( Getall_Partner_Competence_List = ', error);
|
||||
setGetall_Partner_Competence_List_api("false");
|
||||
alert(" Impossible de recuperer la liste des compétences ");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
const nivau_competence = [
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
|
||||
|
||||
|
@ -1862,7 +2070,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -1888,7 +2096,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title">
|
||||
|
||||
{String(update_planif_line) !== "1" && "Ajouter une ligne"}
|
||||
{String(update_planif_line) === "1" && "Mettre à jour une ligne"}
|
||||
|
@ -2678,7 +2886,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
</div>}
|
||||
|
||||
{ue_data_edit_mode && String(ue_data_edit_mode) === "1" && <div>
|
||||
<div className="session_caract"> Compétences <br />
|
||||
<div className="session_caract"> Compétences<br />
|
||||
<Autocomplete
|
||||
multiple
|
||||
onChange={(event, newValue) => {
|
||||
|
@ -2686,10 +2894,10 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
...fixedVal,
|
||||
...newValue.filter((i) => fixedVal.indexOf(i) === -1),
|
||||
]);
|
||||
|
||||
|
||||
}}
|
||||
value={val}
|
||||
options={nivau_competence}
|
||||
options={New_Getall_Partner_Competence_List_result}
|
||||
className="disabled_style"
|
||||
renderInput={(params) => (
|
||||
<TextField
|
||||
|
@ -2699,7 +2907,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
|
||||
/>
|
||||
)}
|
||||
renderTags={CustomChip}
|
||||
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
@ -2719,7 +2927,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
}}
|
||||
//disabled={true}
|
||||
className="disabled_style"
|
||||
value={p_detail_tab_competence}
|
||||
value={p_detail_list_competence_code}
|
||||
|
||||
/>
|
||||
|
||||
|
@ -3861,7 +4069,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
|
|||
|
||||
}}
|
||||
value={val}
|
||||
options={nivau_competence}
|
||||
options={New_Getall_Partner_Competence_List_result}
|
||||
className="disabled_style"
|
||||
renderInput={(params) => (
|
||||
<TextField
|
||||
|
|
|
@ -0,0 +1,428 @@
|
|||
.ent_student_header_automatic_files {
|
||||
|
||||
@media only screen and (max-width: 600px) {
|
||||
|
||||
position: fixed;
|
||||
/* margin-top: 22px;*/
|
||||
width: 100%;
|
||||
opacity: 1;
|
||||
background: #FFF;
|
||||
|
||||
.header_new_2025 {
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
width: 100%;
|
||||
padding-left: 50px;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 40px;
|
||||
margin-left: 2rem;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 96px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cta-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.cta-buttons {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.hide_on_mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 10px 15px;
|
||||
border-radius: 200px;
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
line-height: 126%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: transparent;
|
||||
color: #4b5162;
|
||||
border: 1px solid #c7c9ce;
|
||||
}
|
||||
|
||||
.separator {
|
||||
width: 1px;
|
||||
height: 12px;
|
||||
background-color: rgba(23, 23, 23, 0.1);
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.login-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.login-link span {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #171717;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 601px) and (max-width: 991px) {
|
||||
.header_new_2025 {
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
padding: 14px 48px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
max-width: 60%;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 96px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #4b5162;
|
||||
text-decoration: none;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
.cta-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 3px;
|
||||
}
|
||||
|
||||
.cta-buttons {
|
||||
display: flex;
|
||||
gap: 1px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 5px 8px;
|
||||
border-radius: 200px;
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 126%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: transparent;
|
||||
color: #4b5162;
|
||||
border: 1px solid #c7c9ce;
|
||||
}
|
||||
|
||||
.separator {
|
||||
width: 1px;
|
||||
height: 12px;
|
||||
background-color: rgba(23, 23, 23, 0.1);
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.login-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.login-link span {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #171717;
|
||||
line-height: 122%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
||||
.header_new_2025 {
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
padding: 14px 48px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
width: 70%;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 96px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #4b5162;
|
||||
text-decoration: none;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
.cta-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.cta-buttons {
|
||||
display: flex;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 3px 10px;
|
||||
border-radius: 200px;
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
line-height: 126%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: transparent;
|
||||
color: #4b5162;
|
||||
border: 1px solid #c7c9ce;
|
||||
}
|
||||
|
||||
.separator {
|
||||
width: 1px;
|
||||
height: 5px;
|
||||
background-color: rgba(23, 23, 23, 0.1);
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.login-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.login-link span {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #171717;
|
||||
line-height: 122%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (min-width: 1200px) {
|
||||
.header_new_2025 {
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
padding: 14px 48px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 40px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 96px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 24px;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #4b5162;
|
||||
text-decoration: none;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
.cta-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.cta-buttons {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 12px 24px;
|
||||
border-radius: 200px;
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
line-height: 126%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: transparent;
|
||||
color: #4b5162;
|
||||
border: 1px solid #c7c9ce;
|
||||
}
|
||||
|
||||
.separator {
|
||||
width: 1px;
|
||||
height: 12px;
|
||||
background-color: rgba(23, 23, 23, 0.1);
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.login-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.login-link span {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #171717;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,322 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import './ENT_Student_Header.css';
|
||||
import moment from "moment";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
|
||||
import Header_User from '../../img_new_design_2025/header_user.png';
|
||||
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 Button from '@mui/material/Button';
|
||||
import { useCookies } from "react-cookie";
|
||||
|
||||
|
||||
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 (
|
||||
<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 ENT_Student_Header = () => {
|
||||
const history = useHistory();
|
||||
const classes = useStyles();
|
||||
const [userconnected, setuserconnected] = useState("0");
|
||||
const [someoneconnected, setsomeoneconnected] = useState("0");
|
||||
const [partnerconnected, setpartnerconnected] = useState("0");
|
||||
const stored_user = getCookie('tokenmysych');
|
||||
const stored_part = getCookie('tokenmysypart');
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
|
||||
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
|
||||
const [PartnerMenu, setPartnerMenu] = React.useState(null);
|
||||
const [AccountMenu, setAccountMenu] = React.useState(null);
|
||||
const [ProduitMenu, setproduitMenu] = React.useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
|
||||
}, []);
|
||||
|
||||
const handleAccountCreation = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/signup/")
|
||||
};
|
||||
|
||||
|
||||
const handleMyAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/mysy-user-account")
|
||||
};
|
||||
|
||||
const handleAccountConnexion = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/signin/")
|
||||
};
|
||||
|
||||
|
||||
const handleMyPartnerAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/Partner")
|
||||
};
|
||||
|
||||
|
||||
function handleAccountConnexion_v2() {
|
||||
|
||||
if (String(userconnected) === String("1")) {
|
||||
handleMyAccount();
|
||||
}
|
||||
else if (String(partnerconnected) === String("1")) {
|
||||
handleMyPartnerAccount();
|
||||
}
|
||||
}
|
||||
|
||||
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
|
||||
const Dialog_1_handleClose = () => {
|
||||
};
|
||||
|
||||
const Dialog_1_handleClose_buton = () => {
|
||||
setDialog_1_open(false);
|
||||
};
|
||||
|
||||
function part_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
|
||||
if (typeof (stored_part) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysypart", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
|
||||
setpartCookie("mysy_session_display_view", "", { path: '/' });
|
||||
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
|
||||
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
|
||||
|
||||
removeCookie("tokenmysypart", { path: '/' });
|
||||
removeCookie("mysy_session_display_view", { path: '/' });
|
||||
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
|
||||
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
setsomeoneconnected("0");
|
||||
setDialog_1_open(false);
|
||||
history.push("/recherche-formation");
|
||||
}
|
||||
|
||||
function user_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
if (typeof (stored_user) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysych", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
removeCookie("tokenmysych", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
history.push("/ent_student");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='ent_student_header_automatic_files'>
|
||||
|
||||
{/*** GESTION Deconnexion */}
|
||||
<Dialog
|
||||
open={Dialog_1_open}
|
||||
// onClose={Dialog_1_handleClose}
|
||||
className="displaypartnersession"
|
||||
static
|
||||
onClose={() => null}
|
||||
|
||||
PaperProps={{
|
||||
|
||||
|
||||
className: classes.paper, // Apply the paper style
|
||||
style: {
|
||||
overflowY: 'unset',
|
||||
position: 'absolute',
|
||||
top: '20rem',
|
||||
margin: "2px",
|
||||
},
|
||||
}}
|
||||
hideBackdrop={true}
|
||||
disableScrollLock
|
||||
classes={{
|
||||
paper: classes.dialog
|
||||
}}
|
||||
|
||||
PaperComponent={PaperComponent}
|
||||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion de l'ENT <br />
|
||||
|
||||
|
||||
</DialogContentText>
|
||||
|
||||
</DialogContent>
|
||||
|
||||
<DialogActions>
|
||||
|
||||
<IconButton
|
||||
//autoFocus
|
||||
onClick={Dialog_1_handleClose_buton}
|
||||
color="primary"
|
||||
className={classes.customizedButton}
|
||||
>
|
||||
<CancelPresentationIcon />
|
||||
</IconButton>
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
<Button
|
||||
|
||||
onClick={(e) => {
|
||||
if (partnerconnected && String(partnerconnected) === '1')
|
||||
part_logout_confirmation();
|
||||
|
||||
if (userconnected && String(userconnected) === '1')
|
||||
user_logout_confirmation();
|
||||
|
||||
}}
|
||||
|
||||
className="bton_enreg_dialog">Deconnexion</Button>
|
||||
</div>
|
||||
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Dialog_1_handleClose_buton} className="bton_annule_dialog" >Annuler</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</DialogActions>
|
||||
</Dialog>
|
||||
|
||||
{/*** Fin GESTION Deconnexion */}
|
||||
|
||||
<header className="header_new_2025">
|
||||
<div className="header-content">
|
||||
<div className="logo-menu">
|
||||
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
|
||||
// e.preventDefault();
|
||||
history.push("/");
|
||||
}} />
|
||||
|
||||
<nav className="menu-list">
|
||||
<a href="/apropos" className="menu-link">À propos</a>
|
||||
<a href="/fonctionnalites" className="menu-link">Fonctionnalités</a>
|
||||
<a href="#" className="menu-link">
|
||||
<nav onClick={(e) => {
|
||||
history.push("/tarif/#debut");
|
||||
// window.open("/tarif/#debut", "_self");
|
||||
}}>Tarifs </nav>
|
||||
</a>
|
||||
<a href="/Recherche-Article-formation" className="menu-link">Blog</a>
|
||||
<div className="separator"></div>
|
||||
<a href="/marketplace" className="menu-link">Marketplace</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div className="cta-login">
|
||||
<div className="cta-buttons">
|
||||
<button className="btn btn-primary" onClick={(e) => {
|
||||
e.preventDefault();
|
||||
var date2 = new Date();
|
||||
const format2 = "YYYY-MM";
|
||||
var dateTime2 = moment(date2).format(format2);
|
||||
window.open(
|
||||
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
|
||||
'_blank'
|
||||
);
|
||||
}}>Réserver une démo</button>
|
||||
|
||||
</div>
|
||||
<div className="cta-buttons hide_on_mobile">
|
||||
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
|
||||
|
||||
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
|
||||
|
||||
</div>
|
||||
<div className="separator hide_on_mobile"></div>
|
||||
{String(someoneconnected) !== String("1") && <div className="login-link hide_on_mobile" onClick={handleAccountConnexion}>
|
||||
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
|
||||
<span className='hide_on_mobile'>Connexion</span>
|
||||
</div>}
|
||||
|
||||
{String(someoneconnected) === String("1") && <div className="login-link hide_on_mobile" onClick={(e) => setDialog_1_open(true)}>
|
||||
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
|
||||
<span className='hide_on_mobile'>Deconnexion</span>
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
</div >
|
||||
</header >
|
||||
</div >
|
||||
);
|
||||
};
|
||||
|
||||
export default ENT_Student_Header;
|
||||
|
|
@ -402,7 +402,7 @@ function ESign() {
|
|||
className="esign"
|
||||
>
|
||||
|
||||
<DialogTitle>Signature Manuscrite </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Signature Manuscrite </DialogTitle>
|
||||
|
||||
<DialogContent className="DialogContent_width">
|
||||
<div style={{ width: "100%" }}>
|
||||
|
@ -477,8 +477,8 @@ function ESign() {
|
|||
|
||||
>
|
||||
|
||||
{!erreur_recup_e_doc && <DialogTitle>Signature </DialogTitle>}
|
||||
{erreur_recup_e_doc && <DialogTitle>Signature - <font color="red"> Identifiants invalides </font></DialogTitle>}
|
||||
{!erreur_recup_e_doc && <DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Signature </DialogTitle>}
|
||||
{erreur_recup_e_doc && <DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Signature - <font color="red"> Identifiants invalides </font></DialogTitle>}
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
@ -583,8 +583,8 @@ function ESign() {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
{!erreur_recup_e_doc && <DialogTitle>Authentification </DialogTitle>}
|
||||
{erreur_recup_e_doc && <DialogTitle>Authentification - <font color="red"> Identifiants invalides </font></DialogTitle>}
|
||||
{!erreur_recup_e_doc && <DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Authentification </DialogTitle>}
|
||||
{erreur_recup_e_doc && <DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Authentification - <font color="red"> Identifiants invalides </font></DialogTitle>}
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
@ -663,7 +663,7 @@ function ESign() {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Information </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Information </DialogTitle>
|
||||
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
|
|
@ -604,8 +604,8 @@ function Emarge_QR_Code() {
|
|||
|
||||
>
|
||||
|
||||
{!erreur_recup_e_doc && <DialogTitle>Signature </DialogTitle>}
|
||||
{erreur_recup_e_doc && <DialogTitle>Signature - <font color="red"> Identifiants invalides </font></DialogTitle>}
|
||||
{!erreur_recup_e_doc && <DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Signature </DialogTitle>}
|
||||
{erreur_recup_e_doc && <DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Signature - <font color="red"> Identifiants invalides </font></DialogTitle>}
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
@ -678,8 +678,8 @@ function Emarge_QR_Code() {
|
|||
|
||||
>
|
||||
|
||||
{!erreur_recup_e_doc && <DialogTitle>Authentification </DialogTitle>}
|
||||
{erreur_recup_e_doc && <DialogTitle>Authentification - <font color="red"> Identifiants invalides </font></DialogTitle>}
|
||||
{!erreur_recup_e_doc && <DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Authentification </DialogTitle>}
|
||||
{erreur_recup_e_doc && <DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Authentification - <font color="red"> Identifiants invalides </font></DialogTitle>}
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
@ -749,7 +749,7 @@ function Emarge_QR_Code() {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Information </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Information </DialogTitle>
|
||||
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
|
|
@ -14,13 +14,13 @@ 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';
|
||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
||||
import { FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
||||
import DatePicker from "react-datepicker";
|
||||
import "react-datepicker/dist/react-datepicker.css";
|
||||
import { format } from 'date-fns'
|
||||
|
@ -35,7 +35,7 @@ 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 EmailIcon from '@mui/icons-material/Email'
|
||||
|
||||
import Visibility from '@mui/icons-material/Visibility';
|
||||
import VisibilityOff from '@mui/icons-material/VisibilityOff';
|
||||
import { Fab } from "@material-ui/core";
|
||||
|
@ -47,7 +47,7 @@ import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
|||
import { gridClasses } from '@mui/x-data-grid';
|
||||
import Link from '@mui/material/Link';
|
||||
import { PiDotsThree } from "react-icons/pi";
|
||||
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
|
||||
import { IoAddCircleOutline } from "react-icons/io5";
|
||||
import Rating from '@mui/material/Rating';
|
||||
import { BarChart } from '@mui/x-charts';
|
||||
import { axisClasses } from '@mui/x-charts';
|
||||
|
@ -173,8 +173,8 @@ const Employes = (props) => {
|
|||
|
||||
|
||||
const columns = [
|
||||
{ field: '_id', headerName: '_id', hide: true, Width: 0 },
|
||||
{ field: 'id', headerName: 'id', hide: true, Width: 0 },
|
||||
{ field: '_id', headerName: '_id', hide: true, Width: 0, disableExport: true, },
|
||||
{ field: 'id', headerName: 'id', hide: true, Width: 0, disableExport: true, },
|
||||
{ field: 'date_naissance', headerName: 'date_naissance', hide: true, Width: 0 },
|
||||
{
|
||||
field: 'civilite', headerName: 'Civilité', minWidth: 100, flex: 1, maxWidth: 100, hide: false,
|
||||
|
@ -1794,6 +1794,7 @@ const Employes = (props) => {
|
|||
setliste_sessions_file_change_api("true");
|
||||
clean_all_filters();
|
||||
Getall_Training_Employee_No_Filter();
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Les employés ont été correctement importés");
|
||||
setalert_type("success");
|
||||
|
@ -3475,7 +3476,7 @@ const Employes = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -3663,7 +3664,6 @@ const Employes = (props) => {
|
|||
value: '0',
|
||||
label: 'Non',
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
@ -9162,8 +9162,8 @@ const Employes = (props) => {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
@ -9616,7 +9616,7 @@ const Employes = (props) => {
|
|||
<nav style={{
|
||||
"border": "None", "fontSize": "18px", "fontWeight": "600", fontFamily: "DM Sans",
|
||||
textAlign: "center", paddingTop: "10px"
|
||||
}}> Ajouter un Employé </nav>
|
||||
}}> Ajouter un Employé </nav>
|
||||
|
||||
|
||||
<div class="separator">
|
||||
|
@ -10088,8 +10088,8 @@ const Employes = (props) => {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,471 @@
|
|||
import React, { useState, useEffect } from "react";
|
||||
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import { useCookies } from "react-cookie";
|
||||
import { confirmAlert } from 'react-confirm-alert';
|
||||
|
||||
import img_met_program from "../mysy_img/met_programmation.jpg";
|
||||
|
||||
import img_met_graphisme from "../mysy_img/metier_graphisme.jpg";
|
||||
|
||||
import img_met_autre from "../mysy_img/met_autre.jpg";
|
||||
import img_met_digital from "../mysy_img/met_digital.jpg";
|
||||
import img_met_management from "../mysy_img/met_management.jpg";
|
||||
|
||||
import img_met_dev_perso from "../mysy_img/metier_dev_perso.jpg";
|
||||
import img_met_rh from "../mysy_img/met_rh.jpg";
|
||||
|
||||
import img_met_bureautic from "../mysy_img/met_burautic.jpg";
|
||||
import img_met_vente from "../mysy_img/met_vente.jpg";
|
||||
import axios from "axios";
|
||||
//import { Rating } from 'react-simple-star-rating'
|
||||
import Rating from '@mui/material/Rating';
|
||||
import parse from 'html-react-parser'
|
||||
|
||||
|
||||
const Ent_Student_Affichage_Ftion_Grid = (props) => {
|
||||
const [userconnected, setuserconnected] = useState("0");
|
||||
const [partnerconnected, setpartnerconnected] = useState("0");
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
|
||||
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
|
||||
const history = useHistory();
|
||||
const [myfilter, setmyfilter] = useState(props.formation.price);
|
||||
|
||||
const [profileimg, setprofileimg] = useState(props.formation.price);
|
||||
|
||||
|
||||
// Gestion des Cookies
|
||||
const stored_partner = cookie_part.tokenmysypart;
|
||||
const stored_user = cookie.tokenmysych;
|
||||
|
||||
function test(val) {
|
||||
|
||||
if (userconnected === "0" && partnerconnected === "0") {
|
||||
confirmAlert({
|
||||
title: 'Activer votre session ?',
|
||||
message: 'Merci de vous connecter pour acceder au detail de cette formation',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => { history.push("/mysy-training-login/training/" + props.formation.internal_url) }
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
|
||||
}
|
||||
],
|
||||
closeOnEscape: false,
|
||||
closeOnClickOutside: false,
|
||||
keyCodeForClose: [8, 32],
|
||||
willUnmount: () => { },
|
||||
afterClose: () => { },
|
||||
onClickOutside: () => { },
|
||||
onKeypress: () => { },
|
||||
onKeypressEscape: () => { },
|
||||
});
|
||||
} else {
|
||||
window.open(
|
||||
"/Display-Detail-formation/" + props.formation.internal_url,
|
||||
'_blank'
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const [myclassimage, setmyclassimage] = useState();
|
||||
const [isclassimage, setisclassimage] = useState("False");
|
||||
const [userimgclassprofil, setuserimgclassprofil] = useState("");
|
||||
|
||||
const [class_img_stored_in_bdd, setclass_img_stored_in_bdd] = useState("");
|
||||
|
||||
function getClassImage_no_token() {
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/getRecodedClassImage_no_token/";
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
form.append("type", "partner");
|
||||
form.append("related_collection", "myclass");
|
||||
form.append("related_collection_recid", props.formation._id);
|
||||
form.append("class_external_code", props.formation.external_code);
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
|
||||
// console.log(" getClassImage_no_token : In test res.data.status = ", res.data.status);
|
||||
if (String(res.data.status) === "true") {
|
||||
|
||||
|
||||
//console.log(" getClassImage_no_token: res.data.message.img = ", res.data.message);
|
||||
|
||||
if (res.data.message.img.length > 0) {
|
||||
setisclassimage("True");
|
||||
}
|
||||
else {
|
||||
setisclassimage("False");
|
||||
}
|
||||
setisclassimage(res.data.message.img);
|
||||
var ch_img = "data:image/png;base64," + res.data.message.img;
|
||||
setclass_img_stored_in_bdd(ch_img);
|
||||
// console.log(" getClassImage_no_token: setclass_img_stored_in_bdd = ", setclass_img_stored_in_bdd);
|
||||
|
||||
}
|
||||
else {
|
||||
// console.log(" In Erreur res.data.status = " + res.data.status);
|
||||
//console.log(" In Erreur res.data.message = " + res.data.message);
|
||||
setisclassimage("False");
|
||||
setuserimgclassprofil();
|
||||
setclass_img_stored_in_bdd();
|
||||
}
|
||||
}).catch((error) => {
|
||||
|
||||
console.warn('getClassImage ee: Not good man :( getClassImage = ');
|
||||
setisclassimage("False");
|
||||
setuserimgclassprofil("");
|
||||
setclass_img_stored_in_bdd("");
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Cette variable accompagne la gestion des images par defaut.
|
||||
idée : si la valeur de "DetailTraining.metier" != "management, digital, office, rh, vente, dev_perso"
|
||||
alors l'utilisateur à créer une formation avec un metier qui n'est pas geré, donc on met une image par defaut
|
||||
*/
|
||||
const [ismetiermanaged, setismetiermanaged] = useState();
|
||||
const liste_metier = ["management", "digital", "office", "rh", "vente", "dev_perso"];
|
||||
|
||||
useEffect(() => {
|
||||
setmyfilter(props.myfil);
|
||||
|
||||
// console.log(" #### useEffect props.formation = ", props.formation);
|
||||
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
}
|
||||
|
||||
if (typeof (stored_partner) === "undefined" || String(stored_partner) === '') {
|
||||
setpartnerconnected("0");
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
}
|
||||
|
||||
getClassImage_no_token();
|
||||
GetCurrentClass_trainingsession();
|
||||
|
||||
GetCurrentClass_trainingsession_cities();
|
||||
|
||||
// Verifier si le metier est geré
|
||||
if (props.formation.metier) {
|
||||
if (!liste_metier.includes(props.formation.metier)) {
|
||||
setismetiermanaged("0"); // j'ai une valeur dans metier, mais qui n'est pas geré
|
||||
}
|
||||
}
|
||||
else {
|
||||
setismetiermanaged("0");
|
||||
}
|
||||
|
||||
if (props.formation.img_url && String(props.formation.img_url).length > 0) {
|
||||
setismetiermanaged("1");
|
||||
}
|
||||
|
||||
}, []);
|
||||
|
||||
|
||||
const [GetCurrentClass_api, setGetCurrentClass_api] = useState();
|
||||
const [GetCurrentClass_message, setGetCurrentClass_message] = useState();
|
||||
const [GetCurrentClass_result, setGetCurrentClass_result] = useState();
|
||||
function GetCurrentClass_trainingsession(event) {
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
form.append("class_internal_url", props.formation.internal_url);
|
||||
|
||||
form.append("token", stored_partner);
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetActiveSessionFormation_List/";
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
|
||||
if (res.data.status != "false") {
|
||||
//console.log(" In GetCurrentClass_trainingsession res.data.status = " + res.data.status);
|
||||
//console.log(" In GetCurrentClass_trainingsession res.data.message r_class = " + res.data.message);
|
||||
setGetCurrentClass_api("true");
|
||||
setGetCurrentClass_result(res.data.message);
|
||||
}
|
||||
else {
|
||||
setGetCurrentClass_api("false");
|
||||
setGetCurrentClass_message(res.data.message);
|
||||
}
|
||||
|
||||
}).catch((error) => {
|
||||
console.warn('Not good man :( GetCurrentClass_trainingsession = ', error);
|
||||
setGetCurrentClass_api("false");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
const [GetCurrentClass_trainingsession_cities_api, setGetCurrentClass_trainingsession_cities_api] = useState();
|
||||
const [GetCurrentClass_trainingsession_cities_message, setGetCurrentClass_trainingsession_cities_message] = useState();
|
||||
const [GetCurrentClass_trainingsession_cities_result, setGetCurrentClass_trainingsession_cities_result] = useState([]);
|
||||
function GetCurrentClass_trainingsession_cities(event) {
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
form.append("class_internal_url", props.formation.internal_url);
|
||||
|
||||
form.append("token", stored_partner);
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/";
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
|
||||
if (res.data.status != "false") {
|
||||
//console.log(" In GetCurrentClass_trainingsession_cities res.data.status = " + res.data.status);
|
||||
//console.log(" In GetCurrentClass_trainingsession_cities res.data.message r_class = " + res.data.message);
|
||||
setGetCurrentClass_trainingsession_cities_api("true");
|
||||
setGetCurrentClass_trainingsession_cities_result(res.data.message);
|
||||
}
|
||||
else {
|
||||
setGetCurrentClass_trainingsession_cities_api("false");
|
||||
setGetCurrentClass_trainingsession_cities_message(res.data.message);
|
||||
}
|
||||
|
||||
}).catch((error) => {
|
||||
console.warn('Not good man :( GetCurrentClass_trainingsession_cities = ', error);
|
||||
setGetCurrentClass_trainingsession_cities_api("false");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
||||
const styles = {
|
||||
list: {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
gap: '32px',
|
||||
width: '100%',
|
||||
},
|
||||
row: {
|
||||
display: 'flex',
|
||||
flexDirection: 'row',
|
||||
gap: '24px',
|
||||
width: '100%',
|
||||
},
|
||||
card: {
|
||||
flexGrow: 1,
|
||||
backgroundColor: '#fff',
|
||||
borderRadius: '8px',
|
||||
overflow: 'hidden',
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
},
|
||||
image: {
|
||||
maxWidth: '100%',
|
||||
height: '200px',
|
||||
overflow: 'hidden',
|
||||
marginTop: '-2rem'
|
||||
|
||||
},
|
||||
content: {
|
||||
padding: '16px',
|
||||
},
|
||||
header: {
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between',
|
||||
alignItems: 'center',
|
||||
},
|
||||
eligibility: {
|
||||
backgroundColor: '#e2e9fb',
|
||||
padding: '4px 8px',
|
||||
borderRadius: '4px',
|
||||
fontSize: '12px',
|
||||
fontWeight: 'bold',
|
||||
},
|
||||
title: {
|
||||
fontSize: '14px',
|
||||
fontWeight: 'bold',
|
||||
margin: '8px 0',
|
||||
},
|
||||
price: {
|
||||
fontSize: '14px',
|
||||
fontWeight: 'bold',
|
||||
color: '#000',
|
||||
},
|
||||
description: {
|
||||
fontSize: '12px',
|
||||
color: '#666',
|
||||
margin: '8px 0',
|
||||
height: "40px",
|
||||
overflow: "hidden",
|
||||
},
|
||||
details: {
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between',
|
||||
marginTop: '16px',
|
||||
},
|
||||
button: {
|
||||
backgroundColor: '#007bff',
|
||||
color: '#fff',
|
||||
padding: '8px 16px',
|
||||
border: 'none',
|
||||
borderRadius: '4px',
|
||||
cursor: 'pointer',
|
||||
},
|
||||
buttonOutline: {
|
||||
backgroundColor: '#fff',
|
||||
color: '#007bff',
|
||||
padding: '8px 16px',
|
||||
border: '1px solid #007bff',
|
||||
borderRadius: '4px',
|
||||
cursor: 'pointer',
|
||||
},
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
<div className="new_formation_2025">
|
||||
|
||||
|
||||
<div style={styles.card}>
|
||||
<div style={{ width: '100%', textAlign: 'right', zIndex: '9999' }}>
|
||||
|
||||
<div style={{ width: '50%', float: 'left' }}> </div>
|
||||
|
||||
{props.formation.cpf && String(props.formation.cpf) === String("1") && <div className="case_cpf" >
|
||||
<span className="tag_cpf_txt_ok_cpf" >{"OUI CPF"}</span>
|
||||
</div>
|
||||
}
|
||||
{props.formation.cpf && String(props.formation.cpf) !== String("1") && <div className="case_cpf">
|
||||
<span className="tag_cpf_txt_no_ok_cpf">{"NON CPF"}</span>
|
||||
</div>
|
||||
}
|
||||
{!props.formation.cpf && String(props.formation.cpf) !== String("1") && <div className="case_cpf">
|
||||
<span className="tag_cpf_txt_no_ok_cpf">{"NON CPF"}</span>
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{class_img_stored_in_bdd && String(class_img_stored_in_bdd).length > 50 &&
|
||||
<img src={class_img_stored_in_bdd} alt="Formation" style={styles.image} />
|
||||
}
|
||||
|
||||
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) &&
|
||||
(!props.formation.img_url || String(props.formation.img_url).length <= 10) &&
|
||||
String(ismetiermanaged) !== "0" && String(ismetiermanaged) !== "1" &&
|
||||
|
||||
<div >
|
||||
|
||||
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
|
||||
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("it") &&
|
||||
String(isclassimage) === "False" && <img src={img_met_program} alt="informatique" style={styles.image} />}
|
||||
|
||||
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
|
||||
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("graphisme") &&
|
||||
String(isclassimage) === "False" && <img src={img_met_graphisme} alt="graphisme" style={styles.image} />}
|
||||
|
||||
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
|
||||
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("management") &&
|
||||
String(isclassimage) === "False" && <img src={img_met_management} alt="management" style={styles.image} />}
|
||||
|
||||
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
|
||||
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("digital") &&
|
||||
String(isclassimage) === "False" && <img src={img_met_digital} alt="digital" style={styles.image} />}
|
||||
|
||||
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
|
||||
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("office") &&
|
||||
String(isclassimage) === "False" && <img src={img_met_bureautic} alt="office" style={styles.image} />}
|
||||
|
||||
{!props.formation.img_url || String(props.formation.img_url).length <= 0 &&
|
||||
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("rh") &&
|
||||
String(isclassimage) === "False" && <img src={img_met_rh} alt="ressources humaines" style={styles.image} />}
|
||||
|
||||
{!props.formation.img_url || String(props.formation.img_url).length <= 0 &&
|
||||
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("vente") &&
|
||||
String(isclassimage) === "False" && <img src={img_met_vente} alt="vente" style={styles.image} />}
|
||||
|
||||
{!props.formation.img_url || String(props.formation.img_url).length <= 0 &&
|
||||
props.formation.metier && String(props.formation.metier).toLocaleLowerCase() === String("dev_perso") &&
|
||||
String(isclassimage) === "False" && <img src={img_met_dev_perso} alt="developpement personnel" style={styles.image} />}
|
||||
|
||||
{String(isclassimage) === "True" && <img src={userimgclassprofil} alt="developpement personnel" style={styles.image} />}
|
||||
|
||||
|
||||
</div>
|
||||
}
|
||||
|
||||
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) === "0" && String(userimgclassprofil).length > 100 &&
|
||||
<div>
|
||||
<img src={userimgclassprofil} alt="autre" style={styles.image} />
|
||||
{/*props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par :<br />
|
||||
{String(props.formation.institut_formation)} </div>*/}
|
||||
</div>}
|
||||
|
||||
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) === "0" && String(userimgclassprofil).length <= 100 &&
|
||||
<div>
|
||||
<img src={img_met_autre} alt="autre" style={styles.image} />
|
||||
{/*props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par :<br />
|
||||
{String(props.formation.institut_formation)} </div>*/}
|
||||
</div>}
|
||||
|
||||
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) === "1" &&
|
||||
<div>
|
||||
<img src={props.formation.img_url} alt="autre" style={styles.image} />
|
||||
{/*props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par : <br />
|
||||
{String(props.formation.institut_formation)} </div>*/}
|
||||
</div>}
|
||||
|
||||
|
||||
<div className="block_main_contente">
|
||||
<div className="block_top_content">
|
||||
<div className="div_row_gauche" >
|
||||
{props.formation.note && String(props.formation.note).length === 1 &&
|
||||
parseInt(String(props.formation.note)) <= 5 &&
|
||||
<Rating name="half-rating-read" defaultValue={props.formation.note} precision={0.5} readOnly style={{ fontSize: '15px' }} />
|
||||
}
|
||||
</div>
|
||||
|
||||
<h3 className="formation_titre">{String(parse(String(props.formation.title).replace(/(<([^>]+)>)/ig, ''))).substring(0, 50)}</h3>
|
||||
{props.formation.discounted_price && props.formation.business_prices && <p className="formation_prix">{props.formation.discounted_price} € HT </p>}
|
||||
|
||||
{props.formation.business_prices && props.formation.business_prices.length <= 0
|
||||
&& <p className="formation_prix">{props.formation.price} € HT </p>}
|
||||
|
||||
{props.formation.business_prices && props.formation.business_prices.length > 0 &&
|
||||
<p style={{ width: '100%', float: 'left' }}>
|
||||
|
||||
<p className="formation_prix" style={{ width: '100%', float: 'left' }}>{props.formation.business_prices[0].discounted_price}€ HT
|
||||
<font className='training_price_barre' style={{ fontSize: '14px' }}> {props.formation.price} € HT </font>
|
||||
<font className='discount_block' style={{ fontSize: '14px' }}> ({props.formation.business_prices[0].discount} %) </font></p>
|
||||
</p>}
|
||||
|
||||
<p className="formation_description"> {String(parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))).substring(0, 80)}...</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div className="block_cats">
|
||||
<button className="block_cats_bton_detail">
|
||||
<nav className="block_cats_bton_detail_text"
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
props.display_detail_from_grid(props.formationid, props.formation_id, props.session_id,
|
||||
props.inscription_id, props.class_id)
|
||||
|
||||
}}> Voir les détails </nav></button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default Ent_Student_Affichage_Ftion_Grid;
|
|
@ -6,33 +6,18 @@ 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 { DataGrid, 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';
|
||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcCheckmark } from "react-icons/fc";
|
||||
import DatePicker from "react-datepicker";
|
||||
import { FcAcceptDatabase} from "react-icons/fc";
|
||||
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 } 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';
|
||||
|
@ -40,29 +25,18 @@ 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 ColorPicker from 'react-pick-color';
|
||||
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";
|
||||
import { AiTwotoneSave } from "react-icons/ai";
|
||||
import Autocomplete from '@mui/material/Autocomplete';
|
||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||
import Chip from "@mui/material/Chip";
|
||||
import { gridClasses } from '@mui/x-data-grid';
|
||||
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";
|
||||
import AttachFileIcon from '@mui/icons-material/AttachFile';
|
||||
import Module_Selection_Apprenants from "./Module_Selection_Apprenants";
|
||||
|
||||
import { FcAlarmClock, FcMultipleSmartphones, FcWorkflow } from "react-icons/fc";
|
||||
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
||||
|
||||
import Module_Historique_Action from "./Module_Historique_Action";
|
||||
|
||||
import { makeStyles } from "@material-ui/core/styles";
|
||||
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
|
||||
import { IconButton } from '@material-ui/core';
|
||||
|
@ -73,13 +47,11 @@ import {
|
|||
GridToolbarFilterButton, GridToolbarDensitySelector, GridToolbarExportContainer, useGridApiContext,
|
||||
gridFilteredSortedRowIdsSelector,
|
||||
gridVisibleColumnFieldsSelector,
|
||||
GridValueGetterParams,
|
||||
GridPreferencePanelsValue,
|
||||
|
||||
|
||||
} from '@mui/x-data-grid';
|
||||
import * as XLSX from 'xlsx';
|
||||
import { ReactReduxContext } from "react-redux";
|
||||
import { RestaurantMenu } from "@mui/icons-material";
|
||||
|
||||
|
||||
function PaperComponent(props) {
|
||||
return (
|
||||
|
@ -1148,7 +1120,7 @@ const Equipe_Team = (props) => {
|
|||
|
||||
if (document.getElementsByName(String(current_menu_header)) && document.getElementsByName(String(current_menu_header))[0]) {
|
||||
document.getElementsByName(String(current_menu_header))[0].style.fontWeight = "700";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.backgroundColor = "#104277";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.backgroundColor = "#107758";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.color = "white";
|
||||
}
|
||||
}
|
||||
|
@ -2927,8 +2899,6 @@ const Equipe_Team = (props) => {
|
|||
</div>
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
|
||||
|
||||
|
||||
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
||||
|
||||
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
||||
|
|
|
@ -851,7 +851,7 @@ function GestionAdministrative(props) {
|
|||
setCreateSessionFormation_api();
|
||||
setdisplay_detail_insc();
|
||||
|
||||
document.getElementById('menu_preinscrit').style.background = "#104277";
|
||||
document.getElementById('menu_preinscrit').style.background = "#107758";
|
||||
document.getElementById('menu_preinscrit').style.color = "#ffffff";
|
||||
|
||||
document.getElementById('menu_inscrit').style.background = "#d8edfc";
|
||||
|
@ -877,7 +877,7 @@ function GestionAdministrative(props) {
|
|||
setCreateSessionFormation_api();
|
||||
|
||||
|
||||
document.getElementById('menu_inscrit').style.background = "#104277";
|
||||
document.getElementById('menu_inscrit').style.background = "#107758";
|
||||
document.getElementById('menu_inscrit').style.color = "#ffffff";
|
||||
|
||||
document.getElementById('menu_preinscrit').style.background = "#d8edfc";
|
||||
|
@ -910,7 +910,7 @@ function GestionAdministrative(props) {
|
|||
setCreateSessionFormation_api();
|
||||
setdisplay_detail_insc();
|
||||
|
||||
document.getElementById('menu_emarge').style.background = "#104277";
|
||||
document.getElementById('menu_emarge').style.background = "#107758";
|
||||
document.getElementById('menu_emarge').style.color = "#ffffff";
|
||||
|
||||
document.getElementById('menu_preinscrit').style.background = "#d8edfc";
|
||||
|
@ -932,7 +932,7 @@ function GestionAdministrative(props) {
|
|||
setCreateSessionFormation_api();
|
||||
setdisplay_detail_insc();
|
||||
|
||||
document.getElementById('menu_eval').style.background = "#104277";
|
||||
document.getElementById('menu_eval').style.background = "#107758";
|
||||
document.getElementById('menu_eval').style.color = "#ffffff";
|
||||
|
||||
document.getElementById('menu_preinscrit').style.background = "#d8edfc";
|
||||
|
@ -6217,7 +6217,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -6734,8 +6734,8 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
|||
{rows_champs_specifics_session &&
|
||||
rows_champs_specifics_session.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
|
|
@ -914,7 +914,7 @@ const Groupe_Apprenant = (props) => {
|
|||
|
||||
if (document.getElementsByName(String(current_menu_header)) && document.getElementsByName(String(current_menu_header))[0]) {
|
||||
document.getElementsByName(String(current_menu_header))[0].style.fontWeight = "700";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.backgroundColor = "#104277";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.backgroundColor = "#107758";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.color = "white";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -426,7 +426,7 @@ const Header = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>Contactez Nous</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Contactez Nous</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
@ -566,7 +566,7 @@ const Header = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion <br />
|
||||
|
|
|
@ -25,7 +25,7 @@ import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
|
|||
import Rating from '@mui/material/Rating';
|
||||
import parse from 'html-react-parser'
|
||||
import Autocomplete from '@mui/material/Autocomplete';
|
||||
|
||||
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
||||
|
||||
function Inscription_Information(props) {
|
||||
|
||||
|
@ -110,7 +110,10 @@ function Inscription_Information(props) {
|
|||
var nom = document.getElementsByName("nom")[0].value;
|
||||
if (String(nom).trim().length <= 0) {
|
||||
document.getElementsByName("nom")[0].style.borderColor = "red";
|
||||
alert(" Le nom d'utilisateur est obligatoire 3");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le nom est obligatoire");
|
||||
setalert_type("error")
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -123,8 +126,11 @@ function Inscription_Information(props) {
|
|||
|
||||
var prenom = document.getElementsByName("prenom")[0].value;
|
||||
if (String(prenom).trim().length <= 0) {
|
||||
document.getElementsByName("telephone")[0].style.borderColor = "red";
|
||||
alert(" Le prenom d'utilisateur est obligatoire ");
|
||||
document.getElementsByName("prenom")[0].style.borderColor = "red";
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le prenom est obligatoire");
|
||||
setalert_type("error")
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -132,15 +138,19 @@ function Inscription_Information(props) {
|
|||
var telephone = document.getElementsByName("telephone")[0].value;
|
||||
if (String(telephone).trim().length < 10) {
|
||||
document.getElementsByName("telephone")[0].style.borderColor = "red";
|
||||
alert(" Le numero de telephone doit comporter 10 chiffres ");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le numero de telephone doit comporter 10 chiffres");
|
||||
setalert_type("error")
|
||||
return;
|
||||
}
|
||||
|
||||
var email = document.getElementsByName("email")[0].value;
|
||||
var re2 = /\S+@\S+\.\S+/;
|
||||
if (re2.test(email) === false) {
|
||||
alert("L'email est incorrect ");
|
||||
document.getElementsByName("email")[0].style.borderColor = "red";
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("L'adresse email est incorrect");
|
||||
setalert_type("error")
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -148,7 +158,9 @@ function Inscription_Information(props) {
|
|||
|
||||
var modefinancement = document.getElementById('modefinancement').value;
|
||||
if (String(modefinancement).trim().length <= 0) {
|
||||
alert("Vous devez choisir une mode de financement ");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Vous devez choisir une mode de financemen");
|
||||
setalert_type("error")
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -156,14 +168,19 @@ function Inscription_Information(props) {
|
|||
if (document.getElementById('opco') && document.getElementById('opco').value) {
|
||||
opco = document.getElementById('opco').value;
|
||||
if (String(opco).trim().length <= 0) {
|
||||
alert("Vous devez choisir un centre Opco ");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Vous devez choisir un centre Opco");
|
||||
setalert_type("error")
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var session = mysession;
|
||||
if (String(nom).trim().length <= 0) {
|
||||
alert(" Le nom d'utilisateur est obligatoire 2 ");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le nom est obligatoire");
|
||||
setalert_type("error")
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -217,9 +234,20 @@ function Inscription_Information(props) {
|
|||
setRecordData_api(result['status']);
|
||||
setRecordData_status(result['status']);
|
||||
setRecordData_message(result['message']);
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: "smooth",
|
||||
});
|
||||
|
||||
if (String(result['status']) === "true") {
|
||||
alert("Votre demande d'inscription a bien été prise en compte. Vous allez recevoir une email de confirmation dans votre boite email. Merci.");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Votre demande d'inscription a bien été prise en compte. Vous allez recevoir une email de confirmation dans votre boite email. Merci.");
|
||||
setalert_type("success");
|
||||
} else {
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(result['message']);
|
||||
setalert_type("error")
|
||||
}
|
||||
|
||||
})
|
||||
|
@ -322,7 +350,7 @@ function Inscription_Information(props) {
|
|||
|
||||
|
||||
CheckEvaluationToken();
|
||||
// setclass_sales_price(props.trainig_price);
|
||||
// setclass_sales_price(props.trainig_price);
|
||||
|
||||
}
|
||||
|
||||
|
@ -466,10 +494,10 @@ function Inscription_Information(props) {
|
|||
|
||||
function SendInformationRequest() {
|
||||
const formData = new FormData();
|
||||
const url = process.env.REACT_APP_API_URL + "myclass/api/RenseignementClass/";
|
||||
const url = process.env.REACT_APP_API_URL + "myclass/api/RenseignementClass/";
|
||||
|
||||
if (is_company === "0") {
|
||||
|
||||
|
||||
var nom = valnom_info;
|
||||
//console.log(" nom = ", nom, );
|
||||
if (String(nom).trim().length <= 0) {
|
||||
|
@ -508,7 +536,7 @@ function Inscription_Information(props) {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
var message = "";
|
||||
if (editorRef_description.current) {
|
||||
message = editorRef_description.current.getContent();
|
||||
|
@ -532,7 +560,7 @@ function Inscription_Information(props) {
|
|||
|
||||
formData.append('class_sales_price', class_sales_price);
|
||||
|
||||
|
||||
|
||||
|
||||
formData.append('is_company', is_company);
|
||||
|
||||
|
@ -884,9 +912,36 @@ function Inscription_Information(props) {
|
|||
|
||||
const [civilite_stagiaire, setcivilite_stagiaire] = 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='inscription'>
|
||||
|
||||
|
||||
{/*** 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*/}
|
||||
|
||||
{String(RecordData_status) === "true" &&
|
||||
String(action).toLocaleLowerCase() === "inscription" &&
|
||||
<div className="okUpdateData">
|
||||
|
@ -905,7 +960,6 @@ function Inscription_Information(props) {
|
|||
</div>}
|
||||
|
||||
|
||||
|
||||
{(String(RecordData_status) === "false" ||
|
||||
String(RecordData_status).length === 0) &&
|
||||
String(action).toLocaleLowerCase() === "inscription" &&
|
||||
|
@ -1244,7 +1298,7 @@ function Inscription_Information(props) {
|
|||
|
||||
</div>}
|
||||
|
||||
<h3 style={{ fontFamily:'DM Sans' }}> Demande d'evaluation </h3>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Demande d'evaluation </h3>
|
||||
<div className="div_row22 survey_block">
|
||||
<fieldset>
|
||||
<nav className="survey_title"> 1. Une <b>note </b> pour l'appréciation générale </nav>
|
||||
|
@ -1466,8 +1520,8 @@ function Inscription_Information(props) {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
@ -1710,8 +1764,8 @@ function Inscription_Information(props) {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
|
|
@ -1520,7 +1520,7 @@ const options_menu_vertical = [
|
|||
submenu_color_management("main");
|
||||
|
||||
/* if (document.getElementById("order_header_main")) {
|
||||
document.getElementById("order_header_main").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_main").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_main").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1547,7 +1547,7 @@ const options_menu_vertical = [
|
|||
submenu_color_management("detail");
|
||||
|
||||
/* if (document.getElementById("order_header_detail")) {
|
||||
document.getElementById("order_header_detail").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_detail").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_detail").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1573,7 +1573,7 @@ const options_menu_vertical = [
|
|||
submenu_color_management("facturation");
|
||||
|
||||
/* if (document.getElementById("order_header_facturation")) {
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_facturation").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1604,7 +1604,7 @@ const options_menu_vertical = [
|
|||
submenu_color_management("paiement");
|
||||
|
||||
/* if (document.getElementById("order_header_facturation")) {
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_facturation").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1640,7 +1640,7 @@ const options_menu_vertical = [
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -2810,7 +2810,7 @@ const options_menu_vertical = [
|
|||
className="partner_commande"
|
||||
>
|
||||
|
||||
<DialogTitle> Détail ligne Facture <font style={{ fontWeight: "700" }}> {String(invoice_internal_ref)} </font> </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Détail ligne Facture <font style={{ fontWeight: "700" }}> {String(invoice_internal_ref)} </font> </DialogTitle>
|
||||
<DialogContent>
|
||||
|
||||
|
||||
|
@ -3024,7 +3024,7 @@ const options_menu_vertical = [
|
|||
static
|
||||
onClose={() => null} >
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||
|
||||
<div>
|
||||
|
@ -3073,7 +3073,7 @@ const options_menu_vertical = [
|
|||
static
|
||||
onClose={() => null} >
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||
<DialogContentText>
|
||||
Envoi Facture par email
|
||||
|
@ -3186,7 +3186,7 @@ const options_menu_vertical = [
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle> Paiement </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Paiement </DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_Paiement_1_message}
|
||||
|
@ -3324,7 +3324,7 @@ const options_menu_vertical = [
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle> Annotation </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Annotation </DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "15rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_annotation_1_message}
|
||||
|
|
|
@ -150,10 +150,10 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
|
||||
const columns = [
|
||||
{ field: '_id', headerName: '_id', hide: true, editable: false, Width: 0, disableExport: true, },
|
||||
{ field: 'session_id', headerName: 'session_id', hide: true, editable: false, Width: 0 , disableExport: true,},
|
||||
{ field: 'id', headerName: 'id', hide: true, Width: 0 , disableExport: true,},
|
||||
{ field: 'class_id', headerName: 'class_id', hide: true, Width: 0 , disableExport: true,},
|
||||
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false, Width: 0 , disableExport: true,},
|
||||
{ field: 'session_id', headerName: 'session_id', hide: true, editable: false, Width: 0, disableExport: true, },
|
||||
{ field: 'id', headerName: 'id', hide: true, Width: 0, disableExport: true, },
|
||||
{ field: 'class_id', headerName: 'class_id', hide: true, Width: 0, disableExport: true, },
|
||||
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false, Width: 0, disableExport: true, },
|
||||
|
||||
{ field: 'telephone', headerName: 'Téléphone', hide: true, editable: false, Width: 0 },
|
||||
{ field: 'date_naissance', headerName: 'date_naissance', hide: true, editable: false, Width: 0 },
|
||||
|
@ -788,18 +788,18 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
}
|
||||
|
||||
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
form.append("token", stored_cookie);
|
||||
|
||||
/*** Si le formulaire est appelé avec un type de document;
|
||||
* on va forcer dans les argument un champ avec partner_client_id = client_rattachement_id
|
||||
*/
|
||||
if (props.partner_client_id ) {
|
||||
if (props.partner_client_id) {
|
||||
form.delete("client_rattachement_id");
|
||||
form.append("client_rattachement_id", props.partner_client_id);
|
||||
}
|
||||
|
||||
// console.log(" ### Getall_TrainingParticipant form = ", form)
|
||||
// console.log(" ### Getall_TrainingParticipant form = ", form)
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Statgaire_List_Partner_with_filter/";
|
||||
|
||||
|
||||
|
@ -1082,7 +1082,7 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
setsubmenu("inscrit");
|
||||
|
||||
if (document.getElementById("inscrit")) {
|
||||
document.getElementById("inscrit").style.backgroundColor = "#104277";
|
||||
document.getElementById("inscrit").style.backgroundColor = "#107758";
|
||||
document.getElementById("inscrit").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1813,7 +1813,7 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
const list_menu_header_names = ['detail_session_class', 'detail_client_rattachement', 'detail_facture_client_rattachement', 'detail_financeur_rattachement', 'detail_nom', 'detail_status_inscript',
|
||||
'detail_opco', 'detail_prenom', 'detail_mode_financement', 'detail_mail', 'detail_naissance', 'detail_tel', 'detail_adresse', 'detail_code_postal',
|
||||
'detail_ville', 'detail_pays', 'certif_date', 'detail_cout', 'detail_mode_fin', 'detail_employeur', 'date_evaluation', 'certif_date',
|
||||
'note_eval', 'detail_type_apprenant', 'date_evaluation', 'detail_incr_date']
|
||||
'note_eval', 'detail_type_apprenant', 'date_evaluation', 'detail_incr_date']
|
||||
|
||||
|
||||
|
||||
|
@ -1902,27 +1902,11 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
const [attendee_lms_login, setattendee_lms_login] = useState();
|
||||
|
||||
|
||||
function submenu_sessions() {
|
||||
setsubmenu("sessions");
|
||||
setdisplay_detail_stagiaire();
|
||||
setdisplay_detail_absence();
|
||||
setdisplay_notes("");
|
||||
setdisplay_detail_ue();
|
||||
setdisplay_detail_historique();
|
||||
desableSessionFields();
|
||||
}
|
||||
|
||||
function submenu_absence() {
|
||||
setsubmenu("absence");
|
||||
setdisplay_detail_stagiaire();
|
||||
setdisplay_detail_historique();
|
||||
setdisplay_detail_ue();
|
||||
setdisplay_notes("");
|
||||
setdisplay_detail_absence("1");
|
||||
desableSessionFields();
|
||||
}
|
||||
|
||||
|
||||
function submenu_historique() {
|
||||
submenu_color_management("historique");
|
||||
setsubmenu("historique");
|
||||
setdisplay_detail_stagiaire();
|
||||
setdisplay_detail_absence();
|
||||
|
@ -1930,10 +1914,13 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
setdisplay_notes("");
|
||||
setdisplay_detail_historique("1");
|
||||
desableSessionFields();
|
||||
|
||||
|
||||
}
|
||||
|
||||
function submenu_unite_enseignement() {
|
||||
|
||||
submenu_color_management("ue");
|
||||
setsubmenu("ue");
|
||||
|
||||
if (selected_id) {
|
||||
|
@ -1947,10 +1934,11 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
setdisplay_notes("");
|
||||
setdisplay_detail_ue("1");
|
||||
desableSessionFields();
|
||||
|
||||
}
|
||||
|
||||
function submenu_notes() {
|
||||
|
||||
submenu_color_management("notes");
|
||||
setsubmenu("notes");
|
||||
|
||||
if (selected_id) {
|
||||
|
@ -1964,6 +1952,8 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
setdisplay_detail_ue("");
|
||||
setdisplay_notes("1");
|
||||
desableSessionFields();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -2230,62 +2220,43 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
}
|
||||
|
||||
|
||||
async function submenu_detail_stagaire() {
|
||||
function submenu_detail_stagaire() {
|
||||
submenu_color_management("detail_session");
|
||||
setsubmenu("detail_session");
|
||||
|
||||
await sleep(5);
|
||||
|
||||
setdisplay_detail_stagiaire("1");
|
||||
setaddOneParticipant();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (document.getElementById("detail_session")) {
|
||||
document.getElementById("detail_session").style.backgroundColor = "#104277";
|
||||
document.getElementById("detail_session").style.color = "white";
|
||||
}
|
||||
|
||||
if (document.getElementById("piece_jointe")) {
|
||||
document.getElementById("piece_jointe").style.backgroundColor = "#d8edfc";
|
||||
document.getElementById("piece_jointe").style.color = "black";
|
||||
}
|
||||
|
||||
|
||||
/* if (document.getElementById("preinscrit")) {
|
||||
document.getElementById("preinscrit").style.backgroundColor = "#d8edfc";
|
||||
document.getElementById("preinscrit").style.color = "black";
|
||||
}
|
||||
*/
|
||||
function submenu_piece_jointe() {
|
||||
submenu_color_management("piece_jointe");
|
||||
setsubmenu("piece_jointe");
|
||||
setdisplay_detail_stagiaire("");
|
||||
setaddOneParticipant();
|
||||
|
||||
}
|
||||
|
||||
|
||||
async function submenu_piece_jointe() {
|
||||
setsubmenu("piece_jointe");
|
||||
function submenu_color_management(current_menu) {
|
||||
const list_sous_menu = ['detail_session', 'piece_jointe', 'ue', 'notes', 'historique']
|
||||
|
||||
await sleep(5);
|
||||
for (let i = 0; i < list_sous_menu.length; i++) {
|
||||
|
||||
setdisplay_detail_stagiaire("");
|
||||
setaddOneParticipant();
|
||||
|
||||
|
||||
if (document.getElementById("piece_jointe")) {
|
||||
document.getElementById("piece_jointe").style.backgroundColor = "#104277";
|
||||
document.getElementById("piece_jointe").style.color = "white";
|
||||
var sous_menu = list_sous_menu[i];
|
||||
if (String(sous_menu) !== current_menu) {
|
||||
if (document.getElementById(sous_menu)) {
|
||||
document.getElementById(sous_menu).style.backgroundColor = "#d8edfc";
|
||||
document.getElementById(sous_menu).style.color = "black";
|
||||
document.getElementById(sous_menu).style.fontWeight = "normal";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (document.getElementById("detail_session")) {
|
||||
document.getElementById("detail_session").style.backgroundColor = "#d8edfc";
|
||||
document.getElementById("detail_session").style.color = "black";
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
||||
|
||||
/* if (document.getElementById("preinscrit")) {
|
||||
document.getElementById("preinscrit").style.backgroundColor = "#d8edfc";
|
||||
document.getElementById("preinscrit").style.color = "black";
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -2299,7 +2270,7 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
form.append("token", stored_cookie);
|
||||
|
||||
form.append("archive", "0");
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
|
||||
|
||||
setLoading(true);
|
||||
|
@ -2514,11 +2485,11 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
var local_class_id = JSON.parse(x).class_id;
|
||||
var local_class_eu_id = JSON.parse(x).class_eu_id;
|
||||
var local_class_eu_code = JSON.parse(x).class_eu_code;
|
||||
var local_type_eval__id = JSON.parse(x).type_eval__id;
|
||||
var local_type_eval_id = JSON.parse(x).type_eval_id;
|
||||
var local_type_eval_code = JSON.parse(x).type_eval_code;
|
||||
var local_type_eval_nom = JSON.parse(x).type_eval_nom;
|
||||
|
||||
tab_tmp.push(local_type_eval__id);
|
||||
tab_tmp.push(local_type_eval_id);
|
||||
|
||||
|
||||
|
||||
|
@ -2530,7 +2501,7 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
"class_id": local_class_id,
|
||||
"class_eu_id": local_class_eu_id,
|
||||
"class_eu_code": local_class_eu_code,
|
||||
"type_eval__id": local_type_eval__id,
|
||||
"type_eval_id": local_type_eval_id,
|
||||
"type_eval_code": local_type_eval_code,
|
||||
"type_eval_nom": local_type_eval_nom,
|
||||
};
|
||||
|
@ -2547,7 +2518,7 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
"class_id": "",
|
||||
"class_eu_id": "",
|
||||
"class_eu_code": "",
|
||||
"type_eval__id": "",
|
||||
"type_eval_id": "",
|
||||
"type_eval_code": "",
|
||||
"type_eval_nom": "",
|
||||
};
|
||||
|
@ -4195,6 +4166,7 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
form.append("token", stored_cookie);
|
||||
form.append("archive", "0");
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_partner_class/";
|
||||
setLoading(true);
|
||||
|
@ -6345,115 +6317,115 @@ const Intranet_Mes_Stagiaires = (props) => {
|
|||
setdisplay_stagiaire_with_alert(event.target.checked);
|
||||
};
|
||||
|
||||
// DEBUT EXPORT EXCEL DATAGRID
|
||||
// DEBUT EXPORT EXCEL DATAGRID
|
||||
|
||||
function CustomToolbar(props) {
|
||||
function CustomToolbar(props) {
|
||||
|
||||
|
||||
return (
|
||||
<GridToolbarContainer {...props}>
|
||||
return (
|
||||
<GridToolbarContainer {...props}>
|
||||
|
||||
<GridToolbarColumnsButton />
|
||||
<GridToolbarFilterButton />
|
||||
<GridToolbarDensitySelector
|
||||
slotProps={{ tooltip: { title: 'Change density' } }}
|
||||
/>
|
||||
<Box sx={{ flexGrow: 1 }} />
|
||||
<ExportButton data_colums={props.data_colums} />
|
||||
<GridToolbarColumnsButton />
|
||||
<GridToolbarFilterButton />
|
||||
<GridToolbarDensitySelector
|
||||
slotProps={{ tooltip: { title: 'Change density' } }}
|
||||
/>
|
||||
<Box sx={{ flexGrow: 1 }} />
|
||||
<ExportButton data_colums={props.data_colums} />
|
||||
|
||||
|
||||
</GridToolbarContainer>
|
||||
);
|
||||
}
|
||||
</GridToolbarContainer>
|
||||
);
|
||||
}
|
||||
|
||||
function getExcelData(apiRef) {
|
||||
// Select rows and columns
|
||||
const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
|
||||
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef);
|
||||
function getExcelData(apiRef) {
|
||||
// Select rows and columns
|
||||
const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
|
||||
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef);
|
||||
|
||||
// Format the data. Here we only keep the value
|
||||
const data = filteredSortedRowIds.map((id) => {
|
||||
const row = {};
|
||||
visibleColumnsField.forEach((field) => {
|
||||
row[field] = apiRef.current.getCellParams(id, field).value;
|
||||
// Format the data. Here we only keep the value
|
||||
const data = filteredSortedRowIds.map((id) => {
|
||||
const row = {};
|
||||
visibleColumnsField.forEach((field) => {
|
||||
row[field] = apiRef.current.getCellParams(id, field).value;
|
||||
});
|
||||
return row;
|
||||
});
|
||||
return row;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
function ExportButton(props) {
|
||||
return (
|
||||
<GridToolbarExportContainer {...props}>
|
||||
<ExportMenuItem data_colums={props.data_colums} />
|
||||
</GridToolbarExportContainer>
|
||||
);
|
||||
}
|
||||
function ExportButton(props) {
|
||||
return (
|
||||
<GridToolbarExportContainer {...props}>
|
||||
<ExportMenuItem data_colums={props.data_colums} />
|
||||
</GridToolbarExportContainer>
|
||||
);
|
||||
}
|
||||
|
||||
function handleExport(apiRef, data_colums) {
|
||||
const data = getExcelData(apiRef);
|
||||
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef);
|
||||
|
||||
function handleExport(apiRef, data_colums) {
|
||||
const data = getExcelData(apiRef);
|
||||
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef);
|
||||
|
||||
const local_config = {
|
||||
keys: visibleColumnsField,
|
||||
|
||||
columnNames: data_colums.filter((mydata) => (mydata).disableExport !== true).map(function (mydata) {
|
||||
if (mydata.headerName && visibleColumnsField.includes(mydata.field)) {
|
||||
if (mydata.headerName) {
|
||||
return mydata.headerName;
|
||||
const local_config = {
|
||||
keys: visibleColumnsField,
|
||||
|
||||
columnNames: data_colums.filter((mydata) => (mydata).disableExport !== true).map(function (mydata) {
|
||||
if (mydata.headerName && visibleColumnsField.includes(mydata.field)) {
|
||||
if (mydata.headerName) {
|
||||
return mydata.headerName;
|
||||
}
|
||||
}
|
||||
|
||||
}),
|
||||
|
||||
fileName: 'data_' + String(new Date().toJSON().slice(0, 10)).replaceAll("-", "_") + '.xlsx',
|
||||
sheetName: 'Export_' + String(new Date().toJSON().slice(0, 10)).replaceAll("-", "_"),
|
||||
};
|
||||
|
||||
local_config.columnNames = local_config.columnNames.filter(function (element) {
|
||||
return element !== undefined;
|
||||
});
|
||||
|
||||
|
||||
const rows = data.map((row) => {
|
||||
const mRow = {};
|
||||
for (const key of local_config.keys) {
|
||||
mRow[key] = row[key];
|
||||
}
|
||||
return mRow;
|
||||
});
|
||||
|
||||
}),
|
||||
const worksheet = XLSX.utils.json_to_sheet(rows);
|
||||
XLSX.utils.sheet_add_aoa(worksheet, [[...local_config.columnNames]], {
|
||||
origin: 'A1',
|
||||
});
|
||||
|
||||
fileName: 'data_' + String(new Date().toJSON().slice(0, 10)).replaceAll("-", "_") + '.xlsx',
|
||||
sheetName: 'Export_' + String(new Date().toJSON().slice(0, 10)).replaceAll("-", "_"),
|
||||
};
|
||||
const workbook = XLSX.utils.book_new();
|
||||
XLSX.utils.book_append_sheet(workbook, worksheet, local_config.sheetName);
|
||||
XLSX.writeFile(workbook, local_config.fileName, { compression: true });
|
||||
}
|
||||
|
||||
local_config.columnNames = local_config.columnNames.filter(function( element ) {
|
||||
return element !== undefined;
|
||||
});
|
||||
function ExportMenuItem(props) {
|
||||
const apiRef = useGridApiContext();
|
||||
const { hideMenu } = props;
|
||||
|
||||
return (
|
||||
<MenuItem
|
||||
onClick={() => {
|
||||
handleExport(apiRef, props.data_colums);
|
||||
// Hide the export menu after the export
|
||||
hideMenu?.();
|
||||
}}
|
||||
>
|
||||
Export Excel
|
||||
</MenuItem>
|
||||
);
|
||||
}
|
||||
|
||||
const rows = data.map((row) => {
|
||||
const mRow = {};
|
||||
for (const key of local_config.keys) {
|
||||
mRow[key] = row[key];
|
||||
}
|
||||
return mRow;
|
||||
});
|
||||
|
||||
const worksheet = XLSX.utils.json_to_sheet(rows);
|
||||
XLSX.utils.sheet_add_aoa(worksheet, [[...local_config.columnNames]], {
|
||||
origin: 'A1',
|
||||
});
|
||||
|
||||
const workbook = XLSX.utils.book_new();
|
||||
XLSX.utils.book_append_sheet(workbook, worksheet, local_config.sheetName);
|
||||
XLSX.writeFile(workbook, local_config.fileName, { compression: true });
|
||||
}
|
||||
|
||||
function ExportMenuItem(props) {
|
||||
const apiRef = useGridApiContext();
|
||||
const { hideMenu } = props;
|
||||
|
||||
return (
|
||||
<MenuItem
|
||||
onClick={() => {
|
||||
handleExport(apiRef, props.data_colums);
|
||||
// Hide the export menu after the export
|
||||
hideMenu?.();
|
||||
}}
|
||||
>
|
||||
Export Excel
|
||||
</MenuItem>
|
||||
);
|
||||
}
|
||||
|
||||
// FIN EXPORT EXCEL DATAGRID
|
||||
// FIN EXPORT EXCEL DATAGRID
|
||||
|
||||
return (
|
||||
<div className="intranet_mes_stagiaires">
|
||||
|
@ -6462,14 +6434,14 @@ function ExportMenuItem(props) {
|
|||
</div>}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ /**** Dialog info stagiaire */}
|
||||
<Dialog
|
||||
open={Dialog_stagiaire_open}
|
||||
//onClose={Dialog_stagiaire_handleClose}
|
||||
className="displaypartnersession"
|
||||
|
||||
|
||||
static
|
||||
onClose={() => null}
|
||||
|
||||
|
@ -6494,7 +6466,7 @@ function ExportMenuItem(props) {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title">Info Stagiaire</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title">Info Stagiaire</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
<div className="div_row_dialog">
|
||||
|
@ -6640,7 +6612,7 @@ function ExportMenuItem(props) {
|
|||
<DialogActions>
|
||||
|
||||
|
||||
<IconButton
|
||||
<IconButton
|
||||
autoFocus
|
||||
onClick={Dialog_stagiaire_handleClose_buton}
|
||||
color="primary"
|
||||
|
@ -6671,7 +6643,7 @@ function ExportMenuItem(props) {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -6715,7 +6687,7 @@ function ExportMenuItem(props) {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title">Tuteur {quel_tuteur}</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title">Tuteur {quel_tuteur}</DialogTitle>
|
||||
{String(quel_tuteur) === "1" && <DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_tuteur_1_message}
|
||||
|
@ -7097,7 +7069,7 @@ function ExportMenuItem(props) {
|
|||
|
||||
|
||||
<DialogActions>
|
||||
<IconButton
|
||||
<IconButton
|
||||
autoFocus
|
||||
onClick={Dialog_tuteur_1_handleClose_buton}
|
||||
color="primary"
|
||||
|
@ -7133,7 +7105,7 @@ function ExportMenuItem(props) {
|
|||
static
|
||||
onClose={() => null}>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}>
|
||||
|
||||
|
||||
|
@ -7445,7 +7417,7 @@ function ExportMenuItem(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>
|
||||
|
@ -7950,7 +7922,7 @@ function ExportMenuItem(props) {
|
|||
}}
|
||||
>
|
||||
<DataGrid
|
||||
// checkboxSelection
|
||||
// checkboxSelection
|
||||
components={{
|
||||
Toolbar: CustomToolbar
|
||||
}}
|
||||
|
@ -8057,9 +8029,9 @@ function ExportMenuItem(props) {
|
|||
|
||||
rowsPerPageOptions={[10]}
|
||||
disableSelectionOnClick
|
||||
/* components={{
|
||||
Toolbar: GridToolbar,
|
||||
}}*/
|
||||
/* components={{
|
||||
Toolbar: GridToolbar,
|
||||
}}*/
|
||||
//sx={datagridSx}
|
||||
getCellClassName={(params) => {
|
||||
//field === 'distantiel'
|
||||
|
@ -8343,7 +8315,7 @@ function ExportMenuItem(props) {
|
|||
|
||||
</div>}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -8352,7 +8324,7 @@ function ExportMenuItem(props) {
|
|||
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
|
||||
{/*} <div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
|
||||
{/*} <div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
|
||||
|
||||
<Button variant="outlined" onClick={submenu_import_stagiaire} className="detail_class_submenu bton_import_excel"
|
||||
id='menu_import_participant' name='menu_import_participant'>Importer des participants excel
|
||||
|
@ -8385,20 +8357,15 @@ function ExportMenuItem(props) {
|
|||
</div>
|
||||
<div className="div_row" ref={myRef_details} id="myRef_details"> </div>
|
||||
|
||||
|
||||
{((selected_id && String(selected_id).length > 2) || (String(addOneParticipant) === "1")) && <div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_stagaire} className="detail_class_submenu" id='detail_session' name='detail_session'>Détail Participant</Button>
|
||||
|
||||
<Button variant="outlined" onClick={submenu_piece_jointe} className="detail_class_submenu" id='piece_jointe' name='piece_jointe'>Pièces Jointes </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> */}
|
||||
|
||||
{String(props.formation_initiale) === "1" && String(addOneParticipant) !== "1" && <Button variant="outlined" onClick={submenu_unite_enseignement} className="detail_class_submenu" id='ue' name='ue'>Unit. Enseignement </Button>}
|
||||
|
||||
{String(props.formation_initiale) === "1" && String(addOneParticipant) !== "1" && <Button variant="outlined" onClick={submenu_notes} className="detail_class_submenu" id='notes' name='ue'>Notes </Button>}
|
||||
|
||||
|
||||
{String(addOneParticipant) !== "1" && String(history_securite_read) === "1" && <Button variant="outlined" onClick={submenu_historique} className="detail_class_submenu" id='historique' name='historique'>Historique </Button>}
|
||||
|
||||
</div>}
|
||||
|
@ -10313,7 +10280,7 @@ function ExportMenuItem(props) {
|
|||
<hr className="hr_break" />
|
||||
</div>
|
||||
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
|
||||
Acces Plateforme E-Learning (LMS)
|
||||
Acces Plateforme E-Learning (LMS)
|
||||
|
||||
</div>
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
|
@ -10726,7 +10693,7 @@ function ExportMenuItem(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 />
|
||||
|
@ -10799,7 +10766,7 @@ function ExportMenuItem(props) {
|
|||
//console.log(" lecture de New_Get_Inscrit_List_Evaluation_Par_UE_result[i] = ", New_Get_Inscrit_List_Evaluation_Par_UE_result[i])
|
||||
|
||||
if (data.class_ue_id && String(data.class_ue_id) !== "" && data.class_ue_id === New_Get_Inscrit_List_Evaluation_Par_UE_result[i].class_eu_id &&
|
||||
data.type_evaluation_id === New_Get_Inscrit_List_Evaluation_Par_UE_result[i].type_eval__id
|
||||
data.type_evaluation_id === New_Get_Inscrit_List_Evaluation_Par_UE_result[i].type_eval_id
|
||||
) {
|
||||
//console.log(" GAGNEEEE ");
|
||||
return data;
|
||||
|
@ -10872,7 +10839,7 @@ function ExportMenuItem(props) {
|
|||
|
||||
{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();
|
||||
|
|
|
@ -374,7 +374,7 @@ const Intranet_Tous_Documents = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ import Link from '@mui/material/Link';
|
|||
import { PiDotsThree } from "react-icons/pi";
|
||||
import { IoAddCircleOutline } from "react-icons/io5";
|
||||
import AttachFileIcon from '@mui/icons-material/AttachFile';
|
||||
import { FcAcceptDatabase, FcPlanner } from "react-icons/fc";
|
||||
import { FcAcceptDatabase, FcPlanner } from "react-icons/fc";
|
||||
|
||||
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
||||
import Module_Historique_Action from "./Module_Historique_Action";
|
||||
|
@ -2161,7 +2161,7 @@ const Jury = (props) => {
|
|||
|
||||
if (document.getElementsByName(String(current_menu_header)) && document.getElementsByName(String(current_menu_header))[0]) {
|
||||
document.getElementsByName(String(current_menu_header))[0].style.fontWeight = "700";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.backgroundColor = "#104277";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.backgroundColor = "#107758";
|
||||
document.getElementsByName(String(current_menu_header))[0].style.color = "white";
|
||||
}
|
||||
}
|
||||
|
@ -3426,7 +3426,7 @@ const Jury = (props) => {
|
|||
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
|
||||
form.append("archive", "0");
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
|
||||
|
||||
|
||||
|
@ -4459,7 +4459,7 @@ const Jury = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle> Délibération du Jury</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Délibération du Jury</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -4602,7 +4602,7 @@ const Jury = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Gestion membres jury</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Gestion membres jury</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -4920,7 +4920,7 @@ const Jury = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Gestion soutenance</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Gestion soutenance</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -5787,7 +5787,7 @@ const Jury = (props) => {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
|
||||
>
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -6349,7 +6349,7 @@ const Jury = (props) => {
|
|||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"& .MuiDataGrid-columnHeaders": {
|
||||
backgroundColor: "#c8cfd5",
|
||||
|
|
|
@ -3080,7 +3080,7 @@ const Materiel_Salle = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -3136,7 +3136,7 @@ const Materiel_Salle = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -3180,7 +3180,7 @@ const Materiel_Salle = (props) => {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
|
||||
>
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -3388,7 +3388,7 @@ const Materiel_Salle = (props) => {
|
|||
</Dialog>
|
||||
{/*** FIn Dialog detail eventement */}
|
||||
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Salles </h3>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Les Salles </h3>
|
||||
<div className="div_row">
|
||||
<div className="titre1"> Utilisez les filtres !</div>
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
|
|
|
@ -2843,7 +2843,7 @@ const Materiels = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -2897,7 +2897,7 @@ const Materiels = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -2941,7 +2941,7 @@ const Materiels = (props) => {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
|
||||
>
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -904,7 +904,7 @@ const Module_Absence = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -1194,7 +1194,7 @@ const Module_Agenda = (props) => {
|
|||
|
||||
const New_Option_Type_Ressource = [
|
||||
{ "id": "0", "label": "Employe", "value": "ressource_humaine" },
|
||||
{ "id": "1", "label": "Materiel", "value": "ressource_materielle" },
|
||||
{ "id": "1", "label": "Materiel & Salle", "value": "ressource_materielle" },
|
||||
]
|
||||
|
||||
|
||||
|
@ -1315,7 +1315,7 @@ const Module_Agenda = (props) => {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
|
||||
>
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -1661,7 +1661,7 @@ const Module_Agenda = (props) => {
|
|||
<div className="div_row" style={{ "border": "None" }}>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{tab_selected_users.length <= 1 && <div className="div_row" style={{ "border": "None" }}>
|
||||
{agenda_owner_name && String(agenda_owner_name) === "Mon Planning" && <h5> <i> {agenda_owner_name} </i> </h5>}
|
||||
{agenda_owner_name && String(agenda_owner_name) !== "Mon Planning" && tab_selected_users.length === 1 && <h5> Vous êtes sur le planning de <i> {agenda_owner_name} - ({agenda_owner_type}) </i> </h5>}
|
||||
|
|
|
@ -602,7 +602,7 @@ const Module_Attestation_Formation = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -656,7 +656,7 @@ const Module_Attestation_Formation = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -0,0 +1,549 @@
|
|||
import React, { useState, useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||
import { useCookies } from "react-cookie";
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import Popup from 'reactjs-popup';
|
||||
import 'reactjs-popup/dist/index.css';
|
||||
import axios from "axios";
|
||||
import { useParams } from 'react-router-dom'
|
||||
import { useLocation } from "react-router-dom";
|
||||
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'
|
||||
import ent_studend_img from "../mysy_img/ent_studend_img.jpg";
|
||||
|
||||
function Module_Connexion_Ent_Student() {
|
||||
const [isconnected, setisconnected] = useState("");
|
||||
const [cookie_acces_right, setCookie_acces_right, removeCookie_acces_right] = useCookies(['mysy_user_access_right']);
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
|
||||
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart'], { path: '/' });
|
||||
const [retval, setretval] = useState("0");
|
||||
const [myApimyApiMessage, setmyApimyApiMessage] = useState("");
|
||||
const [initpasswd, setinitpasswd] = useState();
|
||||
const [result, setResult] = useState("");
|
||||
const [myApiResponse, setmyApiResponse] = useState("false");
|
||||
const url_login = process.env.REACT_APP_API_URL + "myclass/api/Ent_Student_login/";
|
||||
|
||||
const random1 = Math.floor(Math.random() * 10);
|
||||
const random2 = Math.floor(Math.random() * 10);
|
||||
|
||||
const [closepopup, setclosepopup] = useState(0);
|
||||
const { obj, objid } = useParams();
|
||||
const [menucompte, setmenucompte] = useState("user");
|
||||
const [currentpawdvisible, setcurrentpawdvisible] = useState(false);
|
||||
const [typecompte, settypecompte] = useState("");
|
||||
|
||||
const {
|
||||
register,
|
||||
formState: { errors },
|
||||
handleSubmit,
|
||||
} = useForm();
|
||||
|
||||
|
||||
const history = useHistory();
|
||||
|
||||
function logout_partner_confirmation() {
|
||||
removeCookie_part('tokenmysypart', { path: '/' });
|
||||
}
|
||||
|
||||
function retnull() {
|
||||
setretval("-1");
|
||||
}
|
||||
|
||||
|
||||
function logout_user_confirmation() {
|
||||
removeCookie_part('tokenmysych', { path: '/' });
|
||||
}
|
||||
|
||||
function Logout_User() {
|
||||
confirmAlert({
|
||||
title: 'Deconnexion utilisateur ?',
|
||||
message: 'Confirmez la deconnexion utilisateur',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => logout_user_confirmation()
|
||||
},
|
||||
/* {
|
||||
label: 'Non',
|
||||
onClick: () => retnull()
|
||||
|
||||
}*/
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const onSubmit = async (data) => {
|
||||
|
||||
//console.log(" CONNEXION DE = ",menucompte);
|
||||
var partner_connexion = "";
|
||||
var url_login = "";
|
||||
|
||||
url_login = process.env.REACT_APP_API_URL + "myclass/api/Ent_Student_login/";
|
||||
setmenucompte("user");
|
||||
partner_connexion = "user";
|
||||
|
||||
|
||||
|
||||
// console.log( " ### full url_login = ", url_login)
|
||||
|
||||
// Gestion des Cookies
|
||||
const stored_partner = cookie_part.tokenmysypart;
|
||||
const stored_user = cookie.tokenmysych;
|
||||
|
||||
const formData = new FormData();
|
||||
var mymail = document.getElementsByName("email")[0].value;
|
||||
var mypwd = document.getElementsByName("pwd")[0].value;
|
||||
|
||||
formData.append("email", mymail);
|
||||
formData.append("pwd", mypwd);
|
||||
formData.append("type", "student");
|
||||
|
||||
var re = /\S+@\S+\.\S+/;
|
||||
if (re.test(mymail) === false) {
|
||||
alert("l'adresse email est incorrecte");
|
||||
return;
|
||||
}
|
||||
|
||||
if (mypwd.length <= 0) {
|
||||
alert("Vous n'avez pas saisi de mot de passe");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// si c'est une connexion user qui est active
|
||||
if (typeof (stored_user) != "undefined" && String(stored_user) !== String('')) {
|
||||
//alert(" c'est une connexion USERR qui est active");
|
||||
Logout_User();
|
||||
}
|
||||
|
||||
|
||||
fetch(
|
||||
url_login,
|
||||
{
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
}
|
||||
).then((response) => response.json())
|
||||
.then((result) => {
|
||||
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
|
||||
|
||||
var val = result['status'];
|
||||
|
||||
if (String(val) === String("true")) {
|
||||
setCookie("tokenmysych", result['message']);
|
||||
|
||||
// Verification vers quelle page les renvoyer
|
||||
if (obj === "training" && String(objid).length > 0) {
|
||||
// redirection vers l'affichage d'une formation
|
||||
history.push("/Display-Detail-formation/" + objid);
|
||||
}
|
||||
else {
|
||||
// Redirection par defaut vers la compte de l'apprenant - ENT
|
||||
history.push({
|
||||
pathname: "/mysy-student-account",
|
||||
state: {
|
||||
firstconnexion: String(result['firstconnexion'])
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
setisconnected("false");
|
||||
setmyApimyApiMessage(result['message']);
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error:', error);
|
||||
setisconnected("false");
|
||||
setmyApimyApiMessage("Le service est momentanément indisponible, merci de ressayer plus tard. ");
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const location = useLocation();
|
||||
|
||||
useEffect(() => {
|
||||
setmenucompte("partner");
|
||||
|
||||
const listener = event => {
|
||||
if (event.code === "Enter" || event.code === "NumpadEnter") {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
onSubmit();
|
||||
}
|
||||
};
|
||||
document.addEventListener("keydown", listener);
|
||||
|
||||
if (String(menucompte) === String("user")) {
|
||||
menu_user_account();
|
||||
}
|
||||
else {
|
||||
menu_parter_account();
|
||||
}
|
||||
|
||||
if (location && location.state && location.state.mysy_arg && String(location.state.mysy_arg) === "partner") {
|
||||
menu_parter_account();
|
||||
}
|
||||
|
||||
|
||||
}, []);
|
||||
|
||||
|
||||
|
||||
function menu_parter_account() {
|
||||
//alert(" menu_parter_account = "+String(menucompte));
|
||||
setmenucompte("partner");
|
||||
|
||||
if (document.getElementsByName("partner_account") && document.getElementsByName("partner_account")[0])
|
||||
document.getElementsByName("partner_account")[0].style.backgroundColor = "#81BC3A";
|
||||
|
||||
if (document.getElementsByName("user_account") && document.getElementsByName("user_account")[0])
|
||||
document.getElementsByName("user_account")[0].style.backgroundColor = "#ffffff";
|
||||
|
||||
|
||||
}
|
||||
|
||||
function menu_user_account() {
|
||||
|
||||
setmenucompte("user");
|
||||
|
||||
if (document.getElementsByName("user_account") && document.getElementsByName("user_account")[0])
|
||||
document.getElementsByName("user_account")[0].style.backgroundColor = "#81BC3A";
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function resetpasswd_ok(e) {
|
||||
|
||||
var total = " ?? ";
|
||||
if (document.getElementsByName("sommerandom")[0].value) {
|
||||
total = document.getElementsByName("sommerandom")[0].value;
|
||||
}
|
||||
var calcaul_total = parseInt(random1) + parseInt(random2);
|
||||
if (parseInt(total) != parseInt(calcaul_total)) {
|
||||
document.getElementsByName("pasrobot")[0].style.backgroundColor = "red";
|
||||
|
||||
alert(" Le total dans la zone 'je ne suis pas un robot' est incohérent. Recommencez svp :) !!!");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Controle du mail
|
||||
var mymail = document.getElementsByName("resetemailvalue")[0].value;
|
||||
//alert(" le mail de reset = "+mymail);
|
||||
var re = /\S+@\S+\.\S+/;
|
||||
if (re.test(mymail) === false) {
|
||||
alert("l'adresse email est incorrecte");
|
||||
return;
|
||||
}
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
form.append("email", mymail);
|
||||
|
||||
|
||||
// Controle du type de compte
|
||||
if (String(typecompte) !== "partner" && String(typecompte) !== "user") {
|
||||
alert("Le type de compte est inconnu");
|
||||
document.getElementsByName("is_user_or_pro")[0].style.backgroundColor = "orangered";
|
||||
return;
|
||||
}
|
||||
form.append("account_type", typecompte);
|
||||
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/InitUserPasswd/";
|
||||
|
||||
//alert("myurl = "+myurl);
|
||||
axios.post(myurl, form).then(res => {
|
||||
setclosepopup(1);
|
||||
setinitpasswd("true");
|
||||
if (String(res.data.status) != String("false")) {
|
||||
//console.log(" In test res.data.status = " + res.data.status);
|
||||
//console.log(" In test res.data.message = " + res.data.message);
|
||||
setmyApiResponse("true");
|
||||
|
||||
setResult(res.data.message);
|
||||
|
||||
}
|
||||
else {
|
||||
//console.log(" In test res.data.status = " + res.data.status);
|
||||
//console.log(" In test res.data.message = " + res.data.message);
|
||||
setmyApiResponse("false");
|
||||
setResult(res.data.message);
|
||||
}
|
||||
|
||||
|
||||
}).catch((error) => {
|
||||
console.warn('Not good man :( mysearchtext = ');
|
||||
setmyApiResponse("false");
|
||||
setinitpasswd("false");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
function resetpasswd(e) {
|
||||
confirmAlert({
|
||||
title: 'Reinitialisation Mot de Passe?',
|
||||
message: 'Confirmez la reinitialisation',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => resetpasswd_ok()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
|
||||
},
|
||||
|
||||
],
|
||||
closeOnEscape: false,
|
||||
closeOnClickOutside: false,
|
||||
keyCodeForClose: [8, 32],
|
||||
willUnmount: () => { },
|
||||
afterClose: () => { },
|
||||
onClickOutside: () => { },
|
||||
onKeypress: () => { },
|
||||
onKeypressEscape: () => { },
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
function closepopupinitpwd() {
|
||||
setclosepopup("1");
|
||||
}
|
||||
|
||||
// Cette fonction permet de cacher le mot de passer et eviter les
|
||||
// autocompletion
|
||||
const [realpwdvalue, setrealpwdvalue] = useState("");
|
||||
const [realpwdhidenvalue, setrealpwdhidenvalue] = useState("");
|
||||
function realpwd(e) {
|
||||
const val = e.target.value;
|
||||
const last = val.charAt(val.length - 1);
|
||||
var new_val = realpwdvalue;
|
||||
var new_val_hiden = realpwdhidenvalue;
|
||||
|
||||
//alert(" new_val avant saisie= "+new_val);
|
||||
new_val = new_val + last;
|
||||
new_val_hiden = new_val_hiden + "*";
|
||||
|
||||
//alert(" - new_val apres sisie = "+new_val+" new_val_hiden = "+new_val_hiden);
|
||||
setrealpwdhidenvalue(new_val_hiden);
|
||||
setrealpwdvalue(new_val);
|
||||
|
||||
//setrealpwdvalue(val);
|
||||
//document.getElementById("cle_secrete").value = new_val_hiden;
|
||||
|
||||
}
|
||||
|
||||
/* function displayvlaue(){
|
||||
alert(" la valeur secrete = "+realpwdvalue);
|
||||
}*/
|
||||
|
||||
|
||||
const handleClickShowPassword = () => {
|
||||
if (currentpawdvisible == false) {
|
||||
document.getElementsByName("pwd")[0].type = "text";
|
||||
setcurrentpawdvisible(true);
|
||||
}
|
||||
else if (currentpawdvisible == true) {
|
||||
document.getElementsByName("pwd")[0].type = "password";
|
||||
setcurrentpawdvisible(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div style={{ width: "100%", float: "left" }}>
|
||||
|
||||
<div className="module_connexion_intranet_client">
|
||||
|
||||
|
||||
<div className="div_mobile">
|
||||
<div className="block_centrer">
|
||||
|
||||
<div className="display_screen_600_901">
|
||||
|
||||
<div style={{ width: '100%', }}>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Bienvenue sur Espace Numérique de Travail </h3>
|
||||
</div>
|
||||
|
||||
<div style={{ width: '100%', }}>
|
||||
|
||||
<div style={{ width: '50%', float: 'left' }}>
|
||||
<img src={ent_studend_img} style={{width:'100%'}}/>
|
||||
</div>
|
||||
|
||||
<div style={{ width: '50%', float: 'left', paddingTop:'2rem' }}>
|
||||
<div className="div_centre_master">
|
||||
<div className="div_centre_002">
|
||||
<Button variant="outlined" onClick={menu_user_account} className="signin_menu"
|
||||
id="user_account" name="user_account"
|
||||
style={{ "float": "left", "textAlign": "center", "height": "3rem" }}> Espace numérique de travail - ENT</Button>
|
||||
</div>
|
||||
|
||||
<div className="div_centre">
|
||||
|
||||
<div className="div_row_bis" >
|
||||
|
||||
<FormGroup>
|
||||
<Label style={{ fontSize: "14px" }}>Votre adresse email</Label>
|
||||
<Input type="email" placeholder="Email" name="email" />
|
||||
</FormGroup>
|
||||
|
||||
<div style={{ height: '10px' }}> </div>
|
||||
|
||||
|
||||
<FormGroup>
|
||||
<div className="label_pwd_div">
|
||||
<div className="label_div" >
|
||||
<Label style={{ fontSize: "14px" }}>Votre mot de passe </Label>
|
||||
</div>
|
||||
<div className="show_pwd_div" onClick={handleClickShowPassword}>
|
||||
{currentpawdvisible ? <Visibility style={{ fontSize: '15px' }} /> : <VisibilityOff style={{ fontSize: '15px' }} />}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<Input type="password" placeholder="Password" name="pwd" />
|
||||
</FormGroup>
|
||||
|
||||
|
||||
{String(initpasswd) === String("true") && closepopup === 1 && <div className="okUpdateData">
|
||||
La demande reinitialisation a bien ete prise en compte.
|
||||
Verifiez votre boite email.
|
||||
</div>}
|
||||
<div className="forgot_pass" >
|
||||
{String(initpasswd) !== String("true") && String(closepopup) !== String("1")
|
||||
&& <Popup trigger={<button className="avisformation"> Mot de passe oublié</button>}
|
||||
position="center" className="signin popup-reset-pwd">
|
||||
<div className="signin-content popup-reset-pwd-content">
|
||||
<div className="div_row" style={{
|
||||
"textAlign": "center", "background": "orangered",
|
||||
"height": "2rem", "paddingTop": "5px", "fontSize": "14px", "fontWeight": "bold"
|
||||
}}
|
||||
> Modifier le mot de passe</div>
|
||||
<br />
|
||||
|
||||
<label for="exampleFormControlTextarea1">Saisir votre email</label>
|
||||
<br />
|
||||
|
||||
<input type="text" id="resetemailvalue" name="resetemailvalue" rows="1" cols="20"
|
||||
className="zone_mail" />
|
||||
<br />
|
||||
|
||||
|
||||
<div>
|
||||
<br />
|
||||
<Tooltip className="tooltip_css" id="is_user_or_pro-tooltip" />
|
||||
<a data-tooltip-id="is_user_or_pro-tooltip" data-tooltip-html="Compte partenaire : création et gestion de formation <br/>
|
||||
compte utilisateur : non autorisé à la création et gestion de formation">
|
||||
<label for="is_user_or_pro">Compte partenaire ou utilisateur * ?</label>
|
||||
<br />
|
||||
|
||||
|
||||
<select id="is_user_or_pro" name="is_user_or_pro" style={{
|
||||
"width": '100%', "height": "2.5rem",
|
||||
'marginTop': '5px'
|
||||
}}
|
||||
onChange={(event) => settypecompte(event.target.value)}>
|
||||
<option selected value="">Choisir </option>
|
||||
|
||||
<option value="partner">Partenaire </option>
|
||||
<option value="user">Utilisateur </option>
|
||||
</select>
|
||||
</a>
|
||||
<br />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="text_pwd_crit" style={{ "textAlign": "center" }}>
|
||||
Je ne suis pas un robot <br />
|
||||
<div >
|
||||
|
||||
|
||||
<div name="pasrobot" > {random1} + {random2} = <input
|
||||
type='text'
|
||||
name='sommerandom'
|
||||
id='sommerandom'
|
||||
|
||||
{...register('sommerandom', {
|
||||
required: { value: true, message: 'sommes de valeurs' },
|
||||
maxLength: {
|
||||
value: 30,
|
||||
}
|
||||
})}
|
||||
|
||||
className="pasrobot_css"
|
||||
placeholder='Le total est ?'
|
||||
/>
|
||||
|
||||
{errors.sommerandom && (
|
||||
<span className='koUpdateData'>la sommes est incorrect</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-secondary btn-sm" onClick={resetpasswd_ok}>Envoyer</button>
|
||||
<button type="submit" class="btn btn-secondary btn-sm" onClick={closepopupinitpwd}> Annuler</button>
|
||||
</div>
|
||||
|
||||
</Popup>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<FormGroup>
|
||||
|
||||
</FormGroup>
|
||||
|
||||
<div className="div_row22">
|
||||
<Button variant="contained" color="success" className="div_row22 btn_login button" onClick={onSubmit}>Connectez-Vous</Button>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{isconnected === "false" && <div className="erreurconnexion">
|
||||
<br />
|
||||
{myApimyApiMessage}</div>
|
||||
}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{/* <div style={{ height: "5rem", width: "100%" }}>
|
||||
<Fotter_v3 />
|
||||
</div>*/}
|
||||
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
export default Module_Connexion_Ent_Student;
|
|
@ -2,9 +2,6 @@ import React, { useState, useEffect } from "react";
|
|||
import { useForm } from "react-hook-form";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||
import { FacebookLoginButton, GoogleLoginButton } from "react-social-login-buttons";
|
||||
//import { getCookie, setCookie, removeCookie } from 'react-use-cookie';
|
||||
import { Helmet } from "react-helmet";
|
||||
import { useCookies } from "react-cookie";
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
|
@ -12,14 +9,12 @@ import Popup from 'reactjs-popup';
|
|||
import 'reactjs-popup/dist/index.css';
|
||||
import axios from "axios";
|
||||
import { useParams } from 'react-router-dom'
|
||||
|
||||
import Header from "./Header";
|
||||
import { useLocation } from "react-router-dom";
|
||||
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'
|
||||
import Fotter_v3 from "./Fotter_v3";
|
||||
import client_intranet from "../mysy_img/client_intranet.jpg";
|
||||
|
||||
function Module_Connexion_Intranet_Client() {
|
||||
const [isconnected, setisconnected] = useState("");
|
||||
|
@ -107,6 +102,7 @@ function Module_Connexion_Intranet_Client() {
|
|||
|
||||
formData.append("email", mymail);
|
||||
formData.append("pwd", mypwd);
|
||||
formData.append("type", "user");
|
||||
|
||||
var re = /\S+@\S+\.\S+/;
|
||||
if (re.test(mymail) === false) {
|
||||
|
@ -214,8 +210,6 @@ function Module_Connexion_Intranet_Client() {
|
|||
|
||||
if (document.getElementsByName("user_account") && document.getElementsByName("user_account")[0])
|
||||
document.getElementsByName("user_account")[0].style.backgroundColor = "#ffffff";
|
||||
|
||||
|
||||
}
|
||||
|
||||
function menu_user_account() {
|
||||
|
@ -381,138 +375,154 @@ function Module_Connexion_Intranet_Client() {
|
|||
<div className="block_centrer">
|
||||
|
||||
<div className="display_screen_600_901">
|
||||
<div className="div_centre_master">
|
||||
<div className="div_centre_002">
|
||||
<Button variant="outlined" onClick={menu_user_account} className="signin_menu"
|
||||
id="user_account" name="user_account"
|
||||
style={{ "float": "left", "textAlign": "center", "height": "3rem" }}>Intranet Utilisateur</Button>
|
||||
|
||||
|
||||
<div style={{ width: '100%', }}>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Bienvenue sur l'Intranet </h3>
|
||||
</div>
|
||||
<div style={{ width: '100%', }}>
|
||||
|
||||
<div style={{ width: '50%', float: 'left' }}>
|
||||
<img src={client_intranet} style={{ height: '100%', marginTop:'5rem' }} />
|
||||
</div>
|
||||
|
||||
<div className="div_centre">
|
||||
<div style={{ width: '50%', float: 'left', paddingTop: '2rem' }}>
|
||||
|
||||
<div className="div_row_bis" >
|
||||
|
||||
<FormGroup>
|
||||
<Label style={{ fontSize: "14px" }}>Votre adresse email</Label>
|
||||
<Input type="email" placeholder="Email" name="email" />
|
||||
</FormGroup>
|
||||
|
||||
<div style={{ height: '10px' }}> </div>
|
||||
<div className="div_centre_master">
|
||||
<div className="div_centre_002">
|
||||
<Button variant="outlined" onClick={menu_user_account} className="signin_menu"
|
||||
id="user_account" name="user_account"
|
||||
style={{ "float": "left", "textAlign": "center", "height": "3rem" }}>Intranet Client</Button>
|
||||
|
||||
|
||||
<FormGroup>
|
||||
<div className="label_pwd_div">
|
||||
<div className="label_div" >
|
||||
<Label style={{ fontSize: "14px" }}>Votre mot de passe </Label>
|
||||
</div>
|
||||
<div className="show_pwd_div" onClick={handleClickShowPassword}>
|
||||
{currentpawdvisible ? <Visibility style={{ fontSize: '15px' }} /> : <VisibilityOff style={{ fontSize: '15px' }} />}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<Input type="password" placeholder="Password" name="pwd" />
|
||||
</FormGroup>
|
||||
</div>
|
||||
|
||||
<div className="div_centre">
|
||||
|
||||
<div className="div_row_bis" >
|
||||
|
||||
<FormGroup>
|
||||
<Label style={{ fontSize: "14px" }}>Votre adresse email</Label>
|
||||
<Input type="email" placeholder="Email" name="email" />
|
||||
</FormGroup>
|
||||
|
||||
<div style={{ height: '10px' }}> </div>
|
||||
|
||||
|
||||
{String(initpasswd) === String("true") && closepopup === 1 && <div className="okUpdateData">
|
||||
La demande reinitialisation a bien ete prise en compte.
|
||||
Verifiez votre boite email.
|
||||
</div>}
|
||||
<div className="forgot_pass" >
|
||||
{String(initpasswd) !== String("true") && String(closepopup) !== String("1")
|
||||
&& <Popup trigger={<button className="avisformation"> Mot de passe oublié</button>}
|
||||
position="center" className="signin popup-reset-pwd">
|
||||
<div className="signin-content popup-reset-pwd-content">
|
||||
<div className="div_row" style={{
|
||||
"textAlign": "center", "background": "orangered",
|
||||
"height": "2rem", "paddingTop": "5px", "fontSize": "14px", "fontWeight": "bold"
|
||||
}}
|
||||
> Modifier le mot de passe</div>
|
||||
<br />
|
||||
<FormGroup>
|
||||
<div className="label_pwd_div">
|
||||
<div className="label_div" >
|
||||
<Label style={{ fontSize: "14px" }}>Votre mot de passe </Label>
|
||||
</div>
|
||||
<div className="show_pwd_div" onClick={handleClickShowPassword}>
|
||||
{currentpawdvisible ? <Visibility style={{ fontSize: '15px' }} /> : <VisibilityOff style={{ fontSize: '15px' }} />}
|
||||
</div>
|
||||
|
||||
<label for="exampleFormControlTextarea1">Saisir votre email</label>
|
||||
<br />
|
||||
|
||||
<input type="text" id="resetemailvalue" name="resetemailvalue" rows="1" cols="20"
|
||||
className="zone_mail" />
|
||||
<br />
|
||||
</div>
|
||||
<Input type="password" placeholder="Password" name="pwd" />
|
||||
</FormGroup>
|
||||
|
||||
|
||||
<div>
|
||||
<br />
|
||||
<Tooltip className="tooltip_css" id="is_user_or_pro-tooltip" />
|
||||
<a data-tooltip-id="is_user_or_pro-tooltip" data-tooltip-html="Compte partenaire : création et gestion de formation <br/>
|
||||
compte utilisateur : non autorisé à la création et gestion de formation">
|
||||
<label for="is_user_or_pro">Compte partenaire ou utilisateur * ?</label>
|
||||
{String(initpasswd) === String("true") && closepopup === 1 && <div className="okUpdateData">
|
||||
La demande reinitialisation a bien ete prise en compte.
|
||||
Verifiez votre boite email.
|
||||
</div>}
|
||||
<div className="forgot_pass" >
|
||||
{String(initpasswd) !== String("true") && String(closepopup) !== String("1")
|
||||
&& <Popup trigger={<button className="avisformation"> Mot de passe oublié</button>}
|
||||
position="center" className="signin popup-reset-pwd">
|
||||
<div className="signin-content popup-reset-pwd-content">
|
||||
<div className="div_row" style={{
|
||||
"textAlign": "center", "background": "orangered",
|
||||
"height": "2rem", "paddingTop": "5px", "fontSize": "14px", "fontWeight": "bold"
|
||||
}}
|
||||
> Modifier le mot de passe</div>
|
||||
<br />
|
||||
|
||||
<label for="exampleFormControlTextarea1">Saisir votre email</label>
|
||||
<br />
|
||||
|
||||
<input type="text" id="resetemailvalue" name="resetemailvalue" rows="1" cols="20"
|
||||
className="zone_mail" />
|
||||
<br />
|
||||
|
||||
|
||||
<select id="is_user_or_pro" name="is_user_or_pro" style={{
|
||||
"width": '100%', "height": "2.5rem",
|
||||
'marginTop': '5px'
|
||||
}}
|
||||
onChange={(event) => settypecompte(event.target.value)}>
|
||||
<option selected value="">Choisir </option>
|
||||
|
||||
<option value="partner">Partenaire </option>
|
||||
<option value="user">Utilisateur </option>
|
||||
</select>
|
||||
</a>
|
||||
<br />
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<br />
|
||||
<Tooltip className="tooltip_css" id="is_user_or_pro-tooltip" />
|
||||
<a data-tooltip-id="is_user_or_pro-tooltip" data-tooltip-html="Compte partenaire : création et gestion de formation <br/>
|
||||
compte utilisateur : non autorisé à la création et gestion de formation">
|
||||
<label for="is_user_or_pro">Compte partenaire ou utilisateur * ?</label>
|
||||
<br />
|
||||
|
||||
|
||||
<select id="is_user_or_pro" name="is_user_or_pro" style={{
|
||||
"width": '100%', "height": "2.5rem",
|
||||
'marginTop': '5px'
|
||||
}}
|
||||
onChange={(event) => settypecompte(event.target.value)}>
|
||||
<option selected value="">Choisir </option>
|
||||
|
||||
<div className="text_pwd_crit" style={{ "textAlign": "center" }}>
|
||||
Je ne suis pas un robot <br />
|
||||
<div >
|
||||
<option value="partner">Partenaire </option>
|
||||
<option value="user">Utilisateur </option>
|
||||
</select>
|
||||
</a>
|
||||
<br />
|
||||
|
||||
|
||||
<div name="pasrobot" > {random1} + {random2} = <input
|
||||
type='text'
|
||||
name='sommerandom'
|
||||
id='sommerandom'
|
||||
|
||||
{...register('sommerandom', {
|
||||
required: { value: true, message: 'sommes de valeurs' },
|
||||
maxLength: {
|
||||
value: 30,
|
||||
}
|
||||
})}
|
||||
|
||||
className="pasrobot_css"
|
||||
placeholder='Le total est ?'
|
||||
/>
|
||||
|
||||
{errors.sommerandom && (
|
||||
<span className='koUpdateData'>la sommes est incorrect</span>
|
||||
)}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="text_pwd_crit" style={{ "textAlign": "center" }}>
|
||||
Je ne suis pas un robot <br />
|
||||
<div >
|
||||
|
||||
|
||||
<div name="pasrobot" > {random1} + {random2} = <input
|
||||
type='text'
|
||||
name='sommerandom'
|
||||
id='sommerandom'
|
||||
|
||||
{...register('sommerandom', {
|
||||
required: { value: true, message: 'sommes de valeurs' },
|
||||
maxLength: {
|
||||
value: 30,
|
||||
}
|
||||
})}
|
||||
|
||||
className="pasrobot_css"
|
||||
placeholder='Le total est ?'
|
||||
/>
|
||||
|
||||
{errors.sommerandom && (
|
||||
<span className='koUpdateData'>la sommes est incorrect</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-secondary btn-sm" onClick={resetpasswd_ok}>Envoyer</button>
|
||||
<button type="submit" class="btn btn-secondary btn-sm" onClick={closepopupinitpwd}> Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-secondary btn-sm" onClick={resetpasswd_ok}>Envoyer</button>
|
||||
<button type="submit" class="btn btn-secondary btn-sm" onClick={closepopupinitpwd}> Annuler</button>
|
||||
</div>
|
||||
</Popup>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<FormGroup>
|
||||
|
||||
</FormGroup>
|
||||
|
||||
<div className="div_row22">
|
||||
<Button variant="contained" color="success" className="div_row22 btn_login button" onClick={onSubmit}>Connectez-Vous</Button>
|
||||
</div>
|
||||
|
||||
|
||||
</Popup>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<FormGroup>
|
||||
|
||||
</FormGroup>
|
||||
|
||||
<div className="div_row22">
|
||||
<Button variant="contained" color="success" className="div_row22 btn_login button" onClick={onSubmit}>Connectez-Vous</Button>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{isconnected === "false" && <div className="erreurconnexion">
|
||||
<br />
|
||||
|
|
|
@ -1528,7 +1528,7 @@ const Module_Editique = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Warning</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Warning</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
<ImWarning /> {Dialog_Access_Right_message}
|
||||
|
@ -1553,7 +1553,7 @@ const Module_Editique = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -2238,7 +2238,7 @@ const Module_Editique = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -2875,7 +2875,7 @@ const Module_Editique = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "10rem" }}>
|
||||
<DialogContentText>
|
||||
<div style={{ "textAlign": "left" }}>
|
||||
|
@ -2916,7 +2916,7 @@ const Module_Editique = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "10rem" }}>
|
||||
<DialogContentText>
|
||||
<div style={{ "textAlign": "left" }}>
|
||||
|
|
|
@ -1,83 +1,32 @@
|
|||
|
||||
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 '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 { 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 FullCalendar from "@fullcalendar/react";
|
||||
import daygridPlugin from "@fullcalendar/daygrid";
|
||||
//import interactionPlugin from "@fullcalendar/interaction";
|
||||
//import timeGridPlugin from "@fullcalendar/timegrid";
|
||||
import Checkbox from '@mui/material/Checkbox';
|
||||
import allLocales from '@fullcalendar/core/locales-all'
|
||||
import { RepeatOnRounded, ResetTvRounded, RestaurantMenu } from "@mui/icons-material";
|
||||
import { alignPropType } from "react-bootstrap/esm/types";
|
||||
|
||||
import AttachFileIcon from '@mui/icons-material/AttachFile';
|
||||
import ToggleSwitch from "./ToggleSwitch";
|
||||
import ToggleSwitch_v2_mysy from "./ToggleSwitch_v2_mysy";
|
||||
import ToggleSwitch_v3_mysy from "./ToggleSwitch_v3_mysy";
|
||||
|
||||
|
||||
import Autocomplete from '@mui/material/Autocomplete';
|
||||
import FullCalendar, { formatDate } from "@fullcalendar/react";
|
||||
import dayGridPlugin from "@fullcalendar/daygrid";
|
||||
import timeGridPlugin from "@fullcalendar/timegrid";
|
||||
import interactionPlugin from "@fullcalendar/interaction";
|
||||
import { FcSearch } from "react-icons/fc";
|
||||
import { Fab } from "@material-ui/core";
|
||||
import {
|
||||
ListItem,
|
||||
ListItemText,
|
||||
useTheme,
|
||||
} from "@mui/material";
|
||||
|
||||
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
||||
import ChevronRightIcon from '@mui/icons-material/ChevronRight';
|
||||
import { TreeView } from '@mui/x-tree-view/TreeView';
|
||||
import { TreeItem } from '@mui/x-tree-view/TreeItem';
|
||||
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
|
||||
import { FcViewDetails, FcDisapprove, FcInfo } from "react-icons/fc";
|
||||
import { convertNwSeToNeSw } from "google-map-react";
|
||||
|
||||
import { IoMdAddCircle } from "react-icons/io";
|
||||
import FormGroup from '@mui/material/FormGroup';
|
||||
import FormControlLabel from '@mui/material/FormControlLabel';
|
||||
|
||||
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
||||
const Module_Email_Management = (props) => {
|
||||
|
||||
const myconntected_employee_id = props.conntected_employee_id;
|
||||
|
@ -248,7 +197,10 @@ const Module_Email_Management = (props) => {
|
|||
else {
|
||||
setGet_Partner_List_SendEmail_Document_api("false");
|
||||
setGet_Partner_List_SendEmail_Document_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) => {
|
||||
|
@ -384,7 +336,11 @@ const Module_Email_Management = (props) => {
|
|||
else {
|
||||
setGet_Given_Partner_Document_Data_By_id_api("false");
|
||||
setGet_Given_Partner_Document_Data_By_id_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) => {
|
||||
|
@ -401,40 +357,53 @@ const Module_Email_Management = (props) => {
|
|||
const [Send_Front_Email_message, setSend_Front_Email_message] = useState();
|
||||
const [Send_Front_Email_result, setSend_Front_Email_result] = useState();
|
||||
function Send_Front_Email() {
|
||||
|
||||
|
||||
/*
|
||||
|
||||
/!\ : Pour eviter les spams, ce module ne doit pas envoyer plus de 20 email à la fois
|
||||
*/
|
||||
|
||||
const tab_destinataire = email_destinataire.split(',');
|
||||
if (tab_destinataire.length > 30) {
|
||||
alert(" Vous ne pouvez pas envoyer plus de 20 emails (destinataires) à la fois.");
|
||||
if (tab_destinataire.length > 50) {
|
||||
// alert(" Vous ne pouvez pas envoyer plus de 50 emails (destinataires) à la fois.");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Vous ne pouvez pas envoyer plus de 50 emails (destinataires) à la fois.");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
const tab_email_cc = email_cc.split(',');
|
||||
if (tab_email_cc.length > 10) {
|
||||
alert(" Vous ne pouvez mettre plus de 10 adresses en copie.");
|
||||
// alert(" Vous ne pouvez mettre plus de 10 adresses en copie.");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Vous ne pouvez mettre plus de 10 adresses en copie.");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
const tab_email_bcc = email_bcc.split(',');
|
||||
if (tab_email_bcc.length > 10) {
|
||||
alert(" Vous ne pouvez mettre plus de 10 adresses en copie-cachée.");
|
||||
// alert(" Vous ne pouvez mettre plus de 10 adresses en copie-cachée.");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Vous ne pouvez mettre plus de 10 adresses en copie-cachée.");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (tab_email_pieces_jointes_result.length > 10) {
|
||||
alert("Vous ne pouvez pas envoyer plus de 5 pièces jointes à la fois.");
|
||||
if (tab_email_pieces_jointes_result.length > 5) {
|
||||
// alert("Vous ne pouvez pas envoyer plus de 5 pièces jointes à la fois.");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Vous ne pouvez pas envoyer plus de 5 pièces jointes à la fois.");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
|
@ -445,7 +414,7 @@ const Module_Email_Management = (props) => {
|
|||
form.append("email_corps", field_programme);
|
||||
form.append("related_collection", props.related_collection);
|
||||
form.append("email_sujet", email_sujet);
|
||||
|
||||
|
||||
// pièce jointe
|
||||
|
||||
|
||||
|
@ -454,7 +423,7 @@ const Module_Email_Management = (props) => {
|
|||
}
|
||||
|
||||
|
||||
var myurl = "";
|
||||
var myurl = "";
|
||||
|
||||
if (props.related_collection === "nointernalcontact") {
|
||||
myurl = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Email_From_Front_For_Unknown_Contact/";
|
||||
|
@ -475,8 +444,19 @@ const Module_Email_Management = (props) => {
|
|||
} else {
|
||||
form.append("include_tuteur", "0");
|
||||
}
|
||||
|
||||
|
||||
if (store_file_in_ent === true) {
|
||||
form.append("store_file_in_ent", "1");
|
||||
} else {
|
||||
form.append("store_file_in_ent", "0");
|
||||
}
|
||||
}
|
||||
|
||||
console.log(" ### form = ",form)
|
||||
|
||||
// return;
|
||||
|
||||
setLoading(true);
|
||||
|
||||
|
||||
|
@ -497,13 +477,20 @@ const Module_Email_Management = (props) => {
|
|||
if (props.Clean_Selected_Rows_For_Email)
|
||||
props.Clean_Selected_Rows_For_Email();
|
||||
|
||||
alert(res.data.message);
|
||||
//alert(res.data.message);
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(res.data.message);
|
||||
setalert_type("success");
|
||||
|
||||
}
|
||||
else {
|
||||
setSend_Front_Email_api("false");
|
||||
setSend_Front_Email_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) => {
|
||||
|
@ -558,15 +545,23 @@ const Module_Email_Management = (props) => {
|
|||
|
||||
|
||||
if (file_type !== "application/pdf") {
|
||||
alert("Le fichier n'est pas de type PDF");
|
||||
// alert("Le fichier n'est pas de type PDF");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier n'est pas de type PDF");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (file_size > 10000000) {
|
||||
alert("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
console.log("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
// alert("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
// console.log("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -618,6 +613,19 @@ const Module_Email_Management = (props) => {
|
|||
const [include_client, setinclude_client] = useState(false);
|
||||
const [include_tuteur, setinclude_tuteur] = useState(false);
|
||||
|
||||
const [store_file_in_ent, setstore_file_in_ent] = useState(false);
|
||||
|
||||
const handleChange_file_to_ent = (event) => {
|
||||
if (event.currentTarget.checked) {
|
||||
setstore_file_in_ent(true);
|
||||
}
|
||||
else {
|
||||
setstore_file_in_ent(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
const handleChange_include_tuteur = (event) => {
|
||||
if (event.currentTarget.checked) {
|
||||
setinclude_tuteur(true);
|
||||
|
@ -639,6 +647,22 @@ const Module_Email_Management = (props) => {
|
|||
|
||||
|
||||
|
||||
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_email_management">
|
||||
|
@ -646,6 +670,16 @@ const Module_Email_Management = (props) => {
|
|||
<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*/}
|
||||
|
||||
<Dialog
|
||||
|
||||
|
@ -660,7 +694,7 @@ const Module_Email_Management = (props) => {
|
|||
open={Dialog_1_open}
|
||||
>
|
||||
|
||||
<DialogTitle></DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> </DialogTitle>
|
||||
<DialogContent style={{ "width": "400px" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -891,8 +925,6 @@ const Module_Email_Management = (props) => {
|
|||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
|
||||
<div className="div_row" style={{ "padding": "5px" }}>
|
||||
|
||||
<div style={{ "fontSize": "12px" }}>
|
||||
|
@ -995,6 +1027,25 @@ const Module_Email_Management = (props) => {
|
|||
</div>
|
||||
</div>
|
||||
</div>}
|
||||
|
||||
{tab_email_pieces_jointes_result && tab_email_pieces_jointes_result.length > 0 &&
|
||||
<div style={{ position: 'flex', flexDirection: 'row', justifyContent: 'right', alignItems: 'right' }}>
|
||||
|
||||
<FormControlLabel
|
||||
control={
|
||||
<Checkbox
|
||||
size="small"
|
||||
checked={store_file_in_ent}
|
||||
onChange={handleChange_file_to_ent}
|
||||
name="send_file_to_ent"
|
||||
/>
|
||||
}
|
||||
label="Partage ENT"
|
||||
/>
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
</div>}
|
||||
|
||||
|
@ -1006,8 +1057,6 @@ const Module_Email_Management = (props) => {
|
|||
<Popup
|
||||
trigger={
|
||||
<Button onClick={(e) => {
|
||||
|
||||
|
||||
}} className="bton_enreg_dialog">Envoyer</Button>
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,496 @@
|
|||
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 (
|
||||
<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_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 (
|
||||
<nav>
|
||||
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||
|
||||
{expanded ? value : value.slice(0, 50)}
|
||||
{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" }}>
|
||||
|
||||
</div>
|
||||
}
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function Display_Colunm_text({ value }) {
|
||||
|
||||
return (
|
||||
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
|
||||
{value}
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
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) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'class_title', headerName: 'Titre Formation', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...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) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
{ field: 'date_debut', headerName: 'Début', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'date_fin', headerName: 'Fin', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...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 (
|
||||
|
||||
<Button
|
||||
|
||||
onClick={(event) => {
|
||||
//handleClick_edit_apprenant_From_Line(cellValues.row.id);
|
||||
}}
|
||||
>
|
||||
<FcViewDetails />
|
||||
|
||||
</Button>
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
field: "delete", headerName: 'Supprimer',
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
|
||||
<Popup
|
||||
trigger={<Button
|
||||
|
||||
>
|
||||
<CiTrash />
|
||||
|
||||
</Button>}
|
||||
modal
|
||||
nested
|
||||
position="center center"
|
||||
>
|
||||
{close => (
|
||||
<div>
|
||||
<button className="gest_close" onClick={close}>
|
||||
×
|
||||
</button>
|
||||
<div className="gest_header"> MySy Information </div>
|
||||
<div className="gest_content">
|
||||
{' '}
|
||||
|
||||
En confirmant cette opération, l'inscription sera <i><font color="red"> définitivement supprimée</font></i>. <br />
|
||||
|
||||
</div>
|
||||
<div className="gest_actions">
|
||||
<div style={{ "width": "45%", "float": "left" }}>
|
||||
<button className="gest_bton_popup" onClick={(event) => {
|
||||
//handleClick_delete_Apprenant(event, cellValues);
|
||||
|
||||
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>
|
||||
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
]
|
||||
|
||||
const [isLoading, setLoading] = useState();
|
||||
|
||||
const [p_filtre1, setp_filtre1] = useState("");
|
||||
const [p_filtre1_value, setp_filtre1_value] = useState("");
|
||||
|
||||
const [p_filtre2, setp_filtre2] = useState("");
|
||||
const [p_filtre2_value, setp_filtre2_value] = useState("");
|
||||
|
||||
const [p_filtre3, setp_filtre3] = useState("");
|
||||
const [p_filtre3_value, setp_filtre3_value] = useState("");
|
||||
|
||||
const [p_filtre4, setp_filtre4] = useState("");
|
||||
const [p_filtre4_value, setp_filtre4_value] = 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_ent_mes_documents">
|
||||
|
||||
{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' }}> Mes Documents </h3>
|
||||
<div>
|
||||
<div className="titre1"> Utilisez les filtres !</div>
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
<div className="div_row_gauche texte_area_filter" >
|
||||
<TextField
|
||||
name="filtre1"
|
||||
label="Choisir un champ"
|
||||
select
|
||||
sx={{ m: 1, width: '100%' }}
|
||||
value={p_filtre1}
|
||||
onChange={(e) => {
|
||||
setp_filtre1(e.target.value)
|
||||
}}
|
||||
>
|
||||
|
||||
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email </MenuItem>
|
||||
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom </MenuItem>
|
||||
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="div_row_droite texte_area_filter_value" >
|
||||
{p_filtre1 &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="filtre1_value"
|
||||
id="filtre1_value"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_filtre1_value}
|
||||
onChange={(e) => { setp_filtre1_value(e.target.value); }}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<AiFillCloseCircle
|
||||
style={{ 'cursor': "pointer", "color": "orangered" }}
|
||||
onClick={(e) => {
|
||||
setp_filtre1_value("");
|
||||
}} />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
|
||||
/>
|
||||
|
||||
}
|
||||
</div>
|
||||
{p_filtre1 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip01" data-tooltip-html="Ajouter une nouvelle ligne de filtre">
|
||||
<MdAddCircleOutline onClick={(e) => {
|
||||
setp_filtre2("1");
|
||||
}} />
|
||||
</a>
|
||||
</div>}
|
||||
{p_filtre1 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip02" data-tooltip-html="Supprimer cette ligne de filtre">
|
||||
<MdRemoveCircleOutline onClick={(e) => {
|
||||
setp_filtre1();
|
||||
setp_filtre1_value();
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{p_filtre2 &&
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
<div className="div_row_gauche texte_area_filter">
|
||||
<TextField
|
||||
name="filtre2"
|
||||
label="Choisir un champ"
|
||||
select
|
||||
sx={{ m: 1, width: '100%' }}
|
||||
options={filters}
|
||||
value={p_filtre2}
|
||||
onChange={(e) => {
|
||||
setp_filtre2(e.target.value)
|
||||
}}
|
||||
>
|
||||
|
||||
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email </MenuItem>
|
||||
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom </MenuItem>
|
||||
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
<div className="div_row_droite texte_area_filter" >
|
||||
{String(p_filtre2).length > 3 &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="filtre2_value"
|
||||
id="filtre2_value"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_filtre2_value}
|
||||
onChange={(e) => setp_filtre2_value(e.target.value)}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<AiFillCloseCircle
|
||||
style={{ 'cursor': "pointer", "color": "orangered" }}
|
||||
onClick={(e) => {
|
||||
setp_filtre2_value("");
|
||||
}} />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
|
||||
/>}
|
||||
</div>
|
||||
|
||||
|
||||
{String(p_filtre2).length > 3 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip04" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip04" data-tooltip-html="Supprimer cette ligne de filtre">
|
||||
<MdRemoveCircleOutline
|
||||
onClick={(e) => {
|
||||
setp_filtre2();
|
||||
setp_filtre2_value();
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
||||
|
||||
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
||||
<Button variant="contained" className="bton_enreg" onClick={"Get_All_Apprenant"}>Rechercher
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
|
||||
<Button variant="contained" className="bton_annule" onClick={"clean_all_filters"}>Annuler
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
<br />
|
||||
|
||||
</div >
|
||||
);
|
||||
}
|
||||
|
||||
export default Module_Ent_Mes_Documents;
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,499 @@
|
|||
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 (
|
||||
<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_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 (
|
||||
<nav>
|
||||
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||
|
||||
{expanded ? value : value.slice(0, 50)}
|
||||
{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" }}>
|
||||
|
||||
</div>
|
||||
}
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function Display_Colunm_text({ value }) {
|
||||
|
||||
return (
|
||||
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
|
||||
{value}
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
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) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'class_title', headerName: 'Titre Formation', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...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) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
{ field: 'date_debut', headerName: 'Début', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'date_fin', headerName: 'Fin', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...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 (
|
||||
|
||||
<Button
|
||||
|
||||
onClick={(event) => {
|
||||
|
||||
|
||||
//handleClick_edit_apprenant_From_Line(cellValues.row.id);
|
||||
}}
|
||||
>
|
||||
<FcViewDetails />
|
||||
|
||||
</Button>
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
field: "delete", headerName: 'Supprimer',
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
|
||||
<Popup
|
||||
trigger={<Button
|
||||
|
||||
>
|
||||
<CiTrash />
|
||||
|
||||
</Button>}
|
||||
modal
|
||||
nested
|
||||
position="center center"
|
||||
>
|
||||
{close => (
|
||||
<div>
|
||||
<button className="gest_close" onClick={close}>
|
||||
×
|
||||
</button>
|
||||
<div className="gest_header"> MySy Information </div>
|
||||
<div className="gest_content">
|
||||
{' '}
|
||||
|
||||
En confirmant cette opération, l'inscription sera <i><font color="red"> définitivement supprimée</font></i>. <br />
|
||||
|
||||
</div>
|
||||
<div className="gest_actions">
|
||||
<div style={{ "width": "45%", "float": "left" }}>
|
||||
<button className="gest_bton_popup" onClick={(event) => {
|
||||
//handleClick_delete_Apprenant(event, cellValues);
|
||||
|
||||
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>
|
||||
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
const [isLoading, setLoading] = useState();
|
||||
|
||||
const [p_filtre1, setp_filtre1] = useState("");
|
||||
const [p_filtre1_value, setp_filtre1_value] = useState("");
|
||||
|
||||
const [p_filtre2, setp_filtre2] = useState("");
|
||||
const [p_filtre2_value, setp_filtre2_value] = useState("");
|
||||
|
||||
const [p_filtre3, setp_filtre3] = useState("");
|
||||
const [p_filtre3_value, setp_filtre3_value] = useState("");
|
||||
|
||||
const [p_filtre4, setp_filtre4] = useState("");
|
||||
const [p_filtre4_value, setp_filtre4_value] = 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_ent_mes_notes">
|
||||
|
||||
{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' }}> Mes Notes </h3>
|
||||
<div>
|
||||
<div className="titre1"> Utilisez les filtres !</div>
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
<div className="div_row_gauche texte_area_filter" >
|
||||
<TextField
|
||||
name="filtre1"
|
||||
label="Choisir un champ"
|
||||
select
|
||||
sx={{ m: 1, width: '100%' }}
|
||||
value={p_filtre1}
|
||||
onChange={(e) => {
|
||||
setp_filtre1(e.target.value)
|
||||
}}
|
||||
>
|
||||
|
||||
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email </MenuItem>
|
||||
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom </MenuItem>
|
||||
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="div_row_droite texte_area_filter_value" >
|
||||
{p_filtre1 &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="filtre1_value"
|
||||
id="filtre1_value"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_filtre1_value}
|
||||
onChange={(e) => { setp_filtre1_value(e.target.value); }}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<AiFillCloseCircle
|
||||
style={{ 'cursor': "pointer", "color": "orangered" }}
|
||||
onClick={(e) => {
|
||||
setp_filtre1_value("");
|
||||
}} />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
|
||||
/>
|
||||
|
||||
}
|
||||
</div>
|
||||
{p_filtre1 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip01" data-tooltip-html="Ajouter une nouvelle ligne de filtre">
|
||||
<MdAddCircleOutline onClick={(e) => {
|
||||
setp_filtre2("1");
|
||||
}} />
|
||||
</a>
|
||||
</div>}
|
||||
{p_filtre1 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip02" data-tooltip-html="Supprimer cette ligne de filtre">
|
||||
<MdRemoveCircleOutline onClick={(e) => {
|
||||
setp_filtre1();
|
||||
setp_filtre1_value();
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{p_filtre2 &&
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
<div className="div_row_gauche texte_area_filter">
|
||||
<TextField
|
||||
name="filtre2"
|
||||
label="Choisir un champ"
|
||||
select
|
||||
sx={{ m: 1, width: '100%' }}
|
||||
options={filters}
|
||||
value={p_filtre2}
|
||||
onChange={(e) => {
|
||||
setp_filtre2(e.target.value)
|
||||
}}
|
||||
>
|
||||
|
||||
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email </MenuItem>
|
||||
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom </MenuItem>
|
||||
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
<div className="div_row_droite texte_area_filter" >
|
||||
{String(p_filtre2).length > 3 &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="filtre2_value"
|
||||
id="filtre2_value"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_filtre2_value}
|
||||
onChange={(e) => setp_filtre2_value(e.target.value)}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<AiFillCloseCircle
|
||||
style={{ 'cursor': "pointer", "color": "orangered" }}
|
||||
onClick={(e) => {
|
||||
setp_filtre2_value("");
|
||||
}} />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
|
||||
/>}
|
||||
</div>
|
||||
|
||||
|
||||
{String(p_filtre2).length > 3 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip04" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip04" data-tooltip-html="Supprimer cette ligne de filtre">
|
||||
<MdRemoveCircleOutline
|
||||
onClick={(e) => {
|
||||
setp_filtre2();
|
||||
setp_filtre2_value();
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
||||
|
||||
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
||||
<Button variant="contained" className="bton_enreg" onClick={"Get_All_Apprenant"}>Rechercher
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
|
||||
<Button variant="contained" className="bton_annule" onClick={"clean_all_filters"}>Annuler
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
<br />
|
||||
|
||||
</div >
|
||||
);
|
||||
}
|
||||
|
||||
export default Module_Ent_Mes_Notes;
|
|
@ -0,0 +1,496 @@
|
|||
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 (
|
||||
<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_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 (
|
||||
<nav>
|
||||
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||
|
||||
{expanded ? value : value.slice(0, 50)}
|
||||
{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" }}>
|
||||
|
||||
</div>
|
||||
}
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function Display_Colunm_text({ value }) {
|
||||
|
||||
return (
|
||||
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
|
||||
{value}
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
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) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'class_title', headerName: 'Titre Formation', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...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) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
{ field: 'date_debut', headerName: 'Début', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'date_fin', headerName: 'Fin', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...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 (
|
||||
|
||||
<Button
|
||||
|
||||
onClick={(event) => {
|
||||
//handleClick_edit_apprenant_From_Line(cellValues.row.id);
|
||||
}}
|
||||
>
|
||||
<FcViewDetails />
|
||||
|
||||
</Button>
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
field: "delete", headerName: 'Supprimer',
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
|
||||
<Popup
|
||||
trigger={<Button
|
||||
|
||||
>
|
||||
<CiTrash />
|
||||
|
||||
</Button>}
|
||||
modal
|
||||
nested
|
||||
position="center center"
|
||||
>
|
||||
{close => (
|
||||
<div>
|
||||
<button className="gest_close" onClick={close}>
|
||||
×
|
||||
</button>
|
||||
<div className="gest_header"> MySy Information </div>
|
||||
<div className="gest_content">
|
||||
{' '}
|
||||
|
||||
En confirmant cette opération, l'inscription sera <i><font color="red"> définitivement supprimée</font></i>. <br />
|
||||
|
||||
</div>
|
||||
<div className="gest_actions">
|
||||
<div style={{ "width": "45%", "float": "left" }}>
|
||||
<button className="gest_bton_popup" onClick={(event) => {
|
||||
//handleClick_delete_Apprenant(event, cellValues);
|
||||
|
||||
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>
|
||||
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
]
|
||||
|
||||
const [isLoading, setLoading] = useState();
|
||||
|
||||
const [p_filtre1, setp_filtre1] = useState("");
|
||||
const [p_filtre1_value, setp_filtre1_value] = useState("");
|
||||
|
||||
const [p_filtre2, setp_filtre2] = useState("");
|
||||
const [p_filtre2_value, setp_filtre2_value] = useState("");
|
||||
|
||||
const [p_filtre3, setp_filtre3] = useState("");
|
||||
const [p_filtre3_value, setp_filtre3_value] = useState("");
|
||||
|
||||
const [p_filtre4, setp_filtre4] = useState("");
|
||||
const [p_filtre4_value, setp_filtre4_value] = 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_ent_mon_planning">
|
||||
|
||||
{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' }}> Mes apprenants </h3>
|
||||
<div>
|
||||
<div className="titre1"> Utilisez les filtres !</div>
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
<div className="div_row_gauche texte_area_filter" >
|
||||
<TextField
|
||||
name="filtre1"
|
||||
label="Choisir un champ"
|
||||
select
|
||||
sx={{ m: 1, width: '100%' }}
|
||||
value={p_filtre1}
|
||||
onChange={(e) => {
|
||||
setp_filtre1(e.target.value)
|
||||
}}
|
||||
>
|
||||
|
||||
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email </MenuItem>
|
||||
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom </MenuItem>
|
||||
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="div_row_droite texte_area_filter_value" >
|
||||
{p_filtre1 &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="filtre1_value"
|
||||
id="filtre1_value"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_filtre1_value}
|
||||
onChange={(e) => { setp_filtre1_value(e.target.value); }}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<AiFillCloseCircle
|
||||
style={{ 'cursor': "pointer", "color": "orangered" }}
|
||||
onClick={(e) => {
|
||||
setp_filtre1_value("");
|
||||
}} />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
|
||||
/>
|
||||
|
||||
}
|
||||
</div>
|
||||
{p_filtre1 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip01" data-tooltip-html="Ajouter une nouvelle ligne de filtre">
|
||||
<MdAddCircleOutline onClick={(e) => {
|
||||
setp_filtre2("1");
|
||||
}} />
|
||||
</a>
|
||||
</div>}
|
||||
{p_filtre1 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip02" data-tooltip-html="Supprimer cette ligne de filtre">
|
||||
<MdRemoveCircleOutline onClick={(e) => {
|
||||
setp_filtre1();
|
||||
setp_filtre1_value();
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{p_filtre2 &&
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
<div className="div_row_gauche texte_area_filter">
|
||||
<TextField
|
||||
name="filtre2"
|
||||
label="Choisir un champ"
|
||||
select
|
||||
sx={{ m: 1, width: '100%' }}
|
||||
options={filters}
|
||||
value={p_filtre2}
|
||||
onChange={(e) => {
|
||||
setp_filtre2(e.target.value)
|
||||
}}
|
||||
>
|
||||
|
||||
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Email </MenuItem>
|
||||
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom </MenuItem>
|
||||
<MenuItem value="prenom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Prénom </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
<div className="div_row_droite texte_area_filter" >
|
||||
{String(p_filtre2).length > 3 &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="filtre2_value"
|
||||
id="filtre2_value"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_filtre2_value}
|
||||
onChange={(e) => setp_filtre2_value(e.target.value)}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<AiFillCloseCircle
|
||||
style={{ 'cursor': "pointer", "color": "orangered" }}
|
||||
onClick={(e) => {
|
||||
setp_filtre2_value("");
|
||||
}} />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
|
||||
/>}
|
||||
</div>
|
||||
|
||||
|
||||
{String(p_filtre2).length > 3 && <div className='filter_bton_add'>
|
||||
<Tooltip className="tooltip_css" id="my-tooltip04" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip04" data-tooltip-html="Supprimer cette ligne de filtre">
|
||||
<MdRemoveCircleOutline
|
||||
onClick={(e) => {
|
||||
setp_filtre2();
|
||||
setp_filtre2_value();
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
||||
|
||||
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
||||
<Button variant="contained" className="bton_enreg" onClick={"Get_All_Apprenant"}>Rechercher
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
|
||||
<Button variant="contained" className="bton_annule" onClick={"clean_all_filters"}>Annuler
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
<br />
|
||||
|
||||
</div >
|
||||
);
|
||||
}
|
||||
|
||||
export default Module_Ent_Mon_Planning;
|
|
@ -1,21 +1,21 @@
|
|||
|
||||
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 'react-tooltip/dist/react-tooltip.css'
|
||||
import fileDownload from 'js-file-download';
|
||||
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 { FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
||||
|
||||
import "react-datepicker/dist/react-datepicker.css";
|
||||
import Box from '@mui/material/Box';
|
||||
import Dialog from '@mui/material/Dialog';
|
||||
|
@ -23,7 +23,7 @@ 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 Autocomplete from '@mui/material/Autocomplete';
|
||||
import { gridClasses } from '@mui/x-data-grid';
|
||||
|
@ -113,8 +113,8 @@ const Module_Evaluation_Positionnement = (props) => {
|
|||
{ field: 'id', headerName: 'id', hide: true },
|
||||
{ field: '_id', headerName: '_id', hide: true },
|
||||
{ field: 'form_code', headerName: 'Form. Code', hide: true, minwidth: 200, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'email', headerName: 'email', minwidth: 300, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'email', headerName: 'email', minwidth: 300, flex: 1, hideable: false, resizable: true,editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'prenom', headerName: 'prenom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{
|
||||
field: 'status', headerName: 'Statut', width: 100, editable: false, flex: true,
|
||||
|
|
|
@ -145,7 +145,7 @@ const Module_Historique_Action = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -1479,7 +1479,7 @@ const Module_Session_Evaluation = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -1559,7 +1559,7 @@ const Module_Session_Evaluation = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -1660,7 +1660,7 @@ const Module_Session_Evaluation = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -1076,7 +1076,7 @@ const Module_Session_Notes_Classement = (props) => {
|
|||
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
|
||||
form.append("archive", "0");
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
|
||||
|
||||
|
||||
|
@ -2509,7 +2509,7 @@ const Module_Session_Notes_Classement = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle> Délibération du Jury</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Délibération du Jury</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -7,28 +7,19 @@ import axios from "axios";
|
|||
import { useParams } from 'react-router-dom';
|
||||
import { getCookie, setCookie } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
import CheckOut from "./CheckOut";
|
||||
|
||||
import {
|
||||
DataGrid, frFR, GridToolbar,
|
||||
|
||||
} from '@mui/x-data-grid';
|
||||
import * as XLSX from 'xlsx';
|
||||
import { Fab } from "@material-ui/core";
|
||||
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
|
||||
|
||||
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 { 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'
|
||||
|
@ -36,18 +27,10 @@ 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 Autocomplete from '@mui/material/Autocomplete';
|
||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
|
||||
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 Link from '@mui/material/Link';
|
||||
import { PiDotsThree } from "react-icons/pi";
|
||||
import { gridClasses } from '@mui/x-data-grid';
|
||||
|
@ -149,12 +132,12 @@ const Modules_Mes_Documents = (props) => {
|
|||
{ field: 'file_extention', hide: true, editable: false },
|
||||
{ field: 'file_name', headerName: 'tech_file_name', hide: true, disableExport: true },
|
||||
{
|
||||
field: 'created_date', headerName: 'Date Création', Width: 100, flex: 1, hide: false, editable: false,
|
||||
field: 'creation_date', headerName: 'Date Création', Width: 100, flex: 1, hide: false, editable: false,
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
|
||||
<nav style={{ width: '100%', 'textAlign': 'left' }}>
|
||||
{String(cellValues.row.created_date).substring(0, 10)}
|
||||
{String(cellValues.row.creation_date).substring(0, 10)}
|
||||
</nav>)
|
||||
},
|
||||
|
||||
|
@ -353,7 +336,7 @@ const Modules_Mes_Documents = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -1382,7 +1365,7 @@ const Modules_Mes_Documents = (props) => {
|
|||
file_extention: JSON.parse(item).file_extention,
|
||||
client_raison_sociale: JSON.parse(item).client_raison_sociale,
|
||||
client_nom: JSON.parse(item).client_nom,
|
||||
created_date: JSON.parse(item).created_date,
|
||||
creation_date: JSON.parse(item).creation_date,
|
||||
}
|
||||
))}
|
||||
|
||||
|
|
|
@ -1,65 +1,18 @@
|
|||
import React, { useRef, useState, useMemo, useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import axios from "axios";
|
||||
import Formation_Partner_Catalog from "./Formation_Partner_Catalog";
|
||||
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
||||
import { BsFillXCircleFill } from "react-icons/bs";
|
||||
import { IoAppsSharp, IoListSharp } from "react-icons/io5";
|
||||
import Formation_Grid_2Col from "./Formation_Grid_2Col";
|
||||
import Pagination from "./TestPagination";
|
||||
import data from "./data/mock-data.json";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { getCookie, removeCookie } from 'react-use-cookie';
|
||||
import { Helmet } from "react-helmet";
|
||||
|
||||
import AideRecherche from "./AideRecherche"
|
||||
import { useParams } from 'react-router-dom'
|
||||
import Fotter_Catalog_Pub from "./Fotter_Catalog_Pub";
|
||||
import Footer from "./Fotter";
|
||||
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
|
||||
import Button from '@mui/material/Button';
|
||||
import MenuItem from "@material-ui/core/MenuItem";
|
||||
import Menu from "@material-ui/core/Menu";
|
||||
import Header from "./Header";
|
||||
|
||||
import connect_white from "../mysy_img/connect_white_v2.png";
|
||||
import connect_green from "../mysy_img/connect_green.png";
|
||||
import { getCookie, } from 'react-use-cookie';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import { useCookies } from "react-cookie";
|
||||
import InputRange from 'react-input-range';
|
||||
import 'react-input-range/lib/css/index.css';
|
||||
import tick_ko from "../mysy_img/tick_KO.png";
|
||||
|
||||
|
||||
import { SelectChangeEvent } from '@mui/material/Select';
|
||||
import Chip from '@mui/material/Chip';
|
||||
import Select, { StylesConfig } from 'react-select';
|
||||
|
||||
import img_header from "../mysy_img2/img_header.png"
|
||||
|
||||
import mysy_logo2 from "../mysy_img2/Logo_MySy.png"
|
||||
|
||||
import { AiTwotoneFolder } from "react-icons/ai";
|
||||
import serv_img_market_digi from "../mysy_img/market_digi.jpg";
|
||||
import serv_img_gestion_admin from "../mysy_img/gestion_admin_2.jpg";
|
||||
import serv_img_publication from "../mysy_img/publication.jpg";
|
||||
|
||||
import mysy_search from "../mysy_img2/mysy_search.jpg";
|
||||
import mysy_lms from "../mysy_img2/mysy_e_learning.jpg";
|
||||
import mysy_consulting from "../mysy_img2/mysy_consulting.jpg";
|
||||
import mysy_datacenter from "../mysy_img2/mysy_datacenter.png";
|
||||
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 Module_Connexion_Intranet_Client from "./Module_Connexion_Intranet_Client";
|
||||
|
||||
import Fotter_Intranet_Client_Pub from "./Fotter_Intranet_Client_Pub"
|
||||
|
||||
import { CiCircleRemove, CiCircleMinus } from "react-icons/ci";
|
||||
import Fotter_v3 from "./Fotter_v3";
|
||||
|
||||
let PageSize = 10;
|
||||
const Mon_Intranet_Public = (props) => {
|
||||
|
@ -119,8 +72,6 @@ const Mon_Intranet_Public = (props) => {
|
|||
const inputEl = useRef(null);
|
||||
|
||||
|
||||
|
||||
|
||||
const url = process.env.REACT_APP_API_URL + "myclass/api/add_user_account/";
|
||||
const {
|
||||
register,
|
||||
|
@ -3060,7 +3011,7 @@ const Mon_Intranet_Public = (props) => {
|
|||
{New_Get_Subdomain_Partner_Data_result && New_Get_Subdomain_Partner_Data_result.length > 0
|
||||
&& New_Get_Subdomain_Partner_Data_result[0].catalog_pub_indicateur_2_txt &&
|
||||
<div style={{
|
||||
textAlign: "left",
|
||||
textAlign: "left",
|
||||
width: '100%',
|
||||
fontSize: `${New_Get_Subdomain_Partner_Data_result[0].catalog_pub_indicateur_2_taille}` + "px",
|
||||
color: `${New_Get_Subdomain_Partner_Data_result[0].catalog_pub_indicateur_2_color}`,
|
||||
|
|
|
@ -291,7 +291,7 @@ const Mon_Tableau_De_Bord = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
|
|
@ -233,7 +233,7 @@ const New_ButtonHilight_2025 = () => {
|
|||
}
|
||||
history.push("/intranet");
|
||||
}
|
||||
|
||||
|
||||
|
||||
function user_logout() {
|
||||
confirmAlert({
|
||||
|
|
|
@ -0,0 +1,493 @@
|
|||
|
||||
import React, { useState, useEffect } from 'react';
|
||||
//import { slide as Menu } from "react-burger-menu";
|
||||
import { NavLink } from "react-router-dom";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
|
||||
import Button from '@mui/material/Button';
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import { useCookies } from "react-cookie";
|
||||
import { Helmet } from "react-helmet";
|
||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
||||
import connect_white from "../mysy_img/connect_white_v2.png";
|
||||
import MenuItem from "@material-ui/core/MenuItem";
|
||||
import Menu from "@material-ui/core/Menu";
|
||||
import connect_green from "../mysy_img/connect_green.png";
|
||||
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 { format } from 'date-fns'
|
||||
import moment from "moment";
|
||||
import SendIcon from '@mui/icons-material/Send';
|
||||
import axios from "axios";
|
||||
import mysy_logo2 from "../mysy_img2/Logo_MySy.png"
|
||||
|
||||
import New_C_Header_ENT_Student_2025_V2 from "./header_automatic_files/Header_ENT_Student";
|
||||
|
||||
const New_ButtonHilight_ENT_Student_2025 = () => {
|
||||
const history = useHistory();
|
||||
const [show, setShow] = useState(true);
|
||||
const [lastScrollY, setLastScrollY] = useState(0);
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
|
||||
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart']);
|
||||
|
||||
const [country_code, setcountry_code] = useState("FR");
|
||||
const [country_name, setcountry_name] = useState("France");
|
||||
const [city, setcity] = useState("Paris");
|
||||
const [postal, setpostal] = useState("75001");
|
||||
const [latitude, setlatitude] = useState("48.861000061035156");
|
||||
const [longitude, setlongitude] = useState("2.3380000591278076");
|
||||
const [IPv4, setIPv4] = useState("172.71.122.128");
|
||||
const [state, setstate] = useState("France");
|
||||
const [userIp, setuserIp] = useState("172.71.122.128");
|
||||
|
||||
|
||||
const controlNavbar = () => {
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
if (window.scrollY > lastScrollY && window.scrollY > 100) {
|
||||
setShow(false);
|
||||
} else if (window.scrollY < lastScrollY && window.scrollY < 100) { // if scroll up show the navbar
|
||||
setShow(true);
|
||||
}
|
||||
|
||||
// remember current page location to use in the next move
|
||||
setLastScrollY(window.scrollY);
|
||||
}
|
||||
};
|
||||
|
||||
const [userconnected, setuserconnected] = useState("0");
|
||||
const [someoneconnected, setsomeoneconnected] = useState("0");
|
||||
const [partnerconnected, setpartnerconnected] = useState("0");
|
||||
var stored_user = getCookie('tokenmysych');
|
||||
var stored_part = getCookie('tokenmysypart');
|
||||
|
||||
function whosisconnected() {
|
||||
|
||||
stored_user = getCookie('tokenmysych');
|
||||
stored_part = getCookie('tokenmysypart');
|
||||
|
||||
|
||||
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
|
||||
setpartnerconnected("0");
|
||||
setsomeoneconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
// alert(" partner connected OK");
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
window.addEventListener('scroll', controlNavbar);
|
||||
|
||||
// cleanup function
|
||||
return () => {
|
||||
window.removeEventListener('scroll', controlNavbar);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}, [lastScrollY]);
|
||||
|
||||
|
||||
const [PartnerMenu, setPartnerMenu] = React.useState(null);
|
||||
const [AccountMenu, setAccountMenu] = React.useState(null);
|
||||
const [ProduitMenu, setproduitMenu] = React.useState(null);
|
||||
const [AvisMenu, setavisMenu] = React.useState(null);
|
||||
|
||||
|
||||
|
||||
const PartnerMenu_Close = () => {
|
||||
setPartnerMenu(null);
|
||||
};
|
||||
|
||||
const AccountMenu_Close = () => {
|
||||
setAccountMenu(null);
|
||||
};
|
||||
|
||||
|
||||
const ProduitMenu_Close = () => {
|
||||
setproduitMenu(null);
|
||||
};
|
||||
|
||||
const handlePartnerMenu = (event) => {
|
||||
setPartnerMenu(event.currentTarget);
|
||||
};
|
||||
|
||||
const handleAccountMenu = (event) => {
|
||||
setAccountMenu(event.currentTarget);
|
||||
};
|
||||
|
||||
|
||||
const handleProduitMenu = (event) => {
|
||||
setproduitMenu(event.currentTarget);
|
||||
};
|
||||
|
||||
const handleQuisommesNousMenu = (event) => {
|
||||
history.push("/qui-sommes-nous")
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
const handleClose_Account = () => {
|
||||
alert(" my account");
|
||||
setAccountMenu(null);
|
||||
};
|
||||
|
||||
const handleAccountConnexion = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/Connexion")
|
||||
};
|
||||
|
||||
const handleMyAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/mysy-user-account")
|
||||
};
|
||||
|
||||
|
||||
|
||||
const handleAccountCreation = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/create_account")
|
||||
};
|
||||
|
||||
const handlePartnerConnexion = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/PartnerLogin")
|
||||
};
|
||||
|
||||
|
||||
const handleProduitService = () => {
|
||||
setproduitMenu(null);
|
||||
history.push("/tarifs_produits_services/")
|
||||
};
|
||||
|
||||
const handleAvis = () => {
|
||||
setavisMenu(null);
|
||||
history.push("/Recherche-Article-formation")
|
||||
};
|
||||
|
||||
|
||||
function user_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
if (typeof (stored_user) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysych", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
removeCookie("tokenmysych", { path: '/' });
|
||||
|
||||
}
|
||||
history.push("/ent_student");
|
||||
}
|
||||
|
||||
|
||||
function user_logout() {
|
||||
confirmAlert({
|
||||
title: '',
|
||||
message: 'Confirmez la deconnexion (user)',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => user_logout_confirmation()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function part_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
|
||||
if (typeof (stored_part) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysypart", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
|
||||
setpartCookie("mysy_session_display_view", "", { path: '/' });
|
||||
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
|
||||
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
|
||||
|
||||
removeCookie("tokenmysypart", { path: '/' });
|
||||
removeCookie("mysy_session_display_view", { path: '/' });
|
||||
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
|
||||
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
setsomeoneconnected("0");
|
||||
setDialog_1_open(false);
|
||||
history.push("/recherche-formation");
|
||||
}
|
||||
|
||||
function part_logout() {
|
||||
confirmAlert({
|
||||
title: '',
|
||||
message: 'Confirmez la deconnexion (pro)',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => part_logout_confirmation()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
function handleAccountLogout() {
|
||||
|
||||
if (String(userconnected) === String("1")) {
|
||||
user_logout();
|
||||
}
|
||||
else if (String(partnerconnected) === String("1")) {
|
||||
part_logout();
|
||||
}
|
||||
}
|
||||
|
||||
const [CategorieMenu, setCategorieMenu] = React.useState(null);
|
||||
const CategorieMenu_Close = () => {
|
||||
setCategorieMenu(null);
|
||||
};
|
||||
|
||||
const handleCategorieMenu = (event) => {
|
||||
setCategorieMenu(event.currentTarget);
|
||||
};
|
||||
|
||||
|
||||
const handleMarketplace = (event) => {
|
||||
history.push("/recherche-formation")
|
||||
};
|
||||
|
||||
const handleClassCategorie = (e) => {
|
||||
setCategorieMenu(null);
|
||||
const pieces = window.location.href.split("/")
|
||||
const last = pieces[pieces.length - 1]
|
||||
|
||||
|
||||
var mymetier = "";
|
||||
mymetier = e.target.id
|
||||
if (last === mymetier) {
|
||||
//console.log(" ## RELAOD");
|
||||
window.location.reload(true);
|
||||
} else {
|
||||
history.push("/Recherche_new_v2/0/" + mymetier);
|
||||
}
|
||||
};
|
||||
|
||||
function publiecatalogue() {
|
||||
history.push("/Partner", { mysy_arg: 'partner' });
|
||||
}
|
||||
|
||||
|
||||
function resserver_demo() {
|
||||
history.push("/Partner", { mysy_arg: 'partner' });
|
||||
}
|
||||
|
||||
|
||||
const handleBlogMenu = (event) => {
|
||||
history.push("/Recherche-Article-formation")
|
||||
};
|
||||
|
||||
|
||||
|
||||
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);
|
||||
};
|
||||
|
||||
|
||||
const [Dialog_contact_message, setDialog_contact_message] = React.useState(false);
|
||||
const [Dialog_contact_open, setDialog_contact_open] = React.useState(false);
|
||||
function Dialog_contact_handle_change_participant_session(message) {
|
||||
setDialog_contact_message(message);
|
||||
setDialog_contact_open(true);
|
||||
}
|
||||
|
||||
const Dialog_contact_handleClose = () => {
|
||||
|
||||
};
|
||||
|
||||
const Dialog_contact_handleClose_buton = () => {
|
||||
|
||||
setDialog_contact_open(false);
|
||||
clear_contact_message_fields();
|
||||
|
||||
};
|
||||
|
||||
function clear_contact_message_fields() {
|
||||
setcontact_message_nom_prenom("");
|
||||
setcontact_message_email("");
|
||||
setcontact_message_phone("");
|
||||
setcontact_message_sujet("");
|
||||
setcontact_message_sujet("");
|
||||
setcontact_message_message("");
|
||||
}
|
||||
|
||||
const [contact_message_nom_prenom, setcontact_message_nom_prenom] = React.useState("");
|
||||
const [contact_message_email, setcontact_message_email] = React.useState("");
|
||||
const [contact_message_phone, setcontact_message_phone] = React.useState("");
|
||||
const [contact_message_sujet, setcontact_message_sujet] = React.useState("");
|
||||
const [contact_message_message, setcontact_message_message] = React.useState("");
|
||||
|
||||
function Send_Contact_Message(e) {
|
||||
|
||||
var sender_mail = "";
|
||||
var sender_tel = "";
|
||||
var token = "";
|
||||
|
||||
////console.log("contacter " + sender_mail + " - " + sender_tel + " - ")
|
||||
|
||||
var mysubject = contact_message_sujet;
|
||||
var mymessage = contact_message_message;
|
||||
var mysender_name = contact_message_nom_prenom;
|
||||
var mysender_email = contact_message_email;
|
||||
|
||||
|
||||
//alert("contacter "+mysender_email+" - "+mymessage+" - url = "
|
||||
//+process.env.REACT_APP_API_URL+" - user_ip ="+IPv4+" - "+latitude);
|
||||
|
||||
var re = /\S+@\S+\.\S+/;
|
||||
if (re.test(mysender_email) == false) {
|
||||
alert("l'email est incorrecte");
|
||||
return;
|
||||
}
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/add_user_message/";
|
||||
var form = new FormData();
|
||||
form.append("type", "email");
|
||||
form.append("recever_mail", "contact@mysy-training.com");
|
||||
form.append("recever_tel", "+33769203945");
|
||||
form.append("sender_mail", mysender_email);
|
||||
form.append("sender_tel", sender_tel);
|
||||
form.append("object", mysubject);
|
||||
form.append("message", mymessage);
|
||||
form.append("sender_name", mysender_name);
|
||||
form.append("token", "");
|
||||
form.append("user_ip", IPv4);
|
||||
form.append("user_country_code", country_code);
|
||||
form.append("user_country_name", country_name);
|
||||
form.append("user_city", city);
|
||||
form.append("user_postal", postal);
|
||||
form.append("user_latitude", latitude);
|
||||
form.append("user_longitude", longitude);
|
||||
form.append("user_state", state);
|
||||
|
||||
|
||||
// console.log("## form = ", form);
|
||||
|
||||
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
|
||||
if (String(res.data.status) === String("false")) {
|
||||
|
||||
alert(res.data.message);
|
||||
}
|
||||
|
||||
else if (String(res.data.status) === String("true")) {
|
||||
Dialog_contact_handleClose_buton();
|
||||
alert(res.data.message);
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.warn('contact-nous Not good man :( mysearchtext = ');
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<div className='new_buttonhilight_2025'>
|
||||
|
||||
<div className={`mini_entete ${show && 'hidden'}`} >
|
||||
<New_C_Header_ENT_Student_2025_V2 />
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
export default New_ButtonHilight_ENT_Student_2025;
|
|
@ -726,7 +726,7 @@ const New_Article_2025 = (props) => {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
<DialogTitle>Votre article </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Votre article </DialogTitle>
|
||||
<DialogContent className="DialogContent_width DialogContent_width_session_800px" >
|
||||
|
||||
|
||||
|
|
|
@ -109,11 +109,11 @@ const New_C_Formation_2025 = (props) => {
|
|||
setisclassimage(res.data.message.img);
|
||||
var ch_img = "data:image/png;base64," + res.data.message.img;
|
||||
setclass_img_stored_in_bdd(ch_img);
|
||||
// console.log(" getClassImage_no_token: setclass_img_stored_in_bdd = ", setclass_img_stored_in_bdd);
|
||||
// console.log(" getClassImage_no_token: setclass_img_stored_in_bdd = ", setclass_img_stored_in_bdd);
|
||||
|
||||
}
|
||||
else {
|
||||
// console.log(" In Erreur res.data.status = " + res.data.status);
|
||||
// console.log(" In Erreur res.data.status = " + res.data.status);
|
||||
//console.log(" In Erreur res.data.message = " + res.data.message);
|
||||
setisclassimage("False");
|
||||
setuserimgclassprofil();
|
||||
|
@ -140,7 +140,7 @@ const New_C_Formation_2025 = (props) => {
|
|||
useEffect(() => {
|
||||
setmyfilter(props.myfil);
|
||||
|
||||
// console.log(" #### useEffect props.formation = ", props.formation);
|
||||
// console.log(" #### useEffect props.formation = ", props.formation);
|
||||
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
|
@ -354,7 +354,7 @@ const New_C_Formation_2025 = (props) => {
|
|||
|
||||
{class_img_stored_in_bdd && String(class_img_stored_in_bdd).length > 50 &&
|
||||
<img src={class_img_stored_in_bdd} alt="Formation" style={styles.image} />
|
||||
}
|
||||
}
|
||||
|
||||
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) &&
|
||||
(!props.formation.img_url || String(props.formation.img_url).length <= 10) &&
|
||||
|
@ -415,7 +415,7 @@ const New_C_Formation_2025 = (props) => {
|
|||
</div>}
|
||||
|
||||
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) === "1" &&
|
||||
<div>
|
||||
<div>
|
||||
<img src={props.formation.img_url} alt="autre" style={styles.image} />
|
||||
{/*props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par : <br />
|
||||
{String(props.formation.institut_formation)} </div>*/}
|
||||
|
@ -432,7 +432,19 @@ const New_C_Formation_2025 = (props) => {
|
|||
</div>
|
||||
|
||||
<h3 className="formation_titre">{String(parse(String(props.formation.title).replace(/(<([^>]+)>)/ig, ''))).substring(0, 50)}</h3>
|
||||
<p className="formation_prix">{props.formation.price} € HT </p>
|
||||
{props.formation.discounted_price && props.formation.business_prices && <p className="formation_prix">{props.formation.discounted_price} € HT </p>}
|
||||
|
||||
{props.formation.business_prices && props.formation.business_prices.length <= 0
|
||||
&& <p className="formation_prix">{props.formation.price} € HT </p>}
|
||||
|
||||
{props.formation.business_prices && props.formation.business_prices.length > 0 &&
|
||||
<p style={{ width: '100%', float: 'left' }}>
|
||||
|
||||
<p className="formation_prix" style={{ width: '100%', float: 'left' }}>{props.formation.business_prices[0].discounted_price}€ HT
|
||||
<font className='training_price_barre' style={{ fontSize:'14px' }}> {props.formation.price} € HT </font>
|
||||
<font className='discount_block' style={{ fontSize:'14px' }}> ({props.formation.business_prices[0].discount} %) </font></p>
|
||||
</p>}
|
||||
|
||||
<p className="formation_description"> {String(parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))).substring(0, 80)}...</p>
|
||||
</div>
|
||||
|
||||
|
@ -619,7 +631,7 @@ const New_C_Formation_2025 = (props) => {
|
|||
</nav>
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div className="div_row row_formation_desc">
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
import React from 'react';
|
||||
import { getCookie, } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import New_Sidebar_ENT_Student_2025 from "./New_Sidebar_ENT_Student_2025";
|
||||
import { useCookies } from "react-cookie";
|
||||
import New_ButtonHilight_ENT_Student_2025 from "./New_ButtonHilight_ENT_Student_2025";
|
||||
|
||||
const New_Navigation_ENT_Student_2025 = () => {
|
||||
|
||||
const history = useHistory();
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
|
||||
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
|
||||
|
||||
return (
|
||||
<div className={"navigation"}>
|
||||
|
||||
<div className="test_page">
|
||||
<div className="bm-burger-button_label">
|
||||
</div>
|
||||
<New_Sidebar_ENT_Student_2025 />
|
||||
<New_ButtonHilight_ENT_Student_2025 />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default New_Navigation_ENT_Student_2025;
|
|
@ -10,7 +10,7 @@ import { confirmAlert } from 'react-confirm-alert'; // Import
|
|||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import { useCookies } from "react-cookie";
|
||||
|
||||
|
||||
|
||||
|
||||
const New_SideBar_2025 = () => {
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
|
|
|
@ -0,0 +1,336 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { slide as Menu } from "react-burger-menu";
|
||||
import { NavLink } from "react-router-dom";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
|
||||
import Button from '@mui/material/Button';
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import { useCookies } from "react-cookie";
|
||||
|
||||
|
||||
|
||||
const New_Sidebar_Client_Intranet_2025 = () => {
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
const history = useHistory();
|
||||
|
||||
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
|
||||
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
|
||||
// Gestion des Cookies
|
||||
const stored_partner = cookie_part.tokenmysypart;
|
||||
const stored_user = cookie.tokenmysych;
|
||||
|
||||
const environnment = process.env.REACT_APP_ENV
|
||||
|
||||
|
||||
|
||||
function logout_confirmation() {
|
||||
|
||||
// si c'est une connexion partner qui est active
|
||||
if (typeof (stored_partner) !== "undefined") {
|
||||
//alert(" c'est une connexion PARTTT qui est active");
|
||||
removeCookie_part('tokenmysypart', { path: '/' });
|
||||
history.push("/Connexion");
|
||||
}
|
||||
|
||||
// si c'est une connexion user qui est active
|
||||
if (typeof (stored_user) !== "undefined") {
|
||||
//alert(" c'est une connexion USERR qui est active");
|
||||
removeCookie_part('tokenmysych', { path: '/' });
|
||||
history.push("/intranet");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function logout() {
|
||||
confirmAlert({
|
||||
title: 'Deconnexion ?',
|
||||
message: 'Confirmez la deconnexion',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => logout_confirmation()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
|
||||
}
|
||||
],
|
||||
closeOnEscape: false,
|
||||
closeOnClickOutside: false,
|
||||
keyCodeForClose: [8, 32],
|
||||
willUnmount: () => { },
|
||||
afterClose: () => { },
|
||||
onClickOutside: () => { },
|
||||
onKeypress: () => { },
|
||||
onKeypressEscape: () => { },
|
||||
overlayClassName: "overlay-custom-class-name"
|
||||
});
|
||||
}
|
||||
|
||||
const [someoneconnected, setsomeoneconnected] = useState("0");
|
||||
const [partnerconnected, setpartnerconnected] = useState("0");
|
||||
const [userconnected, setuserconnected] = useState("0");
|
||||
|
||||
const stored_part = getCookie('tokenmysypart');
|
||||
|
||||
|
||||
function whosisconnected() {
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
}, []);
|
||||
|
||||
return (
|
||||
// Pass on our props
|
||||
<div>
|
||||
|
||||
{String(environnment) === "PROD" &&
|
||||
<Menu className="ch_burger_menu">
|
||||
|
||||
<NavLink exact to={"/"} activeClassName={"nav-active"}>
|
||||
A propos
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
|
||||
Fonctionnalites
|
||||
</NavLink>
|
||||
|
||||
|
||||
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
|
||||
Tarifs
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
|
||||
Contact
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
|
||||
Blog
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
|
||||
Marketplace
|
||||
</NavLink>
|
||||
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
|
||||
Connexion
|
||||
</NavLink>}
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
|
||||
Inscription
|
||||
</NavLink>}
|
||||
|
||||
|
||||
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
|
||||
Mon compte
|
||||
</NavLink>}
|
||||
|
||||
|
||||
|
||||
|
||||
{typeof (stored_partner) !== "undefined" &&
|
||||
/* Connexion partner active */
|
||||
<Button className='bton_annule' onClick={logout} style={{
|
||||
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
|
||||
padding: "5px"
|
||||
}}>
|
||||
<i> Deconnexion </i>
|
||||
</Button>
|
||||
|
||||
|
||||
}
|
||||
|
||||
{typeof (stored_user) != "undefined" &&
|
||||
/* Connexion utilisateur active */
|
||||
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
|
||||
Deconnexion
|
||||
</Button>
|
||||
}
|
||||
</Menu>}
|
||||
|
||||
{(String(environnment) === "REC" || String(environnment) === "DEM") &&
|
||||
<Menu className="ch_burger_menu">
|
||||
|
||||
<NavLink exact to={"/"} activeClassName={"nav-active"}>
|
||||
A propos
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
|
||||
Fonctionnalites
|
||||
</NavLink>
|
||||
|
||||
|
||||
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
|
||||
Tarifs
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
|
||||
Contact
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
|
||||
Blog
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
|
||||
Marketplace
|
||||
</NavLink>
|
||||
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
|
||||
Connexion
|
||||
</NavLink>}
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
|
||||
Inscription
|
||||
</NavLink>}
|
||||
|
||||
|
||||
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
|
||||
Mon compte
|
||||
</NavLink>}
|
||||
|
||||
|
||||
|
||||
|
||||
{typeof (stored_partner) !== "undefined" &&
|
||||
/* Connexion partner active */
|
||||
<Button className='bton_annule' onClick={logout} style={{
|
||||
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
|
||||
padding: "5px"
|
||||
}}>
|
||||
<i> Deconnexion </i>
|
||||
</Button>
|
||||
|
||||
|
||||
}
|
||||
|
||||
{typeof (stored_user) != "undefined" &&
|
||||
/* Connexion utilisateur active */
|
||||
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
|
||||
Deconnexion
|
||||
</Button>
|
||||
}
|
||||
</Menu>}
|
||||
|
||||
|
||||
{String(environnment) === "DEV" &&
|
||||
<Menu className="ch_burger_menu">
|
||||
|
||||
<NavLink exact to={"/"} activeClassName={"nav-active"}>
|
||||
A propos
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
|
||||
Fonctionnalites
|
||||
</NavLink>
|
||||
|
||||
|
||||
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
|
||||
Tarifs
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
|
||||
Contact
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
|
||||
Blog
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
|
||||
Marketplace
|
||||
</NavLink>
|
||||
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
|
||||
Connexion
|
||||
</NavLink>}
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
|
||||
Inscription
|
||||
</NavLink>}
|
||||
|
||||
|
||||
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
|
||||
Mon compte
|
||||
</NavLink>}
|
||||
|
||||
|
||||
|
||||
|
||||
{typeof (stored_partner) !== "undefined" &&
|
||||
/* Connexion partner active */
|
||||
<Button className='bton_annule' onClick={logout} style={{
|
||||
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
|
||||
padding: "5px"
|
||||
}}>
|
||||
<i> Deconnexion </i>
|
||||
</Button>
|
||||
|
||||
|
||||
}
|
||||
|
||||
{typeof (stored_user) != "undefined" &&
|
||||
/* Connexion utilisateur active */
|
||||
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
|
||||
Deconnexion
|
||||
</Button>
|
||||
}
|
||||
</Menu>}
|
||||
</div>
|
||||
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
export default New_Sidebar_Client_Intranet_2025;
|
|
@ -0,0 +1,336 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { slide as Menu } from "react-burger-menu";
|
||||
import { NavLink } from "react-router-dom";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
|
||||
import Button from '@mui/material/Button';
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import { useCookies } from "react-cookie";
|
||||
|
||||
|
||||
|
||||
const New_Sidebar_ENT_Student_2025 = () => {
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
const history = useHistory();
|
||||
|
||||
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
|
||||
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
|
||||
// Gestion des Cookies
|
||||
const stored_partner = cookie_part.tokenmysypart;
|
||||
const stored_user = cookie.tokenmysych;
|
||||
|
||||
const environnment = process.env.REACT_APP_ENV
|
||||
|
||||
|
||||
|
||||
function logout_confirmation() {
|
||||
|
||||
// si c'est une connexion partner qui est active
|
||||
if (typeof (stored_partner) !== "undefined") {
|
||||
//alert(" c'est une connexion PARTTT qui est active");
|
||||
removeCookie_part('tokenmysypart', { path: '/' });
|
||||
history.push("/Connexion");
|
||||
}
|
||||
|
||||
// si c'est une connexion user qui est active
|
||||
if (typeof (stored_user) !== "undefined") {
|
||||
//alert(" c'est une connexion USERR qui est active");
|
||||
removeCookie_part('tokenmysych', { path: '/' });
|
||||
history.push("/ent_student");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function logout() {
|
||||
confirmAlert({
|
||||
title: 'Deconnexion ?',
|
||||
message: 'Confirmez la deconnexion',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => logout_confirmation()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
|
||||
}
|
||||
],
|
||||
closeOnEscape: false,
|
||||
closeOnClickOutside: false,
|
||||
keyCodeForClose: [8, 32],
|
||||
willUnmount: () => { },
|
||||
afterClose: () => { },
|
||||
onClickOutside: () => { },
|
||||
onKeypress: () => { },
|
||||
onKeypressEscape: () => { },
|
||||
overlayClassName: "overlay-custom-class-name"
|
||||
});
|
||||
}
|
||||
|
||||
const [someoneconnected, setsomeoneconnected] = useState("0");
|
||||
const [partnerconnected, setpartnerconnected] = useState("0");
|
||||
const [userconnected, setuserconnected] = useState("0");
|
||||
|
||||
const stored_part = getCookie('tokenmysypart');
|
||||
|
||||
|
||||
function whosisconnected() {
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
}, []);
|
||||
|
||||
return (
|
||||
// Pass on our props
|
||||
<div>
|
||||
|
||||
{String(environnment) === "PROD" &&
|
||||
<Menu className="ch_burger_menu">
|
||||
|
||||
<NavLink exact to={"/"} activeClassName={"nav-active"}>
|
||||
A propos
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
|
||||
Fonctionnalites
|
||||
</NavLink>
|
||||
|
||||
|
||||
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
|
||||
Tarifs
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
|
||||
Contact
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
|
||||
Blog
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
|
||||
Marketplace
|
||||
</NavLink>
|
||||
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
|
||||
Connexion
|
||||
</NavLink>}
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
|
||||
Inscription
|
||||
</NavLink>}
|
||||
|
||||
|
||||
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
|
||||
Mon compte
|
||||
</NavLink>}
|
||||
|
||||
|
||||
|
||||
|
||||
{typeof (stored_partner) !== "undefined" &&
|
||||
/* Connexion partner active */
|
||||
<Button className='bton_annule' onClick={logout} style={{
|
||||
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
|
||||
padding: "5px"
|
||||
}}>
|
||||
<i> Deconnexion </i>
|
||||
</Button>
|
||||
|
||||
|
||||
}
|
||||
|
||||
{typeof (stored_user) != "undefined" &&
|
||||
/* Connexion utilisateur active */
|
||||
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
|
||||
Deconnexion
|
||||
</Button>
|
||||
}
|
||||
</Menu>}
|
||||
|
||||
{(String(environnment) === "REC" || String(environnment) === "DEM") &&
|
||||
<Menu className="ch_burger_menu">
|
||||
|
||||
<NavLink exact to={"/"} activeClassName={"nav-active"}>
|
||||
A propos
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
|
||||
Fonctionnalites
|
||||
</NavLink>
|
||||
|
||||
|
||||
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
|
||||
Tarifs
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
|
||||
Contact
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
|
||||
Blog
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
|
||||
Marketplace
|
||||
</NavLink>
|
||||
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
|
||||
Connexion
|
||||
</NavLink>}
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
|
||||
Inscription
|
||||
</NavLink>}
|
||||
|
||||
|
||||
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
|
||||
Mon compte
|
||||
</NavLink>}
|
||||
|
||||
|
||||
|
||||
|
||||
{typeof (stored_partner) !== "undefined" &&
|
||||
/* Connexion partner active */
|
||||
<Button className='bton_annule' onClick={logout} style={{
|
||||
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
|
||||
padding: "5px"
|
||||
}}>
|
||||
<i> Deconnexion </i>
|
||||
</Button>
|
||||
|
||||
|
||||
}
|
||||
|
||||
{typeof (stored_user) != "undefined" &&
|
||||
/* Connexion utilisateur active */
|
||||
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
|
||||
Deconnexion
|
||||
</Button>
|
||||
}
|
||||
</Menu>}
|
||||
|
||||
|
||||
{String(environnment) === "DEV" &&
|
||||
<Menu className="ch_burger_menu">
|
||||
|
||||
<NavLink exact to={"/"} activeClassName={"nav-active"}>
|
||||
A propos
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
|
||||
Fonctionnalites
|
||||
</NavLink>
|
||||
|
||||
|
||||
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
|
||||
Tarifs
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
|
||||
Contact
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
|
||||
Blog
|
||||
</NavLink>
|
||||
|
||||
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
|
||||
Marketplace
|
||||
</NavLink>
|
||||
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
|
||||
Connexion
|
||||
</NavLink>}
|
||||
|
||||
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
|
||||
Inscription
|
||||
</NavLink>}
|
||||
|
||||
|
||||
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
|
||||
Mon compte
|
||||
</NavLink>}
|
||||
|
||||
|
||||
|
||||
|
||||
{typeof (stored_partner) !== "undefined" &&
|
||||
/* Connexion partner active */
|
||||
<Button className='bton_annule' onClick={logout} style={{
|
||||
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
|
||||
padding: "5px"
|
||||
}}>
|
||||
<i> Deconnexion </i>
|
||||
</Button>
|
||||
|
||||
|
||||
}
|
||||
|
||||
{typeof (stored_user) != "undefined" &&
|
||||
/* Connexion utilisateur active */
|
||||
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
|
||||
Deconnexion
|
||||
</Button>
|
||||
}
|
||||
</Menu>}
|
||||
</div>
|
||||
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
export default New_Sidebar_ENT_Student_2025;
|
|
@ -9,8 +9,7 @@ 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 } from "react-icons/fc";
|
||||
|
||||
import { FcInfo } from "react-icons/fc";
|
||||
|
@ -167,7 +166,7 @@ const Notes_Evaluation = (props) => {
|
|||
|
||||
{ field: 'session_id', headerName: 'session_id', hide: true, Width: 0 },
|
||||
{
|
||||
field: 'session_code', headerName: 'Classe', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />,
|
||||
field: 'session_code', headerName: 'Promo', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />,
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||
|
@ -858,7 +857,7 @@ const Notes_Evaluation = (props) => {
|
|||
|
||||
const New_Option_Filter = [
|
||||
{ "id": "class_external_code", "label": "Lié a la Formation (code externe) ", "value": "class_external_code" },
|
||||
{ "id": "code_session", "label": "Lié a la Classe (code Classe) ", "value": "code_session" },
|
||||
{ "id": "code_session", "label": "Lié a la Promotion(code Classe) ", "value": "code_session" },
|
||||
{ "id": "code_ue", "label": "Lié a l'UE (code UE) ", "value": "code_ue" },
|
||||
{ "id": "", "label": "", "value": "" },
|
||||
{ "id": "1", "label": "", "value": "1" }, // Cette ligne pour couvrir l'ajout d'une ligne de filter. C'est fait expres.
|
||||
|
@ -2964,7 +2963,7 @@ const Notes_Evaluation = (props) => {
|
|||
|
||||
const New_Option_Type_Ressource = [
|
||||
{ "id": "0", "label": "Employe", "value": "ressource_humaine" },
|
||||
{ "id": "1", "label": "Materiel", "value": "ressource_materielle" },
|
||||
{ "id": "1", "label": "Materiel & Salle", "value": "ressource_materielle" },
|
||||
]
|
||||
|
||||
|
||||
|
@ -3601,7 +3600,7 @@ const Notes_Evaluation = (props) => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "15rem" }}>
|
||||
|
||||
{setConvocation_Eval_Type_doc && setConvocation_Eval_Type_doc.length > 0 &&
|
||||
|
@ -3772,7 +3771,7 @@ const Notes_Evaluation = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Ajout ressource </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Ajout ressource </DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_seq_ressource_1_message}
|
||||
|
@ -3788,6 +3787,7 @@ const Notes_Evaluation = (props) => {
|
|||
|
||||
options={New_Option_Type_Ressource}
|
||||
onChange={(event, value) => {
|
||||
setDialog_seq_ressource_1_selected_ressource_id("");
|
||||
setGet_Ressource_Avabilities_avability_check("");
|
||||
if (value && value.value) {
|
||||
|
||||
|
@ -4499,7 +4499,7 @@ const Notes_Evaluation = (props) => {
|
|||
|
||||
</div>
|
||||
|
||||
<div className="session_caract"> <b> Classe </b> <br />
|
||||
<div className="session_caract"> <b> Promotion</b> <br />
|
||||
{New_Getall_Partner_Session_Reduice_Fields_result && New_Getall_Partner_Session_Reduice_Fields_result.length > 0 && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
@ -4806,7 +4806,7 @@ const Notes_Evaluation = (props) => {
|
|||
</div>
|
||||
|
||||
|
||||
<div className="session_caract"> <b>Classe </b> <br />
|
||||
<div className="session_caract"> <b>Promotion </b> <br />
|
||||
{New_Getall_Partner_Session_Reduice_Fields_result && New_Getall_Partner_Session_Reduice_Fields_result.length > 0 &&
|
||||
|
||||
<Autocomplete
|
||||
|
@ -5256,7 +5256,7 @@ const Notes_Evaluation = (props) => {
|
|||
</div>
|
||||
|
||||
|
||||
<div className="session_caract"> <b> Classe </b> <br />
|
||||
<div className="session_caract"> <b> Promotion </b> <br />
|
||||
{New_Getall_Partner_Session_Reduice_Fields_result && New_Getall_Partner_Session_Reduice_Fields_result.length > 0 &&
|
||||
|
||||
<Autocomplete
|
||||
|
|
|
@ -1756,7 +1756,7 @@ const Partner = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Warning</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Warning</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
<ImWarning /> {Dialog_1_message}
|
||||
|
@ -1971,8 +1971,8 @@ const Partner = (props) => {
|
|||
|
||||
<div>
|
||||
<Sidebar className="my_sidebar">
|
||||
{String(menu) !== "mes_sessions" && <Menu className="my_menu bck_menu_seul" id="my_session" name="my_session" onClick={DiplaySessionList} > <CoPresentIcon className="icone_menu" color={"secondary"} /> SESSIONS </Menu>}
|
||||
{String(menu) === "mes_sessions" && <Menu className="my_menu bck_menu_seul_selected" id="my_session" name="my_session" onClick={DiplaySessionList} > <CoPresentIcon className="icone_menu" color={"secondary"} /> SESSIONS </Menu>}
|
||||
{String(menu) !== "mes_sessions" && <Menu className="my_menu bck_menu_seul" id="my_session" name="my_session" onClick={DiplaySessionList} > <CoPresentIcon className="icone_menu" color={"secondary"} /> PROMOTIONS </Menu>}
|
||||
{String(menu) === "mes_sessions" && <Menu className="my_menu bck_menu_seul_selected" id="my_session" name="my_session" onClick={DiplaySessionList} > <CoPresentIcon className="icone_menu" color={"secondary"} /> PROMOTIONS </Menu>}
|
||||
</Sidebar>
|
||||
</div>
|
||||
|
||||
|
@ -2148,8 +2148,8 @@ const Partner = (props) => {
|
|||
{String(menu) !== "dashbord_formation" && <MenuItem onClick={config_dashbord_formation_func} className="sousmenu" icon={<FcFinePrint className="icone_menu" />}> FORMATION </MenuItem>}
|
||||
{String(menu) === "dashbord_formation" && <MenuItem onClick={config_dashbord_formation_func} className="sousmenu_selected" icon={<FcFinePrint className="icone_menu" />}> FORMATION </MenuItem>}
|
||||
|
||||
{String(menu) !== "dashbord_session" && <MenuItem onClick={config_dashbord_session_func} className="sousmenu" icon={<FcFinePrint className="icone_menu" />}>SESSION </MenuItem>}
|
||||
{String(menu) === "dashbord_session" && <MenuItem onClick={config_dashbord_session_func} className="sousmenu_selected" icon={<FcFinePrint className="icone_menu" />}> SESSION </MenuItem>}
|
||||
{String(menu) !== "dashbord_session" && <MenuItem onClick={config_dashbord_session_func} className="sousmenu" icon={<FcFinePrint className="icone_menu" />}>PROMOTIONS </MenuItem>}
|
||||
{String(menu) === "dashbord_session" && <MenuItem onClick={config_dashbord_session_func} className="sousmenu_selected" icon={<FcFinePrint className="icone_menu" />}> PROMOTIONS </MenuItem>}
|
||||
|
||||
{String(menu) !== "dashbord_ressources_humaines" && <MenuItem onClick={config_dashbord_ressources_humaines_func} className="sousmenu" icon={<FcFinePrint className="icone_menu" />}> RES. HUMAINES </MenuItem>}
|
||||
{String(menu) === "dashbord_ressources_humaines" && <MenuItem onClick={config_dashbord_ressources_humaines_func} className="sousmenu_selected" icon={<FcFinePrint className="icone_menu" />}> RES. HUMAINES </MenuItem>}
|
||||
|
@ -2868,7 +2868,7 @@ const Partner = (props) => {
|
|||
|
||||
|
||||
<Tooltip className="tooltip_css" id="tooltip_id_9" />
|
||||
<a data-tooltip-id="tooltip_id_9" data-tooltip-html="SESSIONS">
|
||||
<a data-tooltip-id="tooltip_id_9" data-tooltip-html="PROMOTIONS">
|
||||
{String(menu) !== "mes_sessions" && <div className="sousmenu" onClick={DiplaySessionList} > <FcFlowChart className="icone_menu" /> </div>}
|
||||
{String(menu) === "mes_sessions" && <div className="sousmenu_selected" onClick={DiplaySessionList} ><FcFlowChart className="icone_menu" /> </div>}
|
||||
</a>
|
||||
|
|
|
@ -743,6 +743,7 @@ const Partner_Commande = (props) => {
|
|||
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
form.append("archive", "0");
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_partner_class/";
|
||||
|
||||
|
@ -1218,11 +1219,11 @@ const Partner_Commande = (props) => {
|
|||
|
||||
//console.log("file_size = ",file_size," file_type = ",file_type);
|
||||
if (file_size > 1000000) {
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier ne doit pas dépasser un 1 Méga octets");
|
||||
setalert_type("error");
|
||||
// alert("Le fichier ne doit pas dépasser un 1 Méga octets");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier ne doit pas dépasser un 1 Méga octets");
|
||||
setalert_type("error");
|
||||
// alert("Le fichier ne doit pas dépasser un 1 Méga octets");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1258,12 +1259,12 @@ const Partner_Commande = (props) => {
|
|||
setliste_sessions_file_change_api("true");
|
||||
|
||||
//Getall_Training_Employee();
|
||||
// alert(" Les employés ont été correctement importés");
|
||||
// alert(" Les employés ont été correctement importés");
|
||||
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Les employés ont été correctement importés");
|
||||
setalert_type("success");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Les employés ont été correctement importés");
|
||||
setalert_type("success");
|
||||
|
||||
|
||||
}
|
||||
|
@ -1662,11 +1663,11 @@ const Partner_Commande = (props) => {
|
|||
order_header_submenu_main();
|
||||
|
||||
} else {
|
||||
// alert(" Aucune commande/devis recuperé");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Aucune commande/devis recuperé");
|
||||
setalert_type("error");
|
||||
// alert(" Aucune commande/devis recuperé");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Aucune commande/devis recuperé");
|
||||
setalert_type("error");
|
||||
}
|
||||
|
||||
|
||||
|
@ -1818,7 +1819,7 @@ const Partner_Commande = (props) => {
|
|||
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
|
||||
form.append("archive", "0");
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
|
||||
|
||||
setLoading(true);
|
||||
|
@ -1927,11 +1928,11 @@ const Partner_Commande = (props) => {
|
|||
}
|
||||
|
||||
} else {
|
||||
// alert(" Aucun taux de TVA récuperé")
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Aucun taux de TVA récuperé");
|
||||
setalert_type("error");
|
||||
// alert(" Aucun taux de TVA récuperé")
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Aucun taux de TVA récuperé");
|
||||
setalert_type("error");
|
||||
}
|
||||
}
|
||||
else if (String(res.data.status) === String("Err_Connexion")) {
|
||||
|
@ -2191,11 +2192,11 @@ const Partner_Commande = (props) => {
|
|||
;
|
||||
|
||||
} else {
|
||||
// alert(" Aucune ligne commande/devis recuperée");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Aucune ligne commande/devis recuperée");
|
||||
setalert_type("error");
|
||||
// alert(" Aucune ligne commande/devis recuperée");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Aucune ligne commande/devis recuperée");
|
||||
setalert_type("error");
|
||||
}
|
||||
|
||||
|
||||
|
@ -2851,11 +2852,11 @@ const Partner_Commande = (props) => {
|
|||
|
||||
}
|
||||
else {
|
||||
// alert(" Type de commande inconnu.");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Type de commande inconnu.");
|
||||
setalert_type("error");
|
||||
// alert(" Type de commande inconnu.");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Type de commande inconnu.");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
setLoading(true);
|
||||
|
@ -2875,13 +2876,13 @@ const Partner_Commande = (props) => {
|
|||
setOrder_data_changed("");
|
||||
setorder_data_edit_mode("");
|
||||
Display_Detail_Order_data(selected_id);
|
||||
// alert(" La mise à jour du " + String(p_detail_header_type) + " été correctement faite.");
|
||||
// alert(res.data.message);
|
||||
// alert(" La mise à jour du " + String(p_detail_header_type) + " été correctement faite.");
|
||||
// alert(res.data.message);
|
||||
|
||||
var txt = "La mise à jour du " + String(p_detail_header_type) + " été correctement faite."
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(txt);
|
||||
setalert_type("success");
|
||||
var txt = "La mise à jour du " + String(p_detail_header_type) + " été correctement faite."
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(txt);
|
||||
setalert_type("success");
|
||||
|
||||
if (document.getElementById('myRef_head')) {
|
||||
var divh = document.getElementById('myRef_head').offsetTop;
|
||||
|
@ -3111,16 +3112,16 @@ const Partner_Commande = (props) => {
|
|||
// Controle des champs obligatoires
|
||||
if (!p_add_line_item || String(p_add_line_item).length < 2) {
|
||||
//alert(" Vous devez choisir une formation ");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Vous devez choisir une formation ");
|
||||
setalert_type("error");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Vous devez choisir une formation ");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (!p_add_line_item_qty || parseFloat(String(p_add_line_item_qty)) <= 0) {
|
||||
// alert(" La quantité choisie est incorrecte ");
|
||||
// alert(" La quantité choisie est incorrecte ");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" La quantité choisie est incorrecte ");
|
||||
setalert_type("error");
|
||||
|
@ -3128,34 +3129,34 @@ const Partner_Commande = (props) => {
|
|||
}
|
||||
|
||||
if (!p_add_line_item_price || parseFloat(String(p_add_line_item_price)) < 0) {
|
||||
// alert(" Le prix unitaire est incorrecte ");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Le prix unitaire est incorrecte ");
|
||||
setalert_type("error");
|
||||
// alert(" Le prix unitaire est incorrecte ");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Le prix unitaire est incorrecte ");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
if (String(p_add_line_item_type_reduction) === "percent" &&
|
||||
(parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > 100)) {
|
||||
// alert(" Pour une reduction de type 'pourcentage', la valeur doit être comprise entre 0 et 100 ");
|
||||
// alert(" Pour une reduction de type 'pourcentage', la valeur doit être comprise entre 0 et 100 ");
|
||||
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Pour une reduction de type 'pourcentage', la valeur doit être comprise entre 0 et 100");
|
||||
setalert_type("error");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Pour une reduction de type 'pourcentage', la valeur doit être comprise entre 0 et 100");
|
||||
setalert_type("error");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (String(p_add_line_item_type_reduction) === "fixe" &&
|
||||
(parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > parseFloat(String(p_add_line_item_price)))) {
|
||||
// alert(" Pour une reduction de type 'fixe', la valeur ne doit pas excéder le prix unitaire de l'article ");
|
||||
// alert(" Pour une reduction de type 'fixe', la valeur ne doit pas excéder le prix unitaire de l'article ");
|
||||
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Pour une reduction de type 'fixe', la valeur ne doit pas excéder le prix unitaire de l'article ");
|
||||
setalert_type("error");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Pour une reduction de type 'fixe', la valeur ne doit pas excéder le prix unitaire de l'article ");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3176,12 +3177,12 @@ const Partner_Commande = (props) => {
|
|||
clean_article_detail_fields();
|
||||
|
||||
Display_Detail_Order_data(selected_id);
|
||||
// alert(" L'article a été correctement ajouté / mis à jour.");
|
||||
// alert(" L'article a été correctement ajouté / mis à jour.");
|
||||
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("L'article a été correctement ajouté / mis à jour.");
|
||||
setalert_type("success");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("L'article a été correctement ajouté / mis à jour.");
|
||||
setalert_type("success");
|
||||
|
||||
setDialog_Detail_Article_open(false);
|
||||
|
||||
|
@ -3328,11 +3329,11 @@ const Partner_Commande = (props) => {
|
|||
|
||||
|
||||
if (!p_add_cmd_header_client_id || String(p_add_cmd_header_client_id).length < 2) {
|
||||
// alert(" Vous devez choisir un client");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Vous devez choisir un client");
|
||||
setalert_type("error");
|
||||
// alert(" Vous devez choisir un client");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Vous devez choisir un client");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
//console.log("### form = ", form);
|
||||
|
@ -3353,11 +3354,11 @@ const Partner_Commande = (props) => {
|
|||
} else if (String(p_add_cmd_header_order_type) === "commande") {
|
||||
myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Partner_Order/";
|
||||
} else {
|
||||
// alert(" Type de commande inconnu");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Type de commande inconnu");
|
||||
setalert_type("error");
|
||||
// alert(" Type de commande inconnu");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Type de commande inconnu");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3411,20 +3412,20 @@ const Partner_Commande = (props) => {
|
|||
setAdd_Dialog_Detail_Order_api("false");
|
||||
|
||||
if (String(p_add_cmd_header_order_type) === "devis") {
|
||||
// alert(" Impossible d'ajouter le devis");
|
||||
// alert(" Impossible d'ajouter le devis");
|
||||
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible d'ajouter le devis");
|
||||
setalert_type("error");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible d'ajouter le devis");
|
||||
setalert_type("error");
|
||||
|
||||
} else if (String(p_add_cmd_header_order_type) === "commande") {
|
||||
// alert(" La commande d'ajouter la commande.");
|
||||
// alert(" La commande d'ajouter la commande.");
|
||||
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("La commande d'ajouter la commande.");
|
||||
setalert_type("error");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("La commande d'ajouter la commande.");
|
||||
setalert_type("error");
|
||||
}
|
||||
|
||||
})
|
||||
|
@ -3496,7 +3497,7 @@ const Partner_Commande = (props) => {
|
|||
/*
|
||||
|
||||
if (document.getElementById("order_header_main")) {
|
||||
document.getElementById("order_header_main").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_main").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_main").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -3528,7 +3529,7 @@ const Partner_Commande = (props) => {
|
|||
|
||||
/*
|
||||
if (document.getElementById("order_header_detail")) {
|
||||
document.getElementById("order_header_detail").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_detail").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_detail").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -3556,7 +3557,7 @@ const Partner_Commande = (props) => {
|
|||
await sleep(5);
|
||||
/*
|
||||
if (document.getElementById("order_header_facturation")) {
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_facturation").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -3584,7 +3585,7 @@ const Partner_Commande = (props) => {
|
|||
await sleep(5);
|
||||
|
||||
/* if (document.getElementById("order_header_facturation")) {
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_facturation").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -3636,7 +3637,7 @@ const Partner_Commande = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -3714,11 +3715,11 @@ const Partner_Commande = (props) => {
|
|||
function Compute_Order_Header_Price() {
|
||||
|
||||
if (String(Order_data_changed) === "1") {
|
||||
// alert(" Merci d'enregistrer les modification avant de lancer le calcul");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Merci d'enregistrer les modification avant de lancer le calcul");
|
||||
setalert_type("error");
|
||||
// alert(" Merci d'enregistrer les modification avant de lancer le calcul");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Merci d'enregistrer les modification avant de lancer le calcul");
|
||||
setalert_type("error");
|
||||
}
|
||||
|
||||
Compute_Partner_Order();
|
||||
|
@ -3867,9 +3868,9 @@ const Partner_Commande = (props) => {
|
|||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible d'envoyer le devis par email");
|
||||
setalert_type("error");
|
||||
// alert(" Impossible d'envoyer le devis par email");
|
||||
// alert(" Impossible d'envoyer le devis par email");
|
||||
} else if (String(p_add_cmd_header_order_type) === "commande") {
|
||||
// alert(" Impossible d'envoyer la commande par email");
|
||||
// alert(" Impossible d'envoyer la commande par email");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible d'envoyer la commande par email");
|
||||
setalert_type("error");
|
||||
|
@ -3928,19 +3929,19 @@ const Partner_Commande = (props) => {
|
|||
setConfirm_Order_Data_api("false");
|
||||
|
||||
if (String(p_add_cmd_header_order_type) === "devis") {
|
||||
// alert(" Impossible de confirmer le devis");
|
||||
// alert(" Impossible de confirmer le devis");
|
||||
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible de confirmer le devis");
|
||||
setalert_type("error");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible de confirmer le devis");
|
||||
setalert_type("error");
|
||||
|
||||
} else if (String(p_add_cmd_header_order_type) === "commande") {
|
||||
// alert(" Impossible de confirmer la commande");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible de confirmer la commande");
|
||||
setalert_type("error");
|
||||
// alert(" Impossible de confirmer la commande");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible de confirmer la commande");
|
||||
setalert_type("error");
|
||||
}
|
||||
|
||||
})
|
||||
|
@ -4776,23 +4777,23 @@ const Partner_Commande = (props) => {
|
|||
|
||||
|
||||
if (file_type !== "application/pdf") {
|
||||
// alert("Le fichier n'est pas de type PDF");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier n'est pas de type PDF");
|
||||
setalert_type("error");
|
||||
// alert("Le fichier n'est pas de type PDF");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier n'est pas de type PDF");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (file_size > 10000000) {
|
||||
// alert("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
setalert_type("error");
|
||||
// console.log("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
// alert("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
setalert_type("error");
|
||||
// console.log("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -5023,7 +5024,7 @@ const Partner_Commande = (props) => {
|
|||
static
|
||||
onClose={() => null} >
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width_700px" style={{ "minHeight": "20rem", width: '60rem' }}>
|
||||
|
||||
<div>
|
||||
|
@ -5094,7 +5095,7 @@ const Partner_Commande = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle> Création Session </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Création Session </DialogTitle>
|
||||
<DialogContent style={{ "minHeight": "20rem", "width": "30rem" }}>
|
||||
|
||||
|
||||
|
@ -5116,12 +5117,12 @@ const Partner_Commande = (props) => {
|
|||
console.log(" date_start_session = ", date_start_session);*/
|
||||
|
||||
if (local_date > date_end_session) {
|
||||
// alert(" La date est après la fin de la session");
|
||||
// alert(" La date est après la fin de la session");
|
||||
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" La date est après la fin de la session");
|
||||
setalert_type("error");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" La date est après la fin de la session");
|
||||
setalert_type("error");
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -5158,11 +5159,11 @@ const Partner_Commande = (props) => {
|
|||
|
||||
|
||||
if (local_date < date_start_session) {
|
||||
// alert(" La date est avant le début de la session");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("La date est avant le début de la session");
|
||||
setalert_type("error");
|
||||
// alert(" La date est avant le début de la session");
|
||||
// alert(res.data.message);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("La date est avant le début de la session");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -5277,7 +5278,7 @@ const Partner_Commande = (props) => {
|
|||
onClose={() => null}
|
||||
>
|
||||
|
||||
<DialogTitle> Cloture devis <font style={{ fontWeight: "700" }}> {String(p_detail_header_ref_interne)} </font> </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Cloture devis <font style={{ fontWeight: "700" }}> {String(p_detail_header_ref_interne)} </font> </DialogTitle>
|
||||
<DialogContent style={{ "minHeight": "20rem", "width": "30rem" }}>
|
||||
|
||||
|
||||
|
@ -5373,7 +5374,7 @@ const Partner_Commande = (props) => {
|
|||
static
|
||||
onClose={() => null} >
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||
<DialogContentText>
|
||||
Envoi devis par email
|
||||
|
@ -5509,7 +5510,7 @@ const Partner_Commande = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -5532,7 +5533,7 @@ const Partner_Commande = (props) => {
|
|||
static
|
||||
onClose={() => null} >
|
||||
|
||||
<DialogTitle>Edition Détail ligne <font style={{ fontWeight: "700" }}> {String(p_detail_header_type).toLocaleUpperCase()} </font> </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Edition Détail ligne <font style={{ fontWeight: "700" }}> {String(p_detail_header_type).toLocaleUpperCase()} </font> </DialogTitle>
|
||||
<DialogContent>
|
||||
|
||||
{/*p_add_line_item = {p_add_line_item} <br/> */}
|
||||
|
@ -6193,7 +6194,7 @@ const Partner_Commande = (props) => {
|
|||
onClose={() => null}
|
||||
>
|
||||
|
||||
<DialogTitle>{Dialog_1_message}</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> {Dialog_1_message}</DialogTitle>
|
||||
<DialogContent>
|
||||
|
||||
<div className="session_caract_Dialog" > <b>Client </b>
|
||||
|
@ -6502,7 +6503,7 @@ const Partner_Commande = (props) => {
|
|||
|
||||
|
||||
|
||||
<h3 style={{ fontFamily:'DM Sans' }}> Mes Commandes et Devis </h3>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Commandes et Devis </h3>
|
||||
<div className="div_row">
|
||||
<div className="titre1"> Utilisez les filtres !</div>
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
|
|
|
@ -241,6 +241,23 @@ const Partner_Config_Formulaires = (props) => {
|
|||
|
||||
},
|
||||
|
||||
{
|
||||
field: 'is_alert', headerName: 'Alert', flex: 1, hide: false, editable: false,
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
|
||||
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
|
||||
{String(cellValues.row.is_alert) === "1" && "Oui"}
|
||||
{String(cellValues.row.is_alert) !== "1" && "Non"}
|
||||
|
||||
</div>
|
||||
|
||||
);
|
||||
},
|
||||
|
||||
},
|
||||
{ field: 'alert_seuil', headerName: 'Seuil Alert', flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
|
||||
{
|
||||
field: "delete", headerName: 'Supprimer',
|
||||
|
@ -1154,6 +1171,16 @@ const Partner_Config_Formulaires = (props) => {
|
|||
}
|
||||
|
||||
|
||||
|
||||
if (alert_checked === true) {
|
||||
form.append("is_alert", "1");
|
||||
form.append("alert_seuil", alert_seuil_value);
|
||||
} else {
|
||||
form.append("is_alert", "0");
|
||||
form.append("alert_seuil", "");
|
||||
}
|
||||
|
||||
|
||||
if (statistic_checked === true) {
|
||||
form.append("is_statistic", "1");
|
||||
} else {
|
||||
|
@ -1210,6 +1237,9 @@ const Partner_Config_Formulaires = (props) => {
|
|||
setnew_qcm_choix_value("");
|
||||
setstatistic_checked(false);
|
||||
|
||||
setalert_checked(false);
|
||||
setalert_seuil_value("");
|
||||
|
||||
Get_Given_Formulaire_Data(selected_id);
|
||||
|
||||
if (document.getElementById('myRef')) {
|
||||
|
@ -1413,6 +1443,16 @@ const Partner_Config_Formulaires = (props) => {
|
|||
setstatistic_checked(event.target.checked);
|
||||
};
|
||||
|
||||
|
||||
const [alert_checked, setalert_checked] = React.useState(false);
|
||||
const [alert_seuil_value, setalert_seuil_value] = React.useState("");
|
||||
|
||||
const handleChange_alert_checked = (event) => {
|
||||
setalert_seuil_value("");
|
||||
setalert_checked(event.target.checked);
|
||||
};
|
||||
|
||||
|
||||
const [display_alert_mysy, setdisplay_alert_mysy] = useState("");
|
||||
const [alert_message, setalert_message] = useState("");
|
||||
const [alert_type, setalert_type] = useState("");
|
||||
|
@ -1428,6 +1468,24 @@ const Partner_Config_Formulaires = (props) => {
|
|||
setdisplay_alert_mysy("");
|
||||
}
|
||||
|
||||
const New_Option_Oui_Non = [
|
||||
{
|
||||
value: '1',
|
||||
label: 'Oui',
|
||||
},
|
||||
{
|
||||
value: '0',
|
||||
label: 'Non',
|
||||
},
|
||||
|
||||
{
|
||||
value: '',
|
||||
label: '',
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<div className="partner_configuration_technique">
|
||||
|
@ -1435,6 +1493,17 @@ const Partner_Config_Formulaires = (props) => {
|
|||
<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*/}
|
||||
|
||||
|
||||
{/**** Dialog pour gestion d'une question */}
|
||||
|
||||
|
@ -1467,7 +1536,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title">MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title">MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "25rem" }}>
|
||||
|
||||
<DialogContentText>
|
||||
|
@ -1488,8 +1557,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
onChange={(e) => {
|
||||
setquestion_question(e.target.value);
|
||||
|
||||
}
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
@ -1509,6 +1577,10 @@ const Partner_Config_Formulaires = (props) => {
|
|||
value={New_Option_type_Question.filter((data) => (data).value === String(question_type))[0].label}
|
||||
|
||||
onChange={(event, value) => {
|
||||
|
||||
setalert_checked(false);
|
||||
setalert_seuil_value("");
|
||||
|
||||
if (value && value.value) {
|
||||
setquestion_type(value.value);
|
||||
} else {
|
||||
|
@ -1621,9 +1693,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
{tab_checkbox_choix &&
|
||||
tab_checkbox_choix.map((choix) => (
|
||||
<div>
|
||||
|
||||
<TextField
|
||||
|
||||
value={choix}
|
||||
autoFocus
|
||||
margin="dense"
|
||||
|
@ -1663,7 +1733,6 @@ const Partner_Config_Formulaires = (props) => {
|
|||
value={new_checkbox_choix_value}
|
||||
onChange={(e) => {
|
||||
setnew_checkbox_choix_value(e.target.value);
|
||||
|
||||
}
|
||||
}
|
||||
/>
|
||||
|
@ -1680,25 +1749,102 @@ const Partner_Config_Formulaires = (props) => {
|
|||
|
||||
{(String(question_type) === "note" || String(question_type) === "bool" || String(question_type) === "entier") && <div className="session_caract_Dialog" >
|
||||
|
||||
<Tooltip className="tooltip_css" id="statistic_01" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="statistic_01" data-tooltip-html="En cochant cette case, le système va créer une statistique associée à la question.">
|
||||
<div class="separator">
|
||||
<nav className="separator_label">
|
||||
Configuration </nav>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Tooltip className="tooltip_css" id="statistic_01" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="statistic_01" data-tooltip-html="En cochant cette case, le système va créer une statistique associée à la question.">
|
||||
|
||||
<nav style={{ width: "100%", float: "left" }}>
|
||||
|
||||
<nav style={{ width: "75%", float: "left", "marginTop": '0.5rem' }}>
|
||||
Créer une statistique <FcInfo />
|
||||
</nav>
|
||||
<nav style={{ width: "20%", float: "left", "textAlign": "right" }}>
|
||||
|
||||
<Checkbox
|
||||
checked={statistic_checked}
|
||||
onChange={handleChange_statistic_checked}
|
||||
inputProps={{ 'aria-label': 'controlled' }}
|
||||
/>
|
||||
</nav>
|
||||
</nav>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<nav style={{ width: "100%", float: "left" }}>
|
||||
|
||||
<nav style={{ width: "75%", float: "left", "marginTop": '0.5rem' }}>
|
||||
Créer une statistique <FcInfo />
|
||||
Alert sur réponse <FcInfo />
|
||||
</nav>
|
||||
<nav style={{ width: "20%", float: "left", "textAlign": "right" }}>
|
||||
|
||||
<Checkbox
|
||||
checked={statistic_checked}
|
||||
onChange={handleChange_statistic_checked}
|
||||
checked={alert_checked}
|
||||
onChange={handleChange_alert_checked}
|
||||
inputProps={{ 'aria-label': 'controlled' }}
|
||||
/>
|
||||
</nav>
|
||||
</nav>
|
||||
</a>
|
||||
|
||||
{alert_checked &&
|
||||
<div>
|
||||
<nav style={{ width: "50%", float: "left", "marginTop": '0.5rem' }}>
|
||||
Seuil/Valeur déclenchement <FcInfo />
|
||||
</nav>
|
||||
{(String(question_type) === "note" || String(question_type) === "entier") &&
|
||||
<nav style={{ width: "49%", float: "left", "textAlign": "right" }}>
|
||||
|
||||
<TextField
|
||||
autoFocus
|
||||
margin="dense"
|
||||
id="seuil_oui_non_number"
|
||||
name="seuil_oui_non_number"
|
||||
className="disabled_style"
|
||||
type="number"
|
||||
InputProps={{ inputProps: { min: 2, max: 9999 } }}
|
||||
value={alert_seuil_value}
|
||||
onChange={(event) => {
|
||||
setalert_seuil_value(event.target.value);
|
||||
|
||||
}}
|
||||
/>
|
||||
</nav>}
|
||||
|
||||
{(String(question_type) === "bool" || String(question_type) === "entier") &&
|
||||
<nav style={{ width: "49%", float: "left", "textAlign": "right" }}>
|
||||
|
||||
<Autocomplete
|
||||
disablePortal
|
||||
name="seuil_oui_non"
|
||||
id="seuil_oui_non"
|
||||
className="disabled_style"
|
||||
|
||||
options={New_Option_Oui_Non}
|
||||
value={New_Option_Oui_Non.filter((data) => (data).value === String(alert_seuil_value))[0].label}
|
||||
onChange={(event, value) => {
|
||||
if (value && value.value) {
|
||||
setalert_seuil_value(value.value);
|
||||
} else {
|
||||
setalert_seuil_value("");
|
||||
}
|
||||
}}
|
||||
|
||||
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
|
||||
|
||||
/>
|
||||
}
|
||||
/>
|
||||
</nav>}
|
||||
</div>
|
||||
}
|
||||
</nav>
|
||||
</div>
|
||||
</div>}
|
||||
|
||||
</DialogContent>
|
||||
|
@ -1728,7 +1874,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
|
||||
|
||||
|
||||
<h3 style={{ fontFamily:'DM Sans' }}> Votre configuration des formulaires </h3>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Votre configuration des formulaires </h3>
|
||||
<div className="div_row">
|
||||
<div className="titre1"> Utilisez les filtres !</div>
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
|
@ -2276,7 +2422,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
className="disabled_style"
|
||||
checked={true}
|
||||
|
||||
// style={{ background: '#ECEFF1' }}
|
||||
// style={{ background: '#ECEFF1' }}
|
||||
/>}
|
||||
|
||||
{String(p_detail_from_default) !== "1" &&
|
||||
|
@ -2286,7 +2432,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
className="disabled_style"
|
||||
checked={false}
|
||||
|
||||
// style={{ background: '#ECEFF1' }}
|
||||
// style={{ background: '#ECEFF1' }}
|
||||
/>}
|
||||
|
||||
|
||||
|
@ -2348,9 +2494,8 @@ const Partner_Config_Formulaires = (props) => {
|
|||
list_choix: (item).list_choix,
|
||||
list_case_cocher: (item).list_case_cocher,
|
||||
is_statistic: (item).is_statistic,
|
||||
|
||||
|
||||
|
||||
is_alert: (item).is_alert,
|
||||
alert_seuil: (item).alert_seuil,
|
||||
}
|
||||
))}
|
||||
|
||||
|
@ -2360,6 +2505,16 @@ const Partner_Config_Formulaires = (props) => {
|
|||
disableSelectionOnClick
|
||||
onRowDoubleClick={(newSelectionModel) => {
|
||||
|
||||
setalert_checked(false);
|
||||
setalert_seuil_value("");
|
||||
|
||||
if (newSelectionModel.row.is_alert && newSelectionModel.row.is_alert === "1")
|
||||
setalert_checked(true);
|
||||
|
||||
if (newSelectionModel.row.alert_seuil)
|
||||
setalert_seuil_value(newSelectionModel.row.alert_seuil);
|
||||
|
||||
|
||||
setselected_question_id(newSelectionModel.row._id);
|
||||
setquestion_question(newSelectionModel.row.question);
|
||||
setquestion_type(newSelectionModel.row.type);
|
||||
|
@ -2489,6 +2644,8 @@ const Partner_Config_Formulaires = (props) => {
|
|||
|
||||
onChange={(event, value) => {
|
||||
setconfig_data_changed("1");
|
||||
setalert_checked(false);
|
||||
setalert_seuil_value("");
|
||||
if (value && value.value) {
|
||||
setp_detail_from_type(value.value);
|
||||
} else {
|
||||
|
@ -2593,7 +2750,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
id="detail_config_par_defaut"
|
||||
className="disabled_style"
|
||||
checked={true}
|
||||
// style={{ background: '#ECEFF1' }}
|
||||
// style={{ background: '#ECEFF1' }}
|
||||
onChange={(e) => {
|
||||
if (e.target.checked) {
|
||||
setp_detail_from_default("1");
|
||||
|
@ -2610,7 +2767,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
id="detail_config_par_defaut"
|
||||
className="disabled_style"
|
||||
checked={false}
|
||||
// style={{ background: '#ECEFF1' }}
|
||||
// style={{ background: '#ECEFF1' }}
|
||||
onChange={(e) => {
|
||||
if (e.target.checked) {
|
||||
setp_detail_from_default("1");
|
||||
|
@ -2638,7 +2795,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
|
||||
{p_detail_from_list_question && p_detail_from_list_question.length > 0 && <div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
|
||||
|
||||
<Box
|
||||
<Box
|
||||
sx={{
|
||||
height: 500,
|
||||
width: '100%',
|
||||
|
@ -2678,6 +2835,12 @@ const Partner_Config_Formulaires = (props) => {
|
|||
question: (item).question,
|
||||
type: (item).type,
|
||||
max_note: (item).max_note,
|
||||
list_choix: (item).list_choix,
|
||||
list_case_cocher: (item).list_case_cocher,
|
||||
is_statistic: (item).is_statistic,
|
||||
is_alert: (item).is_alert,
|
||||
alert_seuil: (item).alert_seuil,
|
||||
|
||||
|
||||
}
|
||||
))}
|
||||
|
@ -2909,7 +3072,7 @@ const Partner_Config_Formulaires = (props) => {
|
|||
setp_detail_one_from_default("0");
|
||||
}
|
||||
}}
|
||||
// style={{ background: '#FFFFFF' }}
|
||||
// style={{ background: '#FFFFFF' }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -616,7 +616,7 @@ const Partner_Configuration_Session_Steps = (props) => {
|
|||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
<DialogTitle> Choisir une couleur</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Choisir une couleur</DialogTitle>
|
||||
<DialogContent className="DialogContent_color_pickup_width" >
|
||||
<DialogContentText>
|
||||
|
||||
|
@ -676,7 +676,7 @@ const Partner_Configuration_Session_Steps = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -1,47 +1,29 @@
|
|||
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 Checkbox from '@mui/material/Checkbox';
|
||||
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 Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
||||
|
||||
import { makeStyles } from "@material-ui/core/styles";
|
||||
import Paper from '@material-ui/core/Paper';
|
||||
import Draggable from 'react-draggable';
|
||||
|
@ -471,6 +453,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
const columns_list_competence = [
|
||||
{ field: '_id', headerName: '_id', hide: true },
|
||||
{ field: 'id', headerName: 'id', hide: true },
|
||||
{ field: 'code', headerName: 'Code', flex: 1, hide: false, editable: false },
|
||||
{ field: 'description', headerName: 'Description', flex: 1, hide: false, editable: false },
|
||||
{ field: 'domaine', headerName: 'Domaine', flex: 1, hide: false, editable: false },
|
||||
{ field: 'metier', headerName: 'Métier', flex: 1, hide: false, editable: false },
|
||||
|
@ -1076,7 +1059,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
|
||||
if (String(res.data.status) === String("true")) {
|
||||
//console.log(" In Getall_Partner_Competence_List res.data.status = " + res.data.status);
|
||||
//console.log(" In Getall_Partner_Competence_List res.data.message r_class = " + res.data.message);
|
||||
// console.log(" In Getall_Partner_Competence_List res.data.message r_class = " + res.data.message);
|
||||
setGetall_Partner_Competence_List_api("true");
|
||||
setGetall_Partner_Competence_List_result(res.data.message);
|
||||
|
||||
|
@ -1087,19 +1070,18 @@ const Partner_Configuration_Technique = (props) => {
|
|||
var localid = JSON.parse(x).id;
|
||||
var local_id = JSON.parse(x)._id;
|
||||
var local_description = JSON.parse(x).description;
|
||||
|
||||
|
||||
|
||||
var local_code = JSON.parse(x).code;
|
||||
//---
|
||||
var node = {
|
||||
"_id": local_id,
|
||||
"id": localid,
|
||||
"label": local_description,
|
||||
"label": local_code,
|
||||
"code": local_code,
|
||||
"description": local_description,
|
||||
|
||||
|
||||
};
|
||||
new_data2.push(node);
|
||||
|
||||
});
|
||||
|
||||
//---
|
||||
|
@ -1109,7 +1091,6 @@ const Partner_Configuration_Technique = (props) => {
|
|||
"label": "",
|
||||
"code": "",
|
||||
"description": "",
|
||||
"rang": "",
|
||||
|
||||
};
|
||||
new_data2.push(node);
|
||||
|
@ -1811,6 +1792,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
|
||||
|
||||
const [selected_competence_id, setselected_competence_id] = useState("");
|
||||
const [p_detail_competence_code, setp_detail_competence_code] = useState("");
|
||||
const [p_detail_competence_description, setp_detail_competence_description] = useState("");
|
||||
const [p_detail_competence_domaine, setp_detail_competence_domaine] = useState("");
|
||||
const [p_detail_competence_metier, setp_detail_competence_metier] = useState("");
|
||||
|
@ -2539,6 +2521,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
// Il s'agit d'une mise à jour
|
||||
myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Competence/";
|
||||
form.append("competence_id", selected_competence_id);
|
||||
form.append("code", p_detail_competence_code);
|
||||
form.append("description", p_detail_competence_description);
|
||||
form.append("domaine", p_detail_competence_domaine);
|
||||
form.append("metier", p_detail_competence_metier);
|
||||
|
@ -2547,6 +2530,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
} else {
|
||||
// Il s'agit d'une creation
|
||||
myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Competence/";
|
||||
form.append("code", p_detail_competence_code);
|
||||
form.append("description", p_detail_competence_description);
|
||||
form.append("domaine", p_detail_competence_domaine);
|
||||
form.append("metier", p_detail_competence_metier);
|
||||
|
@ -2602,6 +2586,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
setgridline_competence_id("");
|
||||
setselected_competence_id("");
|
||||
setp_detail_competence_description("");
|
||||
setp_detail_competence_code("");
|
||||
setp_detail_competence_domaine("");
|
||||
setp_detail_competence_metier("");
|
||||
setp_detail_competence_commentaire("");
|
||||
|
@ -2703,7 +2688,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -2783,9 +2768,30 @@ const Partner_Configuration_Technique = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle> Compétence </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Compétence </DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
<div className="session_caract_Dialog" > Code
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
|
||||
name="event_dialog_competence_code"
|
||||
id="event_dialog_competence_code"
|
||||
|
||||
fullWidth
|
||||
|
||||
value={p_detail_competence_code}
|
||||
onChange={(e) => {
|
||||
setp_detail_competence_code(e.target.value);
|
||||
|
||||
}
|
||||
}
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div className="session_caract_Dialog" > Description
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
|
@ -3608,7 +3614,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
</Dialog>
|
||||
|
||||
|
||||
<h3 style={{ fontFamily:'DM Sans' }}> Votre configuration </h3>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Votre configuration </h3>
|
||||
|
||||
<div className="div_row" ref={myRef_head} id="myRef_head" >
|
||||
<Button variant="outlined" onClick={submenu_technique} className="detail_class_submenu" id='technique' name='technique'>Technique</Button>
|
||||
|
@ -4765,6 +4771,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
{
|
||||
id: index,
|
||||
_id: JSON.parse(item)._id,
|
||||
code: JSON.parse(item).code,
|
||||
description: JSON.parse(item).description,
|
||||
domaine: JSON.parse(item).domaine,
|
||||
metier: JSON.parse(item).metier,
|
||||
|
@ -4780,7 +4787,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
onRowDoubleClick={(newSelectionModel) => {
|
||||
setgridline_competence_id(newSelectionModel.row.id);
|
||||
setselected_competence_id(newSelectionModel.row._id);
|
||||
|
||||
setp_detail_competence_code(newSelectionModel.row.code);
|
||||
setp_detail_competence_description(newSelectionModel.row.description);
|
||||
setp_detail_competence_domaine(newSelectionModel.row.domaine);
|
||||
setp_detail_competence_metier(newSelectionModel.row.metier);
|
||||
|
@ -4859,7 +4866,7 @@ const Partner_Configuration_Technique = (props) => {
|
|||
<Button variant="outlined" onClick={() => {
|
||||
|
||||
setselected_competence_id("");
|
||||
|
||||
setp_detail_competence_code("");
|
||||
setp_detail_competence_description("");
|
||||
setp_detail_competence_domaine("");
|
||||
setp_detail_competence_metier("");
|
||||
|
|
|
@ -545,7 +545,7 @@ const Partner_domaine_Categorie_Metier = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
@ -1652,7 +1652,7 @@ const Partner_domaine_Categorie_Metier = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Domaine de Formation </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Domaine de Formation </DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_domaine_1_message}
|
||||
|
@ -1747,7 +1747,7 @@ const Partner_domaine_Categorie_Metier = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Catégorie de Formation </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Catégorie de Formation </DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_Categorie_1_message}
|
||||
|
@ -1874,7 +1874,7 @@ const Partner_domaine_Categorie_Metier = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Catégorie de Formation </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Catégorie de Formation </DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
{Dialog_Metier_1_message}
|
||||
|
|
|
@ -1493,7 +1493,7 @@ const Partner_Facture = (props) => {
|
|||
submenu_color_management("main");
|
||||
|
||||
/* if (document.getElementById("order_header_main")) {
|
||||
document.getElementById("order_header_main").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_main").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_main").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1520,7 +1520,7 @@ const Partner_Facture = (props) => {
|
|||
submenu_color_management("detail");
|
||||
|
||||
/* if (document.getElementById("order_header_detail")) {
|
||||
document.getElementById("order_header_detail").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_detail").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_detail").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1546,7 +1546,7 @@ const Partner_Facture = (props) => {
|
|||
submenu_color_management("facturation");
|
||||
|
||||
/* if (document.getElementById("order_header_facturation")) {
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_facturation").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1577,7 +1577,7 @@ const Partner_Facture = (props) => {
|
|||
submenu_color_management("paiement");
|
||||
|
||||
/* if (document.getElementById("order_header_facturation")) {
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#104277";
|
||||
document.getElementById("order_header_facturation").style.backgroundColor = "#107758";
|
||||
document.getElementById("order_header_facturation").style.color = "white";
|
||||
}
|
||||
|
||||
|
@ -1613,7 +1613,7 @@ const Partner_Facture = (props) => {
|
|||
}
|
||||
|
||||
if (document.getElementById(current_menu)) {
|
||||
document.getElementById(current_menu).style.backgroundColor = "#104277";
|
||||
document.getElementById(current_menu).style.backgroundColor = "#107758";
|
||||
document.getElementById(current_menu).style.color = "white";
|
||||
document.getElementById(current_menu).style.fontWeight = "bold";
|
||||
}
|
||||
|
|
|
@ -393,7 +393,7 @@ const Partner_Prix_Achat = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>Groupe prix achat </DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Groupe prix achat </DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
<div className="session_caract_Dialog" > Code groupe de prix
|
||||
|
|
|
@ -1149,7 +1149,7 @@ const Partner_Product_Service = (props) => {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
|
|
@ -0,0 +1,428 @@
|
|||
.partner_header_automatic_files {
|
||||
|
||||
@media only screen and (max-width: 600px) {
|
||||
|
||||
position: fixed;
|
||||
/* margin-top: 22px;*/
|
||||
width: 100%;
|
||||
opacity: 1;
|
||||
background: #FFF;
|
||||
|
||||
.header_new_2025 {
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
width: 100%;
|
||||
padding-left: 50px;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 40px;
|
||||
margin-left: 2rem;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 96px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cta-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.cta-buttons {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.hide_on_mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 10px 15px;
|
||||
border-radius: 200px;
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
line-height: 126%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: transparent;
|
||||
color: #4b5162;
|
||||
border: 1px solid #c7c9ce;
|
||||
}
|
||||
|
||||
.separator {
|
||||
width: 1px;
|
||||
height: 12px;
|
||||
background-color: rgba(23, 23, 23, 0.1);
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.login-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.login-link span {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #171717;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 601px) and (max-width: 991px) {
|
||||
.header_new_2025 {
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
padding: 14px 48px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
max-width: 60%;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 96px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #4b5162;
|
||||
text-decoration: none;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
.cta-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 3px;
|
||||
}
|
||||
|
||||
.cta-buttons {
|
||||
display: flex;
|
||||
gap: 1px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 5px 8px;
|
||||
border-radius: 200px;
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 126%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: transparent;
|
||||
color: #4b5162;
|
||||
border: 1px solid #c7c9ce;
|
||||
}
|
||||
|
||||
.separator {
|
||||
width: 1px;
|
||||
height: 12px;
|
||||
background-color: rgba(23, 23, 23, 0.1);
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.login-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.login-link span {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #171717;
|
||||
line-height: 122%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
||||
.header_new_2025 {
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
padding: 14px 48px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
width: 70%;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 96px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #4b5162;
|
||||
text-decoration: none;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
.cta-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.cta-buttons {
|
||||
display: flex;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 3px 10px;
|
||||
border-radius: 200px;
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
line-height: 126%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: transparent;
|
||||
color: #4b5162;
|
||||
border: 1px solid #c7c9ce;
|
||||
}
|
||||
|
||||
.separator {
|
||||
width: 1px;
|
||||
height: 5px;
|
||||
background-color: rgba(23, 23, 23, 0.1);
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.login-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.login-link span {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #171717;
|
||||
line-height: 122%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (min-width: 1200px) {
|
||||
.header_new_2025 {
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
padding: 14px 48px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 40px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 96px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 24px;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #4b5162;
|
||||
text-decoration: none;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
.cta-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.cta-buttons {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 12px 24px;
|
||||
border-radius: 200px;
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
line-height: 126%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: transparent;
|
||||
color: #4b5162;
|
||||
border: 1px solid #c7c9ce;
|
||||
}
|
||||
|
||||
.separator {
|
||||
width: 1px;
|
||||
height: 12px;
|
||||
background-color: rgba(23, 23, 23, 0.1);
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.login-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.login-link span {
|
||||
font-family: 'DM Sans', sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #171717;
|
||||
line-height: 122%;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,322 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import './Partner_Header.css';
|
||||
import moment from "moment";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
|
||||
import Header_User from '../../img_new_design_2025/header_user.png';
|
||||
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 Button from '@mui/material/Button';
|
||||
import { useCookies } from "react-cookie";
|
||||
|
||||
|
||||
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 (
|
||||
<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 Partner_Header = () => {
|
||||
const history = useHistory();
|
||||
const classes = useStyles();
|
||||
const [userconnected, setuserconnected] = useState("0");
|
||||
const [someoneconnected, setsomeoneconnected] = useState("0");
|
||||
const [partnerconnected, setpartnerconnected] = useState("0");
|
||||
const stored_user = getCookie('tokenmysych');
|
||||
const stored_part = getCookie('tokenmysypart');
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
|
||||
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
|
||||
const [PartnerMenu, setPartnerMenu] = React.useState(null);
|
||||
const [AccountMenu, setAccountMenu] = React.useState(null);
|
||||
const [ProduitMenu, setproduitMenu] = React.useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
|
||||
}, []);
|
||||
|
||||
const handleAccountCreation = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/signup/")
|
||||
};
|
||||
|
||||
|
||||
const handleMyAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/mysy-user-account")
|
||||
};
|
||||
|
||||
const handleAccountConnexion = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/signin/")
|
||||
};
|
||||
|
||||
|
||||
const handleMyPartnerAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/Partner")
|
||||
};
|
||||
|
||||
|
||||
function handleAccountConnexion_v2() {
|
||||
|
||||
if (String(userconnected) === String("1")) {
|
||||
handleMyAccount();
|
||||
}
|
||||
else if (String(partnerconnected) === String("1")) {
|
||||
handleMyPartnerAccount();
|
||||
}
|
||||
}
|
||||
|
||||
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
|
||||
const Dialog_1_handleClose = () => {
|
||||
};
|
||||
|
||||
const Dialog_1_handleClose_buton = () => {
|
||||
setDialog_1_open(false);
|
||||
};
|
||||
|
||||
function part_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
|
||||
if (typeof (stored_part) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysypart", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
|
||||
setpartCookie("mysy_session_display_view", "", { path: '/' });
|
||||
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
|
||||
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
|
||||
|
||||
removeCookie("tokenmysypart", { path: '/' });
|
||||
removeCookie("mysy_session_display_view", { path: '/' });
|
||||
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
|
||||
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
setsomeoneconnected("0");
|
||||
setDialog_1_open(false);
|
||||
history.push("/recherche-formation");
|
||||
}
|
||||
|
||||
function user_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
if (typeof (stored_user) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysych", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
removeCookie("tokenmysych", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
history.push("/ent_student");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='partner_header_automatic_files'>
|
||||
|
||||
{/*** GESTION Deconnexion */}
|
||||
<Dialog
|
||||
open={Dialog_1_open}
|
||||
// onClose={Dialog_1_handleClose}
|
||||
className="displaypartnersession"
|
||||
static
|
||||
onClose={() => null}
|
||||
|
||||
PaperProps={{
|
||||
|
||||
|
||||
className: classes.paper, // Apply the paper style
|
||||
style: {
|
||||
overflowY: 'unset',
|
||||
position: 'absolute',
|
||||
top: '20rem',
|
||||
margin: "2px",
|
||||
},
|
||||
}}
|
||||
hideBackdrop={true}
|
||||
disableScrollLock
|
||||
classes={{
|
||||
paper: classes.dialog
|
||||
}}
|
||||
|
||||
PaperComponent={PaperComponent}
|
||||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion de l'Intranet<br />
|
||||
|
||||
|
||||
</DialogContentText>
|
||||
|
||||
</DialogContent>
|
||||
|
||||
<DialogActions>
|
||||
|
||||
<IconButton
|
||||
//autoFocus
|
||||
onClick={Dialog_1_handleClose_buton}
|
||||
color="primary"
|
||||
className={classes.customizedButton}
|
||||
>
|
||||
<CancelPresentationIcon />
|
||||
</IconButton>
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
<Button
|
||||
|
||||
onClick={(e) => {
|
||||
if (partnerconnected && String(partnerconnected) === '1')
|
||||
part_logout_confirmation();
|
||||
|
||||
if (userconnected && String(userconnected) === '1')
|
||||
user_logout_confirmation();
|
||||
|
||||
}}
|
||||
|
||||
className="bton_enreg_dialog">Deconnexion</Button>
|
||||
</div>
|
||||
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Dialog_1_handleClose_buton} className="bton_annule_dialog" >Annuler</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</DialogActions>
|
||||
</Dialog>
|
||||
|
||||
{/*** Fin GESTION Deconnexion */}
|
||||
|
||||
<header className="header_new_2025">
|
||||
<div className="header-content">
|
||||
<div className="logo-menu">
|
||||
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
|
||||
// e.preventDefault();
|
||||
history.push("/");
|
||||
}} />
|
||||
|
||||
<nav className="menu-list">
|
||||
<a href="/apropos" className="menu-link">À propos</a>
|
||||
<a href="/fonctionnalites" className="menu-link">Fonctionnalités</a>
|
||||
<a href="#" className="menu-link">
|
||||
<nav onClick={(e) => {
|
||||
history.push("/tarif/#debut");
|
||||
// window.open("/tarif/#debut", "_self");
|
||||
}}>Tarifs </nav>
|
||||
</a>
|
||||
<a href="/Recherche-Article-formation" className="menu-link">Blog</a>
|
||||
<div className="separator"></div>
|
||||
<a href="/marketplace" className="menu-link">Marketplace</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div className="cta-login">
|
||||
<div className="cta-buttons">
|
||||
<button className="btn btn-primary" onClick={(e) => {
|
||||
e.preventDefault();
|
||||
var date2 = new Date();
|
||||
const format2 = "YYYY-MM";
|
||||
var dateTime2 = moment(date2).format(format2);
|
||||
window.open(
|
||||
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
|
||||
'_blank'
|
||||
);
|
||||
}}>Réserver une démo</button>
|
||||
|
||||
</div>
|
||||
<div className="cta-buttons hide_on_mobile">
|
||||
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
|
||||
|
||||
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
|
||||
|
||||
</div>
|
||||
<div className="separator hide_on_mobile"></div>
|
||||
{String(someoneconnected) !== String("1") && <div className="login-link hide_on_mobile" onClick={handleAccountConnexion}>
|
||||
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
|
||||
<span className='hide_on_mobile'>Connexion</span>
|
||||
</div>}
|
||||
|
||||
{String(someoneconnected) === String("1") && <div className="login-link hide_on_mobile" onClick={(e) => setDialog_1_open(true)}>
|
||||
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
|
||||
<span className='hide_on_mobile'>Deconnexion</span>
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
</div >
|
||||
</header >
|
||||
</div >
|
||||
);
|
||||
};
|
||||
|
||||
export default Partner_Header;
|
||||
|
|
@ -1,38 +1,21 @@
|
|||
import React, { useState, useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||
import { FacebookLoginButton, GoogleLoginButton } from "react-social-login-buttons";
|
||||
//import { getCookie, setCookie, removeCookie } from 'react-use-cookie';
|
||||
import { Helmet } from "react-helmet";
|
||||
import { useCookies } from "react-cookie";
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import { Button, } from "reactstrap";
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
||||
import Popup from 'reactjs-popup';
|
||||
import 'reactjs-popup/dist/index.css';
|
||||
import axios from "axios";
|
||||
import { useParams } from 'react-router-dom'
|
||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
||||
import Footer from "./Fotter";
|
||||
import MenuItem from "@material-ui/core/MenuItem";
|
||||
import Button2 from "@material-ui/core/Button";
|
||||
import Menu from "@material-ui/core/Menu";
|
||||
import Header from "./Header";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import { AiOutlineEdit, AiOutlinePlusCircle, AiTwotoneDelete } from "react-icons/ai";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
||||
import Box from '@mui/material/Box';
|
||||
import InputLabel from '@mui/material/InputLabel';
|
||||
import InputAdornment from '@mui/material/InputAdornment';
|
||||
import FormControl from '@mui/material/FormControl';
|
||||
import TextField from '@mui/material/TextField';
|
||||
import AccountCircle from '@mui/icons-material/AccountCircle';
|
||||
import DatePicker from "react-datepicker";
|
||||
import "react-datepicker/dist/react-datepicker.css";
|
||||
import moment from "moment";
|
||||
import { set } from "date-fns";
|
||||
|
||||
|
||||
|
||||
function Pricing() {
|
||||
|
@ -50,7 +33,7 @@ function Pricing() {
|
|||
{ field: 'price_line_id', headerName: '_id', hide: true },
|
||||
{ field: 'client', headerName: 'Client', width: 150, flex: 1 },
|
||||
{ field: 'client_recid', headerName: 'Client Id', width: 150, hide: true },
|
||||
{ field: 'discount', headerName: 'Réduction (%)', width: 100, flex: 1 },
|
||||
{ field: 'discount', headerName: 'Réduction (%)', width: 100, flex: 1 },
|
||||
{ field: 'date_debut', headerName: 'Date début', width: 150, flex: 1 },
|
||||
{ field: 'date_fin', headerName: 'Date Fin', width: 150, flex: 1 },
|
||||
|
||||
|
@ -328,14 +311,14 @@ function Pricing() {
|
|||
|
||||
if (document.getElementsByName("new_sessiondatedebut") && document.getElementsByName("new_sessiondatedebut")[0]) {
|
||||
document.getElementsByName("new_sessiondatedebut")[0].disabled = true;
|
||||
document.getElementsByName("new_sessiondatedebut")[0].style.backgroundColor = "#ECEFF1";
|
||||
document.getElementsByName("new_sessiondatedebut")[0].style.backgroundColor = "#ECEFF1";
|
||||
|
||||
}
|
||||
|
||||
if (document.getElementById("new_sessiondatefin")) {
|
||||
document.getElementById("new_sessiondatefin").disabled = true;
|
||||
document.getElementById("new_sessiondatefin").style.backgroundColor = "#ECEFF1";
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -395,6 +378,11 @@ function Pricing() {
|
|||
GetClientPrices();
|
||||
GetClientlinked();
|
||||
GetClientClass();
|
||||
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: "smooth",
|
||||
});
|
||||
}, []);
|
||||
|
||||
let [sessionStatus, setsessionStatus] = useState(false);
|
||||
|
@ -828,8 +816,8 @@ function Pricing() {
|
|||
|
||||
{String(iseditclientprice) === "1" && <div>
|
||||
Modification du prix
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }} onChange={DataUpdated_exist_price}>
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }} onChange={DataUpdated_exist_price}>
|
||||
|
||||
<TextField
|
||||
required
|
||||
|
@ -866,7 +854,7 @@ function Pricing() {
|
|||
variant="standard"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
|
@ -951,8 +939,8 @@ function Pricing() {
|
|||
|
||||
{String(isaddprice) === "1" && <div>
|
||||
Creation d'un nouveau prix client
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }} onChange={DataUpdated}>
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }} onChange={DataUpdated}>
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
|
@ -998,7 +986,7 @@ function Pricing() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
|
|
|
@ -226,7 +226,7 @@ const QuiSommesNous_v4 = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>Contactez Nous</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Contactez Nous</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
|
|
@ -2771,7 +2771,7 @@ const Recherche_new_v2 = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>Contactez Nous</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Contactez Nous</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
|
||||
|
||||
|
@ -2910,7 +2910,7 @@ const Recherche_new_v2 = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion
|
||||
|
|
|
@ -2605,7 +2605,7 @@ const Recherche_new_v3 = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion
|
||||
|
|
|
@ -2617,7 +2617,7 @@ const Recherche_new_v4 = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion
|
||||
|
|
|
@ -0,0 +1,460 @@
|
|||
import React, { useState, useEffect } from "react";
|
||||
import UpdateUserInfo from "../components/UpdateUserInfo";
|
||||
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
|
||||
import profileimg from "../mysy_img/MYSY-profil-2.png";
|
||||
import Button from '@mui/material/Button';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import UserHistoryRecherche from "../components/UserHistoryRecherche";
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import { Helmet } from "react-helmet";
|
||||
import { useCookies } from "react-cookie";
|
||||
import axios from "axios";
|
||||
import { getCookie, } from 'react-use-cookie';
|
||||
|
||||
import UpgradeToPro from "./UpgradeToPro"
|
||||
import Profil_Objectif from "./ProfilObjectif";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import { FaHandPointRight } from "react-icons/fa";
|
||||
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_formations");
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
|
||||
const [result, setResult] = useState("");
|
||||
const [myApiResponse, setmyApiResponse] = useState("");
|
||||
const stored_user = getCookie('tokenmysych');
|
||||
const history = useHistory();
|
||||
const [country_code, setcountry_code] = useState("");
|
||||
const [country_name, setcountry_name] = useState("");
|
||||
const [city, setcity] = useState("");
|
||||
const [postal, setpostal] = useState("");
|
||||
const [latitude, setlatitude] = useState("");
|
||||
const [longitude, setlongitude] = useState("");
|
||||
const [IPv4, setIPv4] = useState("");
|
||||
const [state, setstate] = useState("");
|
||||
const [userimgprofil, setuserimgprofil] = useState();
|
||||
const [userIp, setuserIp] = useState("");
|
||||
const [username, setusername] = useState("");
|
||||
const [migratedaccount, setmigratedaccount] = useState("0");
|
||||
|
||||
const apiUrl = process.env.REACT_APP_API_URL;
|
||||
const formData = new FormData();
|
||||
|
||||
//alert("stored_user = "+stored_user);
|
||||
const location = useLocation();
|
||||
useEffect(() => {
|
||||
|
||||
var list_menu = ["affichage", "recherche", "upgradecompte", "profil_objectif", "mes_factures", "mes_documents"]
|
||||
|
||||
// getImage();
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
//alert(" début puch");
|
||||
history.push("/ent_student");
|
||||
}
|
||||
|
||||
|
||||
async function fetchData() {
|
||||
const result = await axios('https://geolocation-db.com/json/',);
|
||||
//alert(result.data.IPv4);
|
||||
setuserIp(result.data.IPv4);
|
||||
setcountry_code(result.data.country_code);
|
||||
setcountry_name(result.data.country_name);
|
||||
setcity(result.data.city);
|
||||
setpostal(result.data.postal);
|
||||
setlatitude(result.data.latitude);
|
||||
setlongitude(result.data.longitude);
|
||||
setIPv4(result.data.IPv4);
|
||||
setstate(result.data.state);
|
||||
setuserIp(result.data.IPv4);
|
||||
}
|
||||
GetUserNameFromToken();
|
||||
|
||||
fetchData();
|
||||
|
||||
|
||||
if (location && location.state && location.state.menu) {
|
||||
// displayProfil_Objectif();
|
||||
}
|
||||
|
||||
if (location && location.state && location.state.firstconnexion) {
|
||||
setfirstConnexion(location.state.firstconnexion);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}, []);
|
||||
|
||||
const [myimage, setmyimage] = useState();
|
||||
const [isimage, setisimage] = useState();
|
||||
|
||||
function getImage(e) {
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/getRecodedImage/";
|
||||
var form = new FormData();
|
||||
form.append("token", stored_user);
|
||||
form.append("type", "user");
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
if (res.data.status != "False") {
|
||||
//console.log(" getImage : In test res.data.status = " + res.data.status);
|
||||
//console.log(" getImage: res.data.message.img = " + res.data.message);
|
||||
if (res.data.message.img.length > 0) {
|
||||
setisimage("True");
|
||||
}
|
||||
else {
|
||||
setisimage("False");
|
||||
}
|
||||
setmyimage(res.data.message.img);
|
||||
var ch_img = "data:image/png;base64," + res.data.message.img;
|
||||
setuserimgprofil(ch_img);
|
||||
}
|
||||
else {
|
||||
//console.log(" In Erreur res.data.status = " + res.data.status);
|
||||
//console.log(" In Erreur res.data.message = " + res.data.message);
|
||||
setisimage("False");
|
||||
setuserimgprofil(profileimg);
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.warn('Not good man :( mysearchtext = ');
|
||||
setisimage("False");
|
||||
setuserimgprofil(profileimg);
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
const [firstConnexion, setfirstConnexion] = useState("");
|
||||
|
||||
|
||||
function logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
if (typeof (stored_user) != "undefined") {
|
||||
removeCookie('tokenmysych', { path: '/' });
|
||||
history.push("/ent_student");
|
||||
}
|
||||
}
|
||||
|
||||
function logout() {
|
||||
confirmAlert({
|
||||
title: 'Deconnexion ?',
|
||||
message: 'Confirmez la deconnexion',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => logout_confirmation()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
function funct_menu_mes_formations() {
|
||||
setmenu("mes_formations");
|
||||
}
|
||||
|
||||
function funct_menu_mon_planning() {
|
||||
setmenu("planning");
|
||||
}
|
||||
|
||||
const displayProfil_Modules_Mes_Documents = () => {
|
||||
setmenu("modules_mes_documents");
|
||||
};
|
||||
|
||||
const upgradetopro = () => {
|
||||
setmenu("upgradecompte");
|
||||
};
|
||||
|
||||
const displayPersoInfo = () => {
|
||||
setmenu("affichage");
|
||||
};
|
||||
|
||||
|
||||
|
||||
const [connected_user_data, setconnected_user_data] = useState();
|
||||
|
||||
function GetUserNameFromToken(event) {
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
form.append("token", stored_user);
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_user_account/";
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
// console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
|
||||
// console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
|
||||
if (String(res.data.status) === String("true")) {
|
||||
|
||||
setusername(JSON.parse(res.data.message).email);
|
||||
|
||||
|
||||
if (JSON.parse(res.data.message).type && String(JSON.parse(res.data.message).type) === "student") {
|
||||
if (JSON.parse(res.data.message).apprenant_id) {
|
||||
setapprenant_id(JSON.parse(res.data.message).apprenant_id);
|
||||
}
|
||||
}
|
||||
|
||||
setconnected_user_data(JSON.parse(res.data.message));
|
||||
|
||||
}
|
||||
else {
|
||||
//console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
|
||||
//console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
|
||||
//setmyApiResponse("false");
|
||||
//setmyApimyApiMessage("")
|
||||
}
|
||||
|
||||
|
||||
}).catch((error) => {
|
||||
console.warn('In GetUserNameFromToken Not good man :( mysearchtext = ', error);
|
||||
//setmyApiResponse("false");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
function finaldeleteuseraccount(e) {
|
||||
|
||||
var form = new FormData();
|
||||
form.append("token", stored_user);
|
||||
// Ajout des info IP user
|
||||
form.append("user_ip", IPv4);
|
||||
form.append("user_country_code", country_code);
|
||||
form.append("user_country_name", country_name);
|
||||
form.append("user_city", city);
|
||||
form.append("user_postal", postal);
|
||||
form.append("user_latitude", latitude);
|
||||
form.append("user_longitude", longitude);
|
||||
form.append("user_state", state);
|
||||
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/send_mail_delete_user/";
|
||||
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
if (String(res.data.status) != String("false")) {
|
||||
//console.log(" In test res.data.status = " + res.data.status);
|
||||
//console.log(" In test res.data.message = " + res.data.message);
|
||||
setmyApiResponse("true");
|
||||
setResult(res.data.message)
|
||||
alert(res.data.message);
|
||||
|
||||
}
|
||||
else {
|
||||
//console.log(" In test res.data.status = " + res.data.status);
|
||||
//console.log(" In test res.data.message = " + res.data.message);
|
||||
setmyApiResponse("false");
|
||||
//setmyApimyApiMessage("")
|
||||
}
|
||||
|
||||
|
||||
}).catch((error) => {
|
||||
console.warn('Not good man :( mysearchtext = ');
|
||||
setmyApiResponse("false");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function deletemyaccount(e) {
|
||||
confirmAlert({
|
||||
title: 'Suppremier votre compte',
|
||||
message: 'Cette action va supprimer toutes vos données, Confirmez-vous la suppression du compte ?',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => finaldeleteuseraccount()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
const [selectedFile, setSelectedFile] = useState();
|
||||
const [isSelected, setIsSelected] = useState(false);
|
||||
const [isnewimage, setisnewimage] = useState();
|
||||
|
||||
const [apprenant_id, setapprenant_id] = useState("");
|
||||
|
||||
|
||||
const changeHandler = (event) => {
|
||||
let file_size = event.target.files[0].size;
|
||||
|
||||
//or if you like to have name and type
|
||||
let file_name = event.target.files[0].name;
|
||||
let file_type = event.target.files[0].type;
|
||||
|
||||
|
||||
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
|
||||
if (file_size > 100000) {
|
||||
alert("L'image doit faire moins de 100 Kilo Octets");
|
||||
return;
|
||||
}
|
||||
setSelectedFile(event.target.files[0]);
|
||||
setIsSelected(true);
|
||||
setuserimgprofil(URL.createObjectURL(event.target.files[0]));
|
||||
};
|
||||
|
||||
function sendImage(e) {
|
||||
formData.append('File', selectedFile);
|
||||
formData.append("token", stored_user);
|
||||
formData.append("type", "user");
|
||||
// formData.append("apprenant_id", apprenant_id);
|
||||
fetch(
|
||||
process.env.REACT_APP_API_URL + "myclass/api/recordImage/",
|
||||
{
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
}
|
||||
).then((response) => response.json())
|
||||
.then((result) => {
|
||||
//console.log('Success:', result['message']);
|
||||
setIsSelected(false);
|
||||
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error:');
|
||||
setIsSelected(true);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<div className="account" style={{ background: '#f4f4fb' }}>
|
||||
|
||||
|
||||
<Helmet>
|
||||
<title>Création compte MySy Trainig Technology</title>
|
||||
<meta name="description" content="Éditeur Français de logiciels pour organisme de formation. Avec solutions de E-Learning, gestion administrative et gestion relation client nous accompagnons les organismes de formation à réaliser l’audit QUALIOPI en toute sérénité. Nous sommes les moins cher du marché. Nous vous accompagnons automatiser vos process : inscription, évaluation, émargement (qr-code), Check-list QUALIOPI, Personnalisation et édition documents, Gestion formateurs, Catalogue formations personnalisé" />
|
||||
<meta name="robots" content="index,follow" />
|
||||
<meta name="title" content="Création compte MySy Trainig Technology" />
|
||||
<link rel="canonical" href={window.location.href} />
|
||||
</Helmet>
|
||||
|
||||
<h1 style={{ fontSize: '0.1px', opacity: '0' }}>Éditeur Français de logiciels pour organisme de formation. Avec solutions de E-Learning, gestion administrative et gestion relation client nous accompagnons les organismes de formation à réaliser l’audit QUALIOPI en toute sérénité. Nous sommes les moins cher du marché. Nous vous accompagnons automatiser vos process : inscription, évaluation, émargement (qr-code), Check-list QUALIOPI, Personnalisation et édition documents,
|
||||
Gestion formateurs, Catalogue formations personnalisé </h1>
|
||||
|
||||
|
||||
|
||||
<div className="div_mobile">
|
||||
<div>
|
||||
<h1 className="h1_transparent">Intranet Apprenant - Connexion MySy Training Technology </h1>
|
||||
</div>
|
||||
<div>
|
||||
<div className="div_gauche">
|
||||
<div>
|
||||
<img class="img-responsive img_user" src={userimgprofil} align="center" alt="MySy Training profile image" />
|
||||
|
||||
{!isSelected && <div className="nonlable">
|
||||
<input type="file" id="files" accept="image/*" onChange={changeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} />
|
||||
<label for="files" className="label">Changer image</label>
|
||||
</div>}
|
||||
|
||||
{isSelected && <div className="nonlable">
|
||||
<Button variant="outlined" onClick={sendImage} >Enregistrer</Button>
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
<div className="nom_prenom"> {username && <b> {username} </b>}
|
||||
{!username && <b> xxxx </b>} </div>
|
||||
<hr className="my_hr" />
|
||||
|
||||
{/** Menu pour un utilisateur de type 'user'. Exemple, l'intranet du client d'un client */}
|
||||
|
||||
|
||||
|
||||
{/** Menu pour un utilisateur NON type 'user' exemple un apprenant */}
|
||||
{connected_user_data && connected_user_data.type &&
|
||||
String(connected_user_data.type) === "student" &&
|
||||
<div>
|
||||
|
||||
|
||||
<div className="sousmenu" onClick={displayPersoInfo}> INFORMATIONS PERSONNELLES</div>
|
||||
<hr className="my_hr" />
|
||||
<div className="sousmenu" onClick={funct_menu_mes_formations}> MES FORMATIONS</div>
|
||||
<hr className="my_hr" />
|
||||
{/* <div className="sousmenu" onClick={funct_menu_mon_planning}> MON PLANNING</div>
|
||||
<hr className="my_hr" />
|
||||
<div className="sousmenu" onClick={"displayProfil_Objectif"}> MES NOTES</div>
|
||||
<hr className="my_hr" />
|
||||
<div className="sousmenu" onClick={"displayProfil_Objectif"}> MES DOCUMENTS</div>
|
||||
<hr className="my_hr" />
|
||||
<div className="sousmenu" onClick={displayProfil_Modules_Mes_Documents}> MODULE TOUS DOCUMENTS</div>
|
||||
<hr className="my_hr" />
|
||||
*/}
|
||||
|
||||
{/* <div className="sousmenu" onClick={deletemyaccount}> SUPPRIMER MON COMPTE</div>
|
||||
<hr className="my_hr" />*/}
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
<div className="div_droite" style={{ border: 'none' }}>
|
||||
|
||||
{String(firstConnexion) === "1" &&
|
||||
<div className="div_droite firstConnexion">
|
||||
<div className="firstConnexion_text">
|
||||
<b>Cher Utilisateur, c'est votre première connexion, </b> <br /> <br />
|
||||
Nous sommes ravis de vous accueillir. Nous vous invitons à modifier votre mot de passe à partir du menu <i>"MES INFORMATIONS"</i> ==> Pavé <i>"SECURITE"</i> puis <i>"MODIFIER"</i> <br /><br />
|
||||
<Button onClick={(e) => setfirstConnexion()} className="firstConnexion_bton"> <FaHandPointRight /> Fermer</Button><br />
|
||||
<br /> Merci.
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
{String(myApiResponse) === String("true") && <div className="okUpdateData">
|
||||
{result}
|
||||
|
||||
</div>}
|
||||
|
||||
{String(myApiResponse) !== String("true") && <div className="koUpdateData">
|
||||
{result}
|
||||
|
||||
</div>}
|
||||
|
||||
{connected_user_data && connected_user_data.type &&
|
||||
<h3 style={{ fontFamily: 'DM Sans', textAlign: 'center' }}> Espace numérique de travail </h3>}
|
||||
|
||||
|
||||
{String(menu) === String("affichage") && <UpdateUserInfo apprenant_id={apprenant_id}/>}
|
||||
|
||||
{String(menu) === String("recherche") && <UserHistoryRecherche />}
|
||||
|
||||
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
|
||||
|
||||
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
|
||||
|
||||
{String(menu) === String("mes_formations") &&
|
||||
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
|
||||
/>}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Student_Account;
|
||||
|
|
@ -2587,7 +2587,7 @@ const Subdomain_Recherche_new_v2 = () => {
|
|||
className="displaypartnersession"
|
||||
>
|
||||
|
||||
<DialogTitle>MySy Information</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion
|
||||
|
|
|
@ -3,7 +3,7 @@ import axios from "axios";
|
|||
import { Helmet } from "react-helmet";
|
||||
import SideBar from "./sidebar";
|
||||
import ReactPlayer from 'react-player'
|
||||
import { Slide } from 'react-slideshow-image';
|
||||
import { Slide } from 'react-slideshow-image';
|
||||
import { Zoom } from 'react-slideshow-image';
|
||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
||||
import 'react-slideshow-image/dist/styles.css'
|
||||
|
@ -941,7 +941,7 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
|
|||
<Dialog
|
||||
open={open}
|
||||
onClose={handleClose}>
|
||||
<DialogTitle>Subscribe</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Subscribe</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
To subscribe to this website, please enter your email address here. We
|
||||
|
@ -1192,7 +1192,7 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
|
|||
Cherif BALDE<br />
|
||||
</div>
|
||||
<div className="div_function" style={{ "fontSize": '20px', fontFamily:'DM Sans' }}>
|
||||
Directeur Général <br/> MySy Training / HELYOS
|
||||
Directeur Général <br/> MySy Training / ELYOS
|
||||
</div>
|
||||
</div>
|
||||
<div className="ch_div_centre">
|
||||
|
@ -1227,7 +1227,7 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
|
|||
Patrick PIPAZ<br />
|
||||
</div>
|
||||
<div className="div_function" style={{ "fontSize": '20px', fontFamily:'DM Sans' }}>
|
||||
Responsable développement <br/> MySy Training / HELYOS
|
||||
Responsable Commercial <br/> MySy Training / ELYOS
|
||||
</div>
|
||||
</div>
|
||||
<div className="ch_div_centre">
|
||||
|
|
|
@ -1463,7 +1463,7 @@ const TestUrl_New = (props) => {
|
|||
<Dialog
|
||||
open={open}
|
||||
onClose={handleClose}>
|
||||
<DialogTitle>Subscribe</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Subscribe</DialogTitle>
|
||||
<DialogContent>
|
||||
<DialogContentText>
|
||||
{dialogMessage}
|
||||
|
|
|
@ -962,8 +962,6 @@ function UpdateParnterInfo(props) {
|
|||
form.append("indicateur_4_taille", p_indicateur4_taille);
|
||||
form.append("indicateur_4_color", p_indicateur4_color);
|
||||
|
||||
|
||||
|
||||
form.append("contact_public_email", p_contact_public_email);
|
||||
form.append("contact_public_telephone", p_contact_public_telephone);
|
||||
|
||||
|
@ -975,6 +973,21 @@ function UpdateParnterInfo(props) {
|
|||
form.append("indicateur_4_gras", "400");
|
||||
|
||||
|
||||
if (partner_catalog_pub_url)
|
||||
form.append("partner_catalog_pub_url", partner_catalog_pub_url);
|
||||
else
|
||||
form.append("partner_catalog_pub_url", "");
|
||||
|
||||
if (partner_intranet_pub_url)
|
||||
form.append("partner_intranet_pub_url", partner_catalog_pub_url);
|
||||
else
|
||||
form.append("partner_intranet_pub_url", "");
|
||||
|
||||
if (partner_ent_student_url)
|
||||
form.append("partner_ent_student_url", partner_ent_student_url);
|
||||
else
|
||||
form.append("partner_ent_student_url", "");
|
||||
|
||||
|
||||
form.append("_id", selected_catalog_pub_config_id);
|
||||
|
||||
|
@ -1737,6 +1750,7 @@ function UpdateParnterInfo(props) {
|
|||
|
||||
const [partner_catalog_pub_url, setpartner_catalog_pub_url] = useState("");
|
||||
const [partner_intranet_pub_url, setpartner_intranet_pub_url] = useState("");
|
||||
const [partner_ent_student_url, setpartner_ent_student_url] = useState("");
|
||||
|
||||
async function submenu_donnee_catalog_pub() {
|
||||
Get_Partner_Catalog_Pub_Config();
|
||||
|
@ -1744,9 +1758,11 @@ function UpdateParnterInfo(props) {
|
|||
var new_nom = (p_nom).replace(/[^0-9a-z]/gi, '').toLocaleLowerCase();
|
||||
var new_catalog_url = window.location.protocol + "//" + new_nom + "." + process.env.REACT_APP_PART_PUB_CATALOG_DOMAIN + "moncatalog";
|
||||
var new_intranet_url = window.location.protocol + "//" + new_nom + "." + process.env.REACT_APP_PART_PUB_CATALOG_DOMAIN + "intranet";
|
||||
var new_ent_student = window.location.protocol + "//" + new_nom + "." + process.env.REACT_APP_PART_PUB_CATALOG_DOMAIN + "ent_student";
|
||||
|
||||
setpartner_catalog_pub_url(new_catalog_url);
|
||||
setpartner_intranet_pub_url(new_intranet_url);
|
||||
setpartner_ent_student_url(new_ent_student);
|
||||
|
||||
setsubmenu("submenu_donnee_catalog_pub");
|
||||
}
|
||||
|
@ -2175,7 +2191,7 @@ function UpdateParnterInfo(props) {
|
|||
}).catch((error) => {
|
||||
setLoading(false);
|
||||
console.warn('Not good man :( Get_Partner_Catalog_Pub_Config = ', error);
|
||||
alert(" Impossible de récuperer la configuration du catalogue public ")
|
||||
alert(" Impossible de récuperer la configuration de vos sites publics ")
|
||||
|
||||
})
|
||||
}
|
||||
|
@ -2602,16 +2618,16 @@ function UpdateParnterInfo(props) {
|
|||
form.append("_id", selected_catalog_pub_config_id);
|
||||
form.append("banniere_img", img_bg_file);
|
||||
|
||||
// console.log("Add_Update_Catalog_Pub_Banniere form == ", form);
|
||||
// console.log("Add_Update_Catalog_Pub_Banniere form == ", form);
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_Partner_Catalog_Pub_Config/";
|
||||
|
||||
// console.log("myurl== ", myurl);
|
||||
// console.log("myurl== ", myurl);
|
||||
|
||||
setLoading(true);
|
||||
axios.post(myurl, form).then(res => {
|
||||
setLoading(false);
|
||||
// console.log(" In Add_Update_Catalog_Pub_Banniere res.data.status = " + res.data.status);
|
||||
// console.log(" In Add_Update_Catalog_Pub_Banniere res.data.status = " + res.data.status);
|
||||
//console.log(" In Add_Update_Catalog_Pub_Banniere res.data.message r_class = " + res.data.message);
|
||||
|
||||
if (String(res.data.status) === String("true")) {
|
||||
|
@ -3362,7 +3378,7 @@ function UpdateParnterInfo(props) {
|
|||
|
||||
>
|
||||
|
||||
<DialogTitle> Choisir une couleur</DialogTitle>
|
||||
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Choisir une couleur</DialogTitle>
|
||||
<DialogContent className="DialogContent_color_pickup_width" >
|
||||
<DialogContentText>
|
||||
|
||||
|
@ -3429,7 +3445,7 @@ function UpdateParnterInfo(props) {
|
|||
{String(is_partner_admin_account) === "1" && <Button variant="outlined" onClick={submenu_donnee_facturation} className="detail_submenu" id='submenu_donnee_facturation' name='submenu_donnee_facturation'>DONNEES FACTURATION</Button>}
|
||||
<Button variant="outlined" onClick={submenu_donnee_securite} className="detail_submenu" id='submenu_donnee_securite' name='submenu_donnee_securite'>SECURITE</Button>
|
||||
{/*<Button variant="outlined" onClick={submenu_contact} className="detail_submenu" id='submenu_contact' name='submenu_contact'>Contact & Adresses</Button>*/}
|
||||
{String(is_partner_admin_account) === "1" && <Button variant="outlined" onClick={submenu_donnee_catalog_pub} className="detail_submenu" id='submenu_donnee_catalog_pub' name='submenu_donnee_catalog_pub'>CATALOG. PUB</Button>}
|
||||
{String(is_partner_admin_account) === "1" && <Button variant="outlined" onClick={submenu_donnee_catalog_pub} className="detail_submenu" id='submenu_donnee_catalog_pub' name='submenu_donnee_catalog_pub'>SITES PUBLICS</Button>}
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -3447,7 +3463,7 @@ function UpdateParnterInfo(props) {
|
|||
</div>}
|
||||
|
||||
{String(submenu).trim() === "submenu_donnee_catalog_pub" && <div className="training_data">
|
||||
<h3 style={{ fontFamily:'DM Sans' }}> Configuration du Catalogue public </h3>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Configuration des sites publics </h3>
|
||||
|
||||
|
||||
<div className="partner_catalog_pub">
|
||||
|
@ -3455,7 +3471,7 @@ function UpdateParnterInfo(props) {
|
|||
<div className="div_row">
|
||||
<TextField
|
||||
name="config_url"
|
||||
label="lien web (url) mon catalogue "
|
||||
label="lien web (url) Catalogue "
|
||||
className="texte_area"
|
||||
sx={{ m: 1, width: '48%' }}
|
||||
InputProps={{
|
||||
|
@ -3484,8 +3500,8 @@ function UpdateParnterInfo(props) {
|
|||
</div>
|
||||
<div className="div_row">
|
||||
<TextField
|
||||
name="config_url"
|
||||
label="lien web (url) mon intranet "
|
||||
name="config_url_intranet"
|
||||
label="lien web (url) Intranet "
|
||||
className="texte_area"
|
||||
sx={{ m: 1, width: '20%' }}
|
||||
InputProps={{
|
||||
|
@ -3513,6 +3529,40 @@ function UpdateParnterInfo(props) {
|
|||
</Button>
|
||||
|
||||
</div>
|
||||
|
||||
<div className="div_row">
|
||||
<TextField
|
||||
name="config_url_ent_student"
|
||||
label="lien web (url) Espace numérique de travail (ENT) "
|
||||
className="texte_area"
|
||||
sx={{ m: 1, width: '20%' }}
|
||||
InputProps={{
|
||||
startAdornment: (
|
||||
<InputAdornment position="start">
|
||||
<LanguageIcon />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
value={partner_ent_student_url}
|
||||
|
||||
/> <Button
|
||||
|
||||
onClick={(event) => {
|
||||
window.open(
|
||||
String(partner_ent_student_url),
|
||||
'_blank'
|
||||
);
|
||||
}}
|
||||
|
||||
style={{ marginTop: '10px' }}
|
||||
>
|
||||
<OpenInNewIcon />
|
||||
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div className="div_row">
|
||||
<hr className="hr_break" />
|
||||
</div>
|
||||
|
@ -3520,7 +3570,6 @@ function UpdateParnterInfo(props) {
|
|||
|
||||
{String(submenu_catalog_pub) === String("design") &&
|
||||
|
||||
|
||||
<div style={{ "border": "None" }}>
|
||||
|
||||
<div className="div_row">
|
||||
|
@ -4749,7 +4798,7 @@ function UpdateParnterInfo(props) {
|
|||
|
||||
{Partner_Catalog_Pub_banniere && String(Partner_Catalog_Pub_banniere).length > 20 && <div className="div_row" style={{ "border": "None" }}>
|
||||
Bannière actuelle : <br />
|
||||
<img src={Partner_Catalog_Pub_banniere} alt={""} className="img_bg_file_css" />
|
||||
<img src={Partner_Catalog_Pub_banniere} alt={""} className="img_bg_file_css" />
|
||||
<br />
|
||||
<br />
|
||||
<Button variant="contained" className="btn_enreg" onClick={Delete_Catalog_Pub_Banniere_Img}>Supprimer Bannière
|
||||
|
@ -6014,27 +6063,27 @@ function UpdateParnterInfo(props) {
|
|||
<div className="koUpdateData" style={{ "color": "orange", "textAlign": "center" }}> /!\ Pensez à enregistrer les modifications</div>
|
||||
</div>}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div className="div_row22">
|
||||
{fields1desabled == false && <div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
<Button variant="contained" color="success" className="div_row22 btn_enreg " onClick={RecordData}>Enregistrer</Button>
|
||||
</div>
|
||||
<div className="div_row_droite">
|
||||
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={annuler_change_user_data}>Annuler</Button>
|
||||
</div>
|
||||
{fields1desabled == false && <div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
<Button variant="contained" color="success" className="div_row22 btn_enreg " onClick={RecordData}>Enregistrer</Button>
|
||||
</div>
|
||||
<div className="div_row_droite">
|
||||
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={annuler_change_user_data}>Annuler</Button>
|
||||
</div>
|
||||
|
||||
}
|
||||
{fields1desabled == true &&
|
||||
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={enablefieds1}>Editer</Button>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div className="div_row"> </div>
|
||||
}
|
||||
{fields1desabled == true &&
|
||||
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={enablefieds1}>Editer</Button>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div className="div_row"> </div>
|
||||
|
||||
<div className="titre1"> Accès E-Learning </div>
|
||||
<div style={{ display: 'flex', flexDirection: 'row', gap: '20px', width: '100%', flexWrap: 'wrap', justifyContent: 'left' }} onChange={DataUpdated}>
|
||||
|
|
|
@ -21,9 +21,11 @@ import TwitterIcon from '@mui/icons-material/Twitter';
|
|||
import FacebookIcon from '@mui/icons-material/Facebook';
|
||||
import LinkedInIcon from '@mui/icons-material/LinkedIn';
|
||||
import axios from "axios";
|
||||
import { propsToClassKey } from "@mui/styles";
|
||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
||||
|
||||
|
||||
function UpdateUserInfo() {
|
||||
function UpdateUserInfo(props) {
|
||||
const history = useHistory();
|
||||
const [myApiResponse, setmyApiResponse] = useState("");
|
||||
const [result, setResult] = useState("");
|
||||
|
@ -118,6 +120,8 @@ function UpdateUserInfo() {
|
|||
var mylocaltraining = JSON.parse(res.data.message);
|
||||
if (mylocaltraining) {
|
||||
|
||||
console.log(" #### mylocaltraining === ", mylocaltraining)
|
||||
|
||||
if (mylocaltraining.adr_city) {
|
||||
document.getElementsByName("adr_city")[0].value = mylocaltraining.adr_city;
|
||||
document.getElementsByName("adr_city")[0].disabled = true;
|
||||
|
@ -173,14 +177,14 @@ function UpdateUserInfo() {
|
|||
document.getElementsByName("adr_street")[0].style.backgroundColor = "#ECEFF1";
|
||||
}
|
||||
|
||||
if (mylocaltraining.surname) {
|
||||
document.getElementsByName("surname")[0].value = mylocaltraining.surname;
|
||||
if (mylocaltraining.prenom) {
|
||||
document.getElementsByName("surname")[0].value = mylocaltraining.prenom;
|
||||
document.getElementsByName("surname")[0].disabled = true;
|
||||
document.getElementsByName("surname")[0].style.backgroundColor = "#ECEFF1";
|
||||
}
|
||||
|
||||
if (mylocaltraining.last_name) {
|
||||
document.getElementsByName("last_name")[0].value = mylocaltraining.last_name;
|
||||
if (mylocaltraining.nom) {
|
||||
document.getElementsByName("last_name")[0].value = mylocaltraining.nom;
|
||||
document.getElementsByName("last_name")[0].disabled = true;
|
||||
document.getElementsByName("last_name")[0].style.backgroundColor = "#ECEFF1";
|
||||
}
|
||||
|
@ -298,9 +302,11 @@ function UpdateUserInfo() {
|
|||
}
|
||||
|
||||
|
||||
const [isLoading, setLoading] = useState();
|
||||
|
||||
function RecordData() {
|
||||
const formData = new FormData();
|
||||
const url = process.env.REACT_APP_API_URL + "myclass/api/update_user_account/";
|
||||
const url = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_update_user_account/";
|
||||
|
||||
var adr_city = document.getElementsByName("adr_city")[0].value;
|
||||
var adr_zip = document.getElementsByName("adr_zip")[0].value;
|
||||
|
@ -310,8 +316,8 @@ function UpdateUserInfo() {
|
|||
var link_linkedin = document.getElementsByName("link_linkedin")[0].value;
|
||||
var link_twitter = document.getElementsByName("link_twitter")[0].value;
|
||||
var adr_street = document.getElementsByName("adr_street")[0].value;
|
||||
var surname = document.getElementsByName("surname")[0].value;
|
||||
var last_name = document.getElementsByName("last_name")[0].value;
|
||||
var prenom = document.getElementsByName("surname")[0].value;
|
||||
var nom = document.getElementsByName("last_name")[0].value;
|
||||
|
||||
|
||||
formData.append('token', stored_user);
|
||||
|
@ -322,11 +328,13 @@ function UpdateUserInfo() {
|
|||
formData.append('link_facebook', link_facebook);
|
||||
formData.append('link_twitter', link_twitter);
|
||||
formData.append('adr_street', adr_street);
|
||||
formData.append('surname', surname);
|
||||
formData.append('last_name', last_name);
|
||||
formData.append('prenom', prenom);
|
||||
formData.append('nom', nom);
|
||||
formData.append('link_linkedin', link_linkedin);
|
||||
|
||||
formData.append('apprenant_id', props.apprenant_id);
|
||||
|
||||
setLoading(true);
|
||||
fetch(
|
||||
url,
|
||||
{
|
||||
|
@ -336,22 +344,39 @@ function UpdateUserInfo() {
|
|||
)
|
||||
.then((response) => response.json())
|
||||
.then((result) => {
|
||||
setLoading(false);
|
||||
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
|
||||
setmyApiResponse(result['status']);
|
||||
setResult(result['message']);
|
||||
if (String(result['status']) === String("true")) {
|
||||
settestval("true");
|
||||
desablefield1();
|
||||
}else if (String(result['status']) === String("Err_Connexion")) {
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(result['message']);
|
||||
setalert_type("success");
|
||||
|
||||
} else if (String(result['status']) === String("false")) {
|
||||
setmyApiResponse("false");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(result['message']);
|
||||
setalert_type("error");
|
||||
}
|
||||
|
||||
else if (String(result['status']) === String("Err_Connexion")) {
|
||||
alert('Erreur: ' + result['message']);
|
||||
history.push("/Connexion");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
.catch((error) => {
|
||||
setLoading(false);
|
||||
console.error('Error:', error);
|
||||
setmyApiResponse("false");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible de mettre à jour les données");
|
||||
setalert_type("error");
|
||||
});
|
||||
|
||||
|
||||
|
@ -396,7 +421,7 @@ function UpdateUserInfo() {
|
|||
function UpdateUserPwd() {
|
||||
|
||||
setupdatepwd(false);
|
||||
const url = process.env.REACT_APP_API_URL + "myclass/api/change_user_pwd/";
|
||||
const url = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_change_user_pwd/";
|
||||
const formData = new FormData();
|
||||
formData.append('token', stored_user);
|
||||
|
||||
|
@ -413,8 +438,9 @@ function UpdateUserInfo() {
|
|||
formData.append('pwd', pwd);
|
||||
formData.append('new_pwd', new_pwd);
|
||||
formData.append('conf_new_pwd', conf_new_pwd);
|
||||
formData.append('apprenant_id', props.apprenant_id);
|
||||
|
||||
|
||||
setLoading(true);
|
||||
fetch(
|
||||
url,
|
||||
{
|
||||
|
@ -424,16 +450,26 @@ function UpdateUserInfo() {
|
|||
)
|
||||
.then((response) => response.json())
|
||||
.then((result) => {
|
||||
setLoading(false);
|
||||
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
|
||||
setmyApiResponse(result['status']);
|
||||
setResult(result['message']);
|
||||
if (String(result['status']) == String("true")) {
|
||||
setupdatepwd(true);
|
||||
setfields1desabled(true);
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(result['message']);
|
||||
setalert_type("success");
|
||||
} else {
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(result['message']);
|
||||
setalert_type("error");
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
.catch((error) => {
|
||||
setLoading(false);
|
||||
console.error('Error:', error);
|
||||
setmyApiResponse("false");
|
||||
setupdatepwd(false);
|
||||
|
@ -498,32 +534,53 @@ function UpdateUserInfo() {
|
|||
};
|
||||
|
||||
|
||||
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='updateuserinfo'>
|
||||
{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 className="titre1"> Données personnelles </div>
|
||||
<hr className="my_hr"/>
|
||||
<hr className="my_hr" />
|
||||
|
||||
{String(testval) == String("true") && <div className="okUpdateData">
|
||||
Les données ont été mises à jour.
|
||||
</div>
|
||||
}
|
||||
|
||||
{String(testval) == String("false") && <div className="koUpdateData">
|
||||
Erreur mise à jour.
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }}>
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }}>
|
||||
|
||||
<TextField
|
||||
required
|
||||
label="Nom"
|
||||
name="last_name"
|
||||
className="texte_area"
|
||||
sx={{ m: 1, width: '48%' }}
|
||||
sx={{ m: 1, width: '48%', fontFamily: 'DM Sans' }}
|
||||
InputProps={{
|
||||
startAdornment: (
|
||||
<InputAdornment position="start">
|
||||
|
@ -539,7 +596,7 @@ function UpdateUserInfo() {
|
|||
name="surname"
|
||||
label="Prénom"
|
||||
className="texte_area"
|
||||
sx={{ m: 1, width: '48%' }}
|
||||
sx={{ m: 1, width: '48%', fontFamily: 'DM Sans' }}
|
||||
InputProps={{
|
||||
startAdornment: (
|
||||
<InputAdornment position="start">
|
||||
|
@ -646,7 +703,7 @@ function UpdateUserInfo() {
|
|||
/>
|
||||
<br />
|
||||
<TextField
|
||||
className="texte_area"
|
||||
className="texte_area"
|
||||
name="adr_zip"
|
||||
label="Code Postal"
|
||||
sx={{ m: 1, width: '48%' }}
|
||||
|
@ -661,7 +718,7 @@ function UpdateUserInfo() {
|
|||
/>
|
||||
|
||||
<TextField
|
||||
className="texte_area"
|
||||
className="texte_area"
|
||||
name="adr_city"
|
||||
label="Ville"
|
||||
sx={{ m: 1, width: '48%' }}
|
||||
|
@ -677,7 +734,7 @@ function UpdateUserInfo() {
|
|||
<br />
|
||||
|
||||
<TextField
|
||||
className="texte_area"
|
||||
className="texte_area"
|
||||
name="adr_country"
|
||||
label="Pays"
|
||||
sx={{ m: 1, width: '48%' }}
|
||||
|
@ -709,24 +766,14 @@ function UpdateUserInfo() {
|
|||
</div>
|
||||
</Box>
|
||||
|
||||
<hr className="my_hr"/>
|
||||
<div style={{"width":"10%"}}> </div>
|
||||
<hr className="my_hr" />
|
||||
<div style={{ "width": "10%" }}> </div>
|
||||
<div className="titre1"> Securité </div>
|
||||
<hr className="my_hr"/>
|
||||
<hr className="my_hr" />
|
||||
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 } }}>
|
||||
|
||||
{updatepwd == false && <div className="koUpdateData">
|
||||
Erreur mise à jour.
|
||||
</div>
|
||||
}
|
||||
|
||||
{updatepwd == true && <div className="okUpdateData">
|
||||
La mise à jour été faite
|
||||
</div>
|
||||
}
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 } }}>
|
||||
|
||||
<FormControl sx={{ m: 1, width: '90%' }} variant="standard" size="small" className="texte_area_passwd">
|
||||
<InputLabel htmlFor="outlined-adornment-password"></InputLabel>
|
||||
<OutlinedInput
|
||||
|
@ -751,7 +798,7 @@ function UpdateUserInfo() {
|
|||
</FormControl>
|
||||
<br />
|
||||
|
||||
<FormControl sx={{ m: 1, width: '90%' }} variant="standard" size="small" className="texte_area_passwd">
|
||||
<FormControl sx={{ m: 1, width: '90%' }} variant="standard" size="small" className="texte_area_passwd">
|
||||
<InputLabel htmlFor="outlined-adornment-password2"></InputLabel>
|
||||
<OutlinedInput
|
||||
id="new_pwd"
|
||||
|
|
|
@ -2,12 +2,13 @@ import React, { useRef, useState, useEffect } from "react";
|
|||
import "./new_s_detail_formation_2025.css";
|
||||
import { useParams } from 'react-router-dom'
|
||||
import axios from "axios";
|
||||
|
||||
import { FcInfo } from "react-icons/fc";
|
||||
import 'reactjs-popup/dist/index.css';
|
||||
|
||||
import { Helmet } from "react-helmet";
|
||||
import 'react-slideshow-image/dist/styles.css'
|
||||
|
||||
import 'react-tooltip/dist/react-tooltip.css'
|
||||
import { Tooltip } from 'react-tooltip'
|
||||
import slideimg1 from "../../mysy_img/education.jpg";
|
||||
import slideimg4 from "../../mysy_img/mysy_img.png";
|
||||
|
||||
|
@ -59,7 +60,7 @@ import DialogContent from '@mui/material/DialogContent';
|
|||
import DialogContentText from '@mui/material/DialogContentText';
|
||||
import DialogTitle from '@mui/material/DialogTitle';
|
||||
|
||||
|
||||
|
||||
const New_C_Detail_Formation_2025 = (props) => {
|
||||
const { classId, action } = useParams();
|
||||
const [result, setResult] = useState("");
|
||||
|
@ -87,14 +88,14 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
const [text_size, settext_size] = useState("0");
|
||||
|
||||
const socialIconStyles = {
|
||||
width: '24px',
|
||||
height: '24px',
|
||||
width: '24px',
|
||||
height: '24px',
|
||||
cursor: 'pointer',
|
||||
};
|
||||
|
||||
const socialIconStyles_mobile = {
|
||||
width: '24px',
|
||||
height: '24px',
|
||||
width: '24px',
|
||||
height: '24px',
|
||||
cursor: 'pointer',
|
||||
};
|
||||
|
||||
|
@ -842,6 +843,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
|
||||
} else {
|
||||
setinscritpion("1");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1384,7 +1386,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
<div>
|
||||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", borderRadius: '10px' }}>
|
||||
|
||||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", marginTop: '1rem', paddingBottom:'1.5rem' }}>
|
||||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", marginTop: '1rem', paddingBottom: '1.5rem' }}>
|
||||
|
||||
<div style={{ width: '100%', float: 'left', marginBottom: '1rem' }}>
|
||||
|
||||
|
@ -1457,10 +1459,12 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
|
||||
{String(DetailTraining["price"]) && String(DetailTraining["price"]) !== String("0") && DetailTraining.business_prices && Object.keys(DetailTraining.business_prices).length > 0
|
||||
&& DetailTraining["price"] && <div className="mob_price_2025">
|
||||
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT</nav>
|
||||
<nav className="discounted_price" style={{ textAlign: 'center' }}>{String(DetailTraining.business_prices[0].discounted_price)} € HT </nav>
|
||||
|
||||
<nav className="training_price_barre"> {String(DetailTraining["price"])} € HT </nav>
|
||||
<nav className="discount_block"> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
|
||||
{DetailTraining.business_prices && DetailTraining.business_prices.length > 0 && <div style={{ width: '100%', float: 'left', marginLeft: '3rem' }}>
|
||||
<nav className="training_price_barre" style={{ with: '50%', float: 'left', fontSize: '14px' }}> {String(DetailTraining["price"])} € HT </nav>
|
||||
<nav className="discount_block" style={{ with: '50%', float: 'left', fontSize: '14px' }}> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
|
||||
</div>}
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
|
@ -1652,9 +1656,9 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", borderRadius: '10px' }}>
|
||||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", marginTop: '1rem' }}>
|
||||
|
||||
<div className="mob_info_page" id="mob_info_page">
|
||||
<div className="mob_info_page" id="mob_info_page" >
|
||||
|
||||
<div className="mob_info_page_title_desc" >
|
||||
<div className="mob_info_page_title_desc" ref={myRef_informe} id="myRef_informe" >
|
||||
|
||||
{String(inscritpion) === "2" && <div>
|
||||
|
||||
|
@ -1699,32 +1703,40 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
{(JSON.parse(formation).session_ondemande) && (JSON.parse(formation).session_ondemande) === "1" && <nav> Sessions de formation à la demande</nav>}
|
||||
|
||||
{(!(JSON.parse(formation).session_ondemande) || (JSON.parse(formation).session_ondemande) === "0") && <nav>
|
||||
{(JSON.parse(formation).distantiel) === "1" && (JSON.parse(formation).presentiel) === "1" &&
|
||||
{(JSON.parse(formation).mode_animation) === "2" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) !== (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
{(JSON.parse(formation).date_debut).substring(0, 10)} au
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)} <b> A Distance</b> et <b>En Présentiel </b>- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)}
|
||||
<Tooltip className="tooltip_css" id="anim_hybride" style={{ "fontSize": "10px" }} />
|
||||
<a data-tooltip-id="anim_hybride" data-tooltip-html="Une partie en présentiel et une partie à distance"> <b> Animation Hybride <FcInfo />
|
||||
</b> </a>
|
||||
- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>
|
||||
}
|
||||
|
||||
{(JSON.parse(formation).distantiel) === "1" && (JSON.parse(formation).presentiel) === "1" &&
|
||||
{(JSON.parse(formation).mode_animation) === "2" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)} <b> A Distance</b> et <b>En Présentiel </b>- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)}
|
||||
<Tooltip className="tooltip_css" id="anim_hybride" style={{ "fontSize": "10px" }} />
|
||||
<a data-tooltip-id="anim_hybride" data-tooltip-html="Une partie en présentiel et une partie à distance"> <b> Animation Hybride <FcInfo />
|
||||
</b> </a>
|
||||
- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>
|
||||
}
|
||||
|
||||
|
||||
|
||||
{(JSON.parse(formation).distantiel) === "1" && ((JSON.parse(formation).presentiel) === "0" || !(JSON.parse(formation).presentiel)) &&
|
||||
{(JSON.parse(formation).mode_animation) === "1" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) !== (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
{(JSON.parse(formation).date_debut).substring(0, 10)} au
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)} <b>A Distance </b> </nav>
|
||||
}
|
||||
|
||||
{(JSON.parse(formation).distantiel) === "1" && ((JSON.parse(formation).presentiel) === "0" || !(JSON.parse(formation).presentiel)) &&
|
||||
{(JSON.parse(formation).mode_animation) === "1" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le
|
||||
|
@ -1732,14 +1744,14 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
}
|
||||
|
||||
|
||||
{(JSON.parse(formation).presentiel) === "1" && ((JSON.parse(formation).distantiel) === "0" || !(JSON.parse(formation).distantiel)) &&
|
||||
{(JSON.parse(formation).mode_animation) === "0" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) !== (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
{(JSON.parse(formation).date_debut).substring(0, 10)} au {(JSON.parse(formation).date_fin).substring(0, 10)} <b>En Présentiel </b> -
|
||||
{(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>}
|
||||
|
||||
{(JSON.parse(formation).presentiel) === "1" && ((JSON.parse(formation).distantiel) === "0" || !(JSON.parse(formation).distantiel)) &&
|
||||
{(JSON.parse(formation).mode_animation) === "0" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le {(JSON.parse(formation).date_fin).substring(0, 10)} <b>En Présentiel </b> -
|
||||
|
@ -1824,7 +1836,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
>
|
||||
|
||||
<Typography sx={{ color: 'text.secondary', }}>
|
||||
{val.titre}
|
||||
{val.titre}
|
||||
</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
|
@ -1864,18 +1876,19 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
|
||||
</div>
|
||||
</div>
|
||||
<hr style={{ "width": "100%", border: "1px solid #E2E9FB", marginTop: '10px' }} />
|
||||
<hr style={{ "width": "100%", border: "1px solid #E2E9FB", marginTop: '10px' }} />
|
||||
|
||||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", borderRadius: '10px' }}>
|
||||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", marginTop: '1rem', height:'10px' }}>
|
||||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", marginTop: '1rem', height: '10px' }}>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style={{ width: '90%', marginLeft: 'auto', marginRight: 'auto', background: "#FFF", borderRadius: '10px' }}>
|
||||
<div style={{ width: '100%', float: 'left', minHeight: '10rem', background: 'None', zIndex: '99', position: "relative", backgroundColor: 'white', marginBottom:'2rem',
|
||||
borderRadius:'10px'
|
||||
}}>
|
||||
<div style={{
|
||||
width: '100%', float: 'left', minHeight: '10rem', background: 'None', zIndex: '99', position: "relative", backgroundColor: 'white', marginBottom: '2rem',
|
||||
borderRadius: '10px'
|
||||
}}>
|
||||
<br />
|
||||
|
||||
<div className="mob_block_cross_sell_cat" id="mob_block_cross_sell_cat_new">
|
||||
|
@ -2059,8 +2072,8 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
|
||||
|
||||
<div style={{ width: '100%', float: 'left', background: "#F4F4FB" }}>
|
||||
<div style={{ width: '90%', maxWidth: '1400px', marginLeft: 'auto', marginRight: 'auto' }}>
|
||||
<div style={{ width: '70%', float: 'left', "paddingLeft": "2rem", paddingRight: '2rem' }} >
|
||||
<div className="block_central" >
|
||||
<div className="block_central_gauche" ref={myRef_informe} id="myRef_informe">
|
||||
|
||||
{String(inscritpion) === "1" && <div className="description detail_element">
|
||||
<Inscription internal_url={DetailTraining["internal_url"]} action="inscription"
|
||||
|
@ -2093,7 +2106,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
</div>
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
<br />
|
||||
<div className="block_info_page_pave_title_desc">
|
||||
|
@ -2113,7 +2126,6 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
<div className="block_info_page_pave_title_desc_title">
|
||||
Les sessions
|
||||
|
||||
|
||||
</div>
|
||||
<div className="block_info_page_pave_title_desc_desc session_block">
|
||||
<ul style={{ "width": "100%" }}>
|
||||
|
@ -2126,53 +2138,60 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
{(JSON.parse(formation).session_ondemande) && (JSON.parse(formation).session_ondemande) === "1" && <nav> Sessions de formation à la demande</nav>}
|
||||
|
||||
{(!(JSON.parse(formation).session_ondemande) || (JSON.parse(formation).session_ondemande) === "0") && <nav>
|
||||
{(JSON.parse(formation).distantiel) === "1" && (JSON.parse(formation).presentiel) === "1" &&
|
||||
{(JSON.parse(formation).mode_animation) === "2" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) !== (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
{(JSON.parse(formation).date_debut).substring(0, 10)} au
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)} <b> A Distance</b> et <b>En Présentiel </b>- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)}
|
||||
<Tooltip className="tooltip_css" id="anim_hybride" style={{ "fontSize": "10px" }} />
|
||||
<a data-tooltip-id="anim_hybride" data-tooltip-html="Une partie en présentiel et une partie à distance"> <b> Animation Hybride <FcInfo /> </b> </a>
|
||||
- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>
|
||||
}
|
||||
|
||||
{(JSON.parse(formation).distantiel) === "1" && (JSON.parse(formation).presentiel) === "1" &&
|
||||
{(JSON.parse(formation).mode_animation) === "2" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)} <b> A Distance</b> et <b>En Présentiel </b>- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
Le {(JSON.parse(formation).date_debut).substring(0, 10)}
|
||||
<Tooltip className="tooltip_css" id="anim_hybride" style={{ "fontSize": "10px" }} />
|
||||
<a data-tooltip-id="anim_hybride" data-tooltip-html="Une partie en présentiel et une partie à distance"> <b> Animation Hybride <FcInfo /> </b> </a>
|
||||
- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>
|
||||
}
|
||||
|
||||
|
||||
|
||||
{(JSON.parse(formation).distantiel) === "1" && ((JSON.parse(formation).presentiel) === "0" || !(JSON.parse(formation).presentiel)) &&
|
||||
{(JSON.parse(formation).mode_animation) === "1" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) !== (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
{(JSON.parse(formation).date_debut).substring(0, 10)} au
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)} <b>A Distance </b> </nav>
|
||||
}
|
||||
|
||||
{(JSON.parse(formation).distantiel) === "1" && ((JSON.parse(formation).presentiel) === "0" || !(JSON.parse(formation).presentiel)) &&
|
||||
{(JSON.parse(formation).mode_animation) === "1" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le
|
||||
{(JSON.parse(formation).date_fin).substring(0, 10)} <b>A Distance </b> </nav>
|
||||
Le {(JSON.parse(formation).date_debut).substring(0, 10)} <b>A Distance </b> </nav>
|
||||
}
|
||||
|
||||
|
||||
{(JSON.parse(formation).presentiel) === "1" && ((JSON.parse(formation).distantiel) === "0" || !(JSON.parse(formation).distantiel)) &&
|
||||
|
||||
{(JSON.parse(formation).mode_animation) === "0" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) !== (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
{(JSON.parse(formation).date_debut).substring(0, 10)} au {(JSON.parse(formation).date_fin).substring(0, 10)} <b>En Présentiel </b> -
|
||||
{(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>}
|
||||
|
||||
{(JSON.parse(formation).presentiel) === "1" && ((JSON.parse(formation).distantiel) === "0" || !(JSON.parse(formation).distantiel)) &&
|
||||
{(JSON.parse(formation).mode_animation) === "0" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le {(JSON.parse(formation).date_fin).substring(0, 10)} <b>En Présentiel </b> -
|
||||
Le {(JSON.parse(formation).date_debut).substring(0, 10)} <b>En Présentiel </b> -
|
||||
{(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>}
|
||||
|
||||
|
||||
|
||||
</nav>}
|
||||
</li>
|
||||
|
||||
|
@ -2216,7 +2235,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
<br />
|
||||
{DetailTraining["tab_ue_detail_data"] && DetailTraining["tab_ue_detail_data"].length > 0 && < div className="block_info_page_pave_title_desc_long_text" >
|
||||
<div className="block_info_page_pave_title_desc_title">
|
||||
Modules
|
||||
Modules
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -2233,7 +2252,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
id={val._id}
|
||||
>
|
||||
|
||||
<Typography sx={{ color: 'text.secondary', fontWeight:'500' }}>
|
||||
<Typography sx={{ color: 'text.secondary', fontWeight: '500' }}>
|
||||
{val.titre}
|
||||
</Typography>
|
||||
</AccordionSummary>
|
||||
|
@ -2248,7 +2267,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
|
@ -2367,8 +2386,8 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
<div className="block_sticky_info_price">Gratuit
|
||||
</div>
|
||||
|
||||
<div className="tag_eligle_cpf">Eligle CFP
|
||||
</div>
|
||||
{DetailTraining["cpf"] && String(DetailTraining["cpf"]) === "1" && <div className="tag_eligle_cpf">Éligible CPF</div>}
|
||||
{(!DetailTraining["cpf"] || String(DetailTraining["cpf"]) !== "1") && <div className="tag_eligle_cpf">Non Élig. CPF</div>}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
@ -2376,21 +2395,28 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
&& DetailTraining["price"] && <div className="block_prix_2025">
|
||||
<div className="block_sticky_info_price"> {String(DetailTraining["price"])} € HT
|
||||
</div>
|
||||
<div className="tag_eligle_cpf">Eligle CFP
|
||||
</div>
|
||||
|
||||
{DetailTraining["cpf"] && String(DetailTraining["cpf"]) === "1" && <div className="tag_eligle_cpf">Éligible CPF</div>}
|
||||
{(!DetailTraining["cpf"] || String(DetailTraining["cpf"]) !== "1") && <div className="tag_eligle_cpf">Non Élig. CPF</div>}
|
||||
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
{String(DetailTraining["price"]) && String(DetailTraining["price"]) !== String("0") && DetailTraining.business_prices && Object.keys(DetailTraining.business_prices).length > 0
|
||||
&& DetailTraining["price"] &&
|
||||
<div className="block_prix_2025">
|
||||
<div className="block_sticky_info_price">
|
||||
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT</nav>
|
||||
|
||||
<nav className="training_price_barre"> {String(DetailTraining["price"])} € HT </nav>
|
||||
<nav className="discount_block"> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
|
||||
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT </nav>
|
||||
</div>
|
||||
<div className="tag_eligle_cpf">Eligle CFP
|
||||
</div>
|
||||
|
||||
{DetailTraining.business_prices && DetailTraining.business_prices.length > 0 && <div style={{ width: '100%', float: 'left' }}>
|
||||
<nav className="training_price_barre" style={{ with: '50%', float: 'left', fontSize: '14px' }}> {String(DetailTraining["price"])} € HT </nav>
|
||||
<nav className="discount_block" style={{ with: '50%', float: 'left', fontSize: '14px' }}> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
|
||||
</div>}
|
||||
|
||||
</div>}
|
||||
|
||||
<div className="block_sticky_info_caracteristique">
|
||||
|
|
|
@ -1,5 +1,20 @@
|
|||
.new_detail_formation_2025 {
|
||||
|
||||
.block_central {
|
||||
width: 90%;
|
||||
max-width: 1400px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.block_central_gauche {
|
||||
width: 70%;
|
||||
float: left;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
* h6 {
|
||||
font-size: small;
|
||||
}
|
||||
|
@ -95,7 +110,7 @@
|
|||
}
|
||||
|
||||
.mob_price_2025 {
|
||||
width: 50%;
|
||||
width: 100%;
|
||||
float: left;
|
||||
height: 24px;
|
||||
|
||||
|
@ -608,13 +623,13 @@
|
|||
|
||||
.detail_class_submenu:hover:active,
|
||||
.detail_class_submenu:hover {
|
||||
background-color: #104277;
|
||||
background-color: #107758;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.detail_class_submenu:focus {
|
||||
|
||||
background-color: #104277;
|
||||
background-color: #107758;
|
||||
color: white;
|
||||
}
|
||||
|
||||
|
@ -1579,7 +1594,7 @@
|
|||
|
||||
.discounted_price {
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
font-size: 18px;
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
|
@ -1894,13 +1909,13 @@
|
|||
|
||||
.detail_class_submenu:hover:active,
|
||||
.detail_class_submenu:hover {
|
||||
background-color: #104277;
|
||||
background-color: #107758;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.detail_class_submenu:focus {
|
||||
|
||||
background-color: #104277;
|
||||
background-color: #107758;
|
||||
color: white;
|
||||
}
|
||||
|
||||
|
@ -1968,8 +1983,8 @@
|
|||
text-align: right;
|
||||
padding-right: 2rem;
|
||||
border-radius: 20rem;
|
||||
background-color: #104277;
|
||||
border: 2px solid #104277;
|
||||
background-color: #107758;
|
||||
border: 2px solid #107758;
|
||||
width: 12rem;
|
||||
box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
|
||||
-webkit-box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
|
||||
|
@ -2466,7 +2481,7 @@
|
|||
top: 350px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
.block_info_page_pave_title_desc {
|
||||
/* Title + Description */
|
||||
|
||||
|
@ -3711,7 +3726,7 @@
|
|||
|
||||
.discounted_price {
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
font-size: 18px;
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
|
@ -4077,13 +4092,13 @@
|
|||
|
||||
.detail_class_submenu:hover:active,
|
||||
.detail_class_submenu:hover {
|
||||
background-color: #104277;
|
||||
background-color: #107758;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.detail_class_submenu:focus {
|
||||
|
||||
background-color: #104277;
|
||||
background-color: #107758;
|
||||
color: white;
|
||||
}
|
||||
|
||||
|
@ -4151,8 +4166,8 @@
|
|||
text-align: right;
|
||||
padding-right: 2rem;
|
||||
border-radius: 20rem;
|
||||
background-color: #104277;
|
||||
border: 2px solid #104277;
|
||||
background-color: #107758;
|
||||
border: 2px solid #107758;
|
||||
width: 12rem;
|
||||
box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
|
||||
-webkit-box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
|
||||
|
@ -5896,7 +5911,7 @@
|
|||
|
||||
.discounted_price {
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
font-size: 18px;
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
|
@ -6262,13 +6277,13 @@
|
|||
|
||||
.detail_class_submenu:hover:active,
|
||||
.detail_class_submenu:hover {
|
||||
background-color: #104277;
|
||||
background-color: #107758;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.detail_class_submenu:focus {
|
||||
|
||||
background-color: #104277;
|
||||
background-color: #107758;
|
||||
color: white;
|
||||
}
|
||||
|
||||
|
@ -6336,8 +6351,8 @@
|
|||
text-align: right;
|
||||
padding-right: 2rem;
|
||||
border-radius: 20rem;
|
||||
background-color: #104277;
|
||||
border: 2px solid #104277;
|
||||
background-color: #107758;
|
||||
border: 2px solid #107758;
|
||||
width: 12rem;
|
||||
box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
|
||||
-webkit-box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
|
||||
|
|
|
@ -160,7 +160,7 @@ const Header = () => {
|
|||
setsomeoneconnected("0");
|
||||
setDialog_1_open(false);
|
||||
history.push("/recherche-formation");
|
||||
}
|
||||
}
|
||||
|
||||
function user_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
|
@ -197,7 +197,7 @@ const Header = () => {
|
|||
style: {
|
||||
overflowY: 'unset',
|
||||
position: 'absolute',
|
||||
top: '7rem',
|
||||
top: '20rem',
|
||||
margin: "2px",
|
||||
},
|
||||
}}
|
||||
|
|
|
@ -0,0 +1,322 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import './Header.css';
|
||||
import moment from "moment";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
|
||||
import Header_User from '../../img_new_design_2025/header_user.png';
|
||||
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 Button from '@mui/material/Button';
|
||||
import { useCookies } from "react-cookie";
|
||||
|
||||
|
||||
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 (
|
||||
<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 Header_Client_Intranet = () => {
|
||||
const history = useHistory();
|
||||
const classes = useStyles();
|
||||
const [userconnected, setuserconnected] = useState("0");
|
||||
const [someoneconnected, setsomeoneconnected] = useState("0");
|
||||
const [partnerconnected, setpartnerconnected] = useState("0");
|
||||
const stored_user = getCookie('tokenmysych');
|
||||
const stored_part = getCookie('tokenmysypart');
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
|
||||
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
|
||||
const [PartnerMenu, setPartnerMenu] = React.useState(null);
|
||||
const [AccountMenu, setAccountMenu] = React.useState(null);
|
||||
const [ProduitMenu, setproduitMenu] = React.useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
|
||||
}, []);
|
||||
|
||||
const handleAccountCreation = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/signup/")
|
||||
};
|
||||
|
||||
|
||||
const handleMyAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/mysy-user-account")
|
||||
};
|
||||
|
||||
const handleAccountConnexion = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/signin/")
|
||||
};
|
||||
|
||||
|
||||
const handleMyPartnerAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/Partner")
|
||||
};
|
||||
|
||||
|
||||
function handleAccountConnexion_v2() {
|
||||
|
||||
if (String(userconnected) === String("1")) {
|
||||
handleMyAccount();
|
||||
}
|
||||
else if (String(partnerconnected) === String("1")) {
|
||||
handleMyPartnerAccount();
|
||||
}
|
||||
}
|
||||
|
||||
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
|
||||
const Dialog_1_handleClose = () => {
|
||||
};
|
||||
|
||||
const Dialog_1_handleClose_buton = () => {
|
||||
setDialog_1_open(false);
|
||||
};
|
||||
|
||||
function part_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
|
||||
if (typeof (stored_part) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysypart", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
|
||||
setpartCookie("mysy_session_display_view", "", { path: '/' });
|
||||
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
|
||||
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
|
||||
|
||||
removeCookie("tokenmysypart", { path: '/' });
|
||||
removeCookie("mysy_session_display_view", { path: '/' });
|
||||
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
|
||||
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
setsomeoneconnected("0");
|
||||
setDialog_1_open(false);
|
||||
history.push("/recherche-formation");
|
||||
}
|
||||
|
||||
function user_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
if (typeof (stored_user) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysych", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
removeCookie("tokenmysych", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
history.push("/intranet");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='header_automatic_files'>
|
||||
|
||||
{/*** GESTION Deconnexion */}
|
||||
<Dialog
|
||||
open={Dialog_1_open}
|
||||
// onClose={Dialog_1_handleClose}
|
||||
className="displaypartnersession"
|
||||
static
|
||||
onClose={() => null}
|
||||
|
||||
PaperProps={{
|
||||
|
||||
|
||||
className: classes.paper, // Apply the paper style
|
||||
style: {
|
||||
overflowY: 'unset',
|
||||
position: 'absolute',
|
||||
top: '20rem',
|
||||
margin: "2px",
|
||||
},
|
||||
}}
|
||||
hideBackdrop={true}
|
||||
disableScrollLock
|
||||
classes={{
|
||||
paper: classes.dialog
|
||||
}}
|
||||
|
||||
PaperComponent={PaperComponent}
|
||||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion <br />
|
||||
|
||||
|
||||
</DialogContentText>
|
||||
|
||||
</DialogContent>
|
||||
|
||||
<DialogActions>
|
||||
|
||||
<IconButton
|
||||
//autoFocus
|
||||
onClick={Dialog_1_handleClose_buton}
|
||||
color="primary"
|
||||
className={classes.customizedButton}
|
||||
>
|
||||
<CancelPresentationIcon />
|
||||
</IconButton>
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
<Button
|
||||
|
||||
onClick={(e) => {
|
||||
if (partnerconnected && String(partnerconnected) === '1')
|
||||
part_logout_confirmation();
|
||||
|
||||
if (userconnected && String(userconnected) === '1')
|
||||
user_logout_confirmation();
|
||||
|
||||
}}
|
||||
|
||||
className="bton_enreg_dialog">Deconnexion</Button>
|
||||
</div>
|
||||
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Dialog_1_handleClose_buton} className="bton_annule_dialog" >Annuler</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</DialogActions>
|
||||
</Dialog>
|
||||
|
||||
{/*** Fin GESTION Deconnexion */}
|
||||
|
||||
<header className="header_new_2025">
|
||||
<div className="header-content">
|
||||
<div className="logo-menu">
|
||||
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
|
||||
// e.preventDefault();
|
||||
history.push("/");
|
||||
}} />
|
||||
|
||||
<nav className="menu-list">
|
||||
<a href="/apropos" className="menu-link">À propos</a>
|
||||
<a href="/fonctionnalites" className="menu-link">Fonctionnalités</a>
|
||||
<a href="#" className="menu-link">
|
||||
<nav onClick={(e) => {
|
||||
history.push("/tarif/#debut");
|
||||
// window.open("/tarif/#debut", "_self");
|
||||
}}>Tarifs </nav>
|
||||
</a>
|
||||
<a href="/Recherche-Article-formation" className="menu-link">Blog</a>
|
||||
<div className="separator"></div>
|
||||
<a href="/marketplace" className="menu-link">Marketplace</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div className="cta-login">
|
||||
<div className="cta-buttons">
|
||||
<button className="btn btn-primary" onClick={(e) => {
|
||||
e.preventDefault();
|
||||
var date2 = new Date();
|
||||
const format2 = "YYYY-MM";
|
||||
var dateTime2 = moment(date2).format(format2);
|
||||
window.open(
|
||||
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
|
||||
'_blank'
|
||||
);
|
||||
}}>Réserver une démo</button>
|
||||
|
||||
</div>
|
||||
<div className="cta-buttons hide_on_mobile">
|
||||
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
|
||||
|
||||
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
|
||||
|
||||
</div>
|
||||
<div className="separator hide_on_mobile"></div>
|
||||
{String(someoneconnected) !== String("1") && <div className="login-link hide_on_mobile" onClick={handleAccountConnexion}>
|
||||
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
|
||||
<span className='hide_on_mobile'>Connexion</span>
|
||||
</div>}
|
||||
|
||||
{String(someoneconnected) === String("1") && <div className="login-link hide_on_mobile" onClick={(e) => setDialog_1_open(true)}>
|
||||
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
|
||||
<span className='hide_on_mobile'>Deconnexion</span>
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
</div >
|
||||
</header >
|
||||
</div >
|
||||
);
|
||||
};
|
||||
|
||||
export default Header_Client_Intranet;
|
||||
|
|
@ -0,0 +1,322 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import './Header.css';
|
||||
import moment from "moment";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
|
||||
import Header_User from '../../img_new_design_2025/header_user.png';
|
||||
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 Button from '@mui/material/Button';
|
||||
import { useCookies } from "react-cookie";
|
||||
|
||||
|
||||
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 (
|
||||
<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 Header_ENT_Student = () => {
|
||||
const history = useHistory();
|
||||
const classes = useStyles();
|
||||
const [userconnected, setuserconnected] = useState("0");
|
||||
const [someoneconnected, setsomeoneconnected] = useState("0");
|
||||
const [partnerconnected, setpartnerconnected] = useState("0");
|
||||
const stored_user = getCookie('tokenmysych');
|
||||
const stored_part = getCookie('tokenmysypart');
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
|
||||
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
|
||||
const [PartnerMenu, setPartnerMenu] = React.useState(null);
|
||||
const [AccountMenu, setAccountMenu] = React.useState(null);
|
||||
const [ProduitMenu, setproduitMenu] = React.useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
var local_user_connect = 0;
|
||||
var local_part_connect = 0;
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
setuserconnected("0");
|
||||
local_user_connect = 0;
|
||||
} else {
|
||||
setuserconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_user_connect = 1;
|
||||
//alert(" user connected OK");
|
||||
}
|
||||
|
||||
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
|
||||
setpartnerconnected("0");
|
||||
local_part_connect = 0;
|
||||
} else {
|
||||
setpartnerconnected("1");
|
||||
setsomeoneconnected("1");
|
||||
local_part_connect = 1;
|
||||
//alert(" partner connected OK");
|
||||
}
|
||||
|
||||
}, []);
|
||||
|
||||
const handleAccountCreation = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/signup/")
|
||||
};
|
||||
|
||||
|
||||
const handleMyAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/mysy-user-account")
|
||||
};
|
||||
|
||||
const handleAccountConnexion = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/signin/")
|
||||
};
|
||||
|
||||
|
||||
const handleMyPartnerAccount = () => {
|
||||
setAccountMenu(null);
|
||||
history.push("/Partner")
|
||||
};
|
||||
|
||||
|
||||
function handleAccountConnexion_v2() {
|
||||
|
||||
if (String(userconnected) === String("1")) {
|
||||
handleMyAccount();
|
||||
}
|
||||
else if (String(partnerconnected) === String("1")) {
|
||||
handleMyPartnerAccount();
|
||||
}
|
||||
}
|
||||
|
||||
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
|
||||
const Dialog_1_handleClose = () => {
|
||||
};
|
||||
|
||||
const Dialog_1_handleClose_buton = () => {
|
||||
setDialog_1_open(false);
|
||||
};
|
||||
|
||||
function part_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
|
||||
if (typeof (stored_part) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysypart", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
|
||||
setpartCookie("mysy_session_display_view", "", { path: '/' });
|
||||
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
|
||||
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
|
||||
|
||||
removeCookie("tokenmysypart", { path: '/' });
|
||||
removeCookie("mysy_session_display_view", { path: '/' });
|
||||
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
|
||||
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
setsomeoneconnected("0");
|
||||
setDialog_1_open(false);
|
||||
history.push("/recherche-formation");
|
||||
}
|
||||
|
||||
function user_logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
if (typeof (stored_user) != "undefined") {
|
||||
const stored_cookie = getCookie('tokenmysych');
|
||||
var acces_right_token_name = stored_cookie + "_uar";
|
||||
|
||||
setpartCookie("tokenmysych", "", { path: '/' });
|
||||
setpartCookie(acces_right_token_name, "", { path: '/' });
|
||||
removeCookie(acces_right_token_name, { path: '/' });
|
||||
|
||||
removeCookie("tokenmysych", { path: '/' });
|
||||
|
||||
|
||||
}
|
||||
history.push("/intranet");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='header_automatic_files'>
|
||||
|
||||
{/*** GESTION Deconnexion */}
|
||||
<Dialog
|
||||
open={Dialog_1_open}
|
||||
// onClose={Dialog_1_handleClose}
|
||||
className="displaypartnersession"
|
||||
static
|
||||
onClose={() => null}
|
||||
|
||||
PaperProps={{
|
||||
|
||||
|
||||
className: classes.paper, // Apply the paper style
|
||||
style: {
|
||||
overflowY: 'unset',
|
||||
position: 'absolute',
|
||||
top: '20rem',
|
||||
margin: "2px",
|
||||
},
|
||||
}}
|
||||
hideBackdrop={true}
|
||||
disableScrollLock
|
||||
classes={{
|
||||
paper: classes.dialog
|
||||
}}
|
||||
|
||||
PaperComponent={PaperComponent}
|
||||
aria-labelledby="draggable-dialog-title"
|
||||
>
|
||||
|
||||
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
|
||||
<DialogContent className="DialogContent_width">
|
||||
<DialogContentText>
|
||||
Confirmez la deconnexion <br />
|
||||
|
||||
|
||||
</DialogContentText>
|
||||
|
||||
</DialogContent>
|
||||
|
||||
<DialogActions>
|
||||
|
||||
<IconButton
|
||||
//autoFocus
|
||||
onClick={Dialog_1_handleClose_buton}
|
||||
color="primary"
|
||||
className={classes.customizedButton}
|
||||
>
|
||||
<CancelPresentationIcon />
|
||||
</IconButton>
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
<Button
|
||||
|
||||
onClick={(e) => {
|
||||
if (partnerconnected && String(partnerconnected) === '1')
|
||||
part_logout_confirmation();
|
||||
|
||||
if (userconnected && String(userconnected) === '1')
|
||||
user_logout_confirmation();
|
||||
|
||||
}}
|
||||
|
||||
className="bton_enreg_dialog">Deconnexion</Button>
|
||||
</div>
|
||||
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Dialog_1_handleClose_buton} className="bton_annule_dialog" >Annuler</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</DialogActions>
|
||||
</Dialog>
|
||||
|
||||
{/*** Fin GESTION Deconnexion */}
|
||||
|
||||
<header className="header_new_2025">
|
||||
<div className="header-content">
|
||||
<div className="logo-menu">
|
||||
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
|
||||
// e.preventDefault();
|
||||
history.push("/");
|
||||
}} />
|
||||
|
||||
<nav className="menu-list">
|
||||
<a href="/apropos" className="menu-link">À propos</a>
|
||||
<a href="/fonctionnalites" className="menu-link">Fonctionnalités</a>
|
||||
<a href="#" className="menu-link">
|
||||
<nav onClick={(e) => {
|
||||
history.push("/tarif/#debut");
|
||||
// window.open("/tarif/#debut", "_self");
|
||||
}}>Tarifs </nav>
|
||||
</a>
|
||||
<a href="/Recherche-Article-formation" className="menu-link">Blog</a>
|
||||
<div className="separator"></div>
|
||||
<a href="/marketplace" className="menu-link">Marketplace</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div className="cta-login">
|
||||
<div className="cta-buttons">
|
||||
<button className="btn btn-primary" onClick={(e) => {
|
||||
e.preventDefault();
|
||||
var date2 = new Date();
|
||||
const format2 = "YYYY-MM";
|
||||
var dateTime2 = moment(date2).format(format2);
|
||||
window.open(
|
||||
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
|
||||
'_blank'
|
||||
);
|
||||
}}>Réserver une démo</button>
|
||||
|
||||
</div>
|
||||
<div className="cta-buttons hide_on_mobile">
|
||||
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
|
||||
|
||||
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
|
||||
|
||||
</div>
|
||||
<div className="separator hide_on_mobile"></div>
|
||||
{String(someoneconnected) !== String("1") && <div className="login-link hide_on_mobile" onClick={handleAccountConnexion}>
|
||||
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
|
||||
<span className='hide_on_mobile'>Connexion</span>
|
||||
</div>}
|
||||
|
||||
{String(someoneconnected) === String("1") && <div className="login-link hide_on_mobile" onClick={(e) => setDialog_1_open(true)}>
|
||||
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
|
||||
<span className='hide_on_mobile'>Deconnexion</span>
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
</div >
|
||||
</header >
|
||||
</div >
|
||||
);
|
||||
};
|
||||
|
||||
export default Header_ENT_Student;
|
||||
|
|
@ -3683,7 +3683,7 @@ const New_C_Marketplace_2025 = () => {
|
|||
{result && myApiResponse === "True" && !newresult &&
|
||||
<div className="okUpdateData">
|
||||
<div style={{ "width": "100%" }}>
|
||||
<div style={{ "width": "50%", "float": "left" }}>
|
||||
<div className="block_pagination">
|
||||
<Pagination
|
||||
className="pagination-bar"
|
||||
currentPage={currentPage2}
|
||||
|
@ -3692,7 +3692,7 @@ const New_C_Marketplace_2025 = () => {
|
|||
onPageChange={page => setCurrentPage2(page)}
|
||||
/>
|
||||
</div>
|
||||
<div style={{ "width": "40%", "float": "right" }}>
|
||||
<div className="block_trier_par">
|
||||
<div className="input-group input-group-sm mb-3 ">
|
||||
<span className="filter_span">Trier par </span>
|
||||
|
||||
|
@ -3704,7 +3704,7 @@ const New_C_Marketplace_2025 = () => {
|
|||
<option value="duration">Duree</option>
|
||||
|
||||
</select>
|
||||
<span style={{ width: '10%' }}><TbArrowsDownUp style={{ height: '1.5rem', paddingTop: '5px', width: '40%' }}
|
||||
<span style={{ width: '10%' }}><TbArrowsDownUp style={{ height: '1.5rem', paddingTop: '5px', width: '40%' }}
|
||||
onClick={(e) => {
|
||||
if (trier_par === "1")
|
||||
settrier_par("-1");
|
||||
|
@ -3734,8 +3734,6 @@ const New_C_Marketplace_2025 = () => {
|
|||
pageSize={PageSize}
|
||||
onPageChange={page => setCurrentPage2(page)}
|
||||
/>
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
|
@ -3758,7 +3756,6 @@ const New_C_Marketplace_2025 = () => {
|
|||
{result && myApiResponse == "True" && fin == 0 && newresult &&
|
||||
newresult.slice(0, PageSize).map((formation) => (
|
||||
<div className="block_formation" >
|
||||
|
||||
<New_C_Formation_2025 formation={JSON.parse(formation)} key={JSON.parse(formation).title} />
|
||||
</div>
|
||||
|
||||
|
|
|
@ -31,6 +31,21 @@
|
|||
display: none;
|
||||
}
|
||||
|
||||
.block_pagination {
|
||||
width: 100%;
|
||||
float: left;
|
||||
|
||||
}
|
||||
|
||||
.block_trier_par {
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*style smartphones et petites tablettes en portrait*/
|
||||
|
||||
.text_head {
|
||||
|
@ -393,11 +408,11 @@
|
|||
padding-bottom: auto;
|
||||
word-break: break-word;
|
||||
margin-right: 0.5rem;
|
||||
color: #104277;
|
||||
color: #107758;
|
||||
font-size: 0.75rem;
|
||||
white-space: nowrap;
|
||||
width: 20%;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.filter_val {
|
||||
|
@ -411,7 +426,7 @@
|
|||
background: transparent;
|
||||
color: #3b3e40;
|
||||
font-family: "DM Sans", "verdana", "Quicksand", "Signika";
|
||||
border: 1px solid #C7C9CE;
|
||||
border: 1px solid #C7C9CE;
|
||||
border-radius: 0.3rem !important;
|
||||
width: 65%;
|
||||
margin-top: 0.3rem;
|
||||
|
@ -844,7 +859,7 @@
|
|||
}
|
||||
|
||||
.block_nos_formation {
|
||||
padding: 0px;
|
||||
padding: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
@ -920,9 +935,9 @@
|
|||
|
||||
.content_search_bar {
|
||||
margin-top: 3rem;
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 94%;
|
||||
margin-left: 3%;
|
||||
|
||||
}
|
||||
|
||||
.search_bar_h {
|
||||
|
@ -957,7 +972,7 @@
|
|||
padding: 0px;
|
||||
gap: 24px;
|
||||
|
||||
width: 95%;
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
|
||||
|
||||
|
@ -1035,6 +1050,7 @@
|
|||
order: 0;
|
||||
flex-grow: 0;
|
||||
margin-bottom: 1rem;
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
|
||||
|
@ -2194,9 +2210,9 @@
|
|||
|
||||
.cta_recherche_TXT_search_loup {
|
||||
display: block;
|
||||
|
||||
|
||||
width: 100%;
|
||||
|
||||
|
||||
border-radius: 60px;
|
||||
height: 40px;
|
||||
|
||||
|
@ -2213,7 +2229,7 @@
|
|||
order: 0;
|
||||
align-self: stretch;
|
||||
flex-grow: 0;
|
||||
|
||||
|
||||
background-color: #3e6ee3;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
|
@ -2254,6 +2270,17 @@
|
|||
|
||||
@media only screen and (min-width: 601px) and (max-width: 991px) {
|
||||
|
||||
.block_pagination {
|
||||
width: 50%;
|
||||
float: left;
|
||||
|
||||
}
|
||||
|
||||
.block_trier_par {
|
||||
width: 40%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
/*style petites-moyennes tablettes */
|
||||
.domaine_icone {
|
||||
display: none
|
||||
|
@ -2569,11 +2596,11 @@
|
|||
padding-bottom: auto;
|
||||
word-break: break-word;
|
||||
margin-right: 0.5rem;
|
||||
color: #104277;
|
||||
color: #107758;
|
||||
font-size: 0.75rem;
|
||||
white-space: nowrap;
|
||||
width: 20%;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.filter_val {
|
||||
|
@ -2587,7 +2614,7 @@
|
|||
background: transparent;
|
||||
color: #3b3e40;
|
||||
font-family: "DM Sans", "verdana", "Quicksand", "Signika";
|
||||
border: 1px solid #C7C9CE;
|
||||
border: 1px solid #C7C9CE;
|
||||
border-radius: 0.3rem !important;
|
||||
width: 65%;
|
||||
margin-top: 0.3rem;
|
||||
|
@ -5334,6 +5361,17 @@
|
|||
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
||||
/*style grande tablettes & Pc portable */
|
||||
|
||||
.block_pagination {
|
||||
width: 50%;
|
||||
float: left;
|
||||
|
||||
}
|
||||
|
||||
.block_trier_par {
|
||||
width: 40%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.div_row {
|
||||
float: left;
|
||||
border-width: 0.01rem;
|
||||
|
@ -5622,12 +5660,12 @@
|
|||
padding-bottom: auto;
|
||||
word-break: break-word;
|
||||
margin-right: 0.5rem;
|
||||
color: #104277;
|
||||
color: #107758;
|
||||
font-size: 0.9rem;
|
||||
white-space: nowrap;
|
||||
width: 20%;
|
||||
padding-top: 10px;
|
||||
|
||||
padding-top: 10px;
|
||||
|
||||
}
|
||||
|
||||
.filter_val {
|
||||
|
@ -5641,7 +5679,7 @@
|
|||
background: transparent;
|
||||
color: #3b3e40;
|
||||
font-family: "DM Sans", "verdana", "Quicksand", "Signika";
|
||||
border: 1px solid #C7C9CE;
|
||||
border: 1px solid #C7C9CE;
|
||||
border-radius: 0.3rem !important;
|
||||
width: 65%;
|
||||
margin-top: 0.3rem;
|
||||
|
@ -8385,6 +8423,17 @@
|
|||
|
||||
@media only screen and (min-width: 1200px) and (max-width: 1919px) {
|
||||
|
||||
.block_pagination {
|
||||
width: 50%;
|
||||
float: left;
|
||||
|
||||
}
|
||||
|
||||
.block_trier_par {
|
||||
width: 40%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* Ordi de bureau et grands ecrans*/
|
||||
.align_gauche {
|
||||
margin-left: 0rem;
|
||||
|
@ -8690,12 +8739,12 @@
|
|||
padding-bottom: auto;
|
||||
word-break: break-word;
|
||||
margin-right: 0.5rem;
|
||||
color: #104277;
|
||||
color: #107758;
|
||||
font-size: 0.9rem;
|
||||
white-space: nowrap;
|
||||
width: 20%;
|
||||
padding-top: 10px;
|
||||
|
||||
padding-top: 10px;
|
||||
|
||||
}
|
||||
|
||||
.filter_val {
|
||||
|
@ -8709,7 +8758,7 @@
|
|||
background: transparent;
|
||||
color: #3b3e40;
|
||||
font-family: "DM Sans", "verdana", "Quicksand", "Signika";
|
||||
border: 1px solid #C7C9CE;
|
||||
border: 1px solid #C7C9CE;
|
||||
border-radius: 0.3rem !important;
|
||||
width: 65%;
|
||||
margin-top: 0.3rem;
|
||||
|
@ -11470,6 +11519,17 @@
|
|||
}
|
||||
|
||||
@media only screen and (min-width: 1920px) {
|
||||
.block_pagination {
|
||||
width: 50%;
|
||||
float: left;
|
||||
|
||||
}
|
||||
|
||||
.block_trier_par {
|
||||
width: 40%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.calage {
|
||||
width: 2%;
|
||||
}
|
||||
|
@ -11775,12 +11835,12 @@
|
|||
padding-bottom: auto;
|
||||
word-break: break-word;
|
||||
margin-right: 0.5rem;
|
||||
color: #104277;
|
||||
color: #107758;
|
||||
font-size: 0.75rem;
|
||||
white-space: nowrap;
|
||||
width: 20%;
|
||||
padding-top: 10px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.filter_val {
|
||||
|
@ -11794,7 +11854,7 @@
|
|||
background: transparent;
|
||||
color: #3b3e40;
|
||||
font-family: "DM Sans", "verdana", "Quicksand", "Signika";
|
||||
border: 1px solid #C7C9CE;
|
||||
border: 1px solid #C7C9CE;
|
||||
border-radius: 0.3rem !important;
|
||||
width: 65%;
|
||||
margin-top: 0.3rem;
|
||||
|
@ -14723,7 +14783,7 @@
|
|||
}
|
||||
|
||||
.dHtlYi {
|
||||
background: #104277;
|
||||
background: #107758;
|
||||
}
|
||||
|
||||
.bQSvsY {
|
||||
|
|
|
@ -25,7 +25,7 @@ const SideBar = () => {
|
|||
|
||||
const environnment = process.env.REACT_APP_ENV
|
||||
|
||||
|
||||
|
||||
|
||||
function logout_confirmation() {
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
|
@ -0,0 +1,14 @@
|
|||
import Ent_Intranet from "../components/Ent_Intranet"
|
||||
|
||||
const mon_ent_student = () => {
|
||||
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Ent_Intranet />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default mon_ent_student;
|
|
@ -1,19 +1,12 @@
|
|||
import Mon_Intranet_Public from "../components/Mon_Intranet_Public"
|
||||
import Navigation from "../components/Navigation";
|
||||
import Footer from "./footer";
|
||||
|
||||
const mon_intranet_public = () => {
|
||||
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
||||
<div>
|
||||
<Mon_Intranet_Public />
|
||||
</div>
|
||||
|
||||
<Mon_Intranet_Public />
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
import Navigation from "../components/Navigation";
|
||||
import Ent_Intranet from "./../components/Ent_Intranet";
|
||||
import ENT_Student_New_C_Header_2025_V2 from "../components/ENT_Student_header_automatic_files/ENT_Student_Header";
|
||||
import New_C_Footer_Without_Testimony_2025_V2 from "../components/footer_automatic_files/Layout_Without_Testimony";
|
||||
import New_Navigation_ENT_Student_2025 from "../components/New_Navigation_ENT_Student_2025";
|
||||
import Student_Account from "./../components/Student_Account";
|
||||
const student_account = () => {
|
||||
|
||||
return (
|
||||
<div>
|
||||
<New_Navigation_ENT_Student_2025 />
|
||||
<ENT_Student_New_C_Header_2025_V2 />
|
||||
<Student_Account />
|
||||
<New_C_Footer_Without_Testimony_2025_V2 />
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
export default student_account;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue