11/01/24 - 21h30

recette2
cherif 2024-01-11 21:28:47 +01:00
parent 94898c374f
commit d8d3417601
8 changed files with 58498 additions and 139 deletions

57627
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -116,7 +116,7 @@
"react-scroll-to-top": "^3.0.0", "react-scroll-to-top": "^3.0.0",
"react-search-autocomplete": "^7.2.2", "react-search-autocomplete": "^7.2.2",
"react-select": "^5.2.2", "react-select": "^5.2.2",
"react-share": "^4.4.0", "react-share": "^4.4.1",
"react-simple-modal": "^1.1.5", "react-simple-modal": "^1.1.5",
"react-simple-modal-cb": "^2.0.4", "react-simple-modal-cb": "^2.0.4",
"react-simple-star-rating": "^4.1.1", "react-simple-star-rating": "^4.1.1",

View File

@ -125,7 +125,7 @@ const DisplayPartnerSession = (props) => {
{ field: 'id', headerName: 'id', hide: true }, { field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true }, { field: '_id', headerName: '_id', hide: true },
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true }, { field: 'class_internal_url', headerName: 'class_internal_url', hide: true },
{ field: 'code_session', headerName: 'Code session', hide: false, minWidth: 100, flex: 1, maxWidth: 150 }, { field: 'code_session', headerName: 'Code session', hide: false, minWidth: 100, flex: 1, },
{ field: 'session_title', headerName: 'Titre', hide: false, flex: 1, minWidth: 250 }, { field: 'session_title', headerName: 'Titre', hide: false, flex: 1, minWidth: 250 },
{ {
@ -8383,6 +8383,12 @@ const DisplayPartnerSession = (props) => {
// -- end convention // -- end convention
const New_Option_Type_Ressource = [
{ "id": "0", "label": "Employe", "value": "ressource_humaine" },
{ "id": "1", "label": "Materiel", "value": "ressource_materielle" },
]
return ( return (
<div className="displaypartnersession"> <div className="displaypartnersession">
@ -8703,7 +8709,7 @@ const DisplayPartnerSession = (props) => {
> >
<DialogTitle>Ajout ressource</DialogTitle> <DialogTitle>Ajout ressource </DialogTitle>
<DialogContent className="DialogContent_width"> <DialogContent className="DialogContent_width">
<DialogContentText> <DialogContentText>
{Dialog_seq_ressource_1_message} {Dialog_seq_ressource_1_message}
@ -8711,7 +8717,25 @@ const DisplayPartnerSession = (props) => {
<div className="session_caract_Dialog" > Type de ressource <div className="session_caract_Dialog" > Type de ressource
<TextField <Autocomplete
disablePortal
name="event_dialog_type_ressource"
id="event_dialog_type_ressource"
fullWidth
options={New_Option_Type_Ressource}
onChange={(event, value) => {
if (value && value.value) {
setDialog_seq_ressource_1_selected_type_ressource(value.value);
}
}}
renderInput={(params) => <TextField {...params} label="" />
}
/>
{/*<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_type_ressource" name="event_dialog_type_ressource"
@ -8730,7 +8754,7 @@ const DisplayPartnerSession = (props) => {
<MenuItem value="ressource_humaine" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Employé &nbsp;</MenuItem> <MenuItem value="ressource_humaine" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Employé &nbsp;</MenuItem>
<MenuItem value="ressource_materielle" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Materiel &nbsp;</MenuItem> <MenuItem value="ressource_materielle" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Materiel &nbsp;</MenuItem>
</TextField> </TextField>*/}
</div> </div>
@ -8794,7 +8818,7 @@ const DisplayPartnerSession = (props) => {
name="event_dialog_ressource_id" name="event_dialog_ressource_id"
id="event_dialog_ressource_id" id="event_dialog_ressource_id"
fullWidth fullWidth
options={New_Getall_Training_Employee_No_Filter_result} options={New_Getall_Training_Materiel_No_Filter_result}
onChange={(event, value) => { onChange={(event, value) => {
if (value && value._id) { if (value && value._id) {
@ -8892,7 +8916,7 @@ const DisplayPartnerSession = (props) => {
> >
<DialogTitle>Ajout ressource</DialogTitle> <DialogTitle>Ajout ressource </DialogTitle>
<DialogContent className="DialogContent_width"> <DialogContent className="DialogContent_width">
<DialogContentText> <DialogContentText>
{Dialog_tuteur_1_message} {Dialog_tuteur_1_message}

View File

@ -18,8 +18,10 @@ import add_plus from "../mysy_img/plus.png";
import excel_icone from "../mysy_img/excel_icone.png"; import excel_icone from "../mysy_img/excel_icone.png";
import participants from "../mysy_img/participants.png"; import participants from "../mysy_img/participants.png";
import fileDownload from 'js-file-download' import fileDownload from 'js-file-download'
import Autocomplete from '@mui/material/Autocomplete';
import Popup from 'reactjs-popup'; import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css'; import 'reactjs-popup/dist/index.css';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc"; import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
import DatePicker from "react-datepicker"; import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css"; import "react-datepicker/dist/react-datepicker.css";
@ -49,6 +51,10 @@ const Materiels = (props) => {
const [selectionModel_affectations, setSelectionModel_affectations] = React.useState([]); const [selectionModel_affectations, setSelectionModel_affectations] = React.useState([]);
const [rows_ressources_associes, setrows_ressources_associes] = useState([]);
const [selectionModel_ressources_associes, setselectionModel_ressources_associes] = React.useState([]);
var date_today_90j = new Date(); var date_today_90j = new Date();
date_today_90j.setDate(date_today_90j.getDate() + 90); date_today_90j.setDate(date_today_90j.getDate() + 90);
@ -65,6 +71,7 @@ const Materiels = (props) => {
const [p_filtre4_value, setp_filtre4_value] = useState(); const [p_filtre4_value, setp_filtre4_value] = useState();
const [gridline_id, setgridline_id] = useState(""); const [gridline_id, setgridline_id] = useState("");
const [gridline_affectation_id, setgridline_affectation_id] = useState("");
const columns = [ const columns = [
{ field: '_id', headerName: '_id', hide: true }, { field: '_id', headerName: '_id', hide: true },
@ -210,6 +217,81 @@ const Materiels = (props) => {
} }
]
const columns_ressources_associes = [
{ field: '_id', headerName: '_id', hide: true },
{ field: 'id', headerName: 'id', hide: true },
{ field: 'poste', headerName: 'Poste', flex: 1, hideable: false, },
{ field: 'date_du', headerName: 'Du', width: 150, hide: false, },
{ field: 'date_au', headerName: 'Au', width: 150, hide: false, },
{ field: 'related_target_collection_object', headerName: 'Cible', flex: 1, hide: false, },
{ field: 'related_target_collection_id_nom', headerName: 'Cible Nom', flex: 1, hide: false, },
{ field: 'target_related_collection', headerName: 'Type', hide: true },
{ field: 'target_related_collection_id', headerName: 'Type ID', hide: true },
{/*
field: "delete", headerName: 'Supprimer',
renderCell: (cellValues) => {
return (
<Popup
trigger={<Button
onClick={(event) => {
//handleClick_delete(event, cellValues);
}}
>
<CiTrash />
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, la fonction sera <i><font color="red"> définitivement supprimée</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_delete_affection(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
);
}
*/}
] ]
const myRef_head = useRef(null); const myRef_head = useRef(null);
@ -233,8 +315,12 @@ const Materiels = (props) => {
useEffect(() => { useEffect(() => {
Getall_Training_Materiel_No_Filter(); Getall_Training_Materiel_No_Filter();
Get_Materiel_Related_Target_Collection_Data(); Get_Materiel_Related_Target_Collection_Data();
window.scrollTo({
top: 0,
behavior: "smooth",
});
}, []) }, [])
const myRef = useRef(null) const myRef = useRef(null)
@ -251,9 +337,18 @@ const Materiels = (props) => {
const [add_One_Materiel, setadd_One_Materiel] = useState(); const [add_One_Materiel, setadd_One_Materiel] = useState();
function submenu_add_one_materiel() { function submenu_add_one_materiel() {
clean_detail_fields();
setdisplay_detail_materiel(); setdisplay_detail_materiel();
setadd_One_Materiel("1"); setadd_One_Materiel("1");
setsubmenu("detail_materiel"); setsubmenu("detail_materiel");
if (document.getElementById('myRef')) {
var divh = document.getElementById('myRef').offsetTop;
window.scrollTo({
top: divh,
behavior: "smooth",
});
}
} }
function Annule_add_one_materiel() { function Annule_add_one_materiel() {
@ -261,6 +356,30 @@ const Materiels = (props) => {
setadd_One_Materiel(); setadd_One_Materiel();
setsubmenu(""); setsubmenu("");
setSelectionModel([]); setSelectionModel([]);
if (document.getElementById('myRef_head')) {
var divh = document.getElementById('myRef_head').offsetTop;
window.scrollTo({
top: divh,
behavior: "smooth",
});
}
}
function clean_detail_fields() {
setp_one_detail_ref_interne("");
setp_one_detail_nom("");
setp_one_detail_description("");
setp_one_detail_detail("");
setp_one_detail_famille("");
setp_one_detail_marque("");
setp_one_detail_prix_achat("");
setp_one_detail_fournisseur("");
setp_one_detail_qty_stock("");
setgridline_id("");
setgridline_affectation_id("");
} }
function clean_affectation_fields() { function clean_affectation_fields() {
@ -479,6 +598,9 @@ const Materiels = (props) => {
hiddenFileInput_session.current.click(); hiddenFileInput_session.current.click();
} }
const [isLoading, setLoading] = useState();
const [Add_One_Materiel_Data_api, setAdd_One_Materiel_Data_api] = useState(); const [Add_One_Materiel_Data_api, setAdd_One_Materiel_Data_api] = useState();
const [Add_One_Materiel_Data_message, setAdd_One_Materiel_Data_message] = useState(); const [Add_One_Materiel_Data_message, setAdd_One_Materiel_Data_message] = useState();
const [Add_One_Materiel_Data_result, setAdd_One_Materiel_Data_result] = useState(); const [Add_One_Materiel_Data_result, setAdd_One_Materiel_Data_result] = useState();
@ -548,27 +670,30 @@ const Materiels = (props) => {
form.append("qty_stock", ""); form.append("qty_stock", "");
console.log(" form == ", form); //console.log(" form == ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Ressource_Materielle/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Ressource_Materielle/";
setLoading(true);
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
console.log(" In Add_One_Materiel_Data res.data.status = " + res.data.status); setLoading(false);
console.log(" In Add_One_Materiel_Data res.data.message r_class = " + res.data.message); //console.log(" In Add_One_Materiel_Data res.data.status = " + res.data.status);
//console.log(" In Add_One_Materiel_Data res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
setAdd_One_Materiel_Data_api("true"); setAdd_One_Materiel_Data_api("true");
setAdd_One_Materiel_Data_result(res.data.message); setAdd_One_Materiel_Data_result(res.data.message);
Getall_Training_Materiel(); Getall_Training_Materiel();
Get_Materiel_Related_Target_Collection_Data();
setmateriel_data_changed(""); setmateriel_data_changed("");
setmateriel_data_edit_mode(""); setmateriel_data_edit_mode("");
clean_detail_fields();
alert(res.data.message); alert(res.data.message);
if ( document.getElementById('myRef_head')) { if (document.getElementById('myRef_head')) {
var divh = document.getElementById('myRef_head').offsetTop; var divh = document.getElementById('myRef_head').offsetTop;
window.scrollTo({ window.scrollTo({
top: divh, top: divh,
@ -584,7 +709,7 @@ const Materiels = (props) => {
} }
}).catch((error) => { }).catch((error) => {
setLoading(false);
console.warn('UpdateStagiaireData : Not good man :( Add_One_Materiel_Data = ' + error); console.warn('UpdateStagiaireData : Not good man :( Add_One_Materiel_Data = ' + error);
setAdd_One_Materiel_Data_api("false"); setAdd_One_Materiel_Data_api("false");
alert(" Impossible d'ajouter le materiel"); alert(" Impossible d'ajouter le materiel");
@ -639,7 +764,7 @@ const Materiels = (props) => {
async function submenu_detail_materiel() { async function submenu_detail_materiel() {
setsubmenu("detail_materiel"); setsubmenu("detail_materiel");
await sleep(5); //await sleep(5);
/*if (!edit_session_form) { /*if (!edit_session_form) {
desableSessionFields(); desableSessionFields();
}*/ }*/
@ -655,6 +780,11 @@ const Materiels = (props) => {
document.getElementById("affectation").style.color = "black"; document.getElementById("affectation").style.color = "black";
} }
if (document.getElementById("ressource_associe")) {
document.getElementById("ressource_associe").style.backgroundColor = "#d8edfc";
document.getElementById("ressource_associe").style.color = "black";
}
//console.log(" ### employee_data_edit_mode = ", employee_data_edit_mode); //console.log(" ### employee_data_edit_mode = ", employee_data_edit_mode);
if (String(materiel_data_edit_mode) !== "1") if (String(materiel_data_edit_mode) !== "1")
disable_Materiel_DetailFields(); disable_Materiel_DetailFields();
@ -672,7 +802,7 @@ const Materiels = (props) => {
async function submenu_affectation() { async function submenu_affectation() {
setsubmenu("affectation"); setsubmenu("affectation");
await sleep(5); //await sleep(5);
/*if (!edit_session_form) { /*if (!edit_session_form) {
desableSessionFields(); desableSessionFields();
}*/ }*/
@ -687,9 +817,34 @@ const Materiels = (props) => {
document.getElementById("detail_materiel").style.color = "black"; document.getElementById("detail_materiel").style.color = "black";
} }
if (document.getElementById("ressource_associe")) {
document.getElementById("ressource_associe").style.backgroundColor = "#d8edfc";
document.getElementById("ressource_associe").style.color = "black";
} }
}
async function submenu_ressource_associe() {
setsubmenu("ressource_associe");
if (document.getElementById("ressource_associe")) {
document.getElementById("ressource_associe").style.backgroundColor = "#104277";
document.getElementById("ressource_associe").style.color = "white";
}
if (document.getElementById("affectation")) {
document.getElementById("affectation").style.backgroundColor = "#d8edfc";
document.getElementById("affectation").style.color = "black";
}
if (document.getElementById("detail_materiel")) {
document.getElementById("detail_materiel").style.backgroundColor = "#d8edfc";
document.getElementById("detail_materiel").style.color = "black";
}
}
function Display_Detail_Material_Data(materiel_id) { function Display_Detail_Material_Data(materiel_id) {
@ -841,6 +996,14 @@ const Materiels = (props) => {
setmateriel_data_changed(""); setmateriel_data_changed("");
setmateriel_data_edit_mode(""); setmateriel_data_edit_mode("");
if (document.getElementById('myRef')) {
var divh = document.getElementById('myRef').offsetTop;
window.scrollTo({
top: divh,
behavior: "smooth",
});
}
} }
@ -958,7 +1121,8 @@ const Materiels = (props) => {
Getall_Materiel_Affectation(materiel_id); Getall_Materiel_Affectation(materiel_id);
if ( document.getElementById('myRef')) { Getall_Materiel_Rattachement(materiel_id);
if (document.getElementById('myRef')) {
var divh = document.getElementById('myRef').offsetTop; var divh = document.getElementById('myRef').offsetTop;
window.scrollTo({ window.scrollTo({
top: divh, top: divh,
@ -1009,6 +1173,46 @@ const Materiels = (props) => {
} }
const [Getall_Materiel_Rattachement_api, setGetall_Materiel_Rattachement_api] = useState();
const [Getall_Materiel_Rattachement_message, setGetall_Materiel_Rattachement_message] = useState();
const [Getall_Materiel_Rattachement_result, setGetall_Materiel_Rattachement_result] = useState();
function Getall_Materiel_Rattachement(local_materiel_id) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("rm_id", local_materiel_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Ressource_Materielle_Rattachement/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Materiel_Rattachement res.data.status = " + res.data.status);
//console.log(" In Getall_Materiel_Rattachement res.data.message r_class = " + res.data.message);
setGetall_Materiel_Rattachement_api("true");
setGetall_Materiel_Rattachement_result(res.data.message);
}
else {
setGetall_Materiel_Rattachement_api("false");
setGetall_Materiel_Rattachement_message(res.data.message);
alert(res.data.message)
}
}).catch((error) => {
console.warn('Not good man :( Getall_Materiel_Rattachement = ', error);
setGetall_Materiel_Rattachement_api("false");
alert(" Impossible de recuperer la liste des ressources rattachées à ce materiel");
//setmyApimyApiMessage("")
})
}
const [isimgclassdeleted, setisimgclassdeleted] = useState(""); const [isimgclassdeleted, setisimgclassdeleted] = useState("");
const [isimgclassdeleted_message, setisimgclassdeleted_message] = useState(""); const [isimgclassdeleted_message, setisimgclassdeleted_message] = useState("");
const [isimgclassSaved, setisimgclassSaved] = useState(""); const [isimgclassSaved, setisimgclassSaved] = useState("");
@ -1095,6 +1299,9 @@ const Materiels = (props) => {
}; };
const [selected_affectation_id, set_selected_affectation_id] = useState(); const [selected_affectation_id, set_selected_affectation_id] = useState();
const [New_Get_Materiel_Related_Target_Collection_Data_result, setNew_Get_Materiel_Related_Target_Collection_Data_result] = useState();
const [Get_Materiel_Related_Target_Collection_Data_api, setGet_Materiel_Related_Target_Collection_Data_api] = useState(); const [Get_Materiel_Related_Target_Collection_Data_api, setGet_Materiel_Related_Target_Collection_Data_api] = useState();
const [Get_Materiel_Related_Target_Collection_Data_message, setGet_Materiel_Related_Target_Collection_Data_message] = useState(); const [Get_Materiel_Related_Target_Collection_Data_message, setGet_Materiel_Related_Target_Collection_Data_message] = useState();
const [Get_Materiel_Related_Target_Collection_Data_result, setGet_Materiel_Related_Target_Collection_Data_result] = useState(); const [Get_Materiel_Related_Target_Collection_Data_result, setGet_Materiel_Related_Target_Collection_Data_result] = useState();
@ -1110,15 +1317,41 @@ const Materiels = (props) => {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Related_Target_Materiel_Collection_Data/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Related_Target_Materiel_Collection_Data/";
setLoading(true);
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
setLoading(false);
//console.log(" In Get_Materiel_Related_Target_Collection_Data res.data.status = " + res.data.status); //console.log(" In Get_Materiel_Related_Target_Collection_Data res.data.status = " + res.data.status);
//console.log(" In Get_Materiel_Related_Target_Collection_Data res.data.message r_class = " + res.data.message); //console.log(" In Get_Materiel_Related_Target_Collection_Data res.data.message r_class = " + res.data.message);
setGet_Materiel_Related_Target_Collection_Data_api("true"); setGet_Materiel_Related_Target_Collection_Data_api("true");
setGet_Materiel_Related_Target_Collection_Data_result(res.data.message); setGet_Materiel_Related_Target_Collection_Data_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var local_related_target_collection = JSON.parse(x).related_target_collection;
var local_related_target_collection_id = JSON.parse(x).related_target_collection_id;
var local_related_target_collection_id_nom = JSON.parse(x).related_target_collection_id_nom;
//---
var node = {
"related_target_collection": local_related_target_collection,
"related_target_collection_id": local_related_target_collection_id,
"related_target_collection_id_nom": local_related_target_collection_id_nom,
"label": local_related_target_collection_id_nom,
};
//console.log(" --- node = ", node);
new_data2.push(node);
});
if (new_data2.length > 0)
setNew_Get_Materiel_Related_Target_Collection_Data_result(new_data2);
} }
else { else {
setGet_Materiel_Related_Target_Collection_Data_api("false"); setGet_Materiel_Related_Target_Collection_Data_api("false");
@ -1127,6 +1360,8 @@ const Materiels = (props) => {
} }
}).catch((error) => { }).catch((error) => {
setLoading(false);
console.warn('Not good man :( Get_Materiel_Related_Target_Collection_Data = ', error); console.warn('Not good man :( Get_Materiel_Related_Target_Collection_Data = ', error);
setGet_Materiel_Related_Target_Collection_Data_api("false"); setGet_Materiel_Related_Target_Collection_Data_api("false");
alert(" Impossible de recuperer les cibles d'affectation"); alert(" Impossible de recuperer les cibles d'affectation");
@ -1275,7 +1510,7 @@ const Materiels = (props) => {
//Get_Materiel_Data(selected_id); //Get_Materiel_Data(selected_id);
Display_Detail_Material_Data(selected_id); Display_Detail_Material_Data(selected_id);
if ( document.getElementById('myRef_head')) { if (document.getElementById('myRef_head')) {
var divh = document.getElementById('myRef_head').offsetTop; var divh = document.getElementById('myRef_head').offsetTop;
window.scrollTo({ window.scrollTo({
top: divh, top: divh,
@ -1362,14 +1597,14 @@ const Materiels = (props) => {
const [p_detail_ref_interne, setp_detail_ref_interne] = useState(); const [p_detail_ref_interne, setp_detail_ref_interne] = useState();
const [p_detail_nom, setp_detail_nom] = useState(); const [p_detail_nom, setp_detail_nom] = useState();
const [p_detail_description, setp_detail_description] = useState(); const [p_detail_description, setp_detail_description] = useState("");
const [p_detail_detail, setp_detail_detail] = useState(); const [p_detail_detail, setp_detail_detail] = useState("");
const [p_detail_famille, setp_detail_famille] = useState(); const [p_detail_famille, setp_detail_famille] = useState("");
const [p_detail_marque, setp_detail_marque] = useState(); const [p_detail_marque, setp_detail_marque] = useState("");
const [p_detail_type, setp_detail_type] = useState(); const [p_detail_type, setp_detail_type] = useState("");
const [p_detail_prix_achat, setp_detail_prix_achat] = useState(); const [p_detail_prix_achat, setp_detail_prix_achat] = useState("1");
const [p_detail_fournisseur, setp_detail_fournisseur] = useState(); const [p_detail_fournisseur, setp_detail_fournisseur] = useState("");
const [p_detail_qty_stock, setp_detail_qty_stock] = useState(); const [p_detail_qty_stock, setp_detail_qty_stock] = useState("1");
// ------------ // ------------
@ -1416,7 +1651,7 @@ const Materiels = (props) => {
setAdd_new_affectation("1"); setAdd_new_affectation("1");
if ( document.getElementById('myRef_new_affectation')) { if (document.getElementById('myRef_new_affectation')) {
var divh = document.getElementById('myRef_new_affectation').offsetTop; var divh = document.getElementById('myRef_new_affectation').offsetTop;
window.scrollTo({ window.scrollTo({
top: divh, top: divh,
@ -1495,11 +1730,13 @@ const Materiels = (props) => {
setAffectation_data_changed(""); setAffectation_data_changed("");
setedite_affectation_form(""); setedite_affectation_form("");
Getall_Materiel_Affectation(selected_id); Getall_Materiel_Affectation(selected_id);
Getall_Materiel_Rattachement(selected_id);
setSelectionModel_affectations([]); setSelectionModel_affectations([]);
setgridline_affectation_id('');
alert(" La mise à jour été correctement faite."); alert(" La mise à jour été correctement faite.");
if ( document.getElementById('myRef_new_affectation')) { if (document.getElementById('myRef_new_affectation')) {
var divh = document.getElementById('myRef_new_affectation').offsetTop; var divh = document.getElementById('myRef_new_affectation').offsetTop;
window.scrollTo({ window.scrollTo({
top: divh, top: divh,
@ -1621,6 +1858,7 @@ const Materiels = (props) => {
setedite_affectation_form(); setedite_affectation_form();
setdisplay_affectation(); setdisplay_affectation();
setSelectionModel_affectations([]); setSelectionModel_affectations([]);
setgridline_affectation_id('');
} }
function Fermer_nouvelle_Affectation_Fields() { function Fermer_nouvelle_Affectation_Fields() {
@ -1629,6 +1867,7 @@ const Materiels = (props) => {
setdisplay_affectation(); setdisplay_affectation();
setAdd_new_affectation(); setAdd_new_affectation();
setSelectionModel_affectations([]); setSelectionModel_affectations([]);
setgridline_affectation_id('');
} }
const [Get_Given_Materiel_Affectation_api, setGet_Given_Materiel_Affectation_api] = useState(); const [Get_Given_Materiel_Affectation_api, setGet_Given_Materiel_Affectation_api] = useState();
@ -1782,10 +2021,13 @@ const Materiels = (props) => {
setedite_affectation_form(""); setedite_affectation_form("");
setAdd_new_affectation(""); setAdd_new_affectation("");
Getall_Materiel_Affectation(selected_id); Getall_Materiel_Affectation(selected_id);
Getall_Materiel_Rattachement(selected_id);
setSelectionModel_affectations([]); setSelectionModel_affectations([]);
setgridline_affectation_id('');
alert(" L'affectation a été ajoutée."); alert(" L'affectation a été ajoutée.");
if ( document.getElementById('myRef_new_affectation')) { if (document.getElementById('myRef_new_affectation')) {
var divh = document.getElementById('myRef_new_affectation').offsetTop; var divh = document.getElementById('myRef_new_affectation').offsetTop;
window.scrollTo({ window.scrollTo({
top: divh, top: divh,
@ -1823,7 +2065,7 @@ const Materiels = (props) => {
set_selected_affectation_id(affectation_id); set_selected_affectation_id(affectation_id);
if ( document.getElementById('myRef_new_affectation')) { if (document.getElementById('myRef_new_affectation')) {
var divh = document.getElementById('myRef_new_affectation').offsetTop; var divh = document.getElementById('myRef_new_affectation').offsetTop;
window.scrollTo({ window.scrollTo({
top: divh, top: divh,
@ -1870,6 +2112,7 @@ const Materiels = (props) => {
setedite_affectation_form(); setedite_affectation_form();
setdisplay_affectation(); setdisplay_affectation();
Getall_Materiel_Affectation(local_rh_id); Getall_Materiel_Affectation(local_rh_id);
Getall_Materiel_Rattachement(local_rh_id);
alert(" La fonction a été correctement supprimée.") alert(" La fonction a été correctement supprimée.")
} }
else { else {
@ -1931,6 +2174,7 @@ const Materiels = (props) => {
function clean_all_filters() { function clean_all_filters() {
setgridline_id(''); setgridline_id('');
setgridline_affectation_id('');
setp_filtre1(); setp_filtre1();
setp_filtre1_value(); setp_filtre1_value();
@ -1948,6 +2192,7 @@ const Materiels = (props) => {
clean_affectation_fields(); clean_affectation_fields();
clean_nouvelle_affectation_fields(); clean_nouvelle_affectation_fields();
setSelectionModel_affectations([]); setSelectionModel_affectations([]);
setgridline_affectation_id('');
setSelectionModel([]); setSelectionModel([]);
setsubmenu(""); setsubmenu("");
@ -1963,8 +2208,22 @@ const Materiels = (props) => {
} }
const New_Option = [
{ "id": "0", "label": "Employe", "value": "ressource_humaine" },
{ "id": "1", "label": "Formation", "value": "myclass" },
{ "id": "2", "label": "Session de formation", "value": "session_formation" },
{ "id": "2", "label": "Materiel", "value": "ressource_materielle" },
]
return ( return (
<div className="materiels"> <div className="materiels">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
<Dialog <Dialog
open={Dialog_1_open} open={Dialog_1_open}
onClose={Dialog_1_handleClose} onClose={Dialog_1_handleClose}
@ -2380,8 +2639,9 @@ const Materiels = (props) => {
checkboxSelection checkboxSelection
onSelectionModelChange={(newSelectionModel) => { onSelectionModelChange={(newSelectionModel) => {
setSelectionModel(newSelectionModel); setSelectionModel(newSelectionModel);
if (newSelectionModel.length === 1) /*if (newSelectionModel.length === 1)
handleClick_edit_materiel_From_Line(newSelectionModel); handleClick_edit_materiel_From_Line(newSelectionModel);
*/
if (newSelectionModel.length !== 1) { if (newSelectionModel.length !== 1) {
setsubmenu(); setsubmenu();
setdisplay_detail_materiel(); setdisplay_detail_materiel();
@ -2411,8 +2671,8 @@ const Materiels = (props) => {
className="datagridclass" className="datagridclass"
onRowDoubleClick={(newSelectionModel) => { onRowDoubleClick={(newSelectionModel) => {
setgridline_affectation_id('');
setgridline_id(newSelectionModel.row.id); setgridline_id(newSelectionModel.row.id);
handleClick_edit_materiel_From_Line(newSelectionModel.row.id); handleClick_edit_materiel_From_Line(newSelectionModel.row.id);
}} }}
@ -2526,12 +2786,13 @@ const Materiels = (props) => {
</div> </div>
<div className="div_row" ref={myRef} id="myRef"> &nbsp; </div>
{String(submenu) === "detail_materiel" && String(add_One_Materiel) !== "1" && <div className="div_row"> {String(submenu) === "detail_materiel" && String(add_One_Materiel) !== "1" && <div className="div_row">
<div className="div_row"> <div className="div_row">
<Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button> <Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_ressource_associe} className="detail_class_submenu" id='ressource_associe' name='affectation'>Ressources Associées </Button>
</div> </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Materiel </nav> <nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Materiel </nav>
<div className="div_row" style={{ "border": "None" }}> <div className="div_row" style={{ "border": "None" }}>
@ -2588,7 +2849,7 @@ const Materiels = (props) => {
</div> </div>
</div> </div>
<div className="session_data" > <div className="session_data" >
<div className="session_caract"> Ref. Interne<br /> <div className="session_caract"> <b>Ref. Interne </b> <br />
<TextField <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required required
@ -2610,7 +2871,7 @@ const Materiels = (props) => {
/> />
</div> </div>
<div className="session_caract"> Nom<br /> <div className="session_caract"> <b> Nom </b> <br />
<TextField <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required required
@ -2852,10 +3113,11 @@ const Materiels = (props) => {
<div className="div_row"> <div className="div_row">
<Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button> <Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_ressource_associe} className="detail_class_submenu" id='ressource_associe' name='affectation'>Ressources Associées </Button>
</div> </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Ajouter un nouveau materiel </nav> <nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Ajouter un nouveau materiel </nav>
<div className="session_data" > <div className="session_data" >
<div className="session_caract"> Ref. Interne<br /> <div className="session_caract"> <b>Ref. Interne </b> <br />
<TextField <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required required
@ -2877,7 +3139,7 @@ const Materiels = (props) => {
/> />
</div> </div>
<div className="session_caract"> Nom<br /> <div className="session_caract"> <b> Nom </b><br />
<TextField <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required required
@ -3106,8 +3368,9 @@ const Materiels = (props) => {
<div className="div_row"> <div className="div_row">
<Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button> <Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button> <Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_ressource_associe} className="detail_class_submenu" id='ressource_associe' name='affectation'>Ressources Associées </Button>
</div> </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Affectation </nav> <nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Affectation</nav>
<div className="session_data"> <div className="session_data">
<div style={{ "border": "None" }}> <div style={{ "border": "None" }}>
@ -3118,6 +3381,24 @@ const Materiels = (props) => {
height: 300, height: 300,
width: '100%', width: '100%',
paddingRight: '1px', paddingRight: '1px',
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
'& .line--statut--selected': {
backgroundColor: '#FBF2EF',
color: 'black',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: 'black',
},
@ -3127,12 +3408,13 @@ const Materiels = (props) => {
checkboxSelection checkboxSelection
onSelectionModelChange={(newSelectionModel) => { onSelectionModelChange={(newSelectionModel) => {
setSelectionModel_affectations(newSelectionModel); setSelectionModel_affectations(newSelectionModel);
if (newSelectionModel.length === 1) /*if (newSelectionModel.length === 1)
handleClick_edit_affectation_From_Line(newSelectionModel); handleClick_edit_affectation_From_Line(newSelectionModel);
*/
if (newSelectionModel.length !== 1) { if (newSelectionModel.length !== 1) {
setedite_affectation_form(); setedite_affectation_form();
setdisplay_affectation(); setdisplay_affectation();
setgridline_affectation_id('');
} }
}} }}
selectionModel={selectionModel_affectations} selectionModel={selectionModel_affectations}
@ -3163,43 +3445,30 @@ const Materiels = (props) => {
components={{ components={{
Toolbar: GridToolbar, Toolbar: GridToolbar,
}} }}
/*//sx={datagridSx}
getCellClassName={(params) => { onRowDoubleClick={(newSelectionModel) => {
//field === 'distantiel'
if (params.field === 'distantiel' && String(params.value) === "1") { setgridline_affectation_id(newSelectionModel.row.id);
return 'cell--distantiel'; handleClick_edit_affectation_From_Line(newSelectionModel.row.id);
}
if (params.field === "presentiel" && String(params.value) == "1") {
return 'cell--presentiel';
}
//field === "statut" }}
if (params.field === "status" && String(params.value) == "0") {
return 'cell--statut--preinscrit';
}
if (params.field === "status" && String(params.value) == "1") { getRowClassName={(params) => {
return 'cell--statut--inscrit'; // Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_affectation_id)) {
return 'line--statut--selected';
} }
else if (parseInt(String(params.row.id)) % 2 === 0) {
if (params.field === "status" && String(params.value) == "-1") { return 'line--statut--pair';
return 'cell--statut--annule'; }
else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair';
} }
}} }}
getRowClassName={(params) => {
if (String(params.row.status) === "-1") {
return 'line--statut--annule';
}
if (String(params.row.status) === "0") {
return 'line--statut--preinscrit';
}
if (String(params.row.status) === "1") {
return 'line--statut--inscrit';
}
}}*/
/> />
@ -3269,7 +3538,30 @@ const Materiels = (props) => {
</div>} </div>}
{String(edite_affectation_form) === "1" && <div className="session_caract">Cible <br /> {String(edite_affectation_form) === "1" && <div className="session_caract">Cible <br />
<TextField
<Autocomplete
disablePortal
name="affect_cible"
id="affect_cible"
className="disabled_style enable_style"
fullWidth
options={New_Option}
onChange={(event, value) => {
if (value && value.value) {
setp_affect_cible(value.value);
setAffectation_data_changed("1");
}
}}
renderInput={(params) => <TextField {...params} label="" />
}
/>
{/*<TextField
name="affect_cible" name="affect_cible"
id="affect_cible" id="affect_cible"
select select
@ -3291,7 +3583,7 @@ const Materiels = (props) => {
<MenuItem value="session_formation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Session de formation &nbsp;</MenuItem> <MenuItem value="session_formation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Session de formation &nbsp;</MenuItem>
<MenuItem value="" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Aucun &nbsp;</MenuItem> <MenuItem value="" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Aucun &nbsp;</MenuItem>
</TextField> </TextField>*/}
</div>} </div>}
@ -3313,7 +3605,27 @@ const Materiels = (props) => {
</div>} </div>}
{String(edite_affectation_form) === "1" && <div className="session_caract">Cible Nom <br /> {String(edite_affectation_form) === "1" && <div className="session_caract">Cible Nom <br />
<TextField <Autocomplete
disablePortal
name="affect_cible_nom"
id="affect_cible_nom"
className="disabled_style enable_style"
fullWidth
options={New_Get_Materiel_Related_Target_Collection_Data_result.filter((local_mymanager) => local_mymanager.related_target_collection === p_affect_cible)}
onChange={(event, value) => {
if (value && value) {
setp_affect_cible_nom(value.related_target_collection_id);
setAffectation_data_changed("1");
}
}}
renderInput={(params) => <TextField {...params} label="" />
}
/>
{/*<TextField
name="affect_cible_nom" name="affect_cible_nom"
id="affect_cible_nom" id="affect_cible_nom"
select select
@ -3339,7 +3651,7 @@ const Materiels = (props) => {
))} ))}
</TextField> </TextField>*/}
</div>} </div>}
@ -3432,6 +3744,7 @@ const Materiels = (props) => {
value={p_affect_comment} value={p_affect_comment}
onChange={(e) => { onChange={(e) => {
setp_affect_comment(e.target.value); setp_affect_comment(e.target.value);
setAffectation_data_changed("1");
}} }}
@ -3512,7 +3825,27 @@ const Materiels = (props) => {
</div> </div>
<div className="session_caract">Cible <br /> <div className="session_caract">Cible <br />
<TextField <Autocomplete
disablePortal
name="one_affect_cible"
id="one_affect_cible"
className="disabled_style enable_style"
fullWidth
options={New_Option}
onChange={(event, value) => {
if (value && value.value) {
setp_one_affect_cible(value.value);
}
}}
renderInput={(params) => <TextField {...params} label="" />
}
/>
{/* <TextField
name="one_affect_cible" name="one_affect_cible"
id="one_affect_cible" id="one_affect_cible"
select select
@ -3532,11 +3865,11 @@ const Materiels = (props) => {
<MenuItem value="session_formation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Session de formation &nbsp;</MenuItem> <MenuItem value="session_formation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Session de formation &nbsp;</MenuItem>
<MenuItem value="" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Aucun &nbsp;</MenuItem> <MenuItem value="" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Aucun &nbsp;</MenuItem>
</TextField> </TextField>*/}
</div> </div>
<div className="session_caract">Cible Nom <br /> {/* <div className="session_caract">Cible Nom <br />
<TextField <TextField
name="one_affect_cible_nom" name="one_affect_cible_nom"
id="one_affect_cible_nom" id="one_affect_cible_nom"
@ -3564,6 +3897,29 @@ const Materiels = (props) => {
</TextField> </TextField>
</div>*/}
<div className="session_caract">Cible Nom work <br />
<Autocomplete
disablePortal
name="one_affect_cible_nom"
id="one_affect_cible_nom"
className="disabled_style enable_style"
fullWidth
options={New_Get_Materiel_Related_Target_Collection_Data_result.filter((local_mymanager) => local_mymanager.related_target_collection === p_one_affect_cible).filter((local_mymanager2) => local_mymanager2.related_target_collection_id !== selected_id)}
onChange={(event, value) => {
if (value && value) {
setp_one_affect_cible_nom(value.related_target_collection_id);
console.log(" ### value = ", value);
}
}}
renderInput={(params) => <TextField {...params} label="" />
}
/>
</div> </div>
@ -3656,7 +4012,124 @@ const Materiels = (props) => {
</div>} </div>}
</div>} </div>}
<div ref={myRef} id="myRef"> &nbsp;</div>
{String(submenu) === "ressource_associe" && <div className="div_row">
<div className="div_row">
<Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
<Button variant="outlined" onClick={submenu_ressource_associe} className="detail_class_submenu" id='ressource_associe' name='affectation'>Ressources Associées </Button>
</div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Ressources Associées</nav>
<div className="session_data">
<div style={{ "border": "None" }}>
<div style={{ height: 350, width: '100%', paddingRight: '1px' }}>
&nbsp;
<Box
sx={{
height: 300,
width: '100%',
paddingRight: '1px',
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
'& .line--statut--selected': {
backgroundColor: '#FBF2EF',
color: 'black',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: 'black',
},
}}
>
<DataGrid
// checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setselectionModel_ressources_associes(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_affectation_From_Line(newSelectionModel);
*/
if (newSelectionModel.length !== 1) {
setedite_affectation_form();
setdisplay_affectation();
setgridline_affectation_id('');
}
}}
selectionModel={selectionModel_affectations}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={Getall_Materiel_Rattachement_result.map((item, index) => (
{
id: index,
_id: JSON.parse(item)._id,
poste: JSON.parse(item).poste,
date_du: JSON.parse(item).date_du,
date_au: JSON.parse(item).date_au,
target_related_collection: JSON.parse(item).target_related_collection,
target_related_collection_id: JSON.parse(item).target_related_collection_id,
related_target_collection_id_nom: JSON.parse(item).related_target_collection_id_nom,
related_target_collection_object: JSON.parse(item).related_target_collection_object,
}
))}
columns={columns_ressources_associes}
pageSize={10}
className="datagridclass"
rowsPerPageOptions={[10]}
//disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
onRowDoubleClick={(newSelectionModel) => {
}}
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_affectation_id)) {
return 'line--statut--selected';
}
else if (parseInt(String(params.row.id)) % 2 === 0) {
return 'line--statut--pair';
}
else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair';
}
}}
/>
</Box>
<br />
</div>
</div>
</div>
</div>}
</div > </div >
); );

View File

@ -18,7 +18,7 @@ import img_2 from "../mysy_img/lms.png";
import img_3_old from "../mysy_img/3.jpg"; import img_3_old from "../mysy_img/3.jpg";
import img_3 from "../mysy_img/crm.png"; import img_3 from "../mysy_img/crm.png";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import ReactPlayer from 'react-player/lazy'
@ -272,6 +272,48 @@ const QuiSommesNous_v2 = () => {
<div style={{ "width": "100%", "float": "left", "border": "1px solid" }}>
<div className="div_row_center_contact" style={{ width: '100%' }}>
<Button variant="outlined" onClick={"menu_info"} className="bton_contact_nous"> Découvrez quelques-unes de nos fonctionnalités </Button>
</div>
<div className="div_row_center_video_ftion" >
<div className="div_row_center_enphasis" >
<div className="detail_block_video_ftion">
<div className="detail_text_video_ftion">
<b className="chapitre"> Le catalogue de Formation </b> <br /> <br />
Import Excel de formation<br />
Creation unitaire<br />
Modification, Suppression, Export, etc<br />
</div>
<div className="detail_img_video_ftion">
<div className="only_mobile">
<b className="chapitre"> Le catalogue de Formation </b> <br /> <br />
Import Excel de formation<br />
Creation unitaire<br />
Modification, Suppression, Export, etc<br />
</div>
<ReactPlayer
controls={true}
light="https://img.mysy-training.com/video/mysy_catalog_thumb.png"
playing
url='https://img.mysy-training.com/video/MyS_Creation_Catalogue.mp4'
width="100%"
/>
</div>
</div>
</div>
</div>
</div>
<div className="div_row_where"> <div className="div_row_where">

View File

@ -171,7 +171,7 @@ const SideBar = () => {
} }
</Menu>} </Menu>}
{String(environnment) === "REC" && {(String(environnment) === "REC" || String(environnment) === "DEM") &&
<Menu className="ch_burger_menu"> <Menu className="ch_burger_menu">
{String(someoneconnected) !== String("1") && <NavLink exact to={"/Connexion"} activeClassName={"nav-active"}> {String(someoneconnected) !== String("1") && <NavLink exact to={"/Connexion"} activeClassName={"nav-active"}>
Connexion Utilisateur Connexion Utilisateur

View File

@ -1719,7 +1719,7 @@
margin-right: 1rem; margin-right: 1rem;
padding: 0.3rem; padding: 0.3rem;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
min-width: 12rem; min-width: 15rem;
text-align: center; text-align: center;
border: 1px solid #9cf; border: 1px solid #9cf;
color: #3b3e40; color: #3b3e40;

View File

@ -4,7 +4,16 @@
font-size: 0.1rem; font-size: 0.1rem;
} }
.only_mobile{
display: none;
}
@media only screen and (max-width: 600px) { @media only screen and (max-width: 600px) {
.only_mobile{
width: 100%;
display: block;
}
.media_sociaux { .media_sociaux {
svg { svg {
margin-top: 0 !important; margin-top: 0 !important;
@ -380,7 +389,7 @@
background: white; background: white;
} }
.detail_block{ .detail_block {
width: 100%; width: 100%;
float: left; float: left;
display: flex; display: flex;
@ -400,6 +409,48 @@
} }
.detail_img_video_ftion {
width: 100%;
float: left;
margin: auto;
}
.div_row_center_video_ftion {
width: 100%;
text-align: left;
padding: 5px;
margin-bottom: 4rem;
border-radius: 0px;
margin-left: auto;
margin-right: auto;
min-height: 10 rem;
height: rem;
text-align: center;
font-size: large;
line-height: normal;
letter-spacing: normal;
color: #3b3e40;
font-family: Arial, Helvetica, sans-serif;
margin-top: 3rem;
}
.detail_block_video_ftion {
width: 95%;
margin-left: auto;
margin-right: auto;
display: flex;
border-bottom: 10px solid;
border-top: 10px solid;
padding-left: 10px;
}
.detail_text_video_ftion {
display: none;
}
} }
@media only screen and (min-width: 601px) and (max-width: 991px) { @media only screen and (min-width: 601px) and (max-width: 991px) {
@ -796,7 +847,7 @@
background: white; background: white;
} }
.detail_block{ .detail_block {
width: 100%; width: 100%;
float: left; float: left;
display: flex; display: flex;
@ -817,6 +868,53 @@
margin: auto; margin: auto;
} }
.detail_img_video_ftion {
width: 50%;
float: left;
margin: auto;
}
.div_row_center_video_ftion {
width: 100%;
text-align: left;
padding: 5px;
margin-bottom: 4rem;
border-radius: 0px;
margin-left: auto;
margin-right: auto;
min-height: 10 rem;
height: rem;
text-align: center;
font-size: large;
line-height: normal;
letter-spacing: normal;
color: #3b3e40;
font-family: Arial, Helvetica, sans-serif;
margin-top: 3rem;
}
.detail_block_video_ftion {
width: 95%;
margin-left: auto;
margin-right: auto;
display: flex;
border-bottom: 10px solid;
border-top: 10px solid;
padding-left: 10px;
}
.detail_text_video_ftion {
width: 50%;
float: left;
margin: auto;
text-align: justify;
padding-left: 2rem;
}
} }
@media only screen and (min-width: 992px) and (max-width: 1199px) { @media only screen and (min-width: 992px) and (max-width: 1199px) {
@ -1214,14 +1312,14 @@
} }
.main_sub_div { .main_sub_div {
height: 180rem; height: 280rem;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
width: 90%; width: 90%;
background: white; background: white;
} }
.detail_block{ .detail_block {
width: 100%; width: 100%;
float: left; float: left;
display: flex; display: flex;
@ -1242,6 +1340,53 @@
} }
.detail_img_video_ftion {
width: 50%;
float: left;
margin: auto;
}
.div_row_center_video_ftion {
width: 100%;
text-align: left;
padding: 5px;
margin-bottom: 4rem;
border-radius: 0px;
margin-left: auto;
margin-right: auto;
min-height: 10 rem;
height: rem;
text-align: center;
font-size: large;
line-height: normal;
letter-spacing: normal;
color: #3b3e40;
font-family: Arial, Helvetica, sans-serif;
margin-top: 3rem;
}
.detail_block_video_ftion {
width: 95%;
margin-left: auto;
margin-right: auto;
display: flex;
border-bottom: 10px solid;
border-top: 10px solid;
padding-left: 10px;
}
.detail_text_video_ftion {
width: 50%;
float: left;
margin: auto;
text-align: justify;
padding-left: 2rem;
}
} }
@media only screen and (min-width: 1200px) { @media only screen and (min-width: 1200px) {
@ -1469,6 +1614,7 @@
margin-top: 3rem; margin-top: 3rem;
} }
.div_row_center_contact { .div_row_center_contact {
//border: 0.01rem solid #000; //border: 0.01rem solid #000;
width: 90%; width: 90%;
@ -1641,7 +1787,7 @@
} }
.main_sub_div { .main_sub_div {
height: 230rem; min-height: 280rem;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
width: 90%; width: 90%;
@ -1649,7 +1795,7 @@
padding-top: 2rem !important; padding-top: 2rem !important;
} }
.detail_block{ .detail_block {
width: 100%; width: 100%;
float: left; float: left;
display: flex; display: flex;
@ -1668,6 +1814,53 @@
margin: auto; margin: auto;
} }
.div_row_center_video_ftion {
width: 100%;
text-align: left;
padding: 5px;
margin-bottom: 4rem;
border-radius: 0px;
margin-left: auto;
margin-right: auto;
min-height: 10 rem;
height: rem;
text-align: center;
font-size: large;
line-height: normal;
letter-spacing: normal;
color: #3b3e40;
font-family: Arial, Helvetica, sans-serif;
}
.detail_block_video_ftion {
width: 95%;
margin-left: auto;
margin-right: auto;
display: flex;
border-bottom: 10px solid;
border-top: 10px solid;
padding-left: 10px;
min-height: 25rem !important;
}
.detail_text_video_ftion {
width: 50%;
float: left;
margin: auto;
text-align: justify;
padding-left: 2rem;
}
.detail_img_video_ftion {
width: 50%;
float: left;
margin: auto;
}
} }
// end media // end media