04/01/2023 - 20h00

recette2
cherif 2023-01-04 20:41:27 +01:00
parent b0c23c481b
commit ce88a3160b
26 changed files with 7061 additions and 70920 deletions

70552
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -122,9 +122,6 @@
"semantic-ui-react": "^2.1.2",
"state-pool": "^0.6.0",
"styled-components": "^5.3.5",
"survey-core": "^1.9.64",
"survey-react": "^1.9.64",
"survey-react-ui": "^1.9.64",
"swr": "^1.2.1",
"use-global-state": "^0.1.2",
"victory": "^36.6.6",

View File

@ -7,14 +7,14 @@
<url>
<loc>https://www.mysy-training.com/</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/qualite-la-norme-itl-dans-entreprise-532</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -22,28 +22,28 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/6281eae593f66d1a10ac2248</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/626fca8d62477b7b15a04b27</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/626fcada62477b7b15a04d97</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Recherche-Article-formation</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -51,7 +51,7 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/avis-aux-perfectionnistes-des-styles-css-aa1</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -59,28 +59,28 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/analysez-vos-donnees-textuelles-98b</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation-Coeur/analysez-vos-donnees-textuelles-98b</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/comment-reussir-ses-premiers-pas-en-tant-que-manager-866</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/create_account</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -88,28 +88,28 @@
<url>
<loc>https://www.mysy-training.com/Connexion</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/ContactezNous</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/QuiSommesNous</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/supply-chain-lessons-from-the-pandemic-11d</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -117,35 +117,35 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/planification-de-projets--methode-pert-et-gantt-19f</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/techniques--methodes-pour-bien-negocier--bd6</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/reussir-vos-photos-de-vacances-comment---343</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Produits-Services</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/les-metiers-d-avenir-959</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -154,14 +154,14 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/actualite-sociale-10f</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/pratique-de-la-paie--initiation-b10</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -169,7 +169,7 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/comptabilite-generale--initiation-56e</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -178,14 +178,14 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/contrat-de-travail-de-a-a-z-809</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/droit-du-travail-928</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -193,21 +193,21 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/droit-social-pour-managers-45b</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/la-duree-du-travail-et-gestion-des-absences-471</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/la-gestion-des-cdd-59b</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -215,7 +215,7 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/entretien-professionnel-802</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -223,14 +223,14 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/missions-rh-6e2</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/reglementation-rh--l-essentiel-eaf</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -238,21 +238,21 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/reussir-ses-entretiens-de-recrutement-c40</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/cloturer-votre-annee-sociale-en-toute-securite-8</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/controle-urssaf-4b2</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -260,7 +260,7 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/dads--declaration-annuelle-de-donnees-sociales-1</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -268,14 +268,14 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/la-mise-en-oeuvre-de-la-dsn-3a0</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/les-outils-de-la-remuneration-9f5</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -283,7 +283,7 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/pilotage-de-la-masse-salariale-301</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -291,7 +291,7 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/pratique-de-la-paie--perfectionnement-d6c</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -299,14 +299,14 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/digital-learning-et-developpement-manager-ec5</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/devenir-formateur-occasionnel-559</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
@ -314,14 +314,21 @@
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/formation-de-tuteur-fc7</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-Article/loi-sapin-7a9</loc>
<lastmod>2022-11-27T11:35:41+00:00</lastmod>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>
<url>
<loc>https://www.mysy-training.com/Display-Detail-formation/prise-de-parole-en-public-6be</loc>
<lastmod>2023-01-01T11:35:41+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0000</priority>
</url>

View File

@ -33,6 +33,7 @@ import Recherche_old from "./pages/recherche";
import UserSignFirst from "./pages/usersigninfirst";
import GestionAdministrative from "./components/GestionAdministrative";
import Emargement from "./pages/emargementOk";
import Formation_Cartouche_Com from "./pages/recherche_cartouche_com";
function App() {
@ -86,6 +87,7 @@ function App() {
<Route path="/Recherche_old/" exact component={Recherche_old} />
<Route path="/Connexion-utilisateur-0/" exact component={UserSignFirst} />
<Route path="/Emargement/" exact component={Emargement} />
<Route path="/CartoucheComMySy/" exact component={Formation_Cartouche_Com} />
<Route component={NotFound} />
</Switch>

View File

@ -115,6 +115,8 @@ const DisplayDetailClass = (props) => {
Display();
GetAssociatedTraning();
GetCurrentClass_trainingsession();
}, []);
@ -451,6 +453,39 @@ const DisplayDetailClass = (props) => {
window.scrollTo(0, 0);
}
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", classId);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetActiveSessionFormation_List/";
axios.post(myurl, form).then(res => {
if (String(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("")
})
}
/// ----
return (
@ -473,7 +508,7 @@ const DisplayDetailClass = (props) => {
<div className="left_box">
<div className="hilightsoustitre" > Du même organisme </div>
<div className="hilightsoustitre" > A voir aussi</div>
{associatedtraining_message && String(associatedtraining_api) === "True" &&
@ -547,7 +582,7 @@ const DisplayDetailClass = (props) => {
className="bton_recontact"
onClick={Contact_bton}
>
Une question ?
Une question ?
</Button>
@ -777,19 +812,35 @@ Si non, on utilise le formumaire de mysy,.
</div>}
{String(submenu) === String("datelieu") && <div className="detail_class_submenu_data">
{DetailTraining.datelieu && DetailTraining.datelieu.map((datelieu) => (
{GetCurrentClass_result && GetCurrentClass_result.map((formation) => (
<div>
{String(datelieu.code_postal) === "0" && <nav>
Du {datelieu.date_du} au {datelieu.date_au} ; En ligne
{String(JSON.parse(formation).code_postal) === "0" &&
String(JSON.parse(formation).date_debut) === String(JSON.parse(formation).date_fin) && <nav>
Le {JSON.parse(formation).date_debut} En ligne
</nav>}
{String(JSON.parse(formation).code_postal) !== "0" && String(JSON.parse(formation).date_debut) === String(JSON.parse(formation).date_fin) &&
<nav>
Le {JSON.parse(formation).date_debut} ; au {JSON.parse(formation).adresse} , {JSON.parse(formation).ville} &nbsp; {JSON.parse(formation).code_postal}
</nav>}
{String(JSON.parse(formation).code_postal) === "0" && <nav> String( JSON.parse(formation).date_debut) !== String( JSON.parse(formation).date_fin) &&
Le {JSON.parse(formation).date_debut} ; En ligne
</nav>}
{String(datelieu.code_postal) !== "0" && <nav>
Du {datelieu.date_du} au {datelieu.date_au} ; au {datelieu.adresse} , {datelieu.ville} &nbsp; {datelieu.code_postal}
{String(JSON.parse(formation).code_postal) !== "0" && String(JSON.parse(formation).date_debut) !== String(JSON.parse(formation).date_fin) && <nav>
Du {JSON.parse(formation).date_debut} au {JSON.parse(formation).date_fin} ; au {JSON.parse(formation).adresse} , {JSON.parse(formation).ville} &nbsp; {JSON.parse(formation).code_postal}
</nav>}
</div>
))}
</div>}
@ -805,7 +856,7 @@ Si non, on utilise le formumaire de mysy,.
<div className="left_box_for_mobile">
<div className="hilightsoustitre" > Du même organisme </div>
<div className="hilightsoustitre" > A voir aussi</div>
{associatedtraining_message && String(associatedtraining_api) === "True" &&

View File

@ -161,6 +161,8 @@ const DisplayDetailClassAction = (props) => {
Display();
GetAssociatedTraning();
GetCurrentClass_trainingsession();
funclocaltoken();
window.scrollTo(0, 0);
document.getElementsByName('mytitle')[0].focus();
@ -479,6 +481,39 @@ const DisplayDetailClassAction = (props) => {
document.getElementsByName('submenu_divers')[0].blur();
}
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", classId);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetActiveSessionFormation_List/";
axios.post(myurl, form).then(res => {
if (String(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("")
})
}
/// ----
return (
@ -501,7 +536,7 @@ const DisplayDetailClassAction = (props) => {
<div className="left_box">
<div className="hilightsoustitre" > Du même organisme </div>
<div className="hilightsoustitre" > A voir aussi</div>
{associatedtraining_message && String(associatedtraining_api) === "True" &&
@ -778,19 +813,35 @@ const DisplayDetailClassAction = (props) => {
{String(submenu) === String("datelieu") && <div className="detail_class_submenu_data">
{DetailTraining.datelieu && DetailTraining.datelieu.map((datelieu) => (
{GetCurrentClass_result && GetCurrentClass_result.map((formation) => (
<div>
{String(datelieu.code_postal) === "0" && <nav>
Du {datelieu.date_du} au {datelieu.date_au} ; En ligne
{String(JSON.parse(formation).code_postal) === "0" &&
String(JSON.parse(formation).date_debut) === String(JSON.parse(formation).date_fin) && <nav>
Le {JSON.parse(formation).date_debut} En ligne
</nav>}
{String(JSON.parse(formation).code_postal) !== "0" && String(JSON.parse(formation).date_debut) === String(JSON.parse(formation).date_fin) &&
<nav>
Le {JSON.parse(formation).date_debut} ; au {JSON.parse(formation).adresse} , {JSON.parse(formation).ville} &nbsp; {JSON.parse(formation).code_postal}
</nav>}
{String(JSON.parse(formation).code_postal) === "0" && <nav> String( JSON.parse(formation).date_debut) !== String( JSON.parse(formation).date_fin) &&
Le {JSON.parse(formation).date_debut} ; En ligne
</nav>}
{String(datelieu.code_postal) !== "0" && <nav>
Du {datelieu.date_du} au {datelieu.date_au} ; au {datelieu.adresse} , {datelieu.ville} &nbsp; {datelieu.code_postal}
{String(JSON.parse(formation).code_postal) !== "0" && String(JSON.parse(formation).date_debut) !== String(JSON.parse(formation).date_fin) && <nav>
Du {JSON.parse(formation).date_debut} au {JSON.parse(formation).date_fin} ; au {JSON.parse(formation).adresse} , {JSON.parse(formation).ville} &nbsp; {JSON.parse(formation).code_postal}
</nav>}
</div>
))}
</div>}
@ -808,7 +859,7 @@ const DisplayDetailClassAction = (props) => {
<div className="left_box_for_mobile">
<div className="hilightsoustitre" > Du même organisme </div>
<div className="hilightsoustitre" > A voir aussi</div>
{associatedtraining_message && String(associatedtraining_api) === "True" &&

View File

@ -240,56 +240,90 @@ const Formation = (props) => {
</div>
<div className="forma_rightbox"
onClick={(e) => {
e.preventDefault();
onClick={(e) => {
e.preventDefault();
window.open(
"/Display-Detail-formation/" + props.formation.internal_url ,
'_blank'
);
window.open(
"/Display-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}}>
}}>
<div className="p_forma">
<p className="p_class training_title">
<b>
{parse(String(props.formation.title).replace(/(<([^>]+)>)/ig, ''))}
</b>
<div className="div_row">
</p>
<div className="div_row_gauche" style={{ "marginTop": "5px" }}>
<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">
<b> Description : </b>
{parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))}
{props.formation.cpf && String(props.formation.cpf) === String("1") &&
<div>
OUI Éligible au CPF &nbsp;
</div>}
<br />
{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">
<p className="p_class training_title">
<b>
{parse(String(props.formation.title).replace(/(<([^>]+)>)/ig, ''))}
</b>
</p>
</div>
<div className="div_row">
{String(props.formation.price).length == 9 &&
<div className="training_price" > <i> En attente</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") &&
<div className="training_price">{props.formation.price} &nbsp; HT
</div>
}
</div>
<div className="div_row">
{parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))}
</div>
</div>
</div>
<div className="div_row">
<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">
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">Prix :
</div>
{String(props.formation.price).length == 9 &&
<div className="criteres ftion_tab_droite"> <i> En attente</i> &nbsp;
</div>
}
{String(props.formation.price).length != 9 && String(props.formation.price) === String("0") &&
<div className="criteres ftion_tab_droite">Gratuit &nbsp;
</div>
}
{String(props.formation.price).length != 9 && String(props.formation.price) !== String("0") &&
<div className="criteres ftion_tab_droite">{props.formation.price} &nbsp;
</div>
}
</div>
{props.formation.duration_unit &&
<div style={{ "width": "100%" }}>
@ -358,33 +392,38 @@ const Formation = (props) => {
</div>
</div>
<div className="media_sociaux" style={{ 'float': "left", marginTop: "0.2rem", }}>
<FacebookShareButton
url={"https://www.mysy-training.com/Display-Detail-formation/" + props.formation.internal_url}
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">
Eligible au CPF :
</div>
quote={props.formation.title + " -- " + props.formation.description}
hashtag={"ySyTraining"}
>
<SocialIcon network="facebook" style={{ height: 20, width: 20 }} />
</FacebookShareButton>
&nbsp;
<div className="criteres ftion_tab_droite">
{props.formation.cpf && String(props.formation.cpf) === String("1") &&
<div>
Oui &nbsp;
</div>}
<TwitterShareButton
url={"https://www.mysy-training.com/Display-Detail-formation/" + props.formation.internal_url}
hashtag={"#MySy-Formation"}
>
<SocialIcon network="twitter" style={{ height: 20, width: 20 }} />
</TwitterShareButton>
{props.formation.cpf && String(props.formation.cpf) !== String("1") &&
<div>
Non &nbsp;
</div>}
&nbsp;
<LinkedinShareButton
url={"https://www.mysy-training.com/Display-Detail-formation/" + props.formation.internal_url}
title={" Une nouvelle formation : " + props.formation.title}
summary={props.formation.title + " -- " + props.formation.description}
{!props.formation.cpf &&
<div>
NC &nbsp;
</div>}
source={"https://www.mysy-training.com/"}
>
<SocialIcon network="linkedin" style={{ height: 20, width: 20 }} />
</LinkedinShareButton>
</div>
</div>
{/* <div style={{ "width": "90%" }}>
<div className="criteres ftion_tab_gauche">
Type
@ -463,19 +502,7 @@ const Formation = (props) => {
<img class="imgcoeur" src={coeurimg} alt="coup de coeur" />
</div>}
{/*String(props.formation.support) === String("video")
&& props.formation.url && String(props.formation.url).indexOf("https://www.youtube.com/watch") !== -1
&&
String(props.formation.coeur) !== String("1") &&
<div>
<ReactPlayer url={props.formation.url}
height='90%'
width='90%'
controls='true'
playing={false}
loop={false}
/>
</div>*/}
@ -519,157 +546,80 @@ const Formation = (props) => {
</div>}
</div>
{props.formation.note && String(props.formation.note).length > 0 && <div style={{ "width": "100%", "float": "right" }}>
<div style={{ "width": "100%", "float": "right" }}>
<div className="criteres ftion_tab_gauche">
Note : {props.formation.note}
Support :
</div>
<div className="criteres ftion_tab_droite">
{props.formation.support && <div className="criteres ftion_tab_droite">
{props.formation.support}
</div>}
<Rating name="half-rating-read" defaultValue={props.formation.note} precision={0.5} readOnly />
</div>
</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", }}>
<div className="div_row" style={{ "marginTop": "0.2rem", "marginBottom": "0.2rem" }}> &nbsp;
</div>
<div className="div_row" style={{ "marginTop": "0.2rem", "marginBottom": "0.2rem" }}>
<div className="media_sociaux" style={{ 'float': "left", "width": "20%", marginTop: "0.2rem", }}>
<FacebookShareButton
url={"https://www.mysy-training.com/Display-Detail-formation/" + props.formation.internal_url}
<Button className="bton_se_renseinger"
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-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-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>
{props.formation.extented_search === "1" && <div style={{ 'float': "right", "width": "40%", textAlign: "right", marginTop: "0.2rem", }}>
<Button variant="contained" color="success"
style={{
'borderRadius': "10rem", "width": "100%",
fontSize: "0.7rem", padding: "0.2rem",
"width": "70% !important", background: "#104277"
}}
onClick={(e) => {
e.preventDefault();
window.open(
"/Display-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);
window.open(
"/Display-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}}
>Voir details</Button>
>Voir details</button>
{GetCurrentClass_result && GetCurrentClass_result.length > 0 &&
<Button variant="contained" className="bton_sinscrire"
onClick={(e) => {
e.preventDefault();
window.open(
"/Display-Detail-formation/" + props.formation.internal_url + "/Inscription",
'_blank'
);
}}
>S'incrire</Button>
}
</div>}
{!props.formation.extented_search && props.formation.coeur != "1" &&
<div style={{ 'float': "right", "width": "80%", textAlign: "right", marginTop: "0rem", }}>
<Button variant="contained" color="success"
style={{
'borderRadius': "15px", "width": "100%",
fontSize: "0.7rem", padding: "0.2rem",
"width": "30%", background: "#FFFFFF", "color": "#104277",
"marginRight": "10px", "height": "2rem"
}}
onClick={(e) => {
e.preventDefault();
window.open(
"/Display-Detail-formation/" + props.formation.internal_url + "/Information",
'_blank'
);
}}
>Se renseigner</Button>
<Button variant="contained" color="success"
style={{
'borderRadius': "15px", "width": "100%",
fontSize: "0.7rem", padding: "0.2rem",
"width": "30%", background: "#104277", "color": "white",
"marginRight": "10px", "height": "2rem"
}}
onClick={(e) => {
e.preventDefault();
//test(props.formation.external_code);
window.open(
"/Display-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}}
>Voir details</Button>
{GetCurrentClass_result && GetCurrentClass_result.length > 0 &&
<Button variant="contained" color="success"
style={{
'borderRadius': "15px", "width": "100%",
fontSize: "0.7rem", padding: "0.2rem",
"width": "30%", background: "#619E31", "color": "white",
"height": "2rem"
}}
onClick={(e) => {
e.preventDefault();
window.open(
"/Display-Detail-formation/" + props.formation.internal_url + "/Inscription",
'_blank'
);
}}
>S'incrire</Button>
}
</div>}
</div>
</div>
</div>
</div>
</div>
)
}

View File

@ -0,0 +1,653 @@
import React, { useState, useEffect } from "react";
import ReactPlayer from 'react-player'
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 topimg from "../mysy_img/top.png";
import coeurimg from "../mysy_img/coeur.png";
import img_met_program from "../mysy_img/met_programmation.jpg";
import img_met_hotel from "../mysy_img/met_hotel.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_projet from "../mysy_img/met_projet.jpg";
import img_met_market from "../mysy_img/met_market.jpg";
import img_met_autre2 from "../mysy_img/met_autre2.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 { FcCalendar } from "react-icons/fc";
const Formation_Cartouche_Com = (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: 'Yes',
onClick: () => { history.push("/mysy-training-login/training/" + props.formation.internal_url) }
},
{
label: 'No',
onClick: () => { return }
}
],
closeOnEscape: false,
closeOnClickOutside: false,
keyCodeForClose: [8, 32],
willUnmount: () => { },
afterClose: () => { },
onClickOutside: () => { },
onKeypress: () => { },
onKeypressEscape: () => { },
});
} else {
window.open(
"/Display-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}
}
const [myclassimage, setmyclassimage] = useState();
const [isclassimage, setisclassimage] = useState("False");
const [userimgclassprofil, setuserimgclassprofil] = useState();
function getClassImage(e) {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/getRecodedClassImage_from_front/";
var class_external_code = props.formation.external_code;
if (class_external_code.length < 3) {
console.log("Le code externe prend au moins 3 caractères");
return;
}
//console.log(" class_external_code = " + class_external_code);
var form = new FormData();
form.append("class_external_code", class_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");
console.log(" getClassImage : In test res.data.status = " + res.data.status);
console.log(" getClassImage: res.data.message.img = " + res.data.message);
var ch_img = "data:image/png;base64," + res.data.message.img;
setuserimgclassprofil(ch_img);
//console.log("ch_img = "+ch_img);
}
else {
setisclassimage("False");
}
}
else {
//console.log(" In Erreur res.data.status = " + res.data.status);
//console.log(" In Erreur res.data.message = " + res.data.message);
setisclassimage("False");
setuserimgclassprofil();
//alert("4");
}
}).catch((error) => {
console.warn('getClassImage : Not good man :( getClassImage = ');
setisclassimage("False");
setuserimgclassprofil(profileimg);
})
}
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();
GetCurrentClass_trainingsession();
}, []);
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);
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("")
})
}
return (
<div className="formation_cartouche_com">
<div style={{ "width": "100%" }}>
<div className="forma_img_gauche">
{props.formation.img_url && String(props.formation.img_url).length > 0 && String(isclassimage) === "False" &&
<img src={`${props.formation.img_url}`} className="training_img" />}
{(!props.formation.img_url || String(props.formation.img_url).length <= 0) &&
String(isclassimage) === "False" &&
!props.formation.metier && <img src={img_met_autre} alt="autre" className="training_img" />}
{(!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>
<div className="forma_rightbox"
onClick={(e) => {
e.preventDefault();
window.open(
"/Display-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}}>
<div className="p_forma">
<div className="div_row">
<div className="div_row_gauche" style={{ "marginTop": "5px" }}>
<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">
<p className="p_class training_title">
<b>
{parse(String(props.formation.title).replace(/(<([^>]+)>)/ig, ''))}
</b>
</p>
</div>
<div className="div_row">
{String(props.formation.price).length == 9 &&
<div className="training_price" > <i> En attente</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") &&
<div className="training_price">{props.formation.price} &nbsp; HT
</div>
}
</div>
<div className="div_row">
{parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, '')).substring(0, 200)}...
</div>
</div>
</div>
<div className="div_row">
<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 &nbsp;
</div>}
{String(props.formation.duration_unit) === "heures" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} hr &nbsp;
</div>}
{String(props.formation.duration_unit) === "jour" &&
<div className="criteres ftion_tab_droite">
{props.formation.duration} jr &nbsp;
</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} jrs &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-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-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-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 style={{ "width": "90%" }}>
<div className="criteres ftion_tab_gauche">
Type
</div>
<div className="criteres ftion_tab_droite">
{props.formation.type} &nbsp;
</div>
</div>
<div style={{ "width": "90%" }}>
<div className="criteres ftion_tab_gauche">
Support
</div>
<div className="criteres ftion_tab_droite">
{props.formation.support} &nbsp;
</div>
</div>
*/}
{/*props.formation.zone_diffusion && props.formation.zone_diffusion.country && <div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">
Test : pays
</div>
<div className="criteres ftion_tab_droite">
{props.formation.zone_diffusion.country} &nbsp;
</div>
</div>*/}
{/*props.formation.zone_diffusion && props.formation.zone_diffusion.city && <div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">
Test : Ville
</div>
<div className="criteres ftion_tab_droite">
{props.formation.zone_diffusion.city} &nbsp;
</div>
</div>*/}
{/*
{props.formation.presentiel && props.formation.presentiel.presentiel &&
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">
Presentiel
</div>
<div className="criteres ftion_tab_droite">
{props.formation.presentiel.presentiel} &nbsp;
</div>
</div>}
{props.formation.presentiel && props.formation.presentiel.distantiel &&
<div style={{ "width": "100%" }}>
<div className="criteres ftion_tab_gauche">
Distantiel
</div>
<div className="criteres ftion_tab_droite">
{props.formation.presentiel.distantiel} &nbsp;
</div>
</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>}
</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();
window.open(
"/Display-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);
window.open(
"/Display-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-Detail-formation/" + props.formation.internal_url + "/Inscription",
'_blank'
);
}}
>S'incrire</Button>
}
</div>}
</div> */}
{/* /!\ : le pavé pour les cartouche */}
<div className="div_row_droite div_row_droite_critere" style={{"width":"100% ! important"}}>
{!props.formation.extented_search && props.formation.coeur != "1" &&
<div style={{ 'float': "right", "width": "100%", textAlign: "center", marginTop: "0rem", }}>
<Button className="bton_voir_detail" style={{"fontSize":"medium"}}
onClick={(e) => {
e.preventDefault();
//test(props.formation.external_code);
window.open(
"/Display-Detail-formation/" + props.formation.internal_url,
'_blank'
);
}}
> <FcCalendar /> &nbsp; Voir details & Dates </Button>
<img src={`${props.formation.img_url}`} className="training_img" />
</div>}
</div>
</div>
</div>
</div>
)
}
export default Formation_Cartouche_Com;

View File

@ -352,14 +352,14 @@ function GestionAdministrative(props) {
]
const columns_list_avis_participant = [
const columns_list_evaluation = [
{ field: 'id', headerName: 'id', hide: true },
{ field: 'email', headerName: 'email', width: 250, hideable: false, flex: 1 },
{ field: 'nom', headerName: 'nom', width: 150, hide: false, editable: true },
{ field: 'prenom', headerName: 'prenom', width: 150, hide: false, editable: false },
{ field: 'eval_eval', headerName: 'Evaluation', width: 100, renderCell: renderCellExpand, editable: false, },
{ field: 'eval_note', headerName: 'Note', width: 100, renderCell: renderCellExpand, editable: false,},
{ field: 'eval_date', headerName: 'Date evalution', width: 100, renderCell: renderCellExpand, editable: false, },
{ field: 'eval_eval', headerName: 'Evaluation', width: 100, editable: false, },
{ field: 'eval_note', headerName: 'Note', width: 100, editable: false, },
{ field: 'eval_date', headerName: 'Date evalution', width: 100, editable: false, },
{
field: "valide", headerName: 'Valider',
renderCell: (cellValues) => {
@ -539,6 +539,16 @@ function GestionAdministrative(props) {
setCreateSessionFormation_api();
}
function submenu_evaluation() {
setsubmenu("evaluation");
setCreateListEmargement_api();
setActionMassListEmargement_api();
setliste_participants_file_change_api();
setliste_sessions_file_change_api();
setCreateSessionFormation_api();
}
const [UpdateStagiaireData_api, setUpdateStagiaireData_api] = useState();
const [UpdateStagiaireData_message, setUpdateStagiaireData_message] = useState();
@ -619,11 +629,18 @@ function GestionAdministrative(props) {
setGetCurrentClass_api("true");
setGetCurrentClass_result(res.data.message);
var mylocaltraining = JSON.parse(res.data.message);
document.getElementsByName("external_code")[0].value = mylocaltraining.external_code;
document.getElementsByName("title")[0].value = mylocaltraining.title;
if (mylocaltraining.external_code)
document.getElementsByName("external_code")[0].value = mylocaltraining.external_code;
if (mylocaltraining.title)
document.getElementsByName("title")[0].value = mylocaltraining.title;
setclasstitle(mylocaltraining.title);
document.getElementsByName("trainer")[0].value = mylocaltraining.trainer;
if (mylocaltraining.trainer)
document.getElementsByName("trainer")[0].value = mylocaltraining.trainer;
setmydistance(mylocaltraining.presentiel.distantiel);
setmypresence(mylocaltraining.presentiel.presentiel);
if (mylocaltraining.published)
@ -631,37 +648,8 @@ function GestionAdministrative(props) {
else
setmypublished("0");
if (mylocaltraining.price)
document.getElementsByName("price")[0].value = mylocaltraining.price;
else
document.getElementsByName("price")[0].value = "";
if (mylocaltraining.domaine) {
document.getElementsByName("domaine")[0].value = mylocaltraining.domaine;
}
else
document.getElementsByName("domaine")[0].value = "";
if (mylocaltraining.duration)
document.getElementsByName("duree")[0].value = mylocaltraining.duration;
else
document.getElementsByName("duree")[0].value = "";
document.getElementsByName("metier")[0].value = "";
if (mylocaltraining.metier)
document.getElementsByName("metier")[0].value = mylocaltraining.metier;
document.getElementsByName("note")[0].value = "";
if (mylocaltraining.note)
document.getElementsByName("note")[0].value = mylocaltraining.note;
document.getElementsByName("url")[0].value = "";
if (mylocaltraining.url)
document.getElementsByName("url")[0].value = mylocaltraining.url;
}
else {
setGetCurrentClass_api("false");
@ -894,6 +882,50 @@ function GestionAdministrative(props) {
}
/* Recuperation des evaluations */
const [selectionModel_evaluation, setSelectionModel_evaluation] = React.useState([]);
const [rowss_evaluation, setRows_evaluation] = useState([]);
const [GetListePreinscrit_evaluation_api, setGetListePreinscrit_evaluation_api] = useState();
const [GetListePreinscrit_evaluation_meassage, setGetListePreinscrit_evaluation_meassage] = useState();
const [GetListePreinscrit_evaluation_result, setGetListePreinscrit_evaluation_result] = useState([])
function GetListeEvaluation(localsessionid) {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("session_id", localsessionid);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetListEvaluation_Session/";
fetch(myurl,
{
method: 'POST',
body: form,
})
.then((data) => data.json())
.then((data) => {
console.log('Success:', data['message'], "data['status'] = ", data['status']);
setGetListePreinscrit_evaluation_result(data['message']);
setRows_evaluation(data['message']);
if (String(data['status']) === String("false")) {
console.log("GetListeEvaluation rrrr:" + data['status'])
setGetListePreinscrit_evaluation_api("false");
}
else {
setGetListePreinscrit_evaluation_api("true");
}
}).catch((error) => {
console.error('Error:', error);
setGetListePreinscrit_evaluation_api("false");
});
}
useEffect(() => {
GetCurrentClass();
@ -914,6 +946,7 @@ function GestionAdministrative(props) {
clearSessionFields();
setselectedCertif();
seturlpreview_certif();
setdisplay_detail_insc();
var tab_date = [];
@ -922,6 +955,7 @@ function GestionAdministrative(props) {
GetListePreinscrit(event.target.value);
GetListeInscrit(event.target.value);
GetListeEmargement(event.target.value);
GetListeEvaluation(event.target.value);
var el = document.getElementById('session_liste');
var text = el.options[el.selectedIndex].innerHTML;
@ -1055,9 +1089,13 @@ function GestionAdministrative(props) {
if (document.getElementById("ville") && document.getElementById("ville").value != "")
ville = document.getElementById("ville").value;
var code_session = "";
if (document.getElementById("code_session") && document.getElementById("code_session").value != "")
code_session = document.getElementById("code_session").value;
var formateur = "";
if (document.getElementById("formateur") && document.getElementById("formateur").value != "")
formateur = document.getElementById("formateur").value;
formateur = document.getElementById("formateur").value;
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
@ -1070,6 +1108,7 @@ function GestionAdministrative(props) {
form.append("adresse", adress);
form.append("code_postal", codepostal);
form.append("ville", ville);
form.append("code_session", code_session);
form.append("formateur", formateur);
form.append("session_status", sessionStatus);
form.append("date_debut_inscription", format(SessionstartDateInscription, 'dd/MM/yyyy kk:mm:ss'));
@ -1143,6 +1182,8 @@ function GestionAdministrative(props) {
}
if (mylocaltraining.date_fin_inscription) {
var date_fin_inscript = new Date(moment(mylocaltraining.date_fin_inscription, "DD/MM/YYYY HH:mm:ss"));
setSessionendDateInscription(date_fin_inscript);
@ -1157,6 +1198,10 @@ function GestionAdministrative(props) {
}
document.getElementsByName("code_session")[0].value = "";
if (mylocaltraining.code_session)
document.getElementsByName("code_session")[0].value = mylocaltraining.code_session;
document.getElementsByName("nb_participant")[0].value = "";
if (mylocaltraining.nb_participant)
document.getElementsByName("nb_participant")[0].value = mylocaltraining.nb_participant;
@ -1275,17 +1320,20 @@ function GestionAdministrative(props) {
document.getElementsByName("date_evaluation")[0].style.backgroundColor = "#ECEFF1";
document.getElementsByName("detail_incr_date")[0].disabled = true;
document.getElementsByName("detail_incr_date")[0].disabled = true;
document.getElementsByName("detail_incr_date")[0].style.backgroundColor = "#ECEFF1";
document.getElementsByName("certif_date")[0].disabled = true;
document.getElementsByName("certif_date")[0].disabled = true;
document.getElementsByName("certif_date")[0].style.backgroundColor = "#ECEFF1";
}
function desableSessionFields() {
document.getElementsByName("code_session")[0].disabled = true;
document.getElementsByName("code_session")[0].style.backgroundColor = "#ECEFF1";
document.getElementsByName("sessiondatedebut")[0].disabled = true;
document.getElementsByName("sessiondatedebut")[0].style.backgroundColor = "#ECEFF1";
@ -1616,6 +1664,10 @@ function GestionAdministrative(props) {
//console.log('Success:', result['message']);
setliste_participants_file_change_result(result['message']);
setliste_participants_file_change_api("true");
GetListePreinscrit(mysession);
GetListeInscrit(mysession);
GetListeEmargement(mysession);
GetListeEvaluation(mysession);
}
else {
setliste_participants_file_change_message(result['message']);
@ -2161,6 +2213,21 @@ function GestionAdministrative(props) {
</div>}
<div className="session_caract"> Code Session<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="code_session"
id="code_session"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/>
</div>
<div className="session_caract">
Date Debut
@ -2401,7 +2468,7 @@ function GestionAdministrative(props) {
<Button variant="outlined" onClick={submenu_preinscrit} className="detail_class_submenu" id='menu_preinscrit' name='menu_preinscrit'>Preinscription</Button>
<Button variant="outlined" onClick={submenu_inscrit} className="detail_class_submenu" id='menu_inscrit' name='menu_inscrit'>Inscription</Button>
<Button variant="outlined" onClick={submenu_emargement} className="detail_class_submenu" id='menu_divers' name='menu_divers'>Liste émargement</Button>
<Button variant="outlined" onClick={submenu_divers} className="detail_class_submenu" id='menu_divers' name='menu_divers'>Les avis</Button>
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='menu_divers' name='menu_divers'>Les avis</Button>
{/*<hr className="hr_height" />*/}
@ -2577,6 +2644,80 @@ function GestionAdministrative(props) {
</div>}
{String(submenu) === String("evaluation") && <div className="detail_class_submenu_data" style={{ "border": "None" }}>
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" onClick={"ConfirmInitListEmargement"}>Initaliser les evaluation</Button>
<Button className="bton_emarge" onClick={"DownloadListEmargement"}>Imprimer les evaluation</Button>
<Button className="bton_emarge" onClick={"ConfirmEnvoiListEmargement"}>Envoyer les demandes d'evaluation</Button><br />
</div>
{String(CreateListEmargement_api) === "true" && <div className="okUpdateData">
La liste d'emargement a été créée
</div>}
{String(CreateListEmargement_api) === "false" && <div className="koUpdateData">
{CreateListEmargement_message}
</div>}
{String(ActionMassListEmargement_api) === "true" && <div className="okUpdateData">
Les demandes d'emargement ont bien été envoyées
</div>}
{String(ActionMassListEmargement_api) === "false" && <div className="koUpdateData">
{CreateListEmargement_message}
</div>}
<div style={{ height: 500, width: '100%' }}>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel_evaluation) => {
setSelectionModel_emarg(newSelectionModel_evaluation);
//console.log("ch selected--" + newSelectionModel_emarg);
}}
selectionModel={selectionModel_evaluation}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={rowss_emarg.map((item, index) => (
{
id: index,
nom: JSON.parse(item).nom,
prenom: JSON.parse(item).prenom,
email: JSON.parse(item).email,
eval_date: String(JSON.parse(item).eval_date).substring(0, 10),
eval_eval: String(JSON.parse(item).eval_eval).replace(/(<([^>]+)>)/ig, ''),
eval_note: JSON.parse(item).eval_note,
}
))}
columns={columns_list_evaluation}
pageSize={10}
className="datagridclass"
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
/>
<br />
<Button className="bton_emarge" onClick={ActionMassListEmargement}>Envoyer les demandes d'emargement</Button><br />
</div>
</div>}
{String(submenu) === String("divers") && <div className="detail_class_submenu_data" style={{ "border": "None" }}>
</div>}

View File

@ -29,9 +29,7 @@ import SendIcon from '@mui/icons-material/Send';
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import Rating from '@mui/material/Rating';
import parse from 'html-react-parser'
import { StylesManager, Model } from "survey-core";
import { Survey } from "survey-react-ui";
import "survey-core/defaultV2.css";
function Inscription_Information(props) {
@ -551,9 +549,9 @@ function Inscription_Information(props) {
.then((result) => {
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
if( String(result['status']) === "true"){
if (String(result['status']) === "true") {
setSendEvaluationClass_api("true");
}else if( String(result['status']) === "false"){
} else if (String(result['status']) === "false") {
setSendEvaluationClass_api("false");
setSendEvaluationClass_message(result['message']);
}
@ -621,13 +619,33 @@ function Inscription_Information(props) {
<option value={JSON.parse(formation).formation_session_id}>
{JSON.parse(formation).code_postal === "0" &&
String(JSON.parse(formation).date_debut) === String(JSON.parse(formation).date_fin) &&
"Le " + String(JSON.parse(formation).date_debut).substring(0, 10) + + " EN LIGNE"
}
{JSON.parse(formation).code_postal === "0" &&
String(JSON.parse(formation).date_debut) !== String(JSON.parse(formation).date_fin) &&
String(JSON.parse(formation).date_debut).substring(0, 10) + " au " + String(JSON.parse(formation).date_fin).substring(0, 10) + " EN LIGNE"
}
{String(JSON.parse(formation).code_postal) !== "0" &&
String(JSON.parse(formation).date_debut) === String(JSON.parse(formation).date_fin) &&
"Le " + String(JSON.parse(formation).date_debut).substring(0, 10) + " au " + JSON.parse(formation).adresse +
" " + JSON.parse(formation).code_postal + " " + JSON.parse(formation).ville
}
{JSON.parse(formation).code_postal !== "0" &&
String(JSON.parse(formation).date_debut) !== String(JSON.parse(formation).date_fin) &&
String(JSON.parse(formation).date_debut).substring(0, 10) + " au " + String(JSON.parse(formation).date_fin).substring(0, 10) + " au " +
JSON.parse(formation).adresse + " " + JSON.parse(formation).code_postal + " " + JSON.parse(formation).ville
}
</option>
))}
</select>

View File

@ -316,8 +316,8 @@ const Partner = (props) => {
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In GetPartnerNameFromToken res.data.status = " + res.data.status);
//console.log(" In GetPartnerNameFromToken res.data.message = " + res.data.message);
console.log(" In GetPartnerNameFromToken res.data.status = " + res.data.status);
console.log(" In GetPartnerNameFromToken res.data.message = " + res.data.message);
setparntername(JSON.parse(res.data.message).nom);
if (JSON.parse(res.data.message).pack_service) {
setpartnerPackService(JSON.parse(res.data.message).pack_service);
@ -533,6 +533,7 @@ const Partner = (props) => {
<div className="parter_div_filtrer_row">
<div>
{String(partnerstatus) === String("0") && <div className="parter_div_filtrer_row_gauche">
Import excel d'une formation <a href='/sample/template_import.csv' download>Télécharger un fichier modèle</a>

View File

@ -106,12 +106,12 @@ function PartnerSignIn() {
}
var mymail = document.getElementsByName("email_partner")[0].value;
var mypwd = document.getElementsByName("pwd_partner")[0].value;
var mysecret = document.getElementsByName("secret_partner")[0].value;
//var mysecret = document.getElementsByName("secret_partner")[0].value;
formData.append("email", mymail);
formData.append("pwd", mypwd);
formData.append("secret", mysecret);
//formData.append("secret", mysecret);
fetch(
url_login,
@ -121,13 +121,13 @@ function PartnerSignIn() {
}
).then((response) => response.json())
.then((result) => {
console.log('Success:', result['message'], "result['status'] = ", result['status']);
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
var val = result['status'];
if (String(val) === String("true")) {
setCookie("tokenmysypart", mysecret);
setCookie("tokenmysypart", result['message']);
history.push("/Partner");
}
else {

View File

@ -107,12 +107,12 @@ function PartnerSignIn() {
var mymail = document.getElementsByName("email_partner")[0].value;
var mypwd = document.getElementsByName("pwd_partner")[0].value;
var mysecret = document.getElementsByName("secret_partner")[0].value;
//var mysecret = document.getElementsByName("secret_partner")[0].value;
formData.append("email", mymail);
formData.append("pwd", mypwd);
formData.append("secret", mysecret);
fetch(
url_login,
@ -122,13 +122,13 @@ function PartnerSignIn() {
}
).then((response) => response.json())
.then((result) => {
console.log('Success:', result['message'], "result['status'] = ", result['status']);
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
var val = result['status'];
if (String(val) === String("true")) {
sessionStorage.setItem("token", result['message']);
setCookie("tokenmysypart", mysecret);
setCookie("tokenmysypart", result['message']);
history.push("/Partner");
}
else {
@ -214,7 +214,7 @@ function PartnerSignIn() {
<div className="div_gauche">
<nav><b> Pour bien démarrer (1/2)</b></nav>
<nav> <i>Vous êtes à la première étape sur 2 </i> </nav>
<nav> <i>Vous êtes à la première étape sur deux </i> </nav>
<hr />
@ -242,12 +242,6 @@ function PartnerSignIn() {
<Input type="password" placeholder="Password" name="pwd_partner" />
</FormGroup>
<FormGroup >
<Label className="erreurconnexion" >Clé Secrete</Label>
<Input type="password" placeholder="Secret Secret" name="secret_partner" />
</FormGroup>
<div className="div_row22">
<Button variant="contained" color="success" className="div_row22 btn_login button" onClick={onSubmit}>Connectez-Vous</Button>

File diff suppressed because it is too large Load Diff

View File

@ -43,6 +43,7 @@ import { loadStripe } from '@stripe/stripe-js';
import { PaymentElement } from '@stripe/react-stripe-js';
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import Formation from "./Formation";
import {
CardElement,
@ -884,6 +885,13 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
<div className="div_mobile">
<h2> cartouche formaion </h2>
<div>
</div>
<h2>payement strip</h2>

View File

@ -167,7 +167,7 @@ function SignIn() {
if (String(val) === String("true")) {
if (String(menucompte) === String("partner")) {
setCookie("tokenmysypart", cle_secrete);
setCookie("tokenmysypart", result['message']);
history.push("/Partner");
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,21 @@
import Recherche_cartouche_com from "../components/Recherche_formation_com";
import Navigation from "../components/Navigation";
import Footer from "./footer";
const recherche = () => {
return (
<div>
<Navigation />
<div>
<Recherche_cartouche_com />
</div>
</div>
)
}
export default recherche;

View File

@ -349,7 +349,7 @@
.detail_class_submenu_data {
width: 100%;
height: 5rem;
height: 7rem;
background-color: #d8edfc;
padding-left: 5px;
text-align: left;
@ -708,7 +708,7 @@
.detail_class_submenu_data {
width: 100%;
height: 5rem;
height: 7rem;
background-color: #d8edfc;
padding-left: 5px;
text-align: left;
@ -1066,7 +1066,7 @@
.detail_class_submenu_data {
width: 100%;
height: 5rem;
height: 7rem;
background-color: #d8edfc;
padding-left: 5px;
text-align: left;
@ -1422,7 +1422,7 @@
.detail_class_submenu_data {
width: 100%;
height: 5rem;
height: 7rem;
background-color: #d8edfc;
padding-left: 5px;
text-align: left;

View File

@ -0,0 +1,564 @@
.formation {
.p_class {
margin-bottom: 0.3rem !important;
letter-spacing: 1px;
}
.h1_transparent {
color: transparent;
//color: red;
font-size: small;
}
.ftion_tab_gauche {
width: 62%;
float: left;
text-align: left;
font-weight: bold;
}
.ftion_tab_droite {
width: 38%;
float: left;
text-align: left;
}
.media_sociaux svg {
margin-top: 0 !important;
}
/* less than 600 px */
@media screen and (max-width: 600px) {
.p_class {
margin-bottom: 0.3rem !important;
text-align: center;
letter-spacing: 1px;
text-decoration: solid;
}
.criteres {
font-size: 0.69rem;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
color: #104277;
font-size: small;
padding-bottom: 0rem;
margin-bottom: 0rem;
}
.div_row {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 100%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.div_row_gauche {
float: left;
// border:1px solid black;
// border-width:0.01rem;
width: 49%;
border-radius: 1rem;
}
.div_row_droite {
float: right;
//border:1px solid black;
//border-width:0.01rem;
width: 48%;
border-radius: 1rem;
}
.forma_container {
width: 90%;
height: 200px;
background: aqua;
margin: auto;
padding: 10px;
border-radius: 30px;
}
.forma_leftbox {
float: left;
border-width: 2px;
width: 20%;
height: 100%;
margin: auto;
padding: 10px;
border-radius: 30px;
margin-right: 0.5%;
}
.forma_rightbox {
float: right;
border-width: 2px;
width: 100%;
padding: 0.5rem;
font-size: 11px;
text-align: left;
color: rgb(10, 42, 77);
margin-top: 1px;
cursor: pointer;
overflow-wrap: break-word;
}
.h1_forma {
color: #ff4411;
font-size: small;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
}
.p_forma {
font-family: "verdana", "Quicksand", "Signika", sans-serif;
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
font-size: 0.74rem;
text-align: justify;
word-break: break-word;
margin-bottom: 4px;
color: #3b3e40;
}
.imgcoeur {
width: 60%;
}
.forma_img_gauche {
/*float: left;
border-width: 2px;
width: 24%;
padding: 0.3rem;
font-size: 11px;
text-align: left;
color: rgb(10, 42, 77);
margin-top: 1px;
cursor: pointer;*/
display: none;
}
.training_img {
max-width: 100%;
border-radius: 10px;
}
.div_row_critere {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 95%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.training_title {
color: #619e31;
font-size: 0.85rem;
font-family: "Quicksand", "Signika", sans-serif;
text-align: left;
letter-spacing: 1px;
margin-bottom: 0.6rem !important;
}
}
@media only screen and (min-width: 601px) and (max-width: 991px) {
.div_row {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 100%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.div_row_gauche {
float: left;
// border:1px solid black;
// border-width:0.01rem;
width: 48%;
border-radius: 1rem;
}
.div_row_droite {
float: right;
//border:1px solid black;
//border-width:0.01rem;
width: 48%;
border-radius: 1rem;
}
.forma_container {
width: 90%;
height: 200px;
background: aqua;
margin: auto;
padding: 10px;
border-radius: 30px;
}
.forma_leftbox {
float: left;
border-width: 2px;
width: 20%;
height: 100%;
margin: auto;
padding: 10px;
border-radius: 30px;
margin-right: 0.5%;
}
.forma_rightbox {
float: right;
border-width: 2px;
width: 76%;
margin: auto;
padding: 0.5rem;
font-size: small;
text-align: left;
color: rgb(10, 42, 77);
cursor: pointer;
overflow-wrap: break-word;
}
.criteres {
font-family: "verdana", "Quicksand", "Signika", sans-serif;
color: #104277;
font-size: 0.77rem;
padding-bottom: 0rem;
margin-bottom: 0rem;
}
.h1_forma {
color: #ff4411;
font-size: medium;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
}
.p_forma {
font-family: "verdana", "Quicksand", "Signika", sans-serif;
font-size: 0.74rem;
line-height: 1.3rem;
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: #3b3e40;
padding-bottom: 0rem;
text-align: justify;
word-break: break-word;
}
.imgcoeur {
width: 60%;
}
.forma_img_gauche {
float: left;
border-width: 2px;
width: 24%;
padding: 0.3rem;
font-size: 11px;
text-align: left;
color: rgb(10, 42, 77);
margin-top: 1px;
cursor: pointer;
}
.training_img {
max-width: 100%;
border-radius: 10px;
}
.div_row_critere {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 90%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.training_title {
color: #619e31;
font-size: 0.9rem;
font-family: "Quicksand", "Signika", sans-serif;
text-align: left;
letter-spacing: 1px;
margin-bottom: 0.6rem !important;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
.div_row {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 100%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.div_row_gauche {
float: left;
// border:1px solid black;
// border-width:0.01rem;
width: 45%;
border-radius: 1rem;
}
.div_row_droite {
float: right;
//border:1px solid black;
//border-width:0.01rem;
width: 45%;
border-radius: 1rem;
}
.forma_container {
width: 90%;
height: 200px;
background: aqua;
margin: auto;
padding: 10px;
border-radius: 30px;
}
.forma_leftbox {
float: left;
border-width: 2px;
width: 20%;
height: 100%;
margin: auto;
padding: 10px;
border-radius: 30px;
margin-right: 0.5%;
}
.forma_rightbox {
float: right;
border-width: 2px;
width: 76%;
margin: auto;
padding: 0.5rem;
font-size: small;
text-align: left;
color: rgb(10, 42, 77);
cursor: pointer;
overflow-wrap: break-word;
}
.criteres {
font-family: "verdana", "Quicksand", "Signika", sans-serif;
color: #104277;
font-size: 0.8rem;
padding-bottom: 0rem;
margin-bottom: 0rem;
}
.h1_forma {
color: #ff4411;
font-size: medium;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
}
.p_forma {
font-family: "verdana", "Quicksand", "Signika", sans-serif;
font-size: 0.77rem;
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: #3b3e40;
padding-bottom: 0rem;
text-align: justify;
word-break: break-word;
line-height: 1.3rem;
}
.imgcoeur {
width: 45%;
}
.forma_img_gauche {
float: left;
border-width: 2px;
width: 24%;
padding: 0.3rem;
font-size: 11px;
text-align: left;
color: rgb(10, 42, 77);
margin-top: 1px;
cursor: pointer;
}
.training_img {
max-width: 100%;
border-radius: 10px;
}
.div_row_critere {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 80%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.training_title {
color: #619e31;
font-size: 1rem;
font-family: "Quicksand", "Signika", sans-serif;
text-align: left;
letter-spacing: 1px;
margin-bottom: 0.6rem !important;
}
}
@media only screen and (min-width: 1200px) {
.div_row {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 100%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.div_row_gauche {
float: left;
// border:1px solid black;
// border-width:0.01rem;
width: 45%;
border-radius: 1rem;
}
.div_row_droite {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 45%;
border-radius: 1rem;
}
.forma_container {
width: 90%;
height: 200px;
background: aqua;
margin: auto;
padding: 10px;
border-radius: 30px;
}
.forma_leftbox {
float: left;
border-width: 2px;
width: 20%;
height: 100%;
margin: auto;
padding: 10px;
border-radius: 30px;
margin-right: 0.5%;
}
.forma_rightbox {
float: right;
border-width: 2px;
width: 79%;
margin: auto;
padding: 0.5rem;
font-size: small;
text-align: left;
color: rgb(10, 42, 77);
cursor: pointer;
overflow-wrap: break-word;
}
.criteres {
font-family: "verdana", "Quicksand", "Signika", sans-serif;
color: #104277;
font-size: small;
padding-bottom: 0rem;
margin-bottom: 0rem;
}
.h1_forma {
color: #ff4411;
font-size: medium;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
}
.p_forma {
font-family: "verdana", "Quicksand", "Signika", sans-serif;
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
padding-bottom: 0rem;
text-align: justify;
word-break: break-word;
line-height: 1.3rem;
font-size: 0.8rem;
margin-bottom: 4px;
color: #3b3e40;
}
.imgcoeur {
width: 20%;
}
.forma_img_gauche {
float: left;
border-width: 2px;
width: 20%;
padding: 0.3rem;
font-size: 11px;
text-align: left;
color: rgb(10, 42, 77);
margin-top: 1px;
cursor: pointer;
}
.training_img {
max-width: 100%;
border-radius: 10px;
}
.div_row_critere {
float: left;
//border:1px solid black;
//border-width:0.01rem;
width: 75%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.training_title {
color: #619e31;
font-size: 1rem;
font-family: "Quicksand", "Signika", sans-serif;
text-align: left;
letter-spacing: 1px;
margin-bottom: 0.6rem !important;
}
.bton_inscris{
position: relative;
background: red;
-webkit-box-reflect:below 1px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(0.9, transparent), to(white));
}
bton_inscris:after,
bton_inscris:before {
content: "";
position: absolute;
display: block;
width: inherit;
height: 50%;
bottom: -52%;
}
bton_inscris:after {
}
bton_inscris:before {
z-index: 1;
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.5), #fff);
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -213,8 +213,8 @@
.preview_certif{
display: block;
width: 128px;
height: 128px;
width: 90%;
height: 180px;
border-radius: 1rem !important;
margin-top: 1rem !important;
}
@ -435,8 +435,8 @@
.preview_certif{
display: block;
width: 128px;
height: 128px;
width: 90%;
height: 200px;
border-radius: 1rem !important;
margin-top: 1rem !important;
}
@ -658,8 +658,8 @@
.preview_certif{
display: block;
width: 128px;
height: 128px;
width: 90%;
height: 180px;
border-radius: 1rem !important;
margin-top: 1rem !important;
}
@ -851,8 +851,8 @@
.preview_certif{
display: block;
width: 128px;
height: 128px;
width: 90%;
height: 200px;
border-radius: 1rem !important;
margin-top: 1rem !important;
}

View File

@ -3,6 +3,31 @@
display: none !important;
}
@media only screen and (min-width: 1200px) {
.rech_list_formation2 {
display: inline-block;
width: 100%;
background-color: white;
height: auto;
padding: 1px;
outline: 1px solid #ccc;
//border: 1px solid #999;
margin: 0;
text-align: left;
border-radius: 10px;
margin-bottom: 10px;
background-color: white;
//box-shadow: 0 2px 1px -1px rgb(0 0 0 / 20%), 0 1px 1px 0 rgb(0 0 0 / 14%),0 1px 3px 0 rgb(0 0 0 / 12%);
-webkit-box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 50%);
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 50%);
}
/*style grande tablettes & Pc portable */
.okUpdateData {

View File

@ -57,4 +57,5 @@
@import "./components/gestionadministrative";
@import "./components/toggleswitch";
@import "./components/updateusergoals";
@import "./components/userprofil"
@import "./components/userprofil";
@import "./components/formation_cartouche_com";

BIN
src_0101.zip Normal file

Binary file not shown.