10/12/2023 - 16h
parent
c3244bf5c1
commit
c6c891db5f
|
@ -1,7 +1,41 @@
|
||||||
formation_code_externe;code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;date_debut_inscription;date_fin_inscription;formateur;distanciel;presentiel;prix_session;session_status;lms_class_code;session_etape
|
external_code;titre;domaine;description;formateur;formateur_email;objectif;programme;prerequis;cpf;institut_formation;distantiel;presentiel;prix;note;img_url;url;duree;duree_unite;plus_produit;mots_cle;metier;certif;publie;zone_diffusion;pourqui;support;img_banner_detail_class
|
||||||
MYSY_Test_AP;AP_01;11/10/2023;13/10/2023;20;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0
|
MySy_SGBD_01;Introduction à la gestion des bases de données - SQL;autre;"Par ce cours, nous permettrons à un apprenant de maitriser les concepts de base des bases de données, de la créer, de l’administrer en toute autonomie.
|
||||||
MYSY_Test_AP;AP_02;14/11/2023;16/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0
|
Cette formation permettra à l’apprenant d’être à l’aise avec les bases de données et d’être employable comme gestionnaire de base de base de données dans une entreprise.";mysy;cherif.balde@yahoo.fr;"A la fin de ce module, l’apprenant sera en mesure de :
|
||||||
MYSY_Test_OP;OP_01;21/11/2023;23/11/2023;10;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0
|
• De se connecter à une base de données de type Mysql et Postgresql
|
||||||
MYSY_Test_OP;OP_02;28/11/2023;30/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0
|
• De créer et mettre à jour et supprimer une base de base de données
|
||||||
MYSY_Test_AR;AR_01;01/03/2024;11/03/2024;5;;;;18/09/2023;29/02/2024;;1;0;;1;;0
|
• Créer et mettre jour et supprimer des tables de données, de les lier avec clés
|
||||||
MYSY_Test_AR;AR_02;02/12/2023;10/12/2023;9;;;;18/09/2023;01/12/2023;;1;0;;1;;0
|
• D’insérer, mettre à jour et supprimer des enregistrements.
|
||||||
|
• De créer des requête SQL nécessitant la jonction entre plusieurs tables.";"Qu’est-ce qu’un système de gestion de bases de données relationnelles (SGBDR)
|
||||||
|
Stockage de l’information
|
||||||
|
Les relations entre les tables ou cardinalité
|
||||||
|
|
||||||
|
La modélisation : Méthode Merise Vs Méthode UML
|
||||||
|
|
||||||
|
Les types de bases de données
|
||||||
|
• Bases de données relationnelles (SGBDR) :
|
||||||
|
• Bases de données NoSQL :
|
||||||
|
• Bases de données orientées graphe
|
||||||
|
|
||||||
|
Qu’est-ce que le langage SQL
|
||||||
|
Les base des données MariaDB/MySQL
|
||||||
|
Connexion à une base données MariaDB
|
||||||
|
Les Requêtes SQL :
|
||||||
|
• Créer une table
|
||||||
|
• Insérer un enregistrement dans la table
|
||||||
|
• Modifier les informations dans une table
|
||||||
|
|
||||||
|
Avancé :
|
||||||
|
• Les index
|
||||||
|
• Les triggers
|
||||||
|
• Les procédures
|
||||||
|
";Pour être à l’aise dans ce module, l’apprenant devra maitriser les outils informatiques (ordinateurs, logiciels, etc);1;mysy;1;0;4500;4;;;5;jour;En alliant des sessions en live et des sessions à distance, des exercice et travaux dirigés en ligne, vous apprenez plus facilement avec des cas pratiques.;"Bdd ;administration ;sql";autre;1;1;;"Cette formation est destinée aux personnes souhaitant exercer dans une entreprise les fonctions de :
|
||||||
|
• Administrateur de base de données
|
||||||
|
• Analyste fonctionnelle
|
||||||
|
Elle est également adressée à toute personne souhaitant s’initier ou approfondir ses compétences en gestion des bases de données";mixte;
|
||||||
|
MYSY_Test_AP;PRATICIEN EN AROMATHERAPIE INTEGRATIVE;sante_nat;L’Aromathérapie Intégrative© est un enseignement scientifique qui ne se limite pas à connaître les propriétés des huiles essentielles pour supprimer des symptômes, mais qui intègre leur utilisation dans une stratégie thérapeutique globale de santé, fondée sur une bonne compréhension de l'anatomie, de la physiologie et de la biochimie, afin d’être capable de proposer des solutions individualisées et efficaces.;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);;Intégrer les règles de sécurité pour utiliser et conseiller l’usage des huiles essentielles. <l> Faire le lien entre la composition biochimique d’une huile essentielle et ses actions sur l’organisme.<l> Intégrer les bases indispensables de biochimie, d’anatomie et de physiologie humaine. <l> Évaluer une situation d’exclusion réclamant une prise en charge médicale. <l> Analyser une situation et les attentes d’un consultant pour définir une stratégie d’accompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. <l> Établir une formule parfaitement adaptée à une personne et un problème. <l> Être capable de fabriquer un baume, une crème, une composition huileuse. ;Modules de 3 jours par mois en présentiel. <l> Entrainement à distance avec documents, vidéos et quiz en ligne <l> Evaluation à chaque module sur le programme du module précédent;Le niveau BAC est recommandé mais pas obligatoire. <l>Solide motivation.;0;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);0;1;2590;5;https://img.mysy-training.com/ecole_aroma/img/logo_ecole_arome_vert.jpg;;21;jour;Mode hybride avec présentiel ( théorie, pratique, supports papier) et distanciel asynchrone : vidéos et quiz d'entrainement sur une plateforme dédiée :<l> Groupe de discussion sur messagerie whatsapp. <l> Evaluations pour vérifier l'atteinte des objectifs pédagogiques. <l> Evaluation, finale des compétences <l> Rédaction d'un travail de synthèse avec sujet au choix, à présenter devant un jury extérieur à l'école.;AROMATHERAPIE, HUILES ESSENTIELLES, AROMA;dev_perso;1;1;;• Aux professionnels du bien-être et de la santé qui désirent acquérir un outil complémentaire <l> • Aux particuliers en reconversion professionnelle dans le domaine de la santé et du bien-être <l> • Aux particuliers pour une utilisation familiale ou en démarche personnelle. <l> Inclusion des personnes handicapées.;mixte;
|
||||||
|
MYSY_Test_OP;PRATICIEN EN OLFACTOTHERAPIE;sante_nat;"Les huiles essentielles au service de notre équilibre psycho-émotionnel.<l>
|
||||||
|
Les informations olfactives sont en priorité traitées dans le cerveau par le système limbique qui gère aussi la mémoire émotionnelle.<l>
|
||||||
|
Ainsi une simple odeur peut faire remonter des émotions en lien avec un vécu plus ou moins traumatique, permettant de comprendre quels besoins n’ont pas été entendus et qui causent des souffrances plus ou moins conscientes.<l>
|
||||||
|
L'olfactothérapie invite à se mettre en chemin pour évoluer vers un plus grand respect de Soi et plus de sérénité́ dans la Vie.";ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);;Maîtriser les règles de sécurité pour utiliser et conseiller l’usage des huiles essentielles. <l> Évaluer une situation d’exclusion réclamant une prise en charge différente. <l> Analyser une situation et les attentes d’un consultant pour définir une stratégie d’accompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. <l> Proposer une HE parfaitement adaptée à une personne en demande d’accompagnement psycho-émotionnel. ;Modules de 3 jours par mois en présentiel. <l> Entrainement à distance avec documents, vidéos et quiz en ligne ;Aucun prérequis n’est demandé excepté la motivation de partir à la découverte de Soi et de l'Autre.;0;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);0;1;2590;5;https://img.mysy-training.com/ecole_aroma/img/logo_ecole_arome_vert.jpg;;21;jour;Mode hybride avec présentiel ( théorie, expérimentation, supports papier) et distanciel asynchrone : vidéos et quiz d'entrainement sur une plateforme dédiée :<l> Groupe de discussion sur messagerie whatsapp. <l> Entrainements à la consultation avec clients volontaires. <l> Evaluation, finale des compétences <l> Rédaction d'un travail personnel de synthèse.<l> Compte-rendus de 21 séances à rendre dans les mois qui suivent la formation pour obtenir la certification.;OLFACTOTHERAPIE, HUILES ESSENTIELLES;dev_perso;1;1;;"Aucun prérequis n’est demandé, cette formation est ouverte à toute personne motivée à travailler sur elle pour pouvoir mieux accompagner l’Autre.<l>
|
||||||
|
Elle est tout particulièrement conseillée aux sophrologues, praticiens en hypnose, aux psychothérapeutes et praticiens en relation d’aide désirant acquérir un outil complémentaire qui décuplera l’efficacité de leurs propres techniques.";mixte;
|
||||||
|
MYSY_Test_AR;PRATICIEN EN AROMATHERAPIE INTEGRATIVE;sante_nat;L’Aromathérapie Intégrative© est un enseignement scientifique qui ne se limite pas à connaître les propriétés des huiles essentielles pour supprimer des symptômes, mais qui intègre leur utilisation dans une stratégie thérapeutique globale de santé, fondée sur une bonne compréhension de l'anatomie, de la physiologie et de la biochimie, afin d’être capable de proposer des solutions individualisées et efficaces.;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);;Intégrer les règles de sécurité pour utiliser et conseiller l’usage des huiles essentielles. <l> Faire le lien entre la composition biochimique d’une huile essentielle et ses actions sur l’organisme.<l> Intégrer les bases indispensables de biochimie, d’anatomie et de physiologie humaine. <l> Évaluer une situation d’exclusion réclamant une prise en charge médicale. <l> Analyser une situation et les attentes d’un consultant pour définir une stratégie d’accompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. <l> Établir une formule parfaitement adaptée à une personne et un problème. <l> Être capable de fabriquer un baume, une crème, une composition huileuse. ;Modules de 3 jours par mois en présentiel. <l> Entrainement à distance avec documents, vidéos et quiz en ligne <l> Evaluation à chaque module sur le programme du module précédent;Le niveau BAC est recommandé mais pas obligatoire. Solide motivation.;0;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);0;1;1650;5;https://img.mysy-training.com/ecole_aroma/img/logo_ecole_arome_vert.jpg;;12;jour;Mode hybride avec présentiel ( théorie, pratique, supports papier) et distanciel asynchrone : vidéos et quiz d'entrainement sur une plateforme dédiée. <l> Groupe de discussion sur messagerie whatsapp. <l> Evaluations pour vérifier l'atteinte des objectifs pédagogiques. <l> Evaluation, finale des compétences <l> Rédaction d'un travail de synthèse avec sujet au choix.;AROMATHERAPIE, HUILES ESSENTIELLES, AROMA;dev_perso;1;1;;;mixte;
|
||||||
|
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
formation_code_externe;code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;date_debut_inscription;date_fin_inscription;formateur;distanciel;presentiel;prix_session;session_status;lms_class_code;session_etape
|
||||||
|
MYSY_Test_AP;AP_01;11/10/2023;13/10/2023;20;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0
|
||||||
|
MYSY_Test_AP;AP_02;14/11/2023;16/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0
|
||||||
|
MYSY_Test_OP;OP_01;21/11/2023;23/11/2023;10;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0
|
||||||
|
MYSY_Test_OP;OP_02;28/11/2023;30/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0
|
||||||
|
MYSY_Test_AR;AR_01;01/03/2024;11/03/2024;5;;;;18/09/2023;29/02/2024;;1;0;;1;;0
|
||||||
|
MYSY_Test_AR;AR_02;02/12/2023;10/12/2023;9;;;;18/09/2023;01/12/2023;;1;0;;1;;0
|
|
|
@ -1551,12 +1551,12 @@ const AddClassManual = (props) => {
|
||||||
</TextField>
|
</TextField>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{String(datamodification) === "1" && <div className="training_caract">
|
{/*String(datamodification) === "1" && <div className="training_caract">
|
||||||
<TextField
|
<TextField
|
||||||
required
|
required
|
||||||
name="formateur_label"
|
name="formateur_label"
|
||||||
label="Formateur"
|
label="Formateur"
|
||||||
select
|
|
||||||
InputLabelProps={{
|
InputLabelProps={{
|
||||||
shrink: true,
|
shrink: true,
|
||||||
}}
|
}}
|
||||||
|
@ -1566,7 +1566,7 @@ const AddClassManual = (props) => {
|
||||||
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</div>}
|
</div>*/}
|
||||||
|
|
||||||
|
|
||||||
<div className="training_caract">
|
<div className="training_caract">
|
||||||
|
|
|
@ -93,6 +93,9 @@ const AddParnerClient = (props) => {
|
||||||
const [p_contact_civilite, setp_contact_civilite] = useState("");
|
const [p_contact_civilite, setp_contact_civilite] = useState("");
|
||||||
|
|
||||||
|
|
||||||
|
const [selected_contact_id, setelected_contact_id] = useState("");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function sleep(ms) {
|
function sleep(ms) {
|
||||||
return new Promise(resolve => setTimeout(resolve, ms));
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
|
@ -430,9 +433,9 @@ const AddParnerClient = (props) => {
|
||||||
|
|
||||||
const stored_cookie = getCookie('tokenmysypart');
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("email", val);
|
form.append("_id", props.client_id);
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Partner_Client/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Partner_Client_From_Id/";
|
||||||
|
|
||||||
axios.post(myurl, form).then(res => {
|
axios.post(myurl, form).then(res => {
|
||||||
if (String(res.data.status) === String("true")) {
|
if (String(res.data.status) === String("true")) {
|
||||||
|
@ -444,10 +447,20 @@ const AddParnerClient = (props) => {
|
||||||
|
|
||||||
|
|
||||||
if (mylocalclient) {
|
if (mylocalclient) {
|
||||||
document.getElementsByName("client_email")[0].value = mylocalclient.email;
|
|
||||||
document.getElementsByName("client_nom")[0].value = mylocalclient.nom;
|
|
||||||
|
if (mylocalclient.nom) {
|
||||||
setclient_nom(mylocalclient.nom);
|
setclient_nom(mylocalclient.nom);
|
||||||
|
} else {
|
||||||
|
setclient_nom("");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mylocalclient.email) {
|
||||||
setclient_email(mylocalclient.email);
|
setclient_email(mylocalclient.email);
|
||||||
|
} else {
|
||||||
|
setclient_email("");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (mylocalclient.raison_sociale) {
|
if (mylocalclient.raison_sociale) {
|
||||||
|
@ -573,10 +586,10 @@ const AddParnerClient = (props) => {
|
||||||
|
|
||||||
const stored_cookie = getCookie('tokenmysypart');
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("email", p_client_email);
|
form.append("_id", props.client_id);
|
||||||
form.append("nom", p_client_nom);
|
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Partner_Client/";
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Partner_Client_From_Id/";
|
||||||
|
|
||||||
axios.post(myurl, form).then(res => {
|
axios.post(myurl, form).then(res => {
|
||||||
if (String(res.data.status) === String("true")) {
|
if (String(res.data.status) === String("true")) {
|
||||||
|
@ -664,9 +677,9 @@ const AddParnerClient = (props) => {
|
||||||
|
|
||||||
const stored_cookie = getCookie('tokenmysypart');
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("email", val);
|
form.append("_id", props.client_id);
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Partner_Client/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Partner_Client_From_Id/";
|
||||||
|
|
||||||
axios.post(myurl, form).then(res => {
|
axios.post(myurl, form).then(res => {
|
||||||
if (String(res.data.status) === String("true")) {
|
if (String(res.data.status) === String("true")) {
|
||||||
|
@ -759,7 +772,7 @@ const AddParnerClient = (props) => {
|
||||||
|
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("related_collection", related_collection);
|
form.append("related_collection", related_collection);
|
||||||
form.append("related_collection_owner_email", props.client_mail);
|
form.append("related_collection_owner_id", props.client_id);
|
||||||
|
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Entity_Contact/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Entity_Contact/";
|
||||||
|
@ -1251,6 +1264,8 @@ const AddParnerClient = (props) => {
|
||||||
const stored_cookie = getCookie('tokenmysypart');
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
|
|
||||||
|
form.append("_id", props.client_id);
|
||||||
|
|
||||||
// Recupeation des données à enregister
|
// Recupeation des données à enregister
|
||||||
|
|
||||||
var client_email = ""
|
var client_email = ""
|
||||||
|
@ -1684,13 +1699,13 @@ const AddParnerClient = (props) => {
|
||||||
if (current_contact_recid && String(current_contact_recid).length > 3) {
|
if (current_contact_recid && String(current_contact_recid).length > 3) {
|
||||||
// Il s'agit d'un mise à jour. on a une valeur dans le current_activite_recid
|
// Il s'agit d'un mise à jour. on a une valeur dans le current_activite_recid
|
||||||
myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Contact/";
|
myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Contact/";
|
||||||
form.append("contact_recid", current_contact_recid);
|
form.append("_id", selected_contact_id);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Il s'agit d'un ajout d'une nouvelle activité. on a rien dans le current_activite_recid
|
// Il s'agit d'un ajout d'une nouvelle activité. on a rien dans le current_activite_recid
|
||||||
myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Contact/";
|
myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Contact/";
|
||||||
form.append("related_collection", "partner_client");
|
form.append("related_collection", "partner_client");
|
||||||
form.append("related_collection_owner_email", p_client_email);
|
form.append("related_collection_owner_id", props.client_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1831,15 +1846,19 @@ const AddParnerClient = (props) => {
|
||||||
|
|
||||||
var contactmail = event.currentTarget.getAttribute('contactmail');
|
var contactmail = event.currentTarget.getAttribute('contactmail');
|
||||||
|
|
||||||
|
var contact_id = event.currentTarget.getAttribute('contact_id');
|
||||||
|
|
||||||
|
setelected_contact_id(contact_id);
|
||||||
|
|
||||||
const stored_cookie = getCookie('tokenmysypart');
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("email", contactmail);
|
form.append("_id", contact_id);
|
||||||
|
|
||||||
// Recupeation des données à enregister
|
// Recupeation des données à enregister
|
||||||
form.append("related_collection", "partner_client");
|
form.append("related_collection", "partner_client");
|
||||||
form.append("related_collection_owner_email", p_client_email);
|
form.append("related_collection_owner_id", props.client_id);
|
||||||
|
|
||||||
console.log(" ### contactmail = ", contactmail);
|
//console.log(" ### contactmail = ", contactmail);
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Contact/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Contact/";
|
||||||
|
|
||||||
|
@ -2573,7 +2592,7 @@ const AddParnerClient = (props) => {
|
||||||
{Get_List_Contact_Of_client_Part_result && String(Get_List_Contact_Of_client_Part_api) === "true" &&
|
{Get_List_Contact_Of_client_Part_result && String(Get_List_Contact_Of_client_Part_api) === "true" &&
|
||||||
Get_List_Contact_Of_client_Part_result.map((client) => (
|
Get_List_Contact_Of_client_Part_result.map((client) => (
|
||||||
|
|
||||||
<div contactmail={String(JSON.parse(client).email)} onClick={Display_Part_Client_Contact}>
|
<div contactmail={String(JSON.parse(client).email)} contact_id={String(JSON.parse(client)._id)} onClick={Display_Part_Client_Contact}>
|
||||||
{(JSON.parse(client).nom || JSON.parse(client).prenom) && <nav className="grid_title"> {String(JSON.parse(client).prenom)} {String(JSON.parse(client).nom)} <hr /> </nav>}
|
{(JSON.parse(client).nom || JSON.parse(client).prenom) && <nav className="grid_title"> {String(JSON.parse(client).prenom)} {String(JSON.parse(client).nom)} <hr /> </nav>}
|
||||||
{JSON.parse(client).fonction && <nav> {String(JSON.parse(client).fonction)} </nav>}
|
{JSON.parse(client).fonction && <nav> {String(JSON.parse(client).fonction)} </nav>}
|
||||||
{JSON.parse(client).email && <nav> {String(JSON.parse(client).email)} </nav>}
|
{JSON.parse(client).email && <nav> {String(JSON.parse(client).email)} </nav>}
|
||||||
|
|
|
@ -1383,12 +1383,14 @@ const Config_Champs_Personnalise = (props) => {
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div className="div_row" style={{ "border": "None" }}>
|
<div className="div_row" style={{ "border": "None" }}>
|
||||||
|
<div className="div_row_gauche" style={{ "border": "None" }}>
|
||||||
<Button variant="outlined" onClick={submenu_add_one_personal_field}
|
<Button variant="outlined" onClick={submenu_add_one_personal_field}
|
||||||
className="detail_class_submenu bton_add_session"
|
className="detail_class_submenu bton_add_session"
|
||||||
id='menu_import_participant' name='menu_import_participant'>Ajout 1 champ
|
id='menu_import_participant' name='menu_import_participant'>Ajout 1 champ
|
||||||
<img src={add_plus} alt="ajout session" className="icon_plus" />
|
<img src={add_plus} alt="ajout session" className="icon_plus" />
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,7 +6,6 @@ import Button from '@mui/material/Button';
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { getCookie, setCookie } from 'react-use-cookie';
|
import { getCookie, setCookie } from 'react-use-cookie';
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import CheckOut from "./CheckOut";
|
|
||||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
||||||
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
||||||
import { Editor } from '@tinymce/tinymce-react';
|
import { Editor } from '@tinymce/tinymce-react';
|
||||||
|
@ -20,6 +19,7 @@ import participants from "../mysy_img/participants.png";
|
||||||
import fileDownload from 'js-file-download'
|
import fileDownload from 'js-file-download'
|
||||||
import Popup from 'reactjs-popup';
|
import Popup from 'reactjs-popup';
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
|
import { FcSearch } from "react-icons/fc";
|
||||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcAlarmClock, FcMultipleSmartphones, FcWorkflow } from "react-icons/fc";
|
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcAlarmClock, FcMultipleSmartphones, FcWorkflow } from "react-icons/fc";
|
||||||
import DatePicker from "react-datepicker";
|
import DatePicker from "react-datepicker";
|
||||||
import "react-datepicker/dist/react-datepicker.css";
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
|
@ -121,8 +121,8 @@ const DisplayPartnerSession = (props) => {
|
||||||
{ field: 'id', headerName: 'id', hide: true },
|
{ field: 'id', headerName: 'id', hide: true },
|
||||||
{ field: '_id', headerName: '_id', hide: true },
|
{ field: '_id', headerName: '_id', hide: true },
|
||||||
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true },
|
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true },
|
||||||
{ field: 'code_session', headerName: 'Code session', hide: false, flex: 1, minWidth: 150 },
|
{ field: 'code_session', headerName: 'Code session', hide: false, minWidth: 100, flex: 1, maxWidth: 150 },
|
||||||
{ field: 'session_title', headerName: 'Titre', hide: false, flex: 1, minWidth: 150 },
|
{ field: 'session_title', headerName: 'Titre', hide: false, flex: 1, minWidth: 250 },
|
||||||
|
|
||||||
{
|
{
|
||||||
field: 'statut', headerName: 'Statut', hide: true, width: datagrid_columns_size_model2,
|
field: 'statut', headerName: 'Statut', hide: true, width: datagrid_columns_size_model2,
|
||||||
|
@ -166,9 +166,9 @@ const DisplayPartnerSession = (props) => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ field: 'formateur', headerName: 'Formateur', minWidth: datagrid_columns_size_model1, hide: true, hideable: true, },
|
{ field: 'formateur', headerName: 'Formateur', minWidth: datagrid_columns_size_model1, hide: true, hideable: true, },
|
||||||
{ field: 'nb_participant', headerName: 'Nb Parti.', width: datagrid_columns_size_model2, align: "center", },
|
{ field: 'nb_participant', headerName: 'Nb Parti.', minWidth: datagrid_columns_size_model2, align: "center", hide: true, },
|
||||||
{
|
{
|
||||||
field: 'taux_remplissage', headerName: 'Remplissage', align: "center", flex: 1,
|
field: 'taux_remplissage', headerName: 'Remplissage', align: "center", flex: 1, minWidth: 100, maxWidth: 150, flex: 1,
|
||||||
align: "left",
|
align: "left",
|
||||||
renderCell: (params) => {
|
renderCell: (params) => {
|
||||||
return (
|
return (
|
||||||
|
@ -187,14 +187,14 @@ const DisplayPartnerSession = (props) => {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ field: 'nb_inscrit', headerName: 'Inscrits', width: datagrid_columns_size_model2, align: "center", hide: true, hideable: true, },
|
{ field: 'nb_inscrit', headerName: 'Inscrits', minWidth: 20, align: "center", hide: true, hideable: true, },
|
||||||
{ field: 'nb_preinscrit', headerName: 'Preinscrits', width: datagrid_columns_size_model2, align: "center", hide: true, hideable: true, },
|
{ field: 'nb_preinscrit', headerName: 'Preinscrits', minWidth: 20, align: "center", hide: true, hideable: true, },
|
||||||
{ field: 'prix_session', headerName: 'Prix', minWidth: datagrid_columns_size_model2, align: "center", },
|
{ field: 'prix_session', headerName: 'Prix', minWidth: 20, align: "center", },
|
||||||
{ field: 'title', headerName: 'Formation', minWidth: 250, flex: 1, align: "center", hide: true, hideable: true, },
|
{ field: 'title', headerName: 'Formation', minWidth: 250, flex: 1, align: "center", hide: true, hideable: true, },
|
||||||
{ field: 'domaine', headerName: 'Domaine', width: datagrid_columns_size_model1, align: "center", hide: true, hideable: true, },
|
{ field: 'domaine', headerName: 'Domaine', minWidth: datagrid_columns_size_model1, align: "center", hide: true, hideable: true, },
|
||||||
{ field: 'published', headerName: 'publié', width: datagrid_columns_size_model1, align: "center", hide: true, hideable: true, },
|
{ field: 'published', headerName: 'publié', minWidth: datagrid_columns_size_model1, align: "center", hide: true, hideable: true, },
|
||||||
|
|
||||||
{ field: 'duration', headerName: 'Durée', width: datagrid_columns_size_model2, align: "center", },
|
{ field: 'duration', headerName: 'Durée', minWidth: datagrid_columns_size_model2, align: "center", hide: true, hideable: true, },
|
||||||
{
|
{
|
||||||
field: "Detail", headerName: 'Voir detail',
|
field: "Detail", headerName: 'Voir detail',
|
||||||
renderCell: (cellValues) => {
|
renderCell: (cellValues) => {
|
||||||
|
@ -2350,7 +2350,7 @@ const DisplayPartnerSession = (props) => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const [gridline_id, setgridline_id] = useState("");
|
||||||
function GetSelectedRows_Sequence_Ids() {
|
function GetSelectedRows_Sequence_Ids() {
|
||||||
|
|
||||||
|
|
||||||
|
@ -7540,6 +7540,354 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
||||||
setDialog_tuteur_1_open(false);
|
setDialog_tuteur_1_open(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// -- debut convention
|
||||||
|
// -- convention
|
||||||
|
|
||||||
|
const [sessions_file_change_1_convention_api, setsessions_file_change_1_convention_api] = useState();
|
||||||
|
const [sessions_file_change_1_convention_result, setsessions_file_change_1_convention_result] = useState();
|
||||||
|
const [sessions_file_change_1_convention_message, setsessions_file_change_1_convention_message] = useState();
|
||||||
|
const sessions_file_change_1_convention = event => {
|
||||||
|
|
||||||
|
|
||||||
|
const fileUploaded = event.target.files[0];
|
||||||
|
let file_size = event.target.files[0].size;
|
||||||
|
let file_type = event.target.files[0].type;
|
||||||
|
|
||||||
|
|
||||||
|
if (file_type !== "application/pdf") {
|
||||||
|
alert("Le fichier n'est pas de type PDF");
|
||||||
|
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");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//var new_node = {'name':event.target.files[0].name, 'type':event.target.files[0].type}
|
||||||
|
|
||||||
|
|
||||||
|
var new_tmp = [];
|
||||||
|
|
||||||
|
if (tab_convention_pieces_jointes_result && tab_convention_pieces_jointes_result.length > 0) {
|
||||||
|
|
||||||
|
tab_convention_pieces_jointes_result.map((x) => {
|
||||||
|
new_tmp.push(x);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
new_tmp.push(event.target.files[0])
|
||||||
|
|
||||||
|
settab_convention_pieces_jointes_result(new_tmp);
|
||||||
|
|
||||||
|
console.log(" tab_convention_pieces_jointes_result = ", tab_convention_pieces_jointes_result)
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const [tab_convention_pieces_jointes_result, settab_convention_pieces_jointes_result] = useState([]);
|
||||||
|
|
||||||
|
const [Dialog_convention_message, setDialog_convention_message] = React.useState(false);
|
||||||
|
const [Dialog_convention_open, setDialog_convention_open] = React.useState(false);
|
||||||
|
function Dialog_convention_handle_change_participant_session(message) {
|
||||||
|
setDialog_convention_message(message);
|
||||||
|
setDialog_convention_open(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Dialog_convention_handleClose = () => {
|
||||||
|
//alert(" Utiliser le bouton 'fermer' ");
|
||||||
|
//setOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Dialog_convention_handleClose_buton = () => {
|
||||||
|
|
||||||
|
setDialog_convention_open(false);
|
||||||
|
setselected_convention_id();
|
||||||
|
setselected_convention_type();
|
||||||
|
setselected_convention_email_destinataire_prod();
|
||||||
|
setselected_convention_email_test();
|
||||||
|
|
||||||
|
setactionmass_ftion_val();
|
||||||
|
setSelectionModel([]);
|
||||||
|
settab_convention_pieces_jointes_result([])
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
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("");
|
||||||
|
|
||||||
|
|
||||||
|
const [Get_List_Stagiaire_Conventions_api, setGet_List_Stagiaire_Conventions_api] = useState();
|
||||||
|
const [Get_List_Stagiaire_Conventions_message, setGet_List_Stagiaire_Conventions_message] = useState();
|
||||||
|
const [Get_List_Stagiaire_Conventions_result, setGet_List_Stagiaire_Conventions_result] = useState();
|
||||||
|
function Get_List_Stagiaire_Conventions(event) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
|
||||||
|
form.append("class_internal_url", selected_internal_url);
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
//form.append("inscription_id", selected_id);
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Conventions_Stagiaire/";
|
||||||
|
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
//console.log(" In Get_List_Stagiaire_Conventions res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Get_List_Stagiaire_Conventions res.data.message r_class = " + res.data.message);
|
||||||
|
setGet_List_Stagiaire_Conventions_api("true");
|
||||||
|
setGet_List_Stagiaire_Conventions_result(res.data.message);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setGet_List_Stagiaire_Conventions_api("false");
|
||||||
|
setGet_List_Stagiaire_Conventions_message(res.data.message);
|
||||||
|
alert(res.data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
console.warn('Not good man :( Get_List_Stagiaire_Conventions = ', error);
|
||||||
|
setGet_List_Stagiaire_Conventions_api("false");
|
||||||
|
alert("Impossible de récupérer les modèles de convention");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const [Send_Stagiaire_Conventions_By_Email_api, setSend_Stagiaire_Conventions_By_Email_api] = useState();
|
||||||
|
const [Send_Stagiaire_Conventions_By_Email_message, setSend_Stagiaire_Conventions_By_Email_message] = useState();
|
||||||
|
const [Send_Stagiaire_Conventions_By_Email_result, setSend_Stagiaire_Conventions_By_Email_result] = useState();
|
||||||
|
function Send_Stagiaire_Conventions_By_Email(event) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
|
||||||
|
form.append("class_internal_url", selected_internal_url);
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("session_id", selected_session_id);
|
||||||
|
form.append("courrier_template_id", selected_convention_id);
|
||||||
|
form.append("email_test", selected_convention_email_test);
|
||||||
|
form.append("email_production", selected_convention_email_destinataire_prod);
|
||||||
|
|
||||||
|
// pièce jointe
|
||||||
|
form.append("file_business_object", "");
|
||||||
|
var list_files = new FormData();
|
||||||
|
|
||||||
|
for (let i = 0; i < tab_convention_pieces_jointes_result.length; i++) {
|
||||||
|
form.append('File', tab_convention_pieces_jointes_result[i]);
|
||||||
|
|
||||||
|
}
|
||||||
|
//form.append("File", list_files);
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Convention_From_Session_By_Email/";
|
||||||
|
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
//console.log(" In Send_Stagiaire_Conventions_By_Email res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Send_Stagiaire_Conventions_By_Email res.data.message r_class = " + res.data.message);
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_api("true");
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_result(res.data.message);
|
||||||
|
|
||||||
|
alert(res.data.message);
|
||||||
|
Dialog_convention_handleClose_buton()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_api("false");
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_message(res.data.message);
|
||||||
|
alert(res.data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
console.warn('Not good man :( Send_Stagiaire_Conventions_By_Email = ', error);
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_api("false");
|
||||||
|
alert("Impossible d'envoyer la convention par email");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function Download_Stagiaire_Conventions_PDF() {
|
||||||
|
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
var nom_fichier_cmd = "Convention.pdf";
|
||||||
|
|
||||||
|
var url = process.env.REACT_APP_API_URL + "myclass/api/Download_Convention_Stagiaire_PDF/" + stored_cookie + "/" + selected_session_id + "/" + selected_convention_id;
|
||||||
|
|
||||||
|
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
|
||||||
|
setLoading(true);
|
||||||
|
axios.get(url, { responseType: 'blob', },)
|
||||||
|
.then((res) => {
|
||||||
|
setLoading(false);
|
||||||
|
//console.log(" In Download_Stagiaire_Conventions_PDF res.data = " + res.data);
|
||||||
|
if (String(res.data) === String("false")) {
|
||||||
|
alert("Impossible de télécharger la convention (2) ");
|
||||||
|
} else {
|
||||||
|
fileDownload(res.data, nom_fichier_cmd)
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.error('Error:', error);
|
||||||
|
alert(" Impossible de télécharger la convention ")
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const [Send_Stagiaire_Conventions_By_Email_Test_api, setSend_Stagiaire_Conventions_By_Email_Test_api] = useState();
|
||||||
|
const [Send_Stagiaire_Conventions_By_Email_Test_message, setSend_Stagiaire_Conventions_By_Email_Test_message] = useState();
|
||||||
|
const [Send_Stagiaire_Conventions_By_Email_Test_result, setSend_Stagiaire_Conventions_By_Email_Test_result] = useState();
|
||||||
|
function Send_Stagiaire_Conventions_By_Email_Test(event) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
|
||||||
|
form.append("class_internal_url", selected_internal_url);
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("session_id", selected_session_id);
|
||||||
|
form.append("courrier_template_id", selected_convention_id);
|
||||||
|
form.append("email_test", selected_convention_email_test);
|
||||||
|
form.append("email_production", "");
|
||||||
|
|
||||||
|
// pièce jointe
|
||||||
|
form.append("file_business_object", "");
|
||||||
|
var list_files = new FormData();
|
||||||
|
|
||||||
|
for (let i = 0; i < tab_convention_pieces_jointes_result.length; i++) {
|
||||||
|
form.append('File', tab_convention_pieces_jointes_result[i]);
|
||||||
|
|
||||||
|
}
|
||||||
|
//form.append("File", list_files);
|
||||||
|
|
||||||
|
setLoading(true);
|
||||||
|
fetch(
|
||||||
|
process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Convention_From_Session_By_Email/",
|
||||||
|
{
|
||||||
|
method: 'POST',
|
||||||
|
body: form,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then((result) => {
|
||||||
|
|
||||||
|
setLoading(false);
|
||||||
|
console.log(" In Send_Stagiaire_Conventions_By_Email_Test res.data.status = " + result['status']);
|
||||||
|
console.log(" In Send_Stagiaire_Conventions_By_Email_Test res.data.message r_class = " + result['message']);
|
||||||
|
if (String(result['status']) === String("true")) {
|
||||||
|
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_Test_api("true");
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_Test_result(result['message']);
|
||||||
|
|
||||||
|
alert(result['message']);
|
||||||
|
Dialog_convention_handleClose_buton()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_Test_api("false");
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_Test_message(result['message']);
|
||||||
|
alert(result['message']);
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.warn('Not good man :( Send_Stagiaire_Conventions_By_Email_Test = ', error);
|
||||||
|
setSend_Stagiaire_Conventions_By_Email_Test_api("false");
|
||||||
|
alert("Impossible d'envoyer l'email de test ");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const [Get_Stagiaire_List_Email_Com_api, setGet_Stagiaire_List_Email_Com_api] = useState();
|
||||||
|
const [Get_Stagiaire_List_Email_Com_message, setGet_Stagiaire_List_Email_Com_message] = useState();
|
||||||
|
const [Get_Stagiaire_List_Email_Com_result, setGet_Stagiaire_List_Email_Com_result] = useState();
|
||||||
|
function Get_Stagiaire_List_Email_Com(event) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
|
||||||
|
form.append("class_internal_url", selected_internal_url);
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("session_id", selected_session_id);
|
||||||
|
setLoading(true);
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Stagiaire_Communication_List_Email/";
|
||||||
|
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
|
||||||
|
setLoading(false);
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
//console.log(" In Get_Stagiaire_List_Email_Com res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Get_Stagiaire_List_Email_Com res.data.message r_class = " + res.data.message);
|
||||||
|
setGet_Stagiaire_List_Email_Com_api("true");
|
||||||
|
setGet_Stagiaire_List_Email_Com_result(res.data.message);
|
||||||
|
|
||||||
|
var tab_email_prod = []
|
||||||
|
res.data.message.map((x) => {
|
||||||
|
tab_email_prod.push(String(JSON.parse(x).email));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
var liste_email_prod = tab_email_prod.join()
|
||||||
|
setselected_convention_email_destinataire_prod(liste_email_prod);
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setGet_Stagiaire_List_Email_Com_api("false");
|
||||||
|
setGet_Stagiaire_List_Email_Com_message(res.data.message);
|
||||||
|
alert(res.data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.warn('Not good man :( Get_Stagiaire_List_Email_Com = ', error);
|
||||||
|
setGet_Stagiaire_List_Email_Com_api("false");
|
||||||
|
alert("Impossible de récupérer les adresses email de communication");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const [Get_Convention_List_Of_All_PJ_result, setGet_Convention_List_Of_All_PJ_result] = useState([]);
|
||||||
|
|
||||||
|
function Delete_Convention_Attached_Doc(event) {
|
||||||
|
|
||||||
|
var doc_to_del_name = event.target.id;
|
||||||
|
const myArray = tab_convention_pieces_jointes_result;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let new_myArray = myArray.filter(file => file.name !== String(doc_to_del_name));
|
||||||
|
|
||||||
|
console.log(" new_myArray = ", new_myArray);
|
||||||
|
|
||||||
|
|
||||||
|
var new_tab = []
|
||||||
|
for (let i = 0; i < new_myArray.length; i++) {
|
||||||
|
new_tab.push(new_myArray[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
settab_convention_pieces_jointes_result(new_tab);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -- end convention
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="displaypartnersession">
|
<div className="displaypartnersession">
|
||||||
|
@ -8045,6 +8393,286 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
||||||
|
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
|
<Dialog
|
||||||
|
open={Dialog_convention_open}
|
||||||
|
onClose={Dialog_convention_handleClose}
|
||||||
|
className="displaypartnersession"
|
||||||
|
>
|
||||||
|
|
||||||
|
<DialogTitle>MySy Information</DialogTitle>
|
||||||
|
<DialogContent className="DialogContent_width">
|
||||||
|
|
||||||
|
<div className="session_caract_Dialog" > Choisir une convention
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_version_convention"
|
||||||
|
id="event_dialog_version_convention"
|
||||||
|
|
||||||
|
select
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value={selected_convention_id}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_id(e.target.value);
|
||||||
|
var result2 = Get_List_Stagiaire_Conventions_result.filter((local_mymanager) => JSON.parse(local_mymanager)._id === String(e.target.value))
|
||||||
|
setselected_convention_type(JSON.parse(result2).type_doc);
|
||||||
|
settab_convention_pieces_jointes_result([]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
>
|
||||||
|
{Get_List_Stagiaire_Conventions_result &&
|
||||||
|
Get_List_Stagiaire_Conventions_result.map((myclient) => (
|
||||||
|
<MenuItem key={JSON.parse(myclient)._id} value={JSON.parse(myclient)._id}
|
||||||
|
style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>
|
||||||
|
{JSON.parse(myclient).nom} <b>{JSON.parse(myclient).type_doc} </b>
|
||||||
|
|
||||||
|
</MenuItem>
|
||||||
|
))}
|
||||||
|
|
||||||
|
|
||||||
|
</TextField>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Type Document<br />
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, width: '75%' }}
|
||||||
|
|
||||||
|
name="event_dialog_type_convention"
|
||||||
|
id="event_dialog_type_convention"
|
||||||
|
|
||||||
|
select
|
||||||
|
|
||||||
|
|
||||||
|
value={selected_convention_type}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_type(e.target.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
>
|
||||||
|
|
||||||
|
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Email </MenuItem>
|
||||||
|
<MenuItem value="pdf" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >PDF </MenuItem>
|
||||||
|
</TextField>
|
||||||
|
{String(selected_convention_type) === "email" && <label className="bton_image_class" style={{ "width": "20%", "float": "right", "height": "3.5rem", "paddingTop": "15px" }} onClick={(e) => {
|
||||||
|
|
||||||
|
if (selected_convention_email_test) {
|
||||||
|
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
|
||||||
|
if (!selected_convention_email_test.match(validRegex)) {
|
||||||
|
alert("L'adresse email de test est invalide.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Send_Stagiaire_Conventions_By_Email_Test();
|
||||||
|
} else {
|
||||||
|
alert("L'adresse email de test est invalide.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}} > <FcSearch /> Test</label>}
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" > Type Document<br />
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 } }}
|
||||||
|
|
||||||
|
name="event_dialog_type_convention"
|
||||||
|
id="event_dialog_type_convention"
|
||||||
|
|
||||||
|
select
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value={selected_convention_type}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_type(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
|
||||||
|
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Email </MenuItem>
|
||||||
|
<MenuItem value="pdf" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >PDF </MenuItem>
|
||||||
|
</TextField>
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Recevoir un pré-envoie
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_email_test_convention"
|
||||||
|
id="event_dialog_email_test_convention"
|
||||||
|
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value={selected_convention_email_test}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_email_test(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" > Recevoir un pré-envoie
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_email_test_convention"
|
||||||
|
id="event_dialog_email_test_convention"
|
||||||
|
fullWidth
|
||||||
|
value=""
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "email" &&
|
||||||
|
String(actionmass_ftion_val) !== String("convention") && <div className="session_caract_Dialog" > Email destinaitaire
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_email_production_convention"
|
||||||
|
id="event_dialog_email_production_convention"
|
||||||
|
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value={selected_convention_email_destinataire_prod}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_email_destinataire_prod(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "pdf" &&
|
||||||
|
String(actionmass_ftion_val) !== String("convention") && <div className="session_caract_Dialog" > Email destinaitaire
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_email_production_convention"
|
||||||
|
id="event_dialog_email_production_convention"
|
||||||
|
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value=""
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "email" && <div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div className="div_row" style={{ "border": "None" }}>
|
||||||
|
<hr className="hr_break" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
|
||||||
|
Pièces jointes Convention
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="div_row" style={{ "padding": "5px" }}>
|
||||||
|
|
||||||
|
<div style={{ "fontSize": "12px" }}>
|
||||||
|
<label htmlFor="upload_convention_file">
|
||||||
|
<input
|
||||||
|
style={{ display: "none" }}
|
||||||
|
id="upload_convention_file"
|
||||||
|
name="upload_convention_file"
|
||||||
|
type="file"
|
||||||
|
onChange={sessions_file_change_1_convention}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Fab
|
||||||
|
color="secondary"
|
||||||
|
size="small"
|
||||||
|
component="span"
|
||||||
|
aria-label="add"
|
||||||
|
variant="extended"
|
||||||
|
>
|
||||||
|
<IoMdAddCircle /> <nav style={{ "fontSize": "12px" }}> Ajouter un fichier </nav>
|
||||||
|
</Fab>
|
||||||
|
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{tab_convention_pieces_jointes_result && <div className="div_row" style={{ "padding": "5px" }}>
|
||||||
|
|
||||||
|
<div className="div_row">
|
||||||
|
Liste des pièces jointes <br />
|
||||||
|
{<div className="div_row">
|
||||||
|
{tab_convention_pieces_jointes_result && tab_convention_pieces_jointes_result.map((val) => (
|
||||||
|
<div className="div_row_list_pj_convention" >
|
||||||
|
<nav style={{ "color": "green", "cursor": "pointer" }}
|
||||||
|
onClick={(e) => {
|
||||||
|
Delete_Convention_Attached_Doc(e);
|
||||||
|
}}
|
||||||
|
name={val.name} id={val.name}> Supprimer {val.name} </nav> <br />
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>}
|
||||||
|
</div>
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
</DialogContent>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<DialogActions>
|
||||||
|
<div className="div_row">
|
||||||
|
<div className="div_row_gauche">
|
||||||
|
{String(selected_convention_type) === "email" && <Button onClick={(e) => {
|
||||||
|
if (String(selected_convention_email_test).length > 2) {
|
||||||
|
const response = window.confirm(" Vous allez envoyer la convention au destinaitaire final. Continuer ?");
|
||||||
|
if (!response) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Send_Stagiaire_Conventions_By_Email();
|
||||||
|
Dialog_convention_handleClose_buton();
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
className="bton_enreg_dialog">Envoyer mail aaa</Button>}
|
||||||
|
{String(selected_convention_type) === "pdf" &&
|
||||||
|
<Button className="bton_enreg_dialog" onClick={(e) => {
|
||||||
|
Download_Stagiaire_Conventions_PDF();
|
||||||
|
Dialog_convention_handleClose_buton();
|
||||||
|
}}
|
||||||
|
>Télécharger bbb</Button>}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||||
|
<Button onClick={Dialog_convention_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</DialogActions>
|
||||||
|
|
||||||
|
</Dialog>
|
||||||
|
|
||||||
<h3> Vos sessions de formation </h3>
|
<h3> Vos sessions de formation </h3>
|
||||||
|
|
||||||
<div className="titre1"> Utilisez les filtres !</div>
|
<div className="titre1"> Utilisez les filtres !</div>
|
||||||
|
@ -8294,6 +8922,24 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
||||||
backgroundColor: '#566573',
|
backgroundColor: '#566573',
|
||||||
color: 'white',
|
color: 'white',
|
||||||
},
|
},
|
||||||
|
"& .MuiDataGrid-columnHeaders": {
|
||||||
|
backgroundColor: "#c8cfd5",
|
||||||
|
color: "black",
|
||||||
|
fontSize: 14
|
||||||
|
},
|
||||||
|
|
||||||
|
'& .line--statut--selected': {
|
||||||
|
backgroundColor: '#FBF2EF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--pair': {
|
||||||
|
backgroundColor: 'rgba(235, 235, 235, .7)',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--impair': {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
@ -8346,6 +8992,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
||||||
className="datagridclass"
|
className="datagridclass"
|
||||||
|
|
||||||
onRowDoubleClick={(newSelectionModel) => {
|
onRowDoubleClick={(newSelectionModel) => {
|
||||||
|
setgridline_id(newSelectionModel.row.id);
|
||||||
setaddOneSession("0");
|
setaddOneSession("0");
|
||||||
setEdite_session("0");
|
setEdite_session("0");
|
||||||
//handleClick_edit_session_From_Line(newSelectionModel.row.id);
|
//handleClick_edit_session_From_Line(newSelectionModel.row.id);
|
||||||
|
@ -8366,7 +9013,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
||||||
components={{
|
components={{
|
||||||
Toolbar: GridToolbar,
|
Toolbar: GridToolbar,
|
||||||
}}
|
}}
|
||||||
sx={datagridSx}
|
//sx={datagridSx}
|
||||||
getCellClassName={(params) => {
|
getCellClassName={(params) => {
|
||||||
//field === 'distantiel'
|
//field === 'distantiel'
|
||||||
if (params.field === 'distantiel' && String(params.value) === "1") {
|
if (params.field === 'distantiel' && String(params.value) === "1") {
|
||||||
|
@ -8402,6 +9049,17 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
||||||
return 'cell--etape--annule';
|
return 'cell--etape--annule';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pour la gestion de la couleur de zone double cliquée
|
||||||
|
if (String(params.row.id) === String(gridline_id)) {
|
||||||
|
return 'line--statut--selected';
|
||||||
|
}
|
||||||
|
else if (parseInt(String(params.row.id)) % 2 === 0) {
|
||||||
|
return 'line--statut--pair';
|
||||||
|
}
|
||||||
|
else if (parseInt(String(params.row.id)) % 2 !== 0) {
|
||||||
|
return 'line--statut--impair';
|
||||||
|
}
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
@ -8540,8 +9198,36 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
||||||
|
|
||||||
{String(submenu) === String("detail_session") && <div style={{ "border": "None" }}>
|
{String(submenu) === String("detail_session") && <div style={{ "border": "None" }}>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{String(addOneSession) !== "1" && <div className="session_data" onChange={IssessionChanged}>
|
{String(addOneSession) !== "1" && <div className="session_data" onChange={IssessionChanged}>
|
||||||
|
|
||||||
|
|
||||||
|
<div className="div_row" style={{ "marginTop": "1rem", "marginBottom": "1rem" }}>
|
||||||
|
cherif convention
|
||||||
|
<div className="div_row_gauche">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="div_row_droite">
|
||||||
|
<div style={{ "marginLeft": "2rem", "marginRight": "2rem" }}>
|
||||||
|
|
||||||
|
<label className="bton_image_class" onClick={(e) => {
|
||||||
|
Get_List_Stagiaire_Conventions();
|
||||||
|
setselected_convention_id();
|
||||||
|
setselected_convention_type();
|
||||||
|
setselected_convention_email_destinataire_prod();
|
||||||
|
|
||||||
|
setselected_convention_email_test();
|
||||||
|
///Get_Stagiaire_List_Email_Com();
|
||||||
|
setDialog_convention_open(true);
|
||||||
|
}} >Editer une convention</label><br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="session_caract"> Formation <br />
|
<div className="session_caract"> Formation <br />
|
||||||
<TextField
|
<TextField
|
||||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
|
@ -74,7 +74,7 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
{ value: 'certif', label: 'Certification' }
|
{ value: 'certif', label: 'Certification' }
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const [gridline_id, setgridline_id] = useState("");
|
||||||
|
|
||||||
const [datagrid_columns_size_model1, setdatagrid_columns_size_model1] = useState(200);
|
const [datagrid_columns_size_model1, setdatagrid_columns_size_model1] = useState(200);
|
||||||
const [datagrid_columns_size_model2, setdatagrid_columns_size_model2] = useState(80);
|
const [datagrid_columns_size_model2, setdatagrid_columns_size_model2] = useState(80);
|
||||||
|
@ -85,10 +85,11 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
{ field: 'id', headerName: 'id', hide: true },
|
{ field: 'id', headerName: 'id', hide: true },
|
||||||
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false },
|
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false },
|
||||||
|
|
||||||
{ field: 'email', headerName: 'email', width: 150, hideable: false, editable: false },
|
|
||||||
{ field: 'nom', headerName: 'nom', width: 150, hide: false, editable: false, editable: false },
|
{ field: 'nom', headerName: 'Nom', minWidth: 150, flex:1, hide: false, editable: false, editable: false },
|
||||||
{ field: 'prenom', headerName: 'prenom', width: 150, hide: false, editable: false },
|
{ field: 'prenom', headerName: 'Prénom', minWidth: 150, flex:1, hide: false, editable: false },
|
||||||
{ field: 'employeur', headerName: 'Employeur', width: 150, hide: true, editable: false },
|
{ field: 'email', headerName: 'Email', minWidth: 200, flex:1,hideable: false, editable: false },
|
||||||
|
{ field: 'employeur', headerName: 'Employeur', minWidth: 150, hide: true, editable: false },
|
||||||
{
|
{
|
||||||
field: 'status', headerName: 'Statut', hide: false, width: datagrid_columns_size_model2,
|
field: 'status', headerName: 'Statut', hide: false, width: datagrid_columns_size_model2,
|
||||||
valueFormatter: (params) => {
|
valueFormatter: (params) => {
|
||||||
|
@ -104,8 +105,8 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
return "???";
|
return "???";
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ field: 'code_session', headerName: 'Code session', hideable: true, editable: false },
|
{ field: 'code_session', headerName: 'Code session', hideable: true, editable: false, minWidth: 150, flex:1},
|
||||||
{ field: 'title', headerName: 'Formation', width: datagrid_columns_size_model1, align: "center", hideable: true, editable: false },
|
{ field: 'title', headerName: 'Formation', minWidth: datagrid_columns_size_model1, align: "center", hideable: true, editable: false, hide:true },
|
||||||
{
|
{
|
||||||
field: 'distantiel', headerName: 'Distantiel', hideable: false, width: datagrid_columns_size_model2,
|
field: 'distantiel', headerName: 'Distantiel', hideable: false, width: datagrid_columns_size_model2,
|
||||||
valueFormatter: (params) => {
|
valueFormatter: (params) => {
|
||||||
|
@ -129,9 +130,9 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
{ field: 'domaine', headerName: 'Domaine', width: datagrid_columns_size_model2, align: "center", hide: true, hideable: true, editable: false },
|
{ field: 'domaine', headerName: 'Domaine', minWidth: datagrid_columns_size_model2, align: "center", hide: true, hideable: true, editable: false },
|
||||||
{ field: 'date_debut', headerName: 'Du', width: datagrid_columns_size_model1, hideable: true, editable: false },
|
{ field: 'date_debut', headerName: 'Du', minWidth: 90, maxWidth:100, flex:1, hideable: true, editable: false },
|
||||||
{ field: 'date_fin', headerName: 'Au', width: datagrid_columns_size_model1, hideable: true, editable: false },
|
{ field: 'date_fin', headerName: 'Au', minWidth: 90, maxWidth:100, flex:1, hideable: true, editable: false },
|
||||||
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false },
|
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false },
|
||||||
{
|
{
|
||||||
field: "Detail", headerName: 'Voir detail',
|
field: "Detail", headerName: 'Voir detail',
|
||||||
|
@ -141,6 +142,7 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
<Button
|
<Button
|
||||||
|
|
||||||
onClick={(event) => {
|
onClick={(event) => {
|
||||||
|
setgridline_id(cellValues.row.id);
|
||||||
handleClick_edit_session_From_Line(cellValues.row.id);
|
handleClick_edit_session_From_Line(cellValues.row.id);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
@ -152,7 +154,7 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'Action', headerName: 'Action', hide: false, width: 200,
|
field: 'Action', headerName: 'Action', hide: false, minWidth: 100, maxWidth:150, flex:1,
|
||||||
renderCell: (cellValues) => {
|
renderCell: (cellValues) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -4231,6 +4233,8 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -- convention
|
||||||
const [Dialog_convention_message, setDialog_convention_message] = React.useState(false);
|
const [Dialog_convention_message, setDialog_convention_message] = React.useState(false);
|
||||||
const [Dialog_convention_open, setDialog_convention_open] = React.useState(false);
|
const [Dialog_convention_open, setDialog_convention_open] = React.useState(false);
|
||||||
function Dialog_convention_handle_change_participant_session(message) {
|
function Dialog_convention_handle_change_participant_session(message) {
|
||||||
|
@ -5608,6 +5612,19 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'& .line--statut--selected': {
|
||||||
|
backgroundColor: '#FBF2EF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--pair': {
|
||||||
|
backgroundColor: 'rgba(235, 235, 235, .7)',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--impair': {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<DataGrid
|
<DataGrid
|
||||||
|
@ -5654,6 +5671,7 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
className="datagridclass"
|
className="datagridclass"
|
||||||
|
|
||||||
onRowDoubleClick={(newSelectionModel) => {
|
onRowDoubleClick={(newSelectionModel) => {
|
||||||
|
setgridline_id(newSelectionModel.row.id);
|
||||||
handleClick_edit_session_From_Line(newSelectionModel.row.id);
|
handleClick_edit_session_From_Line(newSelectionModel.row.id);
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
@ -5699,6 +5717,17 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
if (String(params.row.status) === "1") {
|
if (String(params.row.status) === "1") {
|
||||||
return 'line--statut--inscrit';
|
return 'line--statut--inscrit';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pour la gestion de la couleur de zone double cliquée
|
||||||
|
if (String(params.row.id) === String(gridline_id)) {
|
||||||
|
return 'line--statut--selected';
|
||||||
|
}
|
||||||
|
else if( parseInt(String(params.row.id)) % 2 === 0){
|
||||||
|
return 'line--statut--pair';
|
||||||
|
}
|
||||||
|
else if( parseInt(String(params.row.id)) % 2 !== 0){
|
||||||
|
return 'line--statut--impair';
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -236,16 +236,16 @@ const DistplayPartnerTraningsPage = (props) => {
|
||||||
{ field: 'lms_class_code', headerName: 'lms_class_code', hide: true },
|
{ field: 'lms_class_code', headerName: 'lms_class_code', hide: true },
|
||||||
{ field: 'zone_diffusion', headerName: 'zone_diffusion', hide: true },
|
{ field: 'zone_diffusion', headerName: 'zone_diffusion', hide: true },
|
||||||
{ field: 'internal_url', headerName: 'internal_url', hide: true },
|
{ field: 'internal_url', headerName: 'internal_url', hide: true },
|
||||||
{ field: 'external_code', headerName: 'Code Formation', flex: 1, hideable: false, resizable: true },
|
{ field: 'external_code', headerName: 'Code Formation', hideable: false, minWidth: 100, flex: 1, maxWidth: 250, editable: false },
|
||||||
{ field: 'title', headerName: 'Titre', flex: 1, hideable: false, },
|
{ field: 'title', headerName: 'Titre', flex: 1, hideable: false, minWidth: 250, flex: 1, editable: false },
|
||||||
{ field: 'domain', headerName: 'Domaine', width: datagrid_columns_size_model1, hideable: true, },
|
{ field: 'domain', headerName: 'Domaine', minWidth: datagrid_columns_size_model1, hideable: true, },
|
||||||
{ field: 'metier', headerName: 'Métier', width: datagrid_columns_size_model1, hideable: true, hide: true },
|
{ field: 'metier', headerName: 'Métier', minWidth: datagrid_columns_size_model1, hideable: true, hide: true },
|
||||||
{ field: 'url', headerName: 'lien', width: datagrid_columns_size_model1, hideable: true, hide: true },
|
{ field: 'url', headerName: 'lien', minWidth: datagrid_columns_size_model1, hideable: true, hide: true },
|
||||||
{ field: 'description', headerName: 'Description', hide: true, resizable: true, with: 1 },
|
{ field: 'description', headerName: 'Description', hide: true, resizable: true, minWidth: 100, maxWidth: 150, flex: 1 },
|
||||||
|
|
||||||
{ field: 'price', headerName: 'Prix', width: datagrid_columns_size_model2, align: "center", resizable: true, hide: ismobilephone_columns_hide },
|
{ field: 'price', headerName: 'Prix', minWidth: datagrid_columns_size_model2, align: "center", resizable: true, hide: ismobilephone_columns_hide },
|
||||||
{
|
{
|
||||||
field: 'published', headerName: 'Publié', width: datagrid_columns_size_model2, align: "center", resizable: true,
|
field: 'published', headerName: 'Publié', minWidth: datagrid_columns_size_model2, align: "center", resizable: true,
|
||||||
valueFormatter: (params) => {
|
valueFormatter: (params) => {
|
||||||
if (String(params.value) === "0")
|
if (String(params.value) === "0")
|
||||||
return "Non";
|
return "Non";
|
||||||
|
@ -1470,7 +1470,7 @@ const DistplayPartnerTraningsPage = (props) => {
|
||||||
{String(myApiResponse) === "True" &&
|
{String(myApiResponse) === "True" &&
|
||||||
<div style={{ height: "800px", width: '100%', paddingRight: '1px' }}>
|
<div style={{ height: "800px", width: '100%', paddingRight: '1px' }}>
|
||||||
|
|
||||||
{!createtraining && <div className='div_row' >
|
{/*!createtraining && <div className='div_row' >
|
||||||
|
|
||||||
<Button variant="outlined" onClick={Createtraining}
|
<Button variant="outlined" onClick={Createtraining}
|
||||||
className="detail_class_submenu bton_add_session"
|
className="detail_class_submenu bton_add_session"
|
||||||
|
@ -1478,12 +1478,12 @@ const DistplayPartnerTraningsPage = (props) => {
|
||||||
<img src={add_plus} alt="ajout session" className="icon_plus" />
|
<img src={add_plus} alt="ajout session" className="icon_plus" />
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
</div>}
|
</div>*/}
|
||||||
<div className="session_data">
|
<div className="session_data">
|
||||||
<div style={{ "border": "None" }}>
|
<div style={{ "border": "None" }}>
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
height: "700px",
|
height: "500px",
|
||||||
width: '100%',
|
width: '100%',
|
||||||
paddingRight: '2px',
|
paddingRight: '2px',
|
||||||
'& .cell--published': {
|
'& .cell--published': {
|
||||||
|
@ -1581,6 +1581,17 @@ const DistplayPartnerTraningsPage = (props) => {
|
||||||
</Box>
|
</Box>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="div_row"> </div>
|
||||||
|
|
||||||
|
{!createtraining && <div className='div_row' >
|
||||||
|
|
||||||
|
<Button variant="outlined" onClick={Createtraining}
|
||||||
|
className="detail_class_submenu bton_add_session"
|
||||||
|
id='menu_import_participant' name='menu_import_participant' style={{ "marginRight": "10px" }}>Formation
|
||||||
|
<img src={add_plus} alt="ajout session" className="icon_plus" />
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
</div>}
|
</div>}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -46,6 +46,7 @@ import VisibilityOff from '@mui/icons-material/VisibilityOff';
|
||||||
import { Fab } from "@material-ui/core";
|
import { Fab } from "@material-ui/core";
|
||||||
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
|
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
|
||||||
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
|
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
|
||||||
|
import { ConsoleView } from "react-device-detect";
|
||||||
|
|
||||||
|
|
||||||
const Employes = (props) => {
|
const Employes = (props) => {
|
||||||
|
@ -83,9 +84,23 @@ const Employes = (props) => {
|
||||||
const columns = [
|
const columns = [
|
||||||
{ field: '_id', headerName: '_id', hide: true },
|
{ field: '_id', headerName: '_id', hide: true },
|
||||||
{ field: 'id', headerName: 'id', hide: true },
|
{ field: 'id', headerName: 'id', hide: true },
|
||||||
{ field: 'email', headerName: 'email', flex: 1, hideable: false, },
|
{
|
||||||
{ field: 'nom', headerName: 'nom', flex: 1, hide: false, },
|
field: 'civilite', headerName: 'Civilité', width: 90, hide: false,
|
||||||
{ field: 'prenom', headerName: 'prenom', flex: 1, hide: false, },
|
valueFormatter: (params) => {
|
||||||
|
if (String(params.value) === "0")
|
||||||
|
return "Mme";
|
||||||
|
else if (String(params.value) === "1")
|
||||||
|
return "M";
|
||||||
|
else if (String(params.value) === "-1")
|
||||||
|
return " ";
|
||||||
|
else
|
||||||
|
return String(params.value);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{ field: 'nom', headerName: 'Nom', flex: 1, hide: false, minWidth: 150 },
|
||||||
|
{ field: 'prenom', headerName: 'Prénom', flex: 1, hide: false, minWidth: 150 },
|
||||||
|
{ field: 'email', headerName: 'Email', flex: 1, hideable: false, minWidth: 200 },
|
||||||
{
|
{
|
||||||
field: 'ismanager', headerName: 'Manager', width: 150, hide: false,
|
field: 'ismanager', headerName: 'Manager', width: 150, hide: false,
|
||||||
valueFormatter: (params) => {
|
valueFormatter: (params) => {
|
||||||
|
@ -99,19 +114,7 @@ const Employes = (props) => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ field: 'telephone_mobile', headerName: 'Mobile', width: 150, hide: false, },
|
{ field: 'telephone_mobile', headerName: 'Mobile', width: 150, hide: false, },
|
||||||
{
|
|
||||||
field: 'civilite', headerName: 'Civilité', width: 150, hide: false,
|
|
||||||
valueFormatter: (params) => {
|
|
||||||
if (String(params.value) === "0")
|
|
||||||
return "Mme";
|
|
||||||
else if (String(params.value) === "1")
|
|
||||||
return "M";
|
|
||||||
else if (String(params.value) === "-1")
|
|
||||||
return " ";
|
|
||||||
else
|
|
||||||
return String(params.value);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ field: 'profil', headerName: 'profil', width: 150, hide: false, },
|
{ field: 'profil', headerName: 'profil', width: 150, hide: false, },
|
||||||
{ field: 'fonction', headerName: 'Fonction', width: 150, hide: false, },
|
{ field: 'fonction', headerName: 'Fonction', width: 150, hide: false, },
|
||||||
|
|
||||||
|
@ -569,6 +572,10 @@ const Employes = (props) => {
|
||||||
const [display_detail_employe, setdisplay_detail_employe] = React.useState();
|
const [display_detail_employe, setdisplay_detail_employe] = React.useState();
|
||||||
|
|
||||||
const [selected_id, setselected_id] = useState("");
|
const [selected_id, setselected_id] = useState("");
|
||||||
|
|
||||||
|
const [gridline_id, setgridline_id] = useState("");
|
||||||
|
|
||||||
|
|
||||||
const [selected_employe_email, setselected_employe_email] = useState("");
|
const [selected_employe_email, setselected_employe_email] = useState("");
|
||||||
function handleClick_edit_employee_From_Line(selected_row_id) {
|
function handleClick_edit_employee_From_Line(selected_row_id) {
|
||||||
|
|
||||||
|
@ -4166,6 +4173,7 @@ const Employes = (props) => {
|
||||||
color: 'black',
|
color: 'black',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
|
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
|
||||||
"& .MuiDataGrid-row": {
|
"& .MuiDataGrid-row": {
|
||||||
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
|
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
|
||||||
|
@ -4177,6 +4185,19 @@ const Employes = (props) => {
|
||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'& .line--statut--selected': {
|
||||||
|
backgroundColor: '#FBF2EF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--pair': {
|
||||||
|
backgroundColor: 'rgba(235, 235, 235, .7)',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--impair': {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<DataGrid
|
<DataGrid
|
||||||
|
@ -4207,6 +4228,7 @@ const Employes = (props) => {
|
||||||
fonction: JSON.parse(item).fonction,
|
fonction: JSON.parse(item).fonction,
|
||||||
ismanager: JSON.parse(item).ismanager,
|
ismanager: JSON.parse(item).ismanager,
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
))}
|
))}
|
||||||
|
|
||||||
|
@ -4215,6 +4237,7 @@ const Employes = (props) => {
|
||||||
className="datagridclass"
|
className="datagridclass"
|
||||||
|
|
||||||
onRowDoubleClick={(newSelectionModel) => {
|
onRowDoubleClick={(newSelectionModel) => {
|
||||||
|
setgridline_id(newSelectionModel.row.id);
|
||||||
handleClick_edit_employee_From_Line(newSelectionModel.row.id);
|
handleClick_edit_employee_From_Line(newSelectionModel.row.id);
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
@ -4227,6 +4250,12 @@ const Employes = (props) => {
|
||||||
//sx={datagridSx}
|
//sx={datagridSx}
|
||||||
getCellClassName={(params) => {
|
getCellClassName={(params) => {
|
||||||
//field === 'distantiel'
|
//field === 'distantiel'
|
||||||
|
|
||||||
|
|
||||||
|
//console.log(" ### params.field = ", params.field)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (params.field === 'distantiel' && String(params.value) === "1") {
|
if (params.field === 'distantiel' && String(params.value) === "1") {
|
||||||
return 'cell--distantiel';
|
return 'cell--distantiel';
|
||||||
}
|
}
|
||||||
|
@ -4250,6 +4279,16 @@ const Employes = (props) => {
|
||||||
|
|
||||||
}}
|
}}
|
||||||
getRowClassName={(params) => {
|
getRowClassName={(params) => {
|
||||||
|
// Pour la gestion de la couleur de zone double cliquée
|
||||||
|
if (String(params.row.id) === String(gridline_id)) {
|
||||||
|
return 'line--statut--selected';
|
||||||
|
}
|
||||||
|
else if( parseInt(String(params.row.id)) % 2 === 0){
|
||||||
|
return 'line--statut--pair';
|
||||||
|
}
|
||||||
|
else if( parseInt(String(params.row.id)) % 2 !== 0){
|
||||||
|
return 'line--statut--impair';
|
||||||
|
}
|
||||||
|
|
||||||
if (String(params.row.status) === "-1") {
|
if (String(params.row.status) === "-1") {
|
||||||
return 'line--statut--annule';
|
return 'line--statut--annule';
|
||||||
|
|
|
@ -65,6 +65,10 @@ const Partner_Client = (props) => {
|
||||||
|
|
||||||
const [rows_list_clients, setrows_list_clients] = useState([]);
|
const [rows_list_clients, setrows_list_clients] = useState([]);
|
||||||
const [selectionModel, setSelectionModel] = React.useState([]);
|
const [selectionModel, setSelectionModel] = React.useState([]);
|
||||||
|
|
||||||
|
const [selected_id, setselected_id] = useState("");
|
||||||
|
|
||||||
|
|
||||||
const columns_clients = [
|
const columns_clients = [
|
||||||
{ field: 'id', headerName: 'id', hide: true },
|
{ field: 'id', headerName: 'id', hide: true },
|
||||||
{ field: '_id', headerName: '_id', hide: true },
|
{ field: '_id', headerName: '_id', hide: true },
|
||||||
|
@ -379,12 +383,12 @@ const Partner_Client = (props) => {
|
||||||
height: 60,
|
height: 60,
|
||||||
lineHeight: "59px !important"
|
lineHeight: "59px !important"
|
||||||
}
|
}
|
||||||
},*/
|
},
|
||||||
"& .MuiDataGrid-virtualScrollerRenderZone": {
|
"& .MuiDataGrid-virtualScrollerRenderZone": {
|
||||||
"& .MuiDataGrid-row": {
|
"& .MuiDataGrid-row": {
|
||||||
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
|
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
|
||||||
}
|
}
|
||||||
},
|
},*/
|
||||||
"& .MuiDataGrid-columnHeaders": {
|
"& .MuiDataGrid-columnHeaders": {
|
||||||
backgroundColor: "#c8cfd5",
|
backgroundColor: "#c8cfd5",
|
||||||
color: "black",
|
color: "black",
|
||||||
|
@ -399,6 +403,10 @@ const Partner_Client = (props) => {
|
||||||
|
|
||||||
var line = JSON.parse(rows_list_clients[selected_row_id]);
|
var line = JSON.parse(rows_list_clients[selected_row_id]);
|
||||||
var clientmail = String(line.email);
|
var clientmail = String(line.email);
|
||||||
|
|
||||||
|
var client_id = String(line._id);
|
||||||
|
setselected_id(client_id);
|
||||||
|
|
||||||
setClient_email(clientmail);
|
setClient_email(clientmail);
|
||||||
setEdite_Client("1");
|
setEdite_Client("1");
|
||||||
|
|
||||||
|
@ -438,6 +446,8 @@ const Partner_Client = (props) => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const [gridline_id, setgridline_id] = useState("");
|
||||||
|
|
||||||
const myRef_detail_client = useRef(null)
|
const myRef_detail_client = useRef(null)
|
||||||
return (
|
return (
|
||||||
|
|
||||||
|
@ -623,7 +633,24 @@ const Partner_Client = (props) => {
|
||||||
fontWeight: 'bold',
|
fontWeight: 'bold',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"& .MuiDataGrid-columnHeaders": {
|
||||||
|
backgroundColor: "#c8cfd5",
|
||||||
|
color: "black",
|
||||||
|
fontSize: 14
|
||||||
|
},
|
||||||
|
|
||||||
|
'& .line--statut--selected': {
|
||||||
|
backgroundColor: '#FBF2EF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--pair': {
|
||||||
|
backgroundColor: 'rgba(235, 235, 235, .7)',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--impair': {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
@ -649,21 +676,40 @@ const Partner_Client = (props) => {
|
||||||
components={{
|
components={{
|
||||||
Toolbar: GridToolbar,
|
Toolbar: GridToolbar,
|
||||||
}}
|
}}
|
||||||
sx={datagridSx}
|
//sx={datagridSx}
|
||||||
onSelectionModelChange={(newSelectionModel) => {
|
onSelectionModelChange={(newSelectionModel) => {
|
||||||
|
|
||||||
setSelectionModel(newSelectionModel);
|
setSelectionModel(newSelectionModel);
|
||||||
if (newSelectionModel.length === 1){
|
/* if (newSelectionModel.length === 1){
|
||||||
|
|
||||||
handleClick_edit_session_From_Line(newSelectionModel);
|
handleClick_edit_session_From_Line(newSelectionModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
else{
|
else{
|
||||||
setEdite_Client();
|
setEdite_Client();
|
||||||
}
|
}*/
|
||||||
}}
|
}}
|
||||||
selectionModel={selectionModel}
|
selectionModel={selectionModel}
|
||||||
|
|
||||||
|
onRowDoubleClick={(newSelectionModel) => {
|
||||||
|
setgridline_id(newSelectionModel.row.id);
|
||||||
|
handleClick_edit_session_From_Line(newSelectionModel.row.id);
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
getRowClassName={(params) => {
|
||||||
|
// Pour la gestion de la couleur de zone double cliquée
|
||||||
|
if (String(params.row.id) === String(gridline_id)) {
|
||||||
|
return 'line--statut--selected';
|
||||||
|
}
|
||||||
|
else if( parseInt(String(params.row.id)) % 2 === 0){
|
||||||
|
return 'line--statut--pair';
|
||||||
|
}
|
||||||
|
else if( parseInt(String(params.row.id)) % 2 !== 0){
|
||||||
|
return 'line--statut--impair';
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
<br />
|
<br />
|
||||||
|
@ -715,7 +761,8 @@ const Partner_Client = (props) => {
|
||||||
|
|
||||||
<div className="titre1"> Detail client : {Client_email}</div>
|
<div className="titre1"> Detail client : {Client_email}</div>
|
||||||
|
|
||||||
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} father_scroll_to_top={father_scroll_to_top} />
|
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} father_scroll_to_top={father_scroll_to_top}
|
||||||
|
client_id={selected_id} />
|
||||||
|
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
|
@ -723,7 +770,7 @@ const Partner_Client = (props) => {
|
||||||
|
|
||||||
<div className="titre1"> Detail client : {Client_email}</div>
|
<div className="titre1"> Detail client : {Client_email}</div>
|
||||||
<div ref={myRef_add_client}> </div>
|
<div ref={myRef_add_client}> </div>
|
||||||
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} new_customer="1"
|
<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} />
|
Get_List_Partner_Clients={Get_List_Partner_Clients} father_scroll_to_top={father_scroll_to_top} />
|
||||||
|
|
||||||
</div>}
|
</div>}
|
||||||
|
|
|
@ -2939,7 +2939,7 @@ const Partner_Commande = (props) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const [isLoading, setLoading] = useState();
|
const [isLoading, setLoading] = useState();
|
||||||
|
const [gridline_id, setgridline_id] = useState("");
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -3891,6 +3891,19 @@ const Partner_Commande = (props) => {
|
||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'& .line--statut--selected': {
|
||||||
|
backgroundColor: '#FBF2EF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--pair': {
|
||||||
|
backgroundColor: 'rgba(235, 235, 235, .7)',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--impair': {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<DataGrid
|
<DataGrid
|
||||||
|
@ -3970,6 +3983,17 @@ const Partner_Commande = (props) => {
|
||||||
if (String(params.row.status) === "1") {
|
if (String(params.row.status) === "1") {
|
||||||
return 'line--statut--inscrit';
|
return 'line--statut--inscrit';
|
||||||
}
|
}
|
||||||
|
// Pour la gestion de la couleur de zone double cliquée
|
||||||
|
if (String(params.row.id) === String(gridline_id)) {
|
||||||
|
return 'line--statut--selected';
|
||||||
|
}
|
||||||
|
else if (parseInt(String(params.row.id)) % 2 === 0) {
|
||||||
|
return 'line--statut--pair';
|
||||||
|
}
|
||||||
|
else if (parseInt(String(params.row.id)) % 2 !== 0) {
|
||||||
|
return 'line--statut--impair';
|
||||||
|
}
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1742,6 +1742,8 @@ const Partner_Configuration_Jours_Travail = (props) => {
|
||||||
|
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
const [gridline_id, setgridline_id] = useState("");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="partner_configuration_jours_travail">
|
<div className="partner_configuration_jours_travail">
|
||||||
{isLoading && <div className="loader-container">
|
{isLoading && <div className="loader-container">
|
||||||
|
|
|
@ -375,7 +375,7 @@ const Partner_Configuration_Technique = (props) => {
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const [gridline_id, setgridline_id] = useState("");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="partner_configuration_technique">
|
<div className="partner_configuration_technique">
|
||||||
|
@ -537,14 +537,27 @@ const Partner_Configuration_Technique = (props) => {
|
||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'& .line--statut--selected': {
|
||||||
|
backgroundColor: '#FBF2EF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--pair': {
|
||||||
|
backgroundColor: 'rgba(235, 235, 235, .7)',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
'& .line--statut--impair': {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
color: 'black',
|
||||||
|
},
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<DataGrid
|
<DataGrid
|
||||||
checkboxSelection
|
checkboxSelection
|
||||||
onSelectionModelChange={(newSelectionModel) => {
|
onSelectionModelChange={(newSelectionModel) => {
|
||||||
setSelectionModel(newSelectionModel);
|
setSelectionModel(newSelectionModel);
|
||||||
if (newSelectionModel.length === 1)
|
/*if (newSelectionModel.length === 1)
|
||||||
handleClick_edit_config_From_Line(newSelectionModel);
|
handleClick_edit_config_From_Line(newSelectionModel);*/
|
||||||
if (newSelectionModel.length !== 1) {
|
if (newSelectionModel.length !== 1) {
|
||||||
setp_detail_config_valeur();
|
setp_detail_config_valeur();
|
||||||
setp_detail_config_point();
|
setp_detail_config_point();
|
||||||
|
@ -571,6 +584,14 @@ const Partner_Configuration_Technique = (props) => {
|
||||||
pageSize={10}
|
pageSize={10}
|
||||||
className="datagridclass"
|
className="datagridclass"
|
||||||
|
|
||||||
|
onRowDoubleClick={(newSelectionModel) => {
|
||||||
|
setgridline_id(newSelectionModel.row.id);
|
||||||
|
|
||||||
|
handleClick_edit_config_From_Line(newSelectionModel.row.id);
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
||||||
rowsPerPageOptions={[10]}
|
rowsPerPageOptions={[10]}
|
||||||
//disableSelectionOnClick
|
//disableSelectionOnClick
|
||||||
components={{
|
components={{
|
||||||
|
@ -610,6 +631,17 @@ const Partner_Configuration_Technique = (props) => {
|
||||||
if (String(params.row.status) === "1") {
|
if (String(params.row.status) === "1") {
|
||||||
return 'line--statut--inscrit';
|
return 'line--statut--inscrit';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pour la gestion de la couleur de zone double cliquée
|
||||||
|
if (String(params.row.id) === String(gridline_id)) {
|
||||||
|
return 'line--statut--selected';
|
||||||
|
}
|
||||||
|
else if (parseInt(String(params.row.id)) % 2 === 0) {
|
||||||
|
return 'line--statut--pair';
|
||||||
|
}
|
||||||
|
else if (parseInt(String(params.row.id)) % 2 !== 0) {
|
||||||
|
return 'line--statut--impair';
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ const Partner_Facture = (props) => {
|
||||||
|
|
||||||
const [rows_invoice_lines, setrows_invoice_lines] = useState([]);
|
const [rows_invoice_lines, setrows_invoice_lines] = useState([]);
|
||||||
const [selectionModel_invoice_lines, setselectionModel_invoice_lines] = React.useState([]);
|
const [selectionModel_invoice_lines, setselectionModel_invoice_lines] = React.useState([]);
|
||||||
|
const [gridline_id, setgridline_id] = useState("");
|
||||||
var date_today_90j = new Date();
|
var date_today_90j = new Date();
|
||||||
date_today_90j.setDate(date_today_90j.getDate() + 90);
|
date_today_90j.setDate(date_today_90j.getDate() + 90);
|
||||||
|
|
||||||
|
|
|
@ -1904,7 +1904,8 @@
|
||||||
.bton_add_session {
|
.bton_add_session {
|
||||||
background: #c8cfd5;
|
background: #c8cfd5;
|
||||||
color: black;
|
color: black;
|
||||||
width: 30% !important;
|
width: 40% !important;
|
||||||
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bton_import_excel {
|
.bton_import_excel {
|
||||||
|
|
|
@ -457,7 +457,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon_plus {
|
.icon_plus {
|
||||||
width: 8%;
|
width: 6%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.session_data {
|
.session_data {
|
||||||
|
@ -470,6 +470,12 @@
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bton_add_session {
|
||||||
|
background: #c8cfd5;
|
||||||
|
color: black;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 601px) and (max-width: 991px) {
|
@media only screen and (min-width: 601px) and (max-width: 991px) {
|
||||||
|
@ -888,7 +894,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon_plus {
|
.icon_plus {
|
||||||
width: 8%;
|
width: 6%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.session_data {
|
.session_data {
|
||||||
|
@ -902,6 +908,12 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bton_add_session {
|
||||||
|
background: #c8cfd5;
|
||||||
|
color: black;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
||||||
|
@ -1334,6 +1346,12 @@
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bton_add_session {
|
||||||
|
background: #c8cfd5;
|
||||||
|
color: black;
|
||||||
|
width: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 1200px) {
|
@media only screen and (min-width: 1200px) {
|
||||||
|
@ -1749,7 +1767,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon_plus {
|
.icon_plus {
|
||||||
width: 10%;
|
width: 8%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.session_data {
|
.session_data {
|
||||||
|
@ -1762,6 +1780,12 @@
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bton_add_session {
|
||||||
|
background: #c8cfd5;
|
||||||
|
color: black;
|
||||||
|
width: 20% !important;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// end media
|
// end media
|
||||||
|
|
Loading…
Reference in New Issue