22/05/23 - 23h
parent
397afe0652
commit
59312c18c9
File diff suppressed because it is too large
Load Diff
|
@ -15,6 +15,7 @@
|
||||||
"@mantine/hooks": "^4.2.10",
|
"@mantine/hooks": "^4.2.10",
|
||||||
"@mantine/rte": "^4.2.10",
|
"@mantine/rte": "^4.2.10",
|
||||||
"@material-ui/core": "^4.12.4",
|
"@material-ui/core": "^4.12.4",
|
||||||
|
"@material/tooltip": "^14.0.0",
|
||||||
"@mui/icons-material": "^5.4.2",
|
"@mui/icons-material": "^5.4.2",
|
||||||
"@mui/material": "^5.4.2",
|
"@mui/material": "^5.4.2",
|
||||||
"@mui/x-data-grid": "^5.5.1",
|
"@mui/x-data-grid": "^5.5.1",
|
||||||
|
@ -42,6 +43,7 @@
|
||||||
"gatsby-plugin-cookie-gdpr-axeptio": "^1.0.2",
|
"gatsby-plugin-cookie-gdpr-axeptio": "^1.0.2",
|
||||||
"google-map-react": "^2.1.10",
|
"google-map-react": "^2.1.10",
|
||||||
"html-react-parser": "^2.0.0",
|
"html-react-parser": "^2.0.0",
|
||||||
|
"install": "^0.13.0",
|
||||||
"js-cookie": "^3.0.1",
|
"js-cookie": "^3.0.1",
|
||||||
"js-file-download": "^0.4.12",
|
"js-file-download": "^0.4.12",
|
||||||
"js-video-url-parser": "^0.5.1",
|
"js-video-url-parser": "^0.5.1",
|
||||||
|
@ -49,6 +51,7 @@
|
||||||
"mui-daterange-picker": "^1.0.5",
|
"mui-daterange-picker": "^1.0.5",
|
||||||
"next": "^12.0.10",
|
"next": "^12.0.10",
|
||||||
"next-link": "^2.0.0",
|
"next-link": "^2.0.0",
|
||||||
|
"npm": "^9.6.7",
|
||||||
"popups": "^1.1.3",
|
"popups": "^1.1.3",
|
||||||
"powerbi-client": "^2.19.1",
|
"powerbi-client": "^2.19.1",
|
||||||
"powerbi-client-react": "^1.3.3",
|
"powerbi-client-react": "^1.3.3",
|
||||||
|
@ -111,6 +114,7 @@
|
||||||
"react-swipeable-views": "^0.14.0",
|
"react-swipeable-views": "^0.14.0",
|
||||||
"react-time-picker": "^4.5.0",
|
"react-time-picker": "^4.5.0",
|
||||||
"react-toastify": "^9.0.0",
|
"react-toastify": "^9.0.0",
|
||||||
|
"react-tooltip": "^5.13.1",
|
||||||
"react-use-cookie": "^1.3.0",
|
"react-use-cookie": "^1.3.0",
|
||||||
"react-video-js-player": "^1.1.1",
|
"react-video-js-player": "^1.1.1",
|
||||||
"reactjs-popup": "^2.0.5",
|
"reactjs-popup": "^2.0.5",
|
||||||
|
|
|
@ -22,6 +22,9 @@ import { IoArrowUndoCircle } from "react-icons/io5";
|
||||||
import { GrUserAdmin, GrOrderedList } from "react-icons/gr";
|
import { GrUserAdmin, GrOrderedList } from "react-icons/gr";
|
||||||
import parse from 'html-react-parser';
|
import parse from 'html-react-parser';
|
||||||
|
|
||||||
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
|
import { Tooltip } from 'react-tooltip'
|
||||||
|
|
||||||
import GestionAdministrative from "./GestionAdministrative";
|
import GestionAdministrative from "./GestionAdministrative";
|
||||||
|
|
||||||
const AddClassManual = (props) => {
|
const AddClassManual = (props) => {
|
||||||
|
@ -32,6 +35,7 @@ const AddClassManual = (props) => {
|
||||||
const [mypublished, setmypublished] = useState("");
|
const [mypublished, setmypublished] = useState("");
|
||||||
const [mydistance, setmydistance] = useState("");
|
const [mydistance, setmydistance] = useState("");
|
||||||
const [mytrainingsupport, setmytrainingsupport] = useState("n/a");
|
const [mytrainingsupport, setmytrainingsupport] = useState("n/a");
|
||||||
|
const [mytrainingdurationunit, setmytrainingdurationunit] = useState("");
|
||||||
const [mycpf, setmycpf] = useState("");
|
const [mycpf, setmycpf] = useState("");
|
||||||
const [mycertif, setmycertif] = useState("");
|
const [mycertif, setmycertif] = useState("");
|
||||||
const [importmessage, setimportmessage] = useState("");
|
const [importmessage, setimportmessage] = useState("");
|
||||||
|
@ -69,6 +73,15 @@ const AddClassManual = (props) => {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleChangeDurationUnit = (event) => {
|
||||||
|
const name = event.target.name;
|
||||||
|
const value = event.target.value;
|
||||||
|
|
||||||
|
setmytrainingdurationunit(value);
|
||||||
|
setdatamodification("1");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
const handleChangecpf = (event) => {
|
const handleChangecpf = (event) => {
|
||||||
const name = event.target.name;
|
const name = event.target.name;
|
||||||
const value = event.target.value;
|
const value = event.target.value;
|
||||||
|
@ -149,6 +162,30 @@ const AddClassManual = (props) => {
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const duration_unit_list = [
|
||||||
|
{
|
||||||
|
value: 'heure',
|
||||||
|
label: 'Heures',
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
value: 'jour',
|
||||||
|
label: 'Jours',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'semaine',
|
||||||
|
label: 'Semaines',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'mois',
|
||||||
|
label: 'Mois',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'user_rythme',
|
||||||
|
label: 'Rythme stagiaire',
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
const publiee = [
|
const publiee = [
|
||||||
{
|
{
|
||||||
|
@ -164,9 +201,6 @@ const AddClassManual = (props) => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function handleOnClose(event) {
|
function handleOnClose(event) {
|
||||||
setShowModal(false);
|
setShowModal(false);
|
||||||
}
|
}
|
||||||
|
@ -374,6 +408,15 @@ const AddClassManual = (props) => {
|
||||||
setmytrainingsupport("n/a");
|
setmytrainingsupport("n/a");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mylocaltraining.duration_unit) {
|
||||||
|
setmytrainingdurationunit(mylocaltraining.duration_unit);
|
||||||
|
//console.log(" ### duration_unit = ", mylocaltraining.duration_unit);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setmytrainingdurationunit("");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (mylocaltraining.certif) {
|
if (mylocaltraining.certif) {
|
||||||
setmycertif(mylocaltraining.certif);
|
setmycertif(mylocaltraining.certif);
|
||||||
|
@ -391,7 +434,7 @@ const AddClassManual = (props) => {
|
||||||
|
|
||||||
if (mylocaltraining.domaine) {
|
if (mylocaltraining.domaine) {
|
||||||
setmytrainingdomaine(mylocaltraining.domaine);
|
setmytrainingdomaine(mylocaltraining.domaine);
|
||||||
console.log(" ### mylocaltraining.domaine = ", mylocaltraining.domaine);
|
//console.log(" ### mylocaltraining.domaine = ", mylocaltraining.domaine);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
setmytrainingdomaine("");
|
setmytrainingdomaine("");
|
||||||
|
@ -399,7 +442,7 @@ const AddClassManual = (props) => {
|
||||||
|
|
||||||
if (mylocaltraining.metier) {
|
if (mylocaltraining.metier) {
|
||||||
setmytrainingmetier(mylocaltraining.metier);
|
setmytrainingmetier(mylocaltraining.metier);
|
||||||
console.log(" ### mylocaltraining.metier = ", mylocaltraining.metier);
|
//console.log(" ### mylocaltraining.metier = ", mylocaltraining.metier);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
setmytrainingmetier("");
|
setmytrainingmetier("");
|
||||||
|
@ -656,6 +699,7 @@ const AddClassManual = (props) => {
|
||||||
formData.append('distantiel', distentiel);
|
formData.append('distantiel', distentiel);
|
||||||
formData.append('price', price);
|
formData.append('price', price);
|
||||||
formData.append('duration', duree);
|
formData.append('duration', duree);
|
||||||
|
formData.append('duration_unit', mytrainingdurationunit);
|
||||||
formData.append('url', url);
|
formData.append('url', url);
|
||||||
formData.append('class_inscription_url', class_inscription_url);
|
formData.append('class_inscription_url', class_inscription_url);
|
||||||
formData.append('mots_cle', mots_cle);
|
formData.append('mots_cle', mots_cle);
|
||||||
|
@ -1369,7 +1413,7 @@ const AddClassManual = (props) => {
|
||||||
|
|
||||||
<TextField
|
<TextField
|
||||||
name="duree"
|
name="duree"
|
||||||
label="Duree (jour)"
|
label="Duree"
|
||||||
type="number"
|
type="number"
|
||||||
InputLabelProps={{
|
InputLabelProps={{
|
||||||
shrink: true,
|
shrink: true,
|
||||||
|
@ -1378,6 +1422,32 @@ const AddClassManual = (props) => {
|
||||||
className="disabled_style"
|
className="disabled_style"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<Tooltip id="my-tooltip11" />
|
||||||
|
<a data-tooltip-id="my-tooltip11" data-tooltip-content="Les durée autorisées sont : 'heure', 'jour', 'semaine', 'mois', 'annee', 'rythme participant'">
|
||||||
|
<div className="training_caract">
|
||||||
|
<TextField
|
||||||
|
name="duration_unit"
|
||||||
|
id="duration_unit"
|
||||||
|
select
|
||||||
|
label="Unité de durée"
|
||||||
|
value={mytrainingdurationunit}
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
onChange={handleChangeDurationUnit}
|
||||||
|
disabled={false}
|
||||||
|
className="disabled_style"
|
||||||
|
>
|
||||||
|
|
||||||
|
{duration_unit_list.map((option) => (
|
||||||
|
<MenuItem key={option.value} value={option.value} >
|
||||||
|
{option.label} <br />
|
||||||
|
</MenuItem>
|
||||||
|
))}
|
||||||
|
|
||||||
|
</TextField>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
<div className="training_caract">
|
<div className="training_caract">
|
||||||
<TextField
|
<TextField
|
||||||
|
|
|
@ -1172,14 +1172,18 @@ const DisplayDetailClass_new_v2 = (props) => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{String(DetailTraining["price"]) && String(DetailTraining["price"]) === String("0") &&
|
||||||
|
<div className="mob_price">Gratuit
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
{DetailTraining["price"] && (!DetailTraining.business_prices || Object.keys(DetailTraining.business_prices).length <= 0)
|
{String(DetailTraining["price"]) && String(DetailTraining["price"]) !== String("0") && String(DetailTraining["price"]) === String("0") && (!DetailTraining.business_prices || Object.keys(DetailTraining.business_prices).length <= 0)
|
||||||
&&
|
&&
|
||||||
<div className="mob_price">
|
<div className="mob_price">
|
||||||
{String(DetailTraining["price"])} € HT
|
{String(DetailTraining["price"])} € HT
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
{DetailTraining["price"] && DetailTraining.business_prices && Object.keys(DetailTraining.business_prices).length > 0
|
{String(DetailTraining["price"]) && String(DetailTraining["price"]) !== String("0") && DetailTraining.business_prices && Object.keys(DetailTraining.business_prices).length > 0
|
||||||
&& <div className="mob_price">
|
&& <div className="mob_price">
|
||||||
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT</nav>
|
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT</nav>
|
||||||
|
|
||||||
|
@ -1263,10 +1267,17 @@ const DisplayDetailClass_new_v2 = (props) => {
|
||||||
Durée :
|
Durée :
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{String(DetailTraining["duration_unit"]) !== "user_rythme" &&
|
||||||
<div className="mob_caracteristic_list_title_desc_desc">
|
<div className="mob_caracteristic_list_title_desc_desc">
|
||||||
{DetailTraining["duration"]} {DetailTraining["duration_unit"]} (s)
|
{DetailTraining["duration"]} {DetailTraining["duration_unit"]} (s)
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(DetailTraining["duration_unit"]) === "user_rythme" &&
|
||||||
|
<div className="mob_caracteristic_list_title_desc_desc">
|
||||||
|
A votre rythme
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -2002,10 +2013,16 @@ const DisplayDetailClass_new_v2 = (props) => {
|
||||||
|
|
||||||
<div className="block_sticky_info">
|
<div className="block_sticky_info">
|
||||||
|
|
||||||
{DetailTraining["price"] && (!DetailTraining.business_prices || Object.keys(DetailTraining.business_prices).length <= 0)
|
|
||||||
|
{String(DetailTraining["price"]) && String(DetailTraining["price"]) === String("0") &&
|
||||||
|
<div className="block_sticky_info_price">Gratuit
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(DetailTraining["price"]) && String(DetailTraining["price"]) !== String("0") && (!DetailTraining.business_prices || Object.keys(DetailTraining.business_prices).length <= 0)
|
||||||
&& <div className="block_sticky_info_price"> {String(DetailTraining["price"])} HT </div>}
|
&& <div className="block_sticky_info_price"> {String(DetailTraining["price"])} HT </div>}
|
||||||
|
|
||||||
{DetailTraining["price"] && DetailTraining.business_prices && Object.keys(DetailTraining.business_prices).length > 0
|
{String(DetailTraining["price"]) && String(DetailTraining["price"]) !== String("0") && DetailTraining.business_prices && Object.keys(DetailTraining.business_prices).length > 0
|
||||||
&& <div className="block_sticky_info_price">
|
&& <div className="block_sticky_info_price">
|
||||||
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT</nav>
|
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT</nav>
|
||||||
|
|
||||||
|
@ -2084,12 +2101,19 @@ const DisplayDetailClass_new_v2 = (props) => {
|
||||||
<div className="block_sticky_info_caracteristique_list_title_desc_title">
|
<div className="block_sticky_info_caracteristique_list_title_desc_title">
|
||||||
Durée :
|
Durée :
|
||||||
</div>
|
</div>
|
||||||
|
{String(DetailTraining["duration_unit"]) !== "user_rythme" &&
|
||||||
<div className="block_sticky_info_caracteristique_list_title_desc_desc">
|
<div className="block_sticky_info_caracteristique_list_title_desc_desc">
|
||||||
{DetailTraining["duration"]} {DetailTraining["duration_unit"]} (s)
|
{DetailTraining["duration"]} {DetailTraining["duration_unit"]} (s)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(DetailTraining["duration_unit"]) === "user_rythme" &&
|
||||||
|
<div className="block_sticky_info_caracteristique_list_title_desc_desc">
|
||||||
|
A votre rythme
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -210,6 +210,11 @@ const DistplayPartnerTraningsPage = (props) => {
|
||||||
|
|
||||||
|
|
||||||
function Visualiser(event, cellValues) {
|
function Visualiser(event, cellValues) {
|
||||||
|
// On ne visualise que les formations publiées
|
||||||
|
if( cellValues.row.published !== "1" ){
|
||||||
|
alert(" Vous devez publier la formation pour la visualiser ");
|
||||||
|
return;
|
||||||
|
}
|
||||||
window.open(
|
window.open(
|
||||||
"/Display-Detail-formation/" + cellValues.row.internal_url,
|
"/Display-Detail-formation/" + cellValues.row.internal_url,
|
||||||
'_blank'
|
'_blank'
|
||||||
|
|
|
@ -409,6 +409,16 @@ const Formation = (props) => {
|
||||||
{props.formation.duration} mois(s)
|
{props.formation.duration} mois(s)
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
|
{String(props.formation.duration_unit) === "semaine" &&
|
||||||
|
<div className="criteres ftion_tab_droite">
|
||||||
|
{props.formation.duration} Sem (s)
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
{String(props.formation.duration_unit) === "user_rythme" &&
|
||||||
|
<div className="criteres ftion_tab_droite">
|
||||||
|
A votre rythme
|
||||||
|
</div>}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,10 @@ import { PaymentElement } from '@stripe/react-stripe-js';
|
||||||
import Popup from 'reactjs-popup';
|
import Popup from 'reactjs-popup';
|
||||||
import SendIcon from '@mui/icons-material/Send';
|
import SendIcon from '@mui/icons-material/Send';
|
||||||
|
|
||||||
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
|
import { Tooltip } from 'react-tooltip'
|
||||||
|
|
||||||
|
|
||||||
const stripePromise = loadStripe('pk_test_51LUUfAAbmaEugrFTI25uZBD3IFjbtaL6jUfRV83diDf7nco8worna4NGKhMHbPP71WCwT5EHFRdDNatxPrJWwgZ300kgH5EO4p');
|
const stripePromise = loadStripe('pk_test_51LUUfAAbmaEugrFTI25uZBD3IFjbtaL6jUfRV83diDf7nco8worna4NGKhMHbPP71WCwT5EHFRdDNatxPrJWwgZ300kgH5EO4p');
|
||||||
//const stripePromise_PROD = loadStripe('pk_live_51LUUfAAbmaEugrFTyfNe4Dj0vbxc5qXQqNs0rztjAKy8oSlc5EEQyJGjA8Z5kXmP2gvUMcYLUBYCIyWWzLCw59RY00PtGInkVf');
|
//const stripePromise_PROD = loadStripe('pk_live_51LUUfAAbmaEugrFTyfNe4Dj0vbxc5qXQqNs0rztjAKy8oSlc5EEQyJGjA8Z5kXmP2gvUMcYLUBYCIyWWzLCw59RY00PtGInkVf');
|
||||||
|
|
||||||
|
@ -561,8 +565,14 @@ function HebergementLms(props) {
|
||||||
id='menu_import_formation' name='menu_import_formation'>Choisir une image <br />
|
id='menu_import_formation' name='menu_import_formation'>Choisir une image <br />
|
||||||
|
|
||||||
</Button><br />
|
</Button><br />
|
||||||
<nav className="koUpdateData" style={{ "color": "orange" }}> <i> Important : Taille du logo : longueur entre 140px et 250px et largeur entre 60px et 150px, au format PNG <br />
|
<nav className="koUpdateData" style={{ "color": "orange" }}>
|
||||||
Le nom du fichier ne contient que des caractères alphanumériques </i> </nav>
|
<Tooltip id="tooltip_2" />
|
||||||
|
|
||||||
|
<a data-tooltip-id="tooltip_2" data-tooltip-content="Respecter ces critères vous aide à avoir un meilleur affichage">
|
||||||
|
<i> Important : Taille du logo : longueur entre 140px et 250px et largeur entre 60px et 150px, au format PNG <br />
|
||||||
|
Le nom du fichier ne contient que des caractères alphanumériques </i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
{logo_file_name && <nav className="okUpdateData"><i>{logo_file_name}</i></nav>}
|
{logo_file_name && <nav className="okUpdateData"><i>{logo_file_name}</i></nav>}
|
||||||
<input type="file"
|
<input type="file"
|
||||||
accept=".png"
|
accept=".png"
|
||||||
|
@ -627,8 +637,14 @@ function HebergementLms(props) {
|
||||||
id='menu_import_formation' name='menu_import_formation'>Choisir une image bannière <br />
|
id='menu_import_formation' name='menu_import_formation'>Choisir une image bannière <br />
|
||||||
|
|
||||||
</Button><br />
|
</Button><br />
|
||||||
<nav className="koUpdateData" style={{ "color": "orange" }}> <i> Important : Taille de la bannière : longueur entre 1500px et 1930px et largeur entre 150px et 195px, au format PNG <br />
|
<nav className="koUpdateData" style={{ "color": "orange" }}>
|
||||||
Le nom du fichier ne contient que des caractères alphanumériques </i> </nav>
|
<Tooltip id="tooltip_1" />
|
||||||
|
|
||||||
|
<a data-tooltip-id="tooltip_1" data-tooltip-content="Respecter ces critères vous aide à avoir un meilleur affichage">
|
||||||
|
<i> Important : Taille de la bannière : longueur entre 1500px et 1930px et largeur entre 150px et 195px, au format PNG <br />
|
||||||
|
Le nom du fichier ne contient que des caractères alphanumériques </i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
{bg_file_name && <nav className="okUpdateData"><i>{bg_file_name}</i></nav>}
|
{bg_file_name && <nav className="okUpdateData"><i>{bg_file_name}</i></nav>}
|
||||||
<input type="file"
|
<input type="file"
|
||||||
|
|
|
@ -26,7 +26,7 @@ import * as V from 'victory';
|
||||||
import { VictoryBar, VictoryLine, VictoryScatter, VictoryChart } from 'victory';
|
import { VictoryBar, VictoryLine, VictoryScatter, VictoryChart } from 'victory';
|
||||||
import Canvas from 'react-canvas-js'
|
import Canvas from 'react-canvas-js'
|
||||||
|
|
||||||
import { ResponsiveContainer, LineChart, Line, BarChart, Bar, CartesianGrid, XAxis, YAxis, Tooltip, Legend } from 'recharts';
|
import { ResponsiveContainer, LineChart, Line, BarChart, Bar, CartesianGrid, XAxis, YAxis, Legend } from 'recharts';
|
||||||
|
|
||||||
import Chart from 'react-apexcharts'
|
import Chart from 'react-apexcharts'
|
||||||
import 'react-date-range/dist/styles.css'; // main style file
|
import 'react-date-range/dist/styles.css'; // main style file
|
||||||
|
@ -52,7 +52,8 @@ import {
|
||||||
useElements,
|
useElements,
|
||||||
} from '@stripe/react-stripe-js';
|
} from '@stripe/react-stripe-js';
|
||||||
|
|
||||||
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
|
import { Tooltip } from 'react-tooltip'
|
||||||
|
|
||||||
// pour le payement stripe : https://stripe.com/docs/payments/quickstart?client=react&lang=python
|
// pour le payement stripe : https://stripe.com/docs/payments/quickstart?client=react&lang=python
|
||||||
const stripePromise = loadStripe('pk_test_51LUUfAAbmaEugrFTI25uZBD3IFjbtaL6jUfRV83diDf7nco8worna4NGKhMHbPP71WCwT5EHFRdDNatxPrJWwgZ300kgH5EO4p');
|
const stripePromise = loadStripe('pk_test_51LUUfAAbmaEugrFTI25uZBD3IFjbtaL6jUfRV83diDf7nco8worna4NGKhMHbPP71WCwT5EHFRdDNatxPrJWwgZ300kgH5EO4p');
|
||||||
|
@ -892,6 +893,11 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
|
||||||
|
|
||||||
<h2> cartouche formaion </h2>
|
<h2> cartouche formaion </h2>
|
||||||
|
|
||||||
|
<Tooltip id="my-tooltip" />
|
||||||
|
|
||||||
|
<a data-tooltip-id="my-tooltip" data-tooltip-content="Hello world!">
|
||||||
|
info bull infobulle ◕‿‿◕
|
||||||
|
</a>
|
||||||
|
|
||||||
<button onClick={loading} id="finalise"> loading .....</button>
|
<button onClick={loading} id="finalise"> loading .....</button>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -24,6 +24,8 @@ const NotFound = () => {
|
||||||
|
|
||||||
|
|
||||||
<div className="div_mobile">
|
<div className="div_mobile">
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
<div className="nom_prenom"> Cette formation n'est pas active ou n'existe pas.</div>
|
<div className="nom_prenom"> Cette formation n'est pas active ou n'existe pas.</div>
|
||||||
<div className="nom_prenom"> <a href={process.env.REACT_APP_BASE_URL}> Retour vers le moteur de recherche </a> </div>
|
<div className="nom_prenom"> <a href={process.env.REACT_APP_BASE_URL}> Retour vers le moteur de recherche </a> </div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue