01/08/230- 21h

recette2
cherif 2023-08-01 21:30:26 +02:00
parent da1cc330f9
commit 5b444f2379
9 changed files with 680 additions and 113 deletions

91
package-lock.json generated
View File

@ -24,7 +24,8 @@
"@material-ui/core": "^4.12.4", "@material-ui/core": "^4.12.4",
"@material/tooltip": "^14.0.0", "@material/tooltip": "^14.0.0",
"@mui/icons-material": "^5.4.2", "@mui/icons-material": "^5.4.2",
"@mui/material": "^5.14.1", "@mui/lab": "^5.0.0-alpha.137",
"@mui/material": "^5.14.2",
"@mui/x-data-grid": "^5.17.26", "@mui/x-data-grid": "^5.17.26",
"@mui/x-date-pickers": "^5.0.0", "@mui/x-date-pickers": "^5.0.0",
"@mui/x-date-pickers-pro": "^5.0.0", "@mui/x-date-pickers-pro": "^5.0.0",
@ -5280,9 +5281,9 @@
} }
}, },
"node_modules/@mui/core-downloads-tracker": { "node_modules/@mui/core-downloads-tracker": {
"version": "5.14.1", "version": "5.14.2",
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.1.tgz", "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.2.tgz",
"integrity": "sha512-mIa1WmDmNr1LoupV1Rbxt9bTFKMbIn10RHG1bnZ/FJCkAYpuU/D4n+R+ttiycgcZNngU++zyh/OQeJblzbQPzg==", "integrity": "sha512-x+c/MgDL1t/IIy5lDbMlrDouFG5DYZbl3DP4dbbuhlpPFBnE9glYwmJEee/orVHQpOPwLxCAIWQs+2DKSaBVWQ==",
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/mui" "url": "https://opencollective.com/mui"
@ -5313,14 +5314,55 @@
} }
} }
}, },
"node_modules/@mui/material": { "node_modules/@mui/lab": {
"version": "5.14.1", "version": "5.0.0-alpha.137",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.1.tgz", "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.137.tgz",
"integrity": "sha512-WtsgYuageTunLfxH3Ri+o1RuQTFImtRHxMcVNyD0Hhd2/znjW6KODNz0XfjvLRnNCAynBxZNiflcoIBW40h9PQ==", "integrity": "sha512-bHfcfti9/GnB657QpTdlK1fc9gjkP3SC+NrXyb9NCr0rT5Cq7TEkBGXyY5wGUSCyHR3CrMvchkIsfG5sH/NJ9A==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.22.6", "@babel/runtime": "^7.22.6",
"@mui/base": "5.0.0-beta.8", "@mui/base": "5.0.0-beta.8",
"@mui/core-downloads-tracker": "^5.14.1", "@mui/system": "^5.14.1",
"@mui/types": "^7.2.4",
"@mui/utils": "^5.14.1",
"clsx": "^1.2.1",
"prop-types": "^15.8.1",
"react-is": "^18.2.0"
},
"engines": {
"node": ">=12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui"
},
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
"@mui/material": "^5.0.0",
"@types/react": "^17.0.0 || ^18.0.0",
"react": "^17.0.0 || ^18.0.0",
"react-dom": "^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"@emotion/react": {
"optional": true
},
"@emotion/styled": {
"optional": true
},
"@types/react": {
"optional": true
}
}
},
"node_modules/@mui/material": {
"version": "5.14.2",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.2.tgz",
"integrity": "sha512-TgNR4/YRL11RifsnMWNhITNCkGJYVz20SCvVJBBoU5Y/KhUNSSJxjDpEB8VrnY+sUsV0NigLCkHZJglfsiS3Pw==",
"dependencies": {
"@babel/runtime": "^7.22.6",
"@mui/base": "5.0.0-beta.8",
"@mui/core-downloads-tracker": "^5.14.2",
"@mui/system": "^5.14.1", "@mui/system": "^5.14.1",
"@mui/types": "^7.2.4", "@mui/types": "^7.2.4",
"@mui/utils": "^5.14.1", "@mui/utils": "^5.14.1",
@ -49512,9 +49554,9 @@
} }
}, },
"@mui/core-downloads-tracker": { "@mui/core-downloads-tracker": {
"version": "5.14.1", "version": "5.14.2",
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.1.tgz", "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.2.tgz",
"integrity": "sha512-mIa1WmDmNr1LoupV1Rbxt9bTFKMbIn10RHG1bnZ/FJCkAYpuU/D4n+R+ttiycgcZNngU++zyh/OQeJblzbQPzg==" "integrity": "sha512-x+c/MgDL1t/IIy5lDbMlrDouFG5DYZbl3DP4dbbuhlpPFBnE9glYwmJEee/orVHQpOPwLxCAIWQs+2DKSaBVWQ=="
}, },
"@mui/icons-material": { "@mui/icons-material": {
"version": "5.14.1", "version": "5.14.1",
@ -49524,14 +49566,29 @@
"@babel/runtime": "^7.22.6" "@babel/runtime": "^7.22.6"
} }
}, },
"@mui/material": { "@mui/lab": {
"version": "5.14.1", "version": "5.0.0-alpha.137",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.1.tgz", "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.137.tgz",
"integrity": "sha512-WtsgYuageTunLfxH3Ri+o1RuQTFImtRHxMcVNyD0Hhd2/znjW6KODNz0XfjvLRnNCAynBxZNiflcoIBW40h9PQ==", "integrity": "sha512-bHfcfti9/GnB657QpTdlK1fc9gjkP3SC+NrXyb9NCr0rT5Cq7TEkBGXyY5wGUSCyHR3CrMvchkIsfG5sH/NJ9A==",
"requires": { "requires": {
"@babel/runtime": "^7.22.6", "@babel/runtime": "^7.22.6",
"@mui/base": "5.0.0-beta.8", "@mui/base": "5.0.0-beta.8",
"@mui/core-downloads-tracker": "^5.14.1", "@mui/system": "^5.14.1",
"@mui/types": "^7.2.4",
"@mui/utils": "^5.14.1",
"clsx": "^1.2.1",
"prop-types": "^15.8.1",
"react-is": "^18.2.0"
}
},
"@mui/material": {
"version": "5.14.2",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.2.tgz",
"integrity": "sha512-TgNR4/YRL11RifsnMWNhITNCkGJYVz20SCvVJBBoU5Y/KhUNSSJxjDpEB8VrnY+sUsV0NigLCkHZJglfsiS3Pw==",
"requires": {
"@babel/runtime": "^7.22.6",
"@mui/base": "5.0.0-beta.8",
"@mui/core-downloads-tracker": "^5.14.2",
"@mui/system": "^5.14.1", "@mui/system": "^5.14.1",
"@mui/types": "^7.2.4", "@mui/types": "^7.2.4",
"@mui/utils": "^5.14.1", "@mui/utils": "^5.14.1",

View File

@ -19,7 +19,8 @@
"@material-ui/core": "^4.12.4", "@material-ui/core": "^4.12.4",
"@material/tooltip": "^14.0.0", "@material/tooltip": "^14.0.0",
"@mui/icons-material": "^5.4.2", "@mui/icons-material": "^5.4.2",
"@mui/material": "^5.14.1", "@mui/lab": "^5.0.0-alpha.137",
"@mui/material": "^5.14.2",
"@mui/x-data-grid": "^5.17.26", "@mui/x-data-grid": "^5.17.26",
"@mui/x-date-pickers": "^5.0.0", "@mui/x-date-pickers": "^5.0.0",
"@mui/x-date-pickers-pro": "^5.0.0", "@mui/x-date-pickers-pro": "^5.0.0",

View File

@ -1946,7 +1946,7 @@ const AddClassManual = (props) => {
</div> </div>
<div className="div_row_droite_image"> <div className="div_row_droite_image">
<input type="file" id="files_img_class" accept="image/*" onChange={imglogoclasschangeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} /> <input type="file" id="files_img_class" accept="image/*" onChange={imglogoclasschangeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} /> <br/>
<label for="files_img_class" className="bton_image_class">Charger une image</label><br /> <label for="files_img_class" className="bton_image_class">Charger une image</label><br />
<nav className="bton_supprime_image_class" onClick={removeRecodedClassImage}>Supprimer l'image</nav><br /> <nav className="bton_supprime_image_class" onClick={removeRecodedClassImage}>Supprimer l'image</nav><br />
{/*isimgclassSelected && <Button variant="outlined" onClick={sendClassImage} className="bton_image_class">Enregistrer image</Button>*/} {/*isimgclassSelected && <Button variant="outlined" onClick={sendClassImage} className="bton_image_class">Enregistrer image</Button>*/}

View File

@ -36,6 +36,20 @@ import fileDownload from 'js-file-download'
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5"; import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import { AiOutlineUserAdd } from "react-icons/ai"; import { AiOutlineUserAdd } from "react-icons/ai";
import Timeline from '@mui/lab/Timeline';
import TimelineItem from '@mui/lab/TimelineItem';
import TimelineSeparator from '@mui/lab/TimelineSeparator';
import TimelineConnector from '@mui/lab/TimelineConnector';
import TimelineContent from '@mui/lab/TimelineContent';
import TimelineOppositeContent from '@mui/lab/TimelineOppositeContent';
import TimelineDot from '@mui/lab/TimelineDot';
import FastfoodIcon from '@mui/icons-material/Fastfood';
import LaptopMacIcon from '@mui/icons-material/LaptopMac';
import HotelIcon from '@mui/icons-material/Hotel';
import RepeatIcon from '@mui/icons-material/Repeat';
import Typography from '@mui/material/Typography';
const PartnerClientActivite = (props) => { const PartnerClientActivite = (props) => {
const history = useHistory(); const history = useHistory();
@ -166,8 +180,8 @@ const PartnerClientActivite = (props) => {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Entity_Activite/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Entity_Activite/";
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
console.log(" In Get_List_Activite_Of_client_Part res.data.status = " + res.data.status); //console.log(" In Get_List_Activite_Of_client_Part res.data.status = " + res.data.status);
console.log(" In Get_List_Activite_Of_client_Part res.data.message r_class = " + res.data.message); //console.log(" In Get_List_Activite_Of_client_Part res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
setGet_List_Activite_Of_client_Part_api("true"); setGet_List_Activite_Of_client_Part_api("true");
@ -468,7 +482,7 @@ const PartnerClientActivite = (props) => {
function Clear_activite_P_fields(){ function Clear_activite_P_fields() {
setp_activite_description(""); setp_activite_description("");
setp_activite_detail(""); setp_activite_detail("");
setp_activite_deadline(""); setp_activite_deadline("");
@ -504,7 +518,7 @@ const PartnerClientActivite = (props) => {
return ( return (
<div className="partner_client_activite"> <div className="partner_client_activite" style={{"height":"30rem"}}>
<div className="div_row"> <div className="div_row">
{String(addactivite) === "0" && <div className="div_row" style={{ "marginLeft": "5px", "marginRight": "5px" }}> {String(addactivite) === "0" && <div className="div_row" style={{ "marginLeft": "5px", "marginRight": "5px" }}>
@ -515,18 +529,35 @@ const PartnerClientActivite = (props) => {
{Get_List_Activite_Of_client_Part_result && String(Get_List_Activite_Of_client_Part_api) === "true" && {Get_List_Activite_Of_client_Part_result && String(Get_List_Activite_Of_client_Part_api) === "true" &&
Get_List_Activite_Of_client_Part_result.map((client) => ( Get_List_Activite_Of_client_Part_result.map((client) => (
<Timeline position="right">
<div id={String(JSON.parse(client).recid)} onClick={Display_Part_Client_Activite}> <TimelineItem>
description = {String(JSON.parse(client).description)} <br /> <TimelineOppositeContent
detail = {String(JSON.parse(client).detail)} <br /> sx={{ m: 'auto 0' }}
type = {String(JSON.parse(client).type)} <br /> variant="body2"
deadline = {String(JSON.parse(client).deadline)} <br /> color="text.secondary"
>
{String(JSON.parse(client).deadline)}
</div> </TimelineOppositeContent>
<TimelineSeparator>
<TimelineConnector />
<TimelineDot color="primary">
<LaptopMacIcon />
</TimelineDot>
<TimelineConnector />
</TimelineSeparator>
<TimelineContent sx={{ py: '12px', px: 2 }} className="detail_activite">
<Typography variant="h6" component="span">
{String(JSON.parse(client).description)}
</Typography>
<Typography id={String(JSON.parse(client).recid)} onClick={Display_Part_Client_Activite}>
{String(JSON.parse(client).detail)} <br />
{String(JSON.parse(client).type)}</Typography>
</TimelineContent>
</TimelineItem>
</Timeline>
))} ))}
</div> </div>
</div> </div>
</div>} </div>}

View File

@ -48,6 +48,20 @@ import 'reactjs-popup/dist/index.css';
import Formation from "./Formation"; import Formation from "./Formation";
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif"; import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import Timeline from '@mui/lab/Timeline';
import TimelineItem from '@mui/lab/TimelineItem';
import TimelineSeparator from '@mui/lab/TimelineSeparator';
import TimelineConnector from '@mui/lab/TimelineConnector';
import TimelineContent from '@mui/lab/TimelineContent';
import TimelineOppositeContent from '@mui/lab/TimelineOppositeContent';
import TimelineDot from '@mui/lab/TimelineDot';
import FastfoodIcon from '@mui/icons-material/Fastfood';
import LaptopMacIcon from '@mui/icons-material/LaptopMac';
import HotelIcon from '@mui/icons-material/Hotel';
import RepeatIcon from '@mui/icons-material/Repeat';
import Typography from '@mui/material/Typography';
import { import {
CardElement, CardElement,
useStripe, useStripe,
@ -622,7 +636,7 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
["James Houston", "Test Corp", "Dallas", "TX"], ["James Houston", "Test Corp", "Dallas", "TX"],
]; ];
function hellofoo(){ function hellofoo() {
alert(" hellooooooooo"); alert(" hellooooooooo");
} }
@ -698,9 +712,6 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
} }
} }
} }
}); });
@ -722,6 +733,58 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
<div className="div_mobile"> <div className="div_mobile">
<Timeline position="right">
<TimelineItem>
<TimelineOppositeContent
sx={{ m: 'auto 0' }}
align="right"
variant="body2"
color="text.secondary"
>
9:30 am
</TimelineOppositeContent>
<TimelineSeparator>
<TimelineConnector />
<TimelineDot>
<FastfoodIcon />
</TimelineDot>
<TimelineConnector />
</TimelineSeparator>
<TimelineContent sx={{ py: '12px', px: 2 }}>
<Typography variant="h6" component="span">
Eat
</Typography>
<Typography>Because you need strength</Typography>
</TimelineContent>
</TimelineItem>
<TimelineItem>
<TimelineOppositeContent
sx={{ m: 'auto 0' }}
variant="body2"
color="text.secondary"
>
10:00 am
</TimelineOppositeContent>
<TimelineSeparator>
<TimelineConnector />
<TimelineDot color="primary">
<LaptopMacIcon />
</TimelineDot>
<TimelineConnector />
</TimelineSeparator>
<TimelineContent sx={{ py: '12px', px: 2 }}>
<Typography variant="h6" component="span">
Code
</Typography>
<Typography>Because it&apos;s awesome!</Typography>
</TimelineContent>
</TimelineItem>
</Timeline>
<h2> cartouche formaion </h2> <h2> cartouche formaion </h2>
<div style={{ "width": "100%", }}> <div style={{ "width": "100%", }}>

View File

@ -34,7 +34,6 @@ function UpdateParnterInfo() {
const [mailfieldsdesabled, setmailfieldsdesabled] = useState(true); const [mailfieldsdesabled, setmailfieldsdesabled] = useState(true);
const [pwdfieldsdesabled, setpwdfieldsdesabled] = useState(true); const [pwdfieldsdesabled, setpwdfieldsdesabled] = useState(true);
const [values, setValues] = React.useState({ const [values, setValues] = React.useState({
password: '', password: '',
showPassword: false, showPassword: false,
@ -85,6 +84,7 @@ function UpdateParnterInfo() {
desablesecurtymailfields(); desablesecurtymailfields();
desablesecurtypwdfields(); desablesecurtypwdfields();
desablesecurtyInsertKeyfields(); desablesecurtyInsertKeyfields();
getPartnerImages();
}, []) }, [])
@ -163,7 +163,7 @@ function UpdateParnterInfo() {
desablesecurtyInsertKeyfields(); desablesecurtyInsertKeyfields();
document.getElementsByName("current_insert_key")[0].value = new_key; document.getElementsByName("current_insert_key")[0].value = new_key;
setinsert_key_updated(true); setinsert_key_updated(true);
}else if (String(result['status']) === String("Err_Connexion")) { } else if (String(result['status']) === String("Err_Connexion")) {
alert('Erreur: ' + result['message']); alert('Erreur: ' + result['message']);
history.push("/Connexion"); history.push("/Connexion");
} }
@ -375,12 +375,12 @@ function UpdateParnterInfo() {
document.getElementsByName("num_nda")[0].style.backgroundColor = "#ECEFF1"; document.getElementsByName("num_nda")[0].style.backgroundColor = "#ECEFF1";
} }
if (mylocaltraining.iscertitrace) { /* if (mylocaltraining.iscertitrace) {
setmycertitrace(mylocaltraining.iscertitrace); setmycertitrace(mylocaltraining.iscertitrace);
} }
else { else {
setmycertitrace("0"); setmycertitrace("0");
} }*/
if (mylocaltraining.iscertifvoltaire) { if (mylocaltraining.iscertifvoltaire) {
setmycertifvoltaire(mylocaltraining.iscertifvoltaire); setmycertifvoltaire(mylocaltraining.iscertifvoltaire);
@ -390,13 +390,13 @@ function UpdateParnterInfo() {
} }
/*
if (mylocaltraining.isbureaucertitrace) { if (mylocaltraining.isbureaucertitrace) {
setmybureaucertitrace(mylocaltraining.isbureaucertitrace); setmybureaucertitrace(mylocaltraining.isbureaucertitrace);
} }
else { else {
setmybureaucertitrace("0"); setmybureaucertitrace("0");
} }*/
if (mylocaltraining.isdatadock) { if (mylocaltraining.isdatadock) {
setmydatadock(mylocaltraining.isdatadock); setmydatadock(mylocaltraining.isdatadock);
@ -494,6 +494,7 @@ function UpdateParnterInfo() {
function annuler_change_user_data() { function annuler_change_user_data() {
desablefield1(); desablefield1();
getCurrentUserData(); getCurrentUserData();
setuserformedited("");
} }
function desablefield1() { function desablefield1() {
@ -694,6 +695,8 @@ function UpdateParnterInfo() {
function RecordData() { function RecordData() {
const formData = new FormData(); const formData = new FormData();
const url = process.env.REACT_APP_API_URL + "myclass/api/update_partner_account/"; const url = process.env.REACT_APP_API_URL + "myclass/api/update_partner_account/";
@ -732,8 +735,8 @@ function UpdateParnterInfo() {
var contact_tel = document.getElementsByName("contact_tel")[0].value; var contact_tel = document.getElementsByName("contact_tel")[0].value;
var contact_mail = document.getElementsByName("contact_mail")[0].value; var contact_mail = document.getElementsByName("contact_mail")[0].value;
var mycertitrace = document.getElementsByName("iscertitrace")[0].value; //var mycertitrace = document.getElementsByName("iscertitrace")[0].value;
var mybureaucertitrace = document.getElementsByName("isbureaucertitrace")[0].value; //var mybureaucertitrace = document.getElementsByName("isbureaucertitrace")[0].value;
var mycertifvoltaire = document.getElementsByName("iscertifvoltaire")[0].value; var mycertifvoltaire = document.getElementsByName("iscertifvoltaire")[0].value;
@ -746,10 +749,10 @@ function UpdateParnterInfo() {
formData.append('token', stored_user); formData.append('token', stored_user);
formData.append('nom', nom); formData.append('nom', nom);
formData.append('iscertitrace', mycertitrace); //formData.append('iscertitrace', mycertitrace);
formData.append('isdatadock', mydatadock); formData.append('isdatadock', mydatadock);
formData.append('isqualiopi', myqualiopi); formData.append('isqualiopi', myqualiopi);
formData.append('isbureaucertitrace', mybureaucertitrace); // formData.append('isbureaucertitrace', mybureaucertitrace);
formData.append('iscertifvoltaire', mycertifvoltaire); formData.append('iscertifvoltaire', mycertifvoltaire);
formData.append('website', website); formData.append('website', website);
@ -769,6 +772,15 @@ function UpdateParnterInfo() {
formData.append('contact_mail', contact_mail); formData.append('contact_mail', contact_mail);
// Recuperation de l'image logo & de l'image du cachet
formData.append('file_logo', isimgclassSelected);
formData.append('file_logo_recid', isimgclassSelected_recid);
formData.append('file_cachet', isimgcachetSelected);
formData.append('file_cachet_recid', isimgcachetSelected_recid);
//console.log(" ### formData = ", formData); //console.log(" ### formData = ", formData);
fetch( fetch(
url, url,
@ -806,6 +818,56 @@ function UpdateParnterInfo() {
}; };
const [getPartnerImages_api, setgetPartnerImages_api] = useState();
const [getPartnerImages_message, setgetPartnerImages_message] = useState();
const [getPartnerImages_result, setgetPartnerImages_result] = useState();
function getPartnerImages(e) {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/getRecodedParnterImage_from_front/";
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
axios.post(myurl, form).then(res => {
//console.log(" getPartnerImages : In test res.data.status = " + res.data.status);
// console.log(" getPartnerImages: res.data.message.img = " + res.data.message);
if (String(res.data.status) === "true") {
setgetPartnerImages_api("true");
var partner_logo_img = "data:image/png;base64," + JSON.parse(res.data.message).logo_img;
setisimgclassSelected(partner_logo_img);
setuserimgclassprofil(partner_logo_img);
setisimgclassSelected_recid(JSON.parse(res.data.message).logo_img_recid);
var partner_cachet_img = "data:image/png;base64," + JSON.parse(res.data.message).cachet_img;
setisimgcachet(partner_cachet_img);
setisimgcachetSelected(partner_cachet_img);
setisimgcachetSelected_recid(JSON.parse(res.data.message).cachet_img_recid);
}
else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
return;
}
else {
setgetPartnerImages_api("false");
setgetPartnerImages_message(res.data.message)
}
}).catch((error) => {
console.warn('getPartnerImages ee: Not good man :( = ', error);
setgetPartnerImages_api("false");
setgetPartnerImages_message(" Impossible de recuperer les images/médias du partenaire")
})
}
function handleChange(prop) { function handleChange(prop) {
return (event) => { return (event) => {
setValues({ ...values, [prop]: event.target.value }); setValues({ ...values, [prop]: event.target.value });
@ -1146,9 +1208,188 @@ function UpdateParnterInfo() {
const [datamodification, setdatamodification] = useState("0"); const [datamodification, setdatamodification] = useState("0");
function DataUpdated() { function DataUpdated() {
setdatamodification("1"); setdatamodification("1");
}
const [isimgclassdeleted, setisimgclassdeleted] = useState("");
const [isimgclassdeleted_message, setisimgclassdeleted_message] = useState("");
function removeRecodedClassImage() {
var class_external_code = "";
if (document.getElementsByName("external_code")[0].value && document.getElementsByName("external_code")[0].value.length > 3) {
class_external_code = document.getElementsByName("external_code")[0].value;
} else {
alert(" Vous devez saisir le code externe de la formation avant d'enregistrer une image. Le code externe prend au moins 3 caractères");
return;
}
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("class_external_code", class_external_code);
form.append("type", "partner");
fetch(
process.env.REACT_APP_API_URL + "myclass/api/DeleteRecodedClassImage/",
{
method: 'POST',
body: form,
}
).then((response) => response.json())
.then((result) => {
//console.log(' removeRecodedClassImage : status:', result['status']);
//console.log('removeRecodedClassImage : Success:', result['message']);
setisimgclassSelected(false);
if (String(result['status']) === String("true")) {
setisimgclassdeleted("1");
setuserimgclassprofil("");
}
else if (String(result['status']) === String("Err_Connexion")) {
alert('Erreur: ' + result['message']);
history.push("/Connexion");
return;
}
else {
setisimgclassdeleted("0");
setisimgclassdeleted_message(result['message']);
setisimgclassSelected(true);
}
})
.catch((error) => {
console.error('Error:');
setisimgclassSelected(true);
setisimgclassdeleted("0");
setisimgclassdeleted_message(result['message']);
});
} }
const [isimgclassSaved, setisimgclassSaved] = useState("");
const [isimgclassSaved_message, setisimgclassSaved_message] = useState("");
function sendClassImage(e) {
var class_external_code = "";
if (document.getElementsByName("external_code")[0].value && document.getElementsByName("external_code")[0].value.length > 3) {
class_external_code = document.getElementsByName("external_code")[0].value;
} else {
alert(" Vous devez saisir le code externe de la formation avant d'enregistrer une image. Le code externe prend au moins 3 caractères");
return;
}
var formData = new FormData();
formData.append('File', isimgclassSelected);
const stored_cookie = getCookie('tokenmysypart');
formData.append("token", stored_cookie);
formData.append("class_external_code", class_external_code);
formData.append("type", "partner");
fetch(
process.env.REACT_APP_API_URL + "myclass/api/recordClassImage/",
{
method: 'POST',
body: formData,
}
).then((response) => response.json())
.then((result) => {
//console.log('status:', result['status']);
//console.log('Success:', result['message']);
setisimgclassSelected(false);
if (String(result['status']) == String("true")) {
setisimgclassSaved("1");
}
else {
setisimgclassSaved("0");
setisimgclassSaved_message(result['message']);
setisimgclassSelected(true);
}
})
.catch((error) => {
console.error('Error:');
setisimgclassSelected(true);
setisimgclassSaved("0");
setisimgclassSaved_message(result['message']);
});
};
const [isimgclassSelected, setisimgclassSelected] = useState(false);
const [isimgclassSelected_recid, setisimgclassSelected_recid] = useState("");
const [isimgclassSelectedfile, setisimgclassSelectedfile] = useState(false);
const [userimgclassprofil, setuserimgclassprofil] = useState();
const [userimgclassprofilchanged, setuserimgclassprofilchanged] = useState("");
const imglogoclasschangeHandler = (event) => {
let file_size = event.target.files[0].size;
//or if you like to have name and type
//console.log(event.target.files);
let file_name = event.target.files[0].name;
let file_type = event.target.files[0].type;
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets");
return;
}
setisimgclassSelected(event.target.files[0]);
setisimgclassSelectedfile(true);
setuserimgclassprofil(URL.createObjectURL(event.target.files[0]));
setuserimgclassprofilchanged("1");
};
const [isimgcachetSelected, setisimgcachetSelected] = useState(false);
const [isimgcachetSelected_recid, setisimgcachetSelected_recid] = useState("");
const [isimgcachetSelectedfile, setisimgcachetSelectedfile] = useState(false);
const [isimgcachet, setisimgcachet] = useState();
const [isimgcachetchanged, setisimgcachetchanged] = useState("");
const imgcachetchangeHandler = (event) => {
let file_size = event.target.files[0].size;
//or if you like to have name and type
//console.log(event.target.files);
let file_name = event.target.files[0].name;
let file_type = event.target.files[0].type;
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets");
return;
}
setisimgcachetSelected(event.target.files[0]);
setisimgcachetSelectedfile(true);
setisimgcachet(URL.createObjectURL(event.target.files[0]));
setisimgcachetchanged("1");
};
const [isimgcachetdeleted, setisimgcachetdeleted] = useState("");
const [isimgcachetdeleted_message, setisimgcachetdeleted_message] = useState("");
const [isimgcachetSaved, setisimgcachetSaved] = useState("");
const [isimgcachetSaved_message, setisimgcachetSaved_message] = useState("");
return ( return (
<div className='updateparnterinfo'> <div className='updateparnterinfo'>
@ -1358,6 +1599,81 @@ function UpdateParnterInfo() {
variant="standard" variant="standard"
/> />
<div style={{ "width": "10%" }}> &nbsp;</div>
<div className="div_row_gauche">
<div className="titre1"> Votre logo </div>
<div className="div_row_bis" style={{ "marginBottom": "10px", "marginTop": "1rem" }} >
<div className="div_row_gauche_image">
<img class="img_class_logo" src={userimgclassprofil} /><br />
</div>
<div className="div_row_droite_image">
<input type="file" id="files_img_class" accept="image/*" onChange={imglogoclasschangeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} /><br />
{String(userformedited) === "1" && <nav> <label for="files_img_class" className="bton_image_class">Charger un logo</label><br />
<nav className="bton_supprime_image_class" onClick={removeRecodedClassImage}>Supprimer le logo</nav><br /> </nav>}
{/*isimgclassSelected && <Button variant="outlined" onClick={sendClassImage} className="bton_image_class">Enregistrer image</Button>*/}
{isimgclassdeleted && String(isimgclassdeleted) === "1" && <nav className="koUpdateData"> {isimgclassdeleted_message}</nav>}
{isimgclassdeleted && String(isimgclassdeleted) === "0" && <nav className="okUpdateData"> {isimgclassdeleted_message}</nav>}
{isimgclassSelected && String(isimgclassSaved) === "0" && <nav className="koUpdateData"> {isimgclassSaved_message}</nav>}
</div>
</div>
<div className="div_row_bis tips_img_class">
<li>
L'image doit etre carrée.
</li>
<li>
Les formats autorisés sont : <i>['jpg', 'jpeg', 'png', 'jpe', 'webp']</i>
</li>
<li>
Les dimensions recommandées: 128pixels X 128pixels -- 144pixels X 144pixels -- 168pixels X 168pixels<br />
Les dimensions maximales sont de 256pixels X 256pixels
</li>
<li>
La taille de l'image ne doit pas depasser 1 mega octet
</li>
</div>
</div>
<div className="div_row_droite">
<div className="titre1"> Votre cachet </div>
<div className="div_row_bis" style={{ "marginBottom": "10px", "marginTop": "1rem" }} >
<div className="div_row_gauche_image">
<img class="img_class_logo" src={isimgcachet} /><br />
</div>
<div className="div_row_droite_image">
<input type="file" id="files_img_cachet_class" accept="image/*" onChange={imgcachetchangeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} /><br />
{String(userformedited) === "1" && <nav> <label for="files_img_cachet_class" className="bton_image_class">Charger un cachet</label><br />
<nav className="bton_supprime_image_class" onClick={removeRecodedClassImage}>Supprimer le cachet </nav><br /> </nav>}
{/*isimgclassSelected && <Button variant="outlined" onClick={sendClassImage} className="bton_image_class">Enregistrer image</Button>*/}
{isimgcachetdeleted && String(isimgcachetdeleted) === "1" && <nav className="koUpdateData"> {isimgcachetdeleted_message}</nav>}
{isimgcachetdeleted && String(isimgcachetdeleted) === "0" && <nav className="okUpdateData"> {isimgcachetdeleted_message}</nav>}
{isimgcachetSelected && String(isimgcachetSaved) === "0" && <nav className="koUpdateData"> {isimgcachetSaved_message}</nav>}
</div>
</div>
<div className="div_row_bis tips_img_class">
<li>
L'image doit etre carrée.
</li>
<li>
Les formats autorisés sont : <i>['jpg', 'jpeg', 'png', 'jpe', 'webp']</i>
</li>
<li>
Les dimensions recommandées: 128pixels X 128pixels -- 144pixels X 144pixels -- 168pixels X 168pixels<br />
Les dimensions maximales sont de 256pixels X 256pixels
</li>
<li>
La taille de l'image ne doit pas depasser 1 mega octet
</li>
</div>
</div>
<div style={{ "width": "10%" }}> &nbsp;</div> <div style={{ "width": "10%" }}> &nbsp;</div>
<div className="titre1"> Certification </div> <div className="titre1"> Certification </div>
<TextField <TextField
@ -1412,7 +1728,7 @@ function UpdateParnterInfo() {
))} ))}
</TextField> </TextField>
<TextField {/*} <TextField
name="iscertitrace" name="iscertitrace"
label="Certitrace" label="Certitrace"
select select
@ -1448,7 +1764,7 @@ function UpdateParnterInfo() {
{option.label} &nbsp; <br /> {option.label} &nbsp; <br />
</MenuItem> </MenuItem>
))} ))}
</TextField> </TextField>*/}
<TextField <TextField
name="iscertifvoltaire" name="iscertifvoltaire"
@ -1667,9 +1983,9 @@ function UpdateParnterInfo() {
</ul> </ul>
</div> </div>
<div className="div_row22"> <div className="div_row22" style={{ "textAlign": "left" }}>
{pwdfieldsdesabled == false && <div className="div_row"> {pwdfieldsdesabled == false && <div className="div_row" style={{ "textAlign": "left" }} >
<div className="div_row_gauche"> <div className="div_row_gauche">
<Button variant="contained" color="success" className="div_row22 btn_enreg " onClick={UpdatePartnerPwd}>Enregistrer</Button> <Button variant="contained" color="success" className="div_row22 btn_enreg " onClick={UpdatePartnerPwd}>Enregistrer</Button>
</div> </div>
@ -1769,8 +2085,8 @@ function UpdateParnterInfo() {
</div> </div>
</div> </div>
} }
{mailfieldsdesabled == true && <div className="div_row22"> {mailfieldsdesabled == true && <div className="div_row22" style={{ "textAlign": "right" }}>
<Button variant="contained" color="success" className="div_row22 btn_modif" style={{ "marginTop": "0px" }} onClick={enablesecurtymailfields}>Editer</Button> <Button variant="contained" color="success" className="div_row22 btn_modif" style={{ "marginTop": "0px", }} onClick={enablesecurtymailfields}>Editer</Button>
</div> </div>
} }

View File

@ -216,7 +216,7 @@
.bton_supprime_image_class { .bton_supprime_image_class {
font-size: small; font-size: small;
text-align: left; text-align: left;
margin-left: 5px; margin-left: 0px;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%); box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
padding: 5px; padding: 5px;
padding-left: 10px; padding-left: 10px;
@ -569,7 +569,7 @@
.bton_supprime_image_class { .bton_supprime_image_class {
font-size: small; font-size: small;
text-align: left; text-align: left;
margin-left: 5px; margin-left: 0px;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%); box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
padding: 5px; padding: 5px;
padding-left: 10px; padding-left: 10px;
@ -901,7 +901,7 @@
.img_class_logo { .img_class_logo {
display: block; display: block;
width: 168px; width: 168px;
height: 144px; height: 168px;
border-radius: 10px !important; border-radius: 10px !important;
border: 1px solid black; border: 1px solid black;
float: left; float: left;
@ -982,7 +982,7 @@
.bton_supprime_image_class { .bton_supprime_image_class {
font-size: small; font-size: small;
text-align: left; text-align: left;
margin-left: 5px; margin-left: 0px;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%); box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
padding: 5px; padding: 5px;
padding-left: 10px; padding-left: 10px;
@ -1317,7 +1317,7 @@
.img_class_logo { .img_class_logo {
display: block; display: block;
width: 168px; width: 168px;
height: 144px; height: 168px;
border-radius: 10px !important; border-radius: 10px !important;
border: 1px solid black; border: 1px solid black;
float: left; float: left;
@ -1398,7 +1398,7 @@
.bton_supprime_image_class { .bton_supprime_image_class {
font-size: small; font-size: small;
text-align: left; text-align: left;
margin-left: 5px; margin-left: 0px;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%); box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
padding: 5px; padding: 5px;
padding-left: 10px; padding-left: 10px;

View File

@ -191,7 +191,8 @@
margin-left: 10px !important; margin-left: 10px !important;
display: grid; display: grid;
height: 200px; height: 200px;
grid-template: repeat(2, 1fr) / repeat(2, 1fr); //grid-template: repeat(2, 1fr) / repeat(2, 1fr);
grid-template-columns: auto auto auto auto;
gap: 20px 10px; gap: 20px 10px;
} }
@ -211,6 +212,25 @@
box-shadow: 5px 1px 5px 1px rgb(0 0 0 / 25%); box-shadow: 5px 1px 5px 1px rgb(0 0 0 / 25%);
} }
.detail_activite {
display: inline-block;
color: #444;
border: 1px solid #CCC;
background: #DDD;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
cursor: pointer;
vertical-align: middle;
padding: 5px;
text-align: left;
}
.detail_activite:hover {
box-shadow: 5px 1px 5px 1px rgb(0 0 0 / 25%);
}
.css-1v4ccyo { .css-1v4ccyo {
height: 3rem !important; height: 3rem !important;
} }

View File

@ -445,12 +445,12 @@
} }
.btn_modif { .btn_modif {
width: 10rem; width: 20rem;
background-color: #212121 !important; background-color: #212121 !important;
} }
.btn_enreg { .btn_enreg {
width: 10rem; width: 20rem;
background-color: green !important; background-color: green !important;
} }
@ -483,12 +483,14 @@
border-radius: 1rem; border-radius: 1rem;
//border-right: solid; //border-right: solid;
border-radius: 0%; border-radius: 0%;
text-align: left;
} }
.div_row_droite { .div_row_droite {
float: right; float: right;
border-width: 0.01rem; border-width: 0.01rem;
width: 48%; width: 48%;
text-align: right;
} }
.text_pwd_crit { .text_pwd_crit {
@ -502,6 +504,83 @@
font-style: italic; font-style: italic;
} }
// add on 01/08/2023
.div_row_gauche_image {
float: left;
//border:0px solid black;
border-width: 0.01rem;
border-radius: 1rem;
text-align: left;
}
.div_row_droite_image {
float: left;
//border:0px solid black;
border-width: 0.01rem;
border-radius: 1rem;
text-align: left;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
font-size: small;
padding-left: 0.2rem;
}
.tips_img_class {
font-size: small;
font-style: italic;
margin-left: 1rem !important;
text-align: left;
float: left;
width: 100%;
}
.img_class_logo {
display: block;
width: 168px;
height: 168px;
border-radius: 10px !important;
border: 1px solid black;
float: left;
}
.bton_supprime_image_class {
font-size: small;
text-align: center;
margin-left: 0px;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
padding: 5px;
padding-left: 10px;
padding-right: 10px;
border: 1px solid rgb(194, 186, 186);
border-radius: 10px;
background: white;
color: red;
margin-top: 0.5rem;
width: 15rem;
cursor: pointer;
}
.bton_supprime_image_class:hover {
box-shadow: 5px 1px 5px 1px rgb(0 0 0 / 25%);
}
.bton_image_class {
font-size: small;
text-align: center;
margin-left: 0px;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
padding: 5px;
padding-left: 10px;
padding-right: 10px;
border: 1px solid rgb(194, 186, 186);
border-radius: 10px;
width: 15rem;
}
.bton_image_class:hover {
box-shadow: 5px 1px 5px 1px rgb(0 0 0 / 25%);
}
} }
.css-mnn31 { .css-mnn31 {