12/11/2025 - 22h30

branche_01062025
Cherif 2025-11-12 22:27:53 +01:00
parent 283aac8b6f
commit c117dbf75e
24 changed files with 4331 additions and 61434 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,721 +0,0 @@
import React, { useState, useEffect } from "react";
import { FacebookShareButton, LinkedinShareButton, TwitterShareButton } from "react-share";
import { SocialIcon } from 'react-social-icons';
import { Button, } from "reactstrap";
import { useHistory } from "react-router-dom";
import { Helmet } from "react-helmet";
import { useCookies } from "react-cookie";
import { confirmAlert } from 'react-confirm-alert';
import coeurimg from "../mysy_img/coeur.png";
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'
import { CiLocationOn } from "react-icons/ci";
const Formation_Partner_Catalog = (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-Partner-Catalog-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 => {
if (res.data.status != "False") {
//console.log(" getClassImage : In test res.data.status = " + res.data.status);
//console.log(" getClassImage: 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);
}
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);
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("")
})
}
return (
<div className="formation_partner_catalog">
<div style={{ "width": "100%" }}>
{class_img_stored_in_bdd && String(class_img_stored_in_bdd).length > 50 && <div className="forma_img_gauche">
<img src={class_img_stored_in_bdd} alt="informatique" className="training_img" />
</div>
}
{ (!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50 ) && String(ismetiermanaged) !== "0" && String(ismetiermanaged) !== "1" && <div className="forma_img_gauche">
{(!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" className="training_img" />}
{(!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" className="training_img" />}
{(!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" className="training_img" />}
{(!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" className="training_img" />}
{(!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" className="training_img" />}
{!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" className="training_img" />}
{!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" className="training_img" />}
{!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" className="training_img" />}
{String(isclassimage) === "True" && <img src={userimgclassprofil} alt="developpement personnel" className="training_img" />}
</div>
}
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50 ) && String(ismetiermanaged) === "0" && String(userimgclassprofil).length > 100 && <div className="forma_img_gauche">
<img src={userimgclassprofil} alt="autre" className="training_img" />
{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 className="forma_img_gauche">
<img src={img_met_autre} alt="autre" className="training_img" />
{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 className="forma_img_gauche">
<img src={props.formation.img_url} alt="autre" className="training_img" />
{props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par : <br /> {String(props.formation.institut_formation)} </div>}
</div>}
<div className="forma_rightbox"
onClick={(e) => {
e.preventDefault();
if (props.formation.url && props.formation.url.length > 5) {
window.open(
props.formation.url,
'_blank'
);
} else {
window.open(
"/Display-Partner-Catalog-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}
}}>
<div className="p_forma">
<div className="div_row">
<div className="div_row_gauche" style={{ "marginTop": "5px" }}>
{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 />
}
</div>
<div className="div_row_droite div_row_droite_cpf">
<div className="block_cpf">
<div className="block_cpf_txt">
{props.formation.cpf && String(props.formation.cpf) === String("1") &&
<div>
OUI Éligible au CPF &nbsp;
</div>}
{props.formation.cpf && String(props.formation.cpf) !== String("1") &&
<div>
NON Éligible au CPF &nbsp;
</div>}
{!props.formation.cpf &&
<div>
NON Éligible au CPF &nbsp;
</div>}
</div>
</div>
</div>
</div>
<div className="div_row row_formation_title">
<p className="p_class training_title">
<b>
{String(parse(String(props.formation.title).replace(/(<([^>]+)>)/ig, ''))).substring(0, 100)}
</b>
</p>
</div>
<div className="div_row">
{String(props.formation.price).length == 9 &&
<div className="training_price" > <i>Prix : Non communiqué</i> &nbsp;
</div>
}
{String(props.formation.price).length != 9 && String(props.formation.price) === String("0") &&
<div className="training_price">Gratuit &nbsp;
</div>
}
{String(props.formation.price).length != 9 && String(props.formation.price) !== String("0") && (!props.formation.business_prices ||
Object.keys(props.formation.business_prices).length <= 0) &&
<div className="training_price">{props.formation.price} HT&nbsp;
</div>
}
{String(props.formation.price).length != 9 && String(props.formation.price) !== String("0") &&
props.formation.business_prices && Object.keys(props.formation.business_prices).length > 0 &&
<div className="training_price">
<nav className="discounted_price">{String(props.formation.business_prices[0].discounted_price)} HT</nav>
<nav className="training_price_barre">
{props.formation.price} HT&nbsp;
</nav>
<nav className="discount_block"> (- {String(props.formation.business_prices[0].discount)} % )
</nav>
</div>
}
</div>
<div className="div_row row_formation_desc">
{parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))}
</div>
{GetCurrentClass_trainingsession_cities_result && GetCurrentClass_trainingsession_cities_result.length > 0 &&
<nav style={{ "width": "100%", "float": "left", "textAlign": "left", "color": "#619E31" }}>
<nav style={{ "width": "auto", "float": "left" }}> <CiLocationOn className="icone_location" />&nbsp; </nav>
{GetCurrentClass_trainingsession_cities_result && GetCurrentClass_trainingsession_cities_result.sort().slice(0, 5).map((formation_ville) => (
<nav style={{ "width": "auto", "float": "left" }}>
{formation_ville &&
<b> {formation_ville.replaceAll('"', '').substring(0, 20).toLocaleLowerCase().charAt(0).toUpperCase() +
formation_ville.replaceAll('"', '').substring(0, 20).toLocaleLowerCase().slice(1)} &nbsp;&nbsp; </b>
}
</nav>
))}
</nav>
}
{!GetCurrentClass_result || GetCurrentClass_result.length <= 0 &&
<nav style={{ "width": "100%", "float": "left", "textAlign": "left", "fontWeight": "700" }}><CiLocationOn className="icone_location" />&nbsp; A venir </nav>
}
</div>
</div>
<div className="div_row row_formation_crit">
<hr style={{ "width": "90%", "marginLeft": "auto", "marginRight": "auto", "marginBottom": "2px", "marginTop": "2px" }} />
<div className="div_row_gauche div_row_gauche_critere" >
<div className="div_row_critere" style={{ "marginTop": "0.5rem", "marginBottom": "0.3rem" }}>
{!props.formation.extented_search &&
<div className="div_row_gauche">
{props.formation.duration_unit &&
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">Durée
</div>
{String(props.formation.duration_unit) === "heure" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} hr(s) &nbsp;
</div>}
{String(props.formation.duration_unit) === "heures" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} hr(s) &nbsp;
</div>}
{String(props.formation.duration_unit) === "jour" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} jr(s) &nbsp;
</div>}
{String(props.formation.duration_unit) === "mois" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} mois(s)
</div>}
{String(props.formation.duration_unit) === "semaine" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} Sem (s)
</div>}
{String(props.formation.duration_unit) === "user_rythme" &&
<div className="criteres ftion_tab_droite">
A votre rythme
</div>}
</div>
}
{!props.formation.duration_unit &&
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">Durée
</div>
{props.formation.duration && <div className="criteres ftion_tab_droite">
{props.formation.duration} jr(s) &nbsp;
</div>}
{!props.formation.duration && <div className="criteres ftion_tab_droite">
<i> En traitement &nbsp; </i>
</div>}
</div>
}
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">
Certification
</div>
<div className="criteres ftion_tab_droite">
{props.formation.certif && String(props.formation.certif) === String("1") &&
<div>
Oui &nbsp;
</div>}
{props.formation.certif && String(props.formation.certif) !== String("1") &&
<div>
Non &nbsp;
</div>}
{!props.formation.certif &&
<div>
NC &nbsp;
</div>}
</div>
</div>
<div className="media_sociaux" style={{ 'float': "left", marginTop: "0.2rem", }}>
<FacebookShareButton
url={"https://www.mysy-training.com/Display-Partner-Catalog-Detail-formation/" + props.formation.internal_url}
quote={props.formation.title + " -- " + props.formation.description}
hashtag={"ySyTraining"}
>
<SocialIcon network="facebook" style={{ height: 20, width: 20 }} />
</FacebookShareButton>
&nbsp;
<TwitterShareButton
url={"https://www.mysy-training.com/Display-Partner-Catalog-Detail-formation/" + props.formation.internal_url}
hashtag={"#MySy-Formation"}
>
<SocialIcon network="twitter" style={{ height: 20, width: 20 }} />
</TwitterShareButton>
&nbsp;
<LinkedinShareButton
url={"https://www.mysy-training.com/Display-Partner-Catalog-Detail-formation/" + props.formation.internal_url}
title={" Une nouvelle formation : " + props.formation.title}
summary={props.formation.title + " -- " + props.formation.description}
source={"https://www.mysy-training.com/"}
>
<SocialIcon network="linkedin" style={{ height: 20, width: 20 }} />
</LinkedinShareButton>
</div>
</div>}
<div className="div_row_droite" style={{ textAlign: "center" }}>
{String(props.formation.coeur) === String("1") && <div>
<img class="imgcoeur" src={coeurimg} alt="coup de coeur" />
</div>}
<div style={{ "width": "100%", "float": "right" }}>
<div className="criteres ftion_tab_gauche">
Sur site
</div>
{props.formation.presentiel && props.formation.presentiel.presentiel &&
String(props.formation.presentiel.presentiel) === String("1") && <div className="criteres ftion_tab_droite">
Oui
</div>}
{props.formation.presentiel && props.formation.presentiel.presentiel &&
String(props.formation.presentiel.presentiel) !== String("1") && <div className="criteres ftion_tab_droite">
Non
</div>}
{!props.formation.presentiel || !props.formation.presentiel.presentiel &&
<div className="criteres ftion_tab_droite">
NC
</div>}
</div>
<div style={{ "width": "100%", "float": "right" }}>
<div className="criteres ftion_tab_gauche">
A distance
</div>
{props.formation.presentiel && props.formation.presentiel.distantiel &&
String(props.formation.presentiel.distantiel) === String("1") && <div className="criteres ftion_tab_droite">
Oui
</div>}
{props.formation.presentiel && props.formation.presentiel.distantiel &&
String(props.formation.presentiel.distantiel) !== String("1") && <div className="criteres ftion_tab_droite">
Non
</div>}
{!props.formation.presentiel || !props.formation.presentiel.distantiel &&
<div className="criteres ftion_tab_droite">
NC
</div>}
</div>
<div style={{ "width": "100%", "float": "right" }}>
<div className="criteres ftion_tab_gauche">
Support
</div>
{props.formation.support &&
<div className="criteres ftion_tab_droite">
{props.formation.support}
</div>}
{!props.formation.support &&
<div className="criteres ftion_tab_droite">
NC
</div>}
</div>
</div>
</div>
</div>
<div className="div_row_droite div_row_droite_critere" >
{!props.formation.extented_search && props.formation.coeur != "1" &&
<div style={{ 'float': "right", "width": "100%", textAlign: "right", marginTop: "0rem", }}>
<Button className="bton_se_renseinger"
onClick={(e) => {
e.preventDefault();
if (props.formation.url && props.formation.url.length > 5) {
window.open(
props.formation.url,
'_blank'
);
} else {
window.open(
"/Display-Partner-Catalog-Detail-formation/" + props.formation.internal_url + "/Information",
'_blank'
);
}
}}
>Se renseigner </Button>
<Button className="bton_voir_detail"
onClick={(e) => {
e.preventDefault();
//test(props.formation.external_code);
if (props.formation.url && props.formation.url.length > 5) {
window.open(
props.formation.url,
'_blank'
);
} else {
window.open(
"/Display-Partner-Catalog-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}
}}
>Voir details</Button>
{GetCurrentClass_result && GetCurrentClass_result.length > 0 &&
<Button variant="contained" className="bton_sinscrire"
onClick={(e) => {
e.preventDefault();
window.open(
"/Display-Partner-Catalog-Detail-formation/" + props.formation.internal_url + "/Inscription",
'_blank'
);
}}
>S'incrire</Button>
}
</div>}
</div>
</div>
</div>
</div>
)
}
export default Formation_Partner_Catalog;

View File

@ -1,162 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" href="../src/App.css">
<script src="https://widget-js.cometchat.io/v2/cometchatwidget.js"></script>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<!--
<script type='text/javascript'>
var link = !!document.querySelector("link[rel='canonical']") ? document.querySelector("link[rel='canonical']") : document.createElement('link');
link.setAttribute('rel', 'canonical');
link.setAttribute('href', location.protocol + '//' + location.host + location.pathname);
document.head.appendChild(link);
</script>
<script type='text/javascript'>
if (String(location.pathname) === "/") {
var link1 = document.createElement('meta');
link1.setAttribute('name', 'description');
link1.setAttribute('content', "Éditeur Français de logiciels de gestion pour organismes de formation - Gestion administrative, CRM, E-Learning, Marketplace");
document.head.appendChild(link1);
var link2 = document.createElement('meta');
link2.setAttribute('name', 'robots');
link2.setAttribute('content', "index,follow");
document.head.appendChild(link2);
var link3 = document.createElement('meta');
link3.setAttribute('name', 'title');
link3.setAttribute('content', "A propose MySy Training Technology");
document.head.appendChild(link3);
}
</script>
-->
<link rel="apple-touch-icon" href="%PUBLIC_URL%/MYSY-LOGO-BLUE_192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-37423053-2"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VQJL28S28H"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-VQJL28S28H');
</script>
<!-- Google Tag Manager -->
<script>(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-5MR9Z8N2');</script>
<!-- End Google Tag Manager -->
<script src="https://js.stripe.com/v3/"></script>
<!-- <script src="https://cdn.tiny.cloud/1/1e3z9qnqh8jrw2xowh8c3zo8edc333zy5jdt7albegzcv752/tinymce/6/tinymce.min.js" referrerpolicy="origin"></script> -->
<!-- <script src="tinymce/js/tinymce/tinymce.min.js"></script> -->
<script src="/tinymce/tinymce.min.js" referrerpolicy="origin"></script>
<script>
tinymce.init({
selector: '#mytextarea',
license_key: 'gpl|<your-license-key>'
});
</script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag("js", new Date());
gtag("config", "UA-37423053-2");
</script>
<!-- Smartsupp Live Chat script -->
<script type="text/javascript">
var _smartsupp = _smartsupp || {};
_smartsupp.key = '2193f283b62a483c4d12f96fb3e48d866f1bfe61';
window.smartsupp || (function (d) {
var s, c, o = smartsupp = function () { o._.push(arguments) }; o._ = [];
s = d.getElementsByTagName('script')[0]; c = d.createElement('script');
c.type = 'text/javascript'; c.charset = 'utf-8'; c.async = true;
c.src = 'https://www.smartsuppchat.com/loader.js?'; s.parentNode.insertBefore(c, s);
})(document);
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-17B18WZKPN"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-17B18WZKPN');
</script>
<!-- Google Fonts-- >
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&display=swap"
rel="stylesheet">
-->
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5MR9Z8N2" height="0" width="0"
style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

31874
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@ 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 Modules_Mes_Documents from "./Modules_Mes_Documents_old";
import Intranet_Mes_Stagiaires from "./Intranet_Mes_Stagiaires";
function Account() {
@ -509,7 +509,7 @@ function Account() {
my_title={"Gestion Documentaire"}
type_user_connected={"user_account"}
type_document={"all"}
/>}
/>}
{String(menu) === String("mes_devis") && connected_user_data && connected_user_data.partner_owner_recid &&
connected_user_data.partner_client_id &&

View File

@ -8569,7 +8569,7 @@ const AddClassManual = (props) => {
<div class="separator">
<nav className="separator_label">
Champs spécifiques </nav>
</div>}
</div>}
<div style={{ width: '100%', float: 'left', }}>

View File

@ -17,7 +17,7 @@ import { Fab } from "@material-ui/core";
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import { CiEdit, CiTrash } from "react-icons/ci";
import Modules_Mes_Documents from "./Modules_Mes_Documents";
import { AiOutlineUserAdd } from "react-icons/ai";
import PartnerClientActivite from "./PartnerClient_Activite";
import Popup from 'reactjs-popup';
@ -5543,6 +5543,21 @@ const AddParnerClient = (props) => {
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
<div className="div_row" style={{ "border": "None" }}>
<Modules_Mes_Documents
partner_client_id={""}
partner_owner_recid={""}
type_user_connected={"partner_account"}
my_title={"Gestion Documentaire"}
object_owner_collection={"partner_client"}
object_owner_id={props.client_id}
/>
</div>
</div>}

View File

@ -28035,6 +28035,7 @@ const DisplayPartnerPromotion = (props) => {
GetListeInscrit={GetListeInscrit}
internal_url={selected_internal_url}
check_user_acces_right={props.check_user_acces_right}
selected_class_id={session_selected_class_id}
submenu_emargement={submenu_emargement}
submenu_evaluation={submenu_evaluation_session}
@ -28222,7 +28223,7 @@ const DisplayPartnerPromotion = (props) => {
{String(submenu) === String("attestation") && <div style={{ "border": "None" }}>
<Module_Attestation_Formation conntected_employee_id={props.conntected_employee_id} related_collection={"session_formation"}
related_collection_recid={selected_session_id} />
related_collection_recid={selected_session_id} class_id={session_selected_class_id} />
</div>}
@ -28231,7 +28232,8 @@ const DisplayPartnerPromotion = (props) => {
<Module_Evaluation_Positionnement conntected_employee_id={props.conntected_employee_id}
related_collection={"session_formation"}
related_collection_recid={selected_session_id}
class_internal_url={selected_internal_url} />
class_internal_url={selected_internal_url}
class_id={session_selected_class_id} />
</div>}

View File

@ -20,7 +20,7 @@ import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import { FcSearch } from "react-icons/fc";
import { FcAlarmClock, FcMultipleSmartphones, FcWorkflow, FcComments } from "react-icons/fc";
import { FaComment } from "react-icons/fa6";
import fr from 'date-fns/locale/fr';
import { registerLocale } from 'react-datepicker';
import DatePicker from "react-datepicker";
@ -803,6 +803,32 @@ const DisplayPartnerSession = (props) => {
},
},
{ field: 'amount', headerName: 'Montant Formation', minWidth: 100, flex: 1, maxWidth: 150, type: 'number', flex: 1, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'comment_or_memo', headerName: 'Memo & Comment.', Width: 50, hide: false, editable: false,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", cursor: "pointer",
textAlign:'center',width:'100%' }} onClick={(event) => {
setp_detail_inscription_comment(cellValues.row.comment);
setp_detail_inscription_memo(cellValues.row.memo);
setselected_inscription_id(cellValues.row._id);
setselected_inscription_email(cellValues.row.email);
setselected_inscription_invoice_status("0");
setselected_inscription_status("0");
setDialog_Memo_Comment_open(true);
}}>
{(cellValues.row.comment && String(cellValues.row.comment).length > 2 ||
cellValues.row.memo && String(cellValues.row.memo).length > 2)
&& <nav> <FaComment style={{ fontSize: "16px", color: "green" }} /> </nav>}
</div>
);
}
},
{
field: "update", headerName: 'Mise à jour',
renderCell: (cellValues) => {
@ -1347,6 +1373,32 @@ const DisplayPartnerSession = (props) => {
{ field: 'modefinancement', headerName: 'Financement', minWidth: 100, flex: 1, maxWidth: 150, hide: true, editable: false },
{ field: 'amount', headerName: 'Prix', minWidth: 100, flex: 1, maxWidth: 100, type: 'number', flex: 1, editable: false },
{
field: 'comment_or_memo', headerName: 'Memo & Comment.', Width: 50, hide: false, editable: false,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", cursor: "pointer", textAlign:'center',
width:'100%'
}} onClick={(event) => {
setp_detail_inscription_comment(cellValues.row.comment);
setp_detail_inscription_memo(cellValues.row.memo);
setselected_inscription_id(cellValues.row._id);
setselected_inscription_email(cellValues.row.email);
setselected_inscription_invoice_status(cellValues.row.invoiced);
setselected_inscription_status("1");
setDialog_Memo_Comment_open(true);
}}>
{(cellValues.row.comment && String(cellValues.row.comment).length > 2 ||
cellValues.row.memo && String(cellValues.row.memo).length > 2)
&& <nav> <FaComment style={{ fontSize: "16px", color: "green" }} /> </nav>}
</div>
);
}
},
{
field: 'invoiced', headerName: 'Facturé', minWidth: 100, flex: 1, maxWidth: 100, hide: false, editable: false,
valueFormatter: (params) => {
@ -1359,6 +1411,9 @@ const DisplayPartnerSession = (props) => {
{ field: 'invoiced_ref', headerName: 'Num Fact.', minWidth: 100, flex: 1, maxWidth: 150, flex: 1, editable: false, hide: false, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'invoiced_date', headerName: 'Date Fact.', minWidth: 100, flex: 1, maxWidth: 150, flex: 1, editable: false, hide: true, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: "split_invoice", headerName: 'Eclat. Fact',
renderCell: (cellValues) => {
@ -1677,8 +1732,9 @@ const DisplayPartnerSession = (props) => {
},
},
{ field: 'memo', headerName: 'Mémo', maxWidth: 0, hide: true, editable: false },
{ field: 'comment', headerName: 'Commentaire', maxWidth: 0, hide: true, editable: false },
{ field: 'memo', headerName: 'Mémo', Width: 0, hide: true, editable: false },
{ field: 'comment', headerName: 'Commentaire', Width: 0, hide: true, editable: false },
]
const columns_list_emargement = [
@ -12461,7 +12517,7 @@ const DisplayPartnerSession = (props) => {
else
setNew_Get_List_Stagiaire_Conventions_result([])
console.log(" ## new_data2 = ", new_data2);
// console.log(" ## new_data2 = ", new_data2);
}
else {
@ -12531,6 +12587,8 @@ const DisplayPartnerSession = (props) => {
else if (local_type_document === "CONVOCATION_STAGIAIRE_MAIL"
|| local_type_document === "CONVOCATION_STAGIAIRE_PDF")
setselected_convocation_id(mylocaltraining[local_type_document]);
}
@ -12549,7 +12607,7 @@ const DisplayPartnerSession = (props) => {
setLoading(false);
console.warn('Not good man :( Get_Class_Default_Document_id = ', error);
setGet_Class_Default_Document_id_api("false");
alert("Impossible de récupérer le document par défaut");
// alert("Impossible de récupérer le document par défaut");
//setmyApimyApiMessage("")
})
}
@ -16701,6 +16759,10 @@ const DisplayPartnerSession = (props) => {
fullWidth
options={New_Option_Type_Document}
onChange={(event, value) => {
setselected_convention_id("");
setNew_Get_List_Stagiaire_Conventions_result([])
if (value && value.value) {
if (value.value === "email" && String(Dialog_1_message) === "CONVENTION_STAGIAIRE_INDIVIDUELLE")
Get_Class_Default_Document_id("CONVENTION_STAGIAIRE_INDIVIDUELLE_MAIL");
@ -16708,7 +16770,6 @@ const DisplayPartnerSession = (props) => {
Get_Class_Default_Document_id("CONVENTION_STAGIAIRE_INDIVIDUELLE_PDF");
else if (value.value === "email" && String(Dialog_1_message) === "CONVENTION_STAGIAIRE_ENTREPRISE")
Get_Class_Default_Document_id("CONVENTION_STAGIAIRE_ENTREPRISE_MAIL");
else if (value.value === "pdf" && String(Dialog_1_message) === "CONVENTION_STAGIAIRE_ENTREPRISE")
@ -17091,6 +17152,9 @@ const DisplayPartnerSession = (props) => {
fullWidth
options={New_Option_Type_Document}
onChange={(event, value) => {
setselected_convocation_id("");
settab_convention_pieces_jointes_result([]);
setNew_Get_List_Stagiaire_Convocations_result([])
if (value && value.value) {
if (value.value === "email")
@ -20371,7 +20435,7 @@ const DisplayPartnerSession = (props) => {
{/** Affichage Timeline */}
{/*** Fin affichage timeline */}
{(!display_session_with_alert || display_session_with_alert !== true) && <div className="div_row" style={{ "border": "None" }}>
<div className='block_groupe_class'>
@ -27652,6 +27716,7 @@ const DisplayPartnerSession = (props) => {
GetListeInscrit={GetListeInscrit}
internal_url={selected_internal_url}
check_user_acces_right={props.check_user_acces_right}
selected_class_id={session_selected_class_id}
submenu_emargement={submenu_emargement}
submenu_evaluation={submenu_evaluation_session}
@ -28122,7 +28187,7 @@ const DisplayPartnerSession = (props) => {
{String(submenu) === String("attestation") && <div style={{ "border": "None" }}>
<Module_Attestation_Formation conntected_employee_id={props.conntected_employee_id} related_collection={"session_formation"}
related_collection_recid={selected_session_id} />
related_collection_recid={selected_session_id} class_id={session_selected_class_id}/>
</div>}

View File

@ -0,0 +1,285 @@
import React, { useRef, useState, useEffect } from "react";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import axios from "axios";
import { useParams } from 'react-router-dom';
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import fileDownload from 'js-file-download'
import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem';
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 VisibilityIcon from '@mui/icons-material/Visibility';
import ArrowCircleDownIcon from '@mui/icons-material/ArrowCircleDown';
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';
import FilePresentIcon from '@mui/icons-material/FilePresent';
import PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';
import { BsFiletypePdf } from "react-icons/bs";
import { GoFile } from "react-icons/go";
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 Document_Affichage_Grid = (props) => {
const classes = useStyles();
const [isLoading, setLoading] = 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("");
}
useEffect(() => {
window.scrollTo({
top: 0,
behavior: "smooth",
});
}, [props.apprenant_id])
function print_document_pdf(doc_id, file_extention, file_business_object) {
var part_cookie = getCookie('tokenmysypart');
var nom_fichier_cmd = String(file_business_object) + "." + String(file_extention);
// console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- doc_id = ", doc_id);
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Stored_Downloaded_File_From_Id/" + part_cookie + "/" + doc_id;
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
axios.get(url, { responseType: 'blob', },)
.then((res) => {
fileDownload(res.data, nom_fichier_cmd)
}).catch((error) => {
console.error('Error:', error);
});
}
function preview_document_pdf(doc_id, file_extention, file_business_object) {
var part_cookie = getCookie('tokenmysypart');
var nom_fichier_cmd = String(file_business_object) + "." + String(file_extention);
// console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- doc_id = ", doc_id);
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Stored_Downloaded_File_From_Id/" + part_cookie + "/" + doc_id;
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
axios.get(url, { responseType: 'blob', },)
.then((res) => {
const blob = new Blob([res.data], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
setselected_doc_img(url);
// fileDownload(res.data, nom_fichier_cmd)
}).catch((error) => {
console.error('Error:', error);
});
}
const [Dialog_Preview_Doc_message, setDialog_Preview_Doc_message] = React.useState(false);
const [Dialog_Preview_Doc_open, setDialog_Preview_Doc_open] = React.useState(false);
function Dialog_Preview_Doc_handle_change_participant_session(message) {
setDialog_Preview_Doc_message(message);
setDialog_Preview_Doc_open(true);
}
const Dialog_Preview_Doc_handleClose = () => {
};
const Dialog_Preview_Doc_handleClose_buton = () => {
setDialog_Preview_Doc_open(false);
};
const [selected_doc_img, setselected_doc_img] = React.useState("");
const [selected_doc_name, setselected_doc_name] = React.useState("");
return (
<div className="modules_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*/}
{/***** Dialog Preview Image */}
<Dialog
open={Dialog_Preview_Doc_open}
// onClose={Dialog_Preview_Doc_handleClose}
static
onClose={() => null}
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
position: 'absolute',
top: '7rem',
margin: "2px",
width: '40rem'
},
}}
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" >{selected_doc_name}</DialogTitle>
<DialogContent>
<DialogContentText>
{Dialog_Preview_Doc_message}
</DialogContentText>
<div style={{ width: '100%', height: '35rem' }}> <br />
{selected_doc_img &&
<iframe src={selected_doc_img} style={{ height: '30rem', width: '90%' }}></iframe>}
</div>
</DialogContent>
<DialogActions>
<IconButton
// autoFocus
onClick={Dialog_Preview_Doc_handleClose_buton}
color="primary"
className={classes.customizedButton}
>
<CancelPresentationIcon />
</IconButton>
</DialogActions>
</Dialog>
{/***** FIN Dialog Preview Image */}
<div style={{ width: '100%', float: 'left', }}>
<div className="file-grid">
{props.list_document &&
props.list_document.map((document) => (
<div className="file-grid">
<div className="file-card">
<div className="file-icon"><GoFile style={{ fontSize: '30px', color: '#81bc3a' }} /> </div>
<div className="file-name">{JSON.parse(document).file_business_object}</div>
<div className="file-date">Crée le {String(JSON.parse(document).creation_date).substring(0, 10)}</div>
<div className="file-date" style={{ width: '40%', float: 'left', cursor: 'pointer' }} onClick={(e) => {
preview_document_pdf(JSON.parse(document)._id, JSON.parse(document).file_extention, JSON.parse(document).file_business_object);
setselected_doc_name(JSON.parse(document).file_business_object);
setDialog_Preview_Doc_open(true);
}}>
<VisibilityIcon style={{ color: 'white' }} />
</div>
<div className="file-date" style={{ width: '40%', float: 'right', cursor: 'pointer' }} onClick={(e) => {
print_document_pdf(JSON.parse(document)._id, JSON.parse(document).file_extention, JSON.parse(document).file_business_object);
setselected_doc_name(JSON.parse(document).file_business_object);
}}>
<ArrowCircleDownIcon style={{ color: 'white' }} />
</div>
</div>
</div>
))}
</div>
</div>
</div>
)
}
export default Document_Affichage_Grid;

View File

@ -376,7 +376,7 @@ registerLocale('fr', fr);
]
const columns_employee_acces_right = [
{ field: '_id', headerName: '_id', hide: true },

View File

@ -3087,7 +3087,7 @@ const Groupe_Apprenant = (props) => {
</div>
<div className="session_caract_Dialog" ><b> Classe </b> <br />
<div className="session_caract_Dialog" ><b> Promotion </b> <br />
{New_Getall_Partner_Session_Reduice_Fields_result && New_Getall_Partner_Session_Reduice_Fields_result.length > 0 &&
<Autocomplete

View File

@ -393,7 +393,7 @@ const Module_Attestation_Formation = (props) => {
fileDownload(res.data, nom_fichier_cmd);
setselectionModel_attestation([]);
setactionmass_attesation_val("");
Getall_Attestation_By_Session();
Getall_Attestation_By_Session();
}
}).catch((error) => {
@ -489,6 +489,7 @@ const Module_Attestation_Formation = (props) => {
for (var i = 0; i < selectionModel_attestation.length; i++) {
var myid = parseInt(String(selectionModel_attestation[i]));
var line = JSON.parse(Getall_Attestation_By_Session_result[myid]);
var line_id = JSON.parse(Getall_Attestation_By_Session_result[myid])._id;
tab_ids_inscription.push(line_id);
@ -521,7 +522,7 @@ const Module_Attestation_Formation = (props) => {
]
const [selected_convention_id, setselected_convention_id] = useState();
const [selected_convention_id, setselected_convention_id] = useState("");
const [selected_convention_type, setselected_convention_type] = useState("");
const [selected_convention_email_destinataire_prod, setselected_convention_email_destinataire_prod] = useState("");
const [selected_convention_email_test, setselected_convention_email_test] = useState("");
@ -534,7 +535,7 @@ const Module_Attestation_Formation = (props) => {
function Get_List_Stagiaire_Attestation_Ftion(ref_interne, nom, type_doc, courrier_template_type_document_ref_interne) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("type_doc", type_doc);
@ -588,6 +589,21 @@ const Module_Attestation_Formation = (props) => {
new_data2.push(node);
});
//---
var node = {
"_id": "",
"id": "",
"label": "",
"ref_interne": "",
"nom": "",
"sujet": "",
"type_doc": "",
"cible": "",
"joint_pdf": "",
};
new_data2.push(node);
if (new_data2.length > 0)
setNew_Get_List_Stagiaire_Attestation_Ftion_result(new_data2);
@ -634,6 +650,69 @@ const Module_Attestation_Formation = (props) => {
setdisplay_alert_mysy("");
}
const [New_Get_Class_Default_Document_id_result, setNew_Get_Class_Default_Document_id_result] = useState("");
const [Get_Class_Default_Document_id_api, setGet_Class_Default_Document_id_api] = useState();
const [Get_Class_Default_Document_id_message, setGet_Class_Default_Document_id_message] = useState();
const [Get_Class_Default_Document_id_result, setGet_Class_Default_Document_id_result] = useState();
function Get_Class_Default_Document_id(local_type_document) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("class_id", props.class_id);
form.append("document_type", local_type_document);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Class_List_Default_Documents_For_Given_Type_Doc/";
setLoading(true);
setNew_Get_Class_Default_Document_id_result("");
setselected_convention_id("");
axios.post(myurl, form).then(res => {
//console.log(" In Get_Class_Default_Document_id res.data.status = " + res.data.status);
// console.log(" In Get_Class_Default_Document_id res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setGet_Class_Default_Document_id_api("true");
setGet_Class_Default_Document_id_result(res.data.message);
var mylocaltraining = JSON.parse(res.data.message);
if (mylocaltraining[local_type_document]) {
console.log(" OKKK = ", mylocaltraining[local_type_document]);
setNew_Get_Class_Default_Document_id_result(mylocaltraining[local_type_document]);
if (local_type_document === "ATTESTATION_FORMATION_MAIL"
|| local_type_document === "ATTESTATION_FORMATION_PDF")
setselected_convention_id(mylocaltraining[local_type_document]);
}
}
else {
setGet_Class_Default_Document_id_api("false");
setGet_Class_Default_Document_id_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 :( Get_Class_Default_Document_id = ', error);
setGet_Class_Default_Document_id_api("false");
// alert("Impossible de récupérer le document par défaut");
//setmyApimyApiMessage("")
})
}
return (
<div className="module_attestation_formation">
@ -721,7 +800,7 @@ const Module_Attestation_Formation = (props) => {
</DialogContentText>
{ <div className="session_caract_Dialog" > Type Document<br />
{<div className="session_caract_Dialog" > Type Document<br />
<Autocomplete
disablePortal
@ -732,11 +811,21 @@ const Module_Attestation_Formation = (props) => {
fullWidth
options={New_Option_Type_Document}
onChange={(event, value) => {
setselected_convention_id("");
setNew_Get_List_Stagiaire_Attestation_Ftion_result([])
if (value && value.value) {
setselected_convention_type(value.value);
Get_List_Stagiaire_Attestation_Ftion(action_server_ref_interne_doc, action_server_nom_doc,
String(value.value), Dialog_1_message);
if (value.value === "email")
Get_Class_Default_Document_id("ATTESTATION_FORMATION_MAIL");
else if (value.value === "pdf")
Get_Class_Default_Document_id("ATTESTATION_FORMATION_PDF");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
@ -751,18 +840,21 @@ const Module_Attestation_Formation = (props) => {
</div>}
{<div className="session_caract_Dialog" > <b> Choisir un modèle attestation </b>
<Autocomplete
{New_Get_List_Stagiaire_Attestation_Ftion_result.length > 0 && <Autocomplete
disablePortal
name="event_dialog_version_convention"
id="event_dialog_version_convention"
fullWidth
//className="disabled_style enable_style"
options={New_Get_List_Stagiaire_Attestation_Ftion_result}
value={New_Get_List_Stagiaire_Attestation_Ftion_result.filter((data) => (data)._id === String(selected_convention_id))[0].label}
onChange={(event, value) => {
if (value && value._id) {
setselected_convention_id(value._id);
console.log(" New_Get_List_Stagiaire_Attestation_Ftion_result = ", New_Get_List_Stagiaire_Attestation_Ftion_result)
if (String(value._id) === "default_mail") {
setselected_convention_type("email");
}
@ -781,7 +873,7 @@ const Module_Attestation_Formation = (props) => {
/>
}
/>
/>}
</div>}
@ -963,6 +1055,7 @@ const Module_Attestation_Formation = (props) => {
onSelectionModelChange={(newSelectionModel) => {
setselectionModel_attestation(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_session_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {

View File

@ -729,6 +729,21 @@ const Module_Editique = (props) => {
new_data2.push(node);
});
var node = {
"_id": "",
"id": "",
"label": "",
"ref_interne": "",
"nom": "",
"sujet": "",
"type_doc": "",
"cible": "",
"joint_pdf": "",
};
new_data2.push(node);
if (new_data2.length > 0)
setNew_Get_List_Stagiaire_Conventions_result(new_data2);
@ -1523,6 +1538,80 @@ const Module_Editique = (props) => {
{ "id": "", "label": "", "value": "" },
]
const [selected_convocation_id, setselected_convocation_id] = useState("");
const [New_Get_Class_Default_Document_id_result, setNew_Get_Class_Default_Document_id_result] = useState("");
const [Get_Class_Default_Document_id_api, setGet_Class_Default_Document_id_api] = useState();
const [Get_Class_Default_Document_id_message, setGet_Class_Default_Document_id_message] = useState();
const [Get_Class_Default_Document_id_result, setGet_Class_Default_Document_id_result] = useState();
function Get_Class_Default_Document_id(local_type_document) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("class_id", props.selected_class_id);
form.append("document_type", local_type_document);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Class_List_Default_Documents_For_Given_Type_Doc/";
setLoading(true);
setNew_Get_Class_Default_Document_id_result("");
setselected_convention_id("");
setselected_convocation_id("");
axios.post(myurl, form).then(res => {
//console.log(" In Get_Class_Default_Document_id res.data.status = " + res.data.status);
// console.log(" In Get_Class_Default_Document_id res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setGet_Class_Default_Document_id_api("true");
setGet_Class_Default_Document_id_result(res.data.message);
var mylocaltraining = JSON.parse(res.data.message);
if (mylocaltraining[local_type_document]) {
setNew_Get_Class_Default_Document_id_result(mylocaltraining[local_type_document]);
if (local_type_document === "CONVENTION_STAGIAIRE_INDIVIDUELLE_MAIL"
|| local_type_document === "CONVENTION_STAGIAIRE_INDIVIDUELLE_PDF"
|| local_type_document === "CONVENTION_STAGIAIRE_ENTREPRISE_MAIL"
|| local_type_document === "CONVENTION_STAGIAIRE_ENTREPRISE_PDF") {
setselected_convention_id(mylocaltraining[local_type_document]);
}
else if (local_type_document === "CONVOCATION_STAGIAIRE_MAIL"
|| local_type_document === "CONVOCATION_STAGIAIRE_PDF")
setselected_convocation_id(mylocaltraining[local_type_document]);
}
}
else {
setGet_Class_Default_Document_id_api("false");
setGet_Class_Default_Document_id_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 :( Get_Class_Default_Document_id = ', error);
setGet_Class_Default_Document_id_api("false");
alert("Impossible de récupérer le document par défaut");
//setmyApimyApiMessage("")
})
}
return (
<div className="module_editique">
@ -2305,7 +2394,16 @@ const Module_Editique = (props) => {
fullWidth
options={New_Option_Type_Document}
onChange={(event, value) => {
setselected_convocation_id("");
setNew_Get_List_Stagiaire_Convocations_result([]);
if (value && value.value) {
if (value.value === "email")
Get_Class_Default_Document_id("CONVOCATION_STAGIAIRE_MAIL");
else if (value.value === "pdf")
Get_Class_Default_Document_id("CONVOCATION_STAGIAIRE_PDF");
setselected_convention_type(value.value);
Get_List_Stagiaire_Convocations(action_server_ref_interne_doc, action_server_nom_doc,
String(value.value), Dialog_1_message);
@ -2323,7 +2421,9 @@ const Module_Editique = (props) => {
</div>
selected_convocation_id = {selected_convocation_id}
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") &&
New_Get_List_Stagiaire_Convocations_result.length > 0 &&
<div className="session_caract_Dialog" ><b>Choisir une convocation </b>
<Autocomplete
disablePortal
@ -2332,6 +2432,7 @@ const Module_Editique = (props) => {
fullWidth
//className="disabled_style enable_style"
options={New_Get_List_Stagiaire_Convocations_result}
value={New_Get_List_Stagiaire_Convocations_result.filter((data) => (data)._id === String(selected_convocation_id))[0].label}
onChange={(event, value) => {
if (value && value._id) {
@ -2348,6 +2449,11 @@ const Module_Editique = (props) => {
setselected_convention_type(JSON.parse(result2).type_doc);
}
settab_convention_pieces_jointes_result([]);
setNew_Get_List_Stagiaire_Convocations_result([])
} else {
setselected_convocation_id("");
settab_convention_pieces_jointes_result([]);
setNew_Get_List_Stagiaire_Convocations_result([])
}
}}
@ -2548,7 +2654,7 @@ const Module_Editique = (props) => {
{String(selected_convention_type) === "email" && <Button onClick={(e) => {
if (String(selected_convention_email_test).length > 2) {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
@ -2663,6 +2769,18 @@ const Module_Editique = (props) => {
options={New_Option_Type_Document}
onChange={(event, value) => {
if (value && value.value) {
if (value.value === "email" && String(Dialog_1_message) === "CONVENTION_STAGIAIRE_INDIVIDUELLE")
Get_Class_Default_Document_id("CONVENTION_STAGIAIRE_INDIVIDUELLE_MAIL");
else if (value.value === "pdf" && String(Dialog_1_message) === "CONVENTION_STAGIAIRE_INDIVIDUELLE")
Get_Class_Default_Document_id("CONVENTION_STAGIAIRE_INDIVIDUELLE_PDF");
else if (value.value === "email" && String(Dialog_1_message) === "CONVENTION_STAGIAIRE_ENTREPRISE")
Get_Class_Default_Document_id("CONVENTION_STAGIAIRE_ENTREPRISE_MAIL");
else if (value.value === "pdf" && String(Dialog_1_message) === "CONVENTION_STAGIAIRE_ENTREPRISE")
Get_Class_Default_Document_id("CONVENTION_STAGIAIRE_ENTREPRISE_PDF");
setselected_convention_type(value.value);
Get_List_Stagiaire_Conventions(action_server_ref_interne_doc, action_server_nom_doc,
@ -2724,41 +2842,43 @@ const Module_Editique = (props) => {
</div>}
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > <b> Choisir une convention </b>
<Autocomplete
disablePortal
name="event_dialog_version_convention"
id="event_dialog_version_convention"
fullWidth
//className="disabled_style enable_style"
options={New_Get_List_Stagiaire_Conventions_result}
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") &&
<div className="session_caract_Dialog" > <b> Choisir une convention </b>
<Autocomplete
disablePortal
name="event_dialog_version_convention"
id="event_dialog_version_convention"
fullWidth
//className="disabled_style enable_style"
options={New_Get_List_Stagiaire_Conventions_result}
value={New_Get_List_Stagiaire_Conventions_result.filter((data) => (data)._id === String(selected_convention_id))[0].label}
onChange={(event, value) => {
if (value && value._id) {
onChange={(event, value) => {
if (value && value._id) {
setselected_convention_id(value._id);
setselected_convention_id(value._id);
if (String(value._id) === "default_mail") {
setselected_convention_type("email");
if (String(value._id) === "default_mail") {
setselected_convention_type("email");
}
else if (String(value._id) === "default_pdf") {
setselected_convention_type("pdf");
} else {
var result2 = Get_List_Stagiaire_Conventions_result.filter((local_mymanager) => JSON.parse(local_mymanager)._id === String(value._id))
setselected_convention_type(JSON.parse(result2).type_doc);
}
settab_convention_pieces_jointes_result([]);
}
else if (String(value._id) === "default_pdf") {
setselected_convention_type("pdf");
} else {
var result2 = Get_List_Stagiaire_Conventions_result.filter((local_mymanager) => JSON.parse(local_mymanager)._id === String(value._id))
setselected_convention_type(JSON.parse(result2).type_doc);
}
settab_convention_pieces_jointes_result([]);
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>}
</div>}
@ -3891,7 +4011,6 @@ const Module_Editique = (props) => {
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -90,7 +90,7 @@ function PaperComponent(props) {
<Paper {...props} />
</Draggable>
);
}
}
const useStyles = makeStyles((theme) => ({
@ -2026,8 +2026,7 @@ registerLocale('fr', fr);
</div>
{
affichage_class && String(affichage_class) === "list" && <div className="div_row" style={{ paddingRight: '10px' }}>
{ affichage_class && String(affichage_class) === "list" && <div className="div_row" style={{ paddingRight: '10px' }}>
<div className="session_data">
<div style={{ "border": "None" }}>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -56,39 +56,39 @@ import { makeStyles } from "@material-ui/core/styles";
import { IconButton } from '@material-ui/core';
function PaperComponent(props) {
return (
<Draggable
handle="#draggable-dialog-title"
cancel={'[class*="MuiDialogContent-root"]'}
>
<Paper {...props} />
</Draggable>
);
return (
<Draggable
handle="#draggable-dialog-title"
cancel={'[class*="MuiDialogContent-root"]'}
>
<Paper {...props} />
</Draggable>
);
}
const useStyles = makeStyles((theme) => ({
dialog: {
position: 'absolute',
// left: 10,
top: 400
},
dialog: {
position: 'absolute',
// left: 10,
top: 400
},
paper: {
overflowY: 'unset',
},
customizedButton: {
position: 'absolute',
left: '98%',
top: '-3%',
backgroundColor: 'lightgray',
color: 'gray',
},
paper: {
overflowY: 'unset',
},
customizedButton: {
position: 'absolute',
left: '98%',
top: '-3%',
backgroundColor: 'lightgray',
color: 'gray',
},
}));
const Notes_Evaluation = (props) => {
registerLocale('fr', fr);
const classes = useStyles();
const classes = useStyles();
const history = useHistory();
const [submenu, setsubmenu] = useState("");
const [rowss, setRows] = useState([]);
@ -547,6 +547,10 @@ const Notes_Evaluation = (props) => {
{ field: 'groupe', headerName: 'groupe', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'note', headerName: 'Note', width: 200, editable: Boolean(props.check_user_acces_right("note_evaluation", "write")), renderCell: (params) => <ExpandableCell_50_bg_hiligt {...params} />, align: "center", },
{
field: 'publish', headerName: 'Publié (ENT)', width: 100, hide: false, editable: false, type: 'boolean',
},
{ field: 'convocation_send_date', headerName: 'Conv. Envoyé', width: 200, editable: false, renderCell: (params) => <ExpandableCell_50_bg_hiligt {...params} />, align: "center", },
{ field: 'convocation_send_type', headerName: 'Conv. Par', width: 200, editable: false, renderCell: (params) => <ExpandableCell_50_bg_hiligt {...params} />, align: "center", },
@ -1107,6 +1111,7 @@ const Notes_Evaluation = (props) => {
var local_prenom = JSON.parse(x).prenom;
var local_email = JSON.parse(x).email;
var local_note = JSON.parse(x).note;
var local_publish = JSON.parse(x).publish;
var local_inscription_id = JSON.parse(x).inscription_id;
var local_group_inscription_id = JSON.parse(x).group_inscription_id;
@ -1123,6 +1128,7 @@ const Notes_Evaluation = (props) => {
"prenom": local_prenom,
"email": local_email,
"note": local_note,
"publish": local_publish,
"note_changed": "0",
"inscription_id": local_inscription_id,
"group_inscription_id": local_group_inscription_id,
@ -1142,6 +1148,7 @@ const Notes_Evaluation = (props) => {
"prenom": "",
"email": "",
"note": "",
"publish": "",
"note_changed": "0",
"inscription_id": "",
"group_inscription_id": "",
@ -2358,6 +2365,15 @@ const Notes_Evaluation = (props) => {
setDialog_CONVOCATION_EVAL_open(true);
setactionmass_eval_inscr_val("");
}
if (String(actionmass_eval_inscr_val) === String("publish_note")) {
Publish_ENT_Evaluation_Participants_Notes(tab_mongo_preins_ids, "1"); // zzzzzzzzzzzzzzzzzz
setactionmass_eval_inscr_val("");
}
if (String(actionmass_eval_inscr_val) === String("un_publish_note")) {
Publish_ENT_Evaluation_Participants_Notes(tab_mongo_preins_ids, "0"); // zzzzzzzzzzzzzzzzzz
setactionmass_eval_inscr_val("");
}
}
const [actionmass_eval_inscr_val, setactionmass_eval_inscr_val] = useState();
@ -2365,6 +2381,8 @@ const Notes_Evaluation = (props) => {
const New_Option_PreInscription = [
{ "id": "send_convocation", "label": "Envoyer Convocation", "value": "send_convocation" },
{ "id": "publish_note", "label": "Publier les notes sur l'ENT", "value": "publish_note" },
{ "id": "un_publish_note", "label": "De-publier les notes sur l'ENT", "value": "un_publish_note" },
{ "id": "delete_inscr", "label": "Supprimer", "value": "delete_inscr" },
{ "id": "", "label": "", "value": "" },
]
@ -2429,6 +2447,65 @@ const Notes_Evaluation = (props) => {
})
}
const [Publish_ENT_Evaluation_Participants_Notes_api, setPublish_ENT_Evaluation_Participants_Notes_api] = useState();
const [Publish_ENT_Evaluation_Participants_Notes_message, setPublish_ENT_Evaluation_Participants_Notes_message] = useState();
const [Publish_ENT_Evaluation_Participants_Notes_result, setPublish_ENT_Evaluation_Participants_Notes_result] = useState([]);
function Publish_ENT_Evaluation_Participants_Notes(selected_note_lines_id, local_publish_status) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("evaluation_id", selected_id);
form.append("tab_inscription_id", selected_note_lines_id);
form.append("publish_status", local_publish_status);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Publish_Unpublish_Participant_Evaluation_Note/";
setLoading(true);
axios.post(myurl, form).then(res => {
// console.log(" In Publish_ENT_Evaluation_Participants_Notes res.data.status = " + res.data.status);
// console.log(" In Publish_ENT_Evaluation_Participants_Notes res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setnoted_changed("");
Getall_Evaluation_Participant_List(selected_id);
setselectionModel_evalutions_participant([]);
settab_convention_pieces_jointes_result([]);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
}
else {
setPublish_ENT_Evaluation_Participants_Notes_api("false");
setPublish_ENT_Evaluation_Participants_Notes_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('Publish_ENT_Evaluation_Participants_Notes : Not good man :( Publish_ENT_Evaluation_Participants_Notes = ' + error);
setPublish_ENT_Evaluation_Participants_Notes_api("false");
// alert(" Impossible de mettre à jour les données des participants ");
setdisplay_alert_mysy("1");
setalert_message(" Impossible de mettre à jour les données ");
setalert_type("error");
})
}
function OnchangeCellDataGrid(params) {
@ -2455,12 +2532,30 @@ const Notes_Evaluation = (props) => {
tmp['prenom'] = (x).prenom;
tmp['email'] = (x).email;
tmp['groupe'] = (x).groupe;
tmp['publish'] = (x).publish;
tmp['note_changed'] = "1";
tmp['note'] = new_value;
return tmp;
}
if (String(num_line) === String(localid) && colomn === "publish") {
var tmp = {};
tmp['id'] = (x).id;
tmp['_id'] = (x)._id;
tmp['nom'] = (x).nom;
tmp['prenom'] = (x).prenom;
tmp['email'] = (x).email;
tmp['groupe'] = (x).groupe;
tmp['publish'] = new_value;
tmp['note_changed'] = "1";
tmp['note'] = (x).note;
return tmp;
}
var tmp = {};
tmp['id'] = (x).id;
@ -2469,6 +2564,7 @@ const Notes_Evaluation = (props) => {
tmp['prenom'] = (x).prenom;
tmp['email'] = (x).email;
tmp['groupe'] = (x).groupe;
tmp['publish'] = (x).publish;
tmp['note_changed'] = (x).note_changed;
tmp['note'] = (x).note;
@ -4511,7 +4607,7 @@ const Notes_Evaluation = (props) => {
</div>}
</div>
</div>
</div>
<div className="div_row" ref={myRef} id="myRef"> &nbsp; </div>
@ -5870,12 +5966,10 @@ const Notes_Evaluation = (props) => {
email: (item).email,
groupe: (item).groupe,
note: (item).note,
publish: (item).publish,
note_changed: (item).note_changed,
convocation_send_date: (item).convocation_send_date,
convocation_send_type: (item).convocation_send_type,
}
))}
@ -5955,7 +6049,9 @@ const Notes_Evaluation = (props) => {
options={New_Option_PreInscription}
onChange={(event, value) => {
if (value && value.value) {
if (String(value.value) === "delete_inscr" || String(value.value) === "send_convocation") {
if (String(value.value) === "delete_inscr" || String(value.value) === "send_convocation"
|| String(value.value) === "publish_note"
|| String(value.value) === "un_publish_note") {
setactionmass_eval_inscr_val(value.value);
}
else {
@ -6005,6 +6101,14 @@ const Notes_Evaluation = (props) => {
<font> Confirmer la <b> l'envoi des convocations </b> en masse pour {selectionModel_evalutions_participant.length} lignes.
</font>}
{String(actionmass_eval_inscr_val) === "publish_note" &&
<font> Confirmer la <b> la publication des notes sur l'ENT</b> en masse pour {selectionModel_evalutions_participant.length} lignes.
</font>}
{String(actionmass_eval_inscr_val) === "un_publish_note" &&
<font> Confirmer la <b> la DE-publication des notes sur l'ENT</b> en masse pour {selectionModel_evalutions_participant.length} lignes.
</font>}
</div>
<div className="gest_actions">

View File

@ -2417,7 +2417,7 @@ const Partner = (props) => {
<div className="koUpdateData"> Impossible de contacter l'hote distant. Merci de contacter votre administrateur </div>
</div>
}
}
{String(menu) === "affichage" &&
<div className="div_droite">
@ -2430,7 +2430,7 @@ const Partner = (props) => {
}
{String(menu) === "tous_mes_document" &&
<div className="div_droite">
<div className="div_droite">
<Modules_Mes_Documents ispending={partnerstatus} currentpack={partnerPackService} conntected_employee_id={conntected_employee_id}
class_external_code={orderid} class_internal_url={packs} formation_initiale={formation_initiale}
check_user_acces_right={check_user_acces_right}

View File

@ -1641,8 +1641,11 @@ const Partner_Client = (props) => {
<div className="titre1"> Detail client / Financeur <b>{Client_email} </b></div>
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} father_scroll_to_top={father_scroll_to_top}
client_id={selected_id} check_user_acces_right={props.check_user_acces_right}
<AddParnerClient client_mail={Client_email}
close_detail_client={close_detail_client}
father_scroll_to_top={father_scroll_to_top}
client_id={selected_id}
check_user_acces_right={props.check_user_acces_right}
Get_List_Partner_Clients={Get_List_Partner_Clients} />
</div>}
@ -1651,8 +1654,12 @@ const Partner_Client = (props) => {
<div className="titre1"> Nouveau client / financeur</div>
<div ref={myRef_add_client}> &nbsp;</div>
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} new_customer="1" client_id={selected_id}
Get_List_Partner_Clients={Get_List_Partner_Clients} father_scroll_to_top={father_scroll_to_top}
<AddParnerClient client_mail={Client_email}
close_detail_client={close_detail_client}
new_customer="1"
client_id={selected_id}
Get_List_Partner_Clients={Get_List_Partner_Clients}
father_scroll_to_top={father_scroll_to_top}
check_user_acces_right={props.check_user_acces_right}
display_child_alert_success={display_child_alert_success}
/>

View File

@ -755,7 +755,7 @@
cursor: pointer;
}
.block_groupe_class {
width: 100%;

View File

@ -2629,8 +2629,7 @@
width: 100%;
flex-wrap: wrap;
justify-content: center;
}
}
.mode_affichage {

View File

@ -6,7 +6,7 @@
}
.Mui-disabled {
font-family:'DM Sans','Sans-serif';
font-family: 'DM Sans', 'Sans-serif';
font-size: small !important;
padding: 0px !important;
padding-left: 5px !important;
@ -151,7 +151,7 @@
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
font-family:'DM Sans','Sans-serif';
font-family: 'DM Sans', 'Sans-serif';
font: inherit;
letter-spacing: inherit;
color: currentColor;
@ -197,7 +197,7 @@
}
.session_caract {
font-family: DM Sans;
font-family: DM Sans;
width: 100%;
padding: 5px;
float: left;
@ -298,7 +298,7 @@
}
.bton_enreg {
font-family: DM sans;
font-family: DM sans;
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
@ -497,7 +497,7 @@
}
.bton_enreg {
font-family: DM sans;
font-family: DM sans;
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
@ -557,7 +557,7 @@
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
font-family:'DM Sans','Sans-serif';
font-family: 'DM Sans', 'Sans-serif';
font: inherit;
letter-spacing: inherit;
color: currentColor;
@ -613,6 +613,35 @@
background: #fffdf0;
}
.mode_affichage {
width: 25%;
float: right;
cursor: pointer;
}
.block_groupe_class {
width: 100%;
float: right;
}
.block_groupe_class_text {
font-family: "DM Sans", "sans-serif";
width: 100%;
float: left;
text-align: left;
padding-top: 15px;
}
.block_groupe_class_list {
width: 100%;
text-align: right;
float: left;
}
}
@media only screen and (min-width: 601px) and (max-width: 991px) {
@ -733,7 +762,7 @@
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
font-family:'DM Sans','Sans-serif';
font-family: 'DM Sans', 'Sans-serif';
font: inherit;
letter-spacing: inherit;
color: currentColor;
@ -779,7 +808,7 @@
}
.session_caract {
font-family: DM Sans;
font-family: DM Sans;
width: 50%;
padding: 5px;
float: left;
@ -886,7 +915,7 @@
}
.bton_enreg {
font-family: DM sans;
font-family: DM sans;
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
@ -1089,7 +1118,7 @@
}
.bton_enreg {
font-family: DM sans;
font-family: DM sans;
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
@ -1142,7 +1171,7 @@
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
font-family:'DM Sans','Sans-serif';
font-family: 'DM Sans', 'Sans-serif';
font: inherit;
letter-spacing: inherit;
color: currentColor;
@ -1198,6 +1227,34 @@
background: #fffdf0;
}
.mode_affichage {
width: 15%;
float: right;
cursor: pointer;
}
.block_groupe_class {
width: 50%;
float: right;
}
.block_groupe_class_text {
font-family: "DM Sans", "sans-serif";
width: 30%;
float: left;
text-align: left;
padding-top: 15px;
}
.block_groupe_class_list {
width: 69%;
text-align: right;
float: left;
}
}
@ -1345,7 +1402,7 @@
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
font-family:'DM Sans','Sans-serif';
font-family: 'DM Sans', 'Sans-serif';
font: inherit;
letter-spacing: inherit;
color: currentColor;
@ -1394,7 +1451,7 @@
}
.session_caract {
font-family: DM Sans;
font-family: DM Sans;
width: 33%;
padding: 5px;
float: left;
@ -1502,7 +1559,7 @@
}
.bton_enreg {
font-family: DM sans;
font-family: DM sans;
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
@ -1671,7 +1728,7 @@
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: default;
cursor: default;
font-style: italic;
background-color: gray;
font-weight: normal;
@ -1688,6 +1745,33 @@
background: #fffdf0;
}
.mode_affichage {
width: 12%;
float: right;
cursor: pointer;
}
.block_groupe_class {
width: 50%;
float: right;
}
.block_groupe_class_text {
font-family: "DM Sans", "sans-serif";
width: 45%;
float: left;
text-align: left;
padding-top: 15px;
}
.block_groupe_class_list {
width: 54%;
text-align: right;
float: left;
}
}
@ -1842,7 +1926,7 @@
}
.session_caract_Dialog {
font-family: 'DM Sans';
font-family: 'DM Sans';
width: 100%;
padding: 5px;
float: left;
@ -1869,7 +1953,7 @@
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
font-family:'DM Sans','Sans-serif';
font-family: 'DM Sans', 'Sans-serif';
font: inherit;
letter-spacing: inherit;
color: currentColor;
@ -1917,7 +2001,7 @@
.session_caract {
font-family: DM Sans;
font-family: DM Sans;
width: 33%;
padding: 5px;
float: left;
@ -2107,7 +2191,7 @@
}
.bton_enreg {
font-family: DM sans;
font-family: DM sans;
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
@ -2277,7 +2361,7 @@
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: default;
cursor: default;
font-style: italic;
background-color: gray;
font-weight: normal;
@ -2331,22 +2415,140 @@
background: #fffdf0;
}
.mode_affichage {
width: 8%;
float: right;
cursor: pointer;
}
.block_groupe_class {
width: 30%;
float: right;
}
.block_groupe_class_text {
font-family: "DM Sans", "sans-serif";
width: 30%;
float: left;
text-align: left;
padding-top: 15px;
}
.block_groupe_class_list {
width: 65%;
text-align: right;
float: left;
}
}
// end media
/*** icii */
/* Grille de fichiers */
.file-grid {
flex: 1;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 1rem;
padding: 1.5rem;
overflow-y: auto;
background-color: #e0e0e0;
color: #e0e0e0;
overflow: hidden;
}
.file-card {
background-color: #1e1e1e;
border: 1px solid #2a2a2a;
border-radius: 8px;
padding: 1rem;
text-align: center;
transition: transform 0.2s, box-shadow 0.2s;
min-height: 10rem;
}
.file-card:hover {
transform: translateY(-3px);
box-shadow: 0 0 10px rgba(79, 163, 255, 0.3);
}
.file-icon {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.file-name {
font-weight: 500;
margin-bottom: 0.25rem;
word-wrap: break-word;
white-space: pre-wrap;
}
.file-date {
font-size: 0.8rem;
color: #888;
}
/** end ici */
.visualiser {
width: 100%;
float: left;
cursor: pointer;
background: rebeccapurple;
border-radius: 10rem;
box-shadow: 2px 8px 29px -6px rgba(0, 0, 0, 0.27);
-webkit-box-shadow: 2px 8px 29px -6px rgba(198, 48, 48, 0.27);
-moz-box-shadow: 2px 8px 29px -6px rgba(0, 0, 0, 0.27);
color: white;
font-family: DM Sans;
font-family: "DM Sans";
font-size: 12px;
}
.telecharger {
width: 100%;
float: left;
cursor: pointer;
background: #3a8a52;
border-radius: 10rem;
box-shadow: 2px 8px 29px -6px rgba(0, 0, 0, 0.27);
-webkit-box-shadow: 2px 8px 29px -6px rgba(198, 48, 48, 0.27);
-moz-box-shadow: 2px 8px 29px -6px rgba(0, 0, 0, 0.27);
color: white;
font-family: DM Sans;
margin-top: 10px;
font-family: "DM Sans";
font-size: 12px;
}
.mode_affichage_selected {
text-underline-offset: 8px;
text-decoration: green wavy underline;
text-decoration-color: #F8C471;
text-decoration-style: solid;
text-decoration-thickness: 5px;
background: #F4F6F6;
box-shadow: 1px 1px 5px 1px rgba(0, 0, 0, 0.1);
border-radius: 5px;
}
.datagridclass {
font-size: small !important;
padding: 5px !important;
font-family: 'DM Sans';
}
.autocomplete_float_right {
float: right !important;
border: none;
}
.datepicker_complement{
.datepicker_complement {
margin: 0px !important;
}
@ -2380,7 +2582,7 @@
}
.session_caract_Dialog {
font-family: 'DM Sans';
font-family: 'DM Sans';
width: 100%;
padding: 5px;
float: left;
@ -2485,7 +2687,7 @@
}
.css-9ddj71-MuiInputBase-root-MuiOutlinedInput-root {
font-family: DM Sans !important;
font-family: DM Sans !important;
height: 3.5rem !important;
font-size: small !important;
}
@ -2496,8 +2698,8 @@ font-family: DM Sans !important;
width: 110%;
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input {
font-size: small !important;
font-family: "DM Sans" !important;
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input {
font-size: small !important;
font-family: "DM Sans" !important;
padding-left: 5px !important;
}