05/05/2024 - 13h30

recette2
cherif 2024-05-05 13:49:54 +02:00
parent 39496af6dd
commit b7f4069936
7 changed files with 3599 additions and 143 deletions

55
package-lock.json generated
View File

@ -21,6 +21,7 @@
"@fullcalendar/core": "^6.1.11", "@fullcalendar/core": "^6.1.11",
"@fullcalendar/daygrid": "^6.1.9", "@fullcalendar/daygrid": "^6.1.9",
"@fullcalendar/interaction": "^6.1.9", "@fullcalendar/interaction": "^6.1.9",
"@fullcalendar/list": "^6.1.11",
"@fullcalendar/multimonth": "^6.1.11", "@fullcalendar/multimonth": "^6.1.11",
"@fullcalendar/react": "^6.1.9", "@fullcalendar/react": "^6.1.9",
"@fullcalendar/resource": "^6.1.11", "@fullcalendar/resource": "^6.1.11",
@ -65,6 +66,7 @@
"downloadjs": "^1.4.7", "downloadjs": "^1.4.7",
"draft-js": "^0.11.7", "draft-js": "^0.11.7",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"fullcalendar": "^6.1.11",
"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",
@ -3245,11 +3247,19 @@
} }
}, },
"node_modules/@fullcalendar/interaction": { "node_modules/@fullcalendar/interaction": {
"version": "6.1.9", "version": "6.1.11",
"resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.9.tgz", "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.11.tgz",
"integrity": "sha512-I3FGnv0kKZpIwujg3HllbKrciNjTqeTYy3oJG226oAn7lV6wnrrDYMmuGmA0jPJAGN46HKrQqKN7ItxQRDec4Q==", "integrity": "sha512-ynOKjzuPwEAMgTQ6R/Z2zvzIIqG4p8/Qmnhi1q0vzPZZxSIYx3rlZuvpEK2WGBZZ1XEafDOP/LGfbWoNZe+qdg==",
"peerDependencies": { "peerDependencies": {
"@fullcalendar/core": "~6.1.9" "@fullcalendar/core": "~6.1.11"
}
},
"node_modules/@fullcalendar/list": {
"version": "6.1.11",
"resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.11.tgz",
"integrity": "sha512-9Qx8uvik9pXD12u50FiHwNzlHv4wkhfsr+r03ycahW7vEeIAKCsIZGTkUfFP+96I5wHihrfLazu1cFQG4MPiuw==",
"peerDependencies": {
"@fullcalendar/core": "~6.1.11"
} }
}, },
"node_modules/@fullcalendar/multimonth": { "node_modules/@fullcalendar/multimonth": {
@ -14969,6 +14979,19 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
}, },
"node_modules/fullcalendar": {
"version": "6.1.11",
"resolved": "https://registry.npmjs.org/fullcalendar/-/fullcalendar-6.1.11.tgz",
"integrity": "sha512-OOlx/+yFn9k5LnucRzcDmShONBecOVKNN6HHWe8jl7hGzQBmkxO+iD6eBokO6p24EY1PjATqhZkhJqHiCUgx3A==",
"dependencies": {
"@fullcalendar/core": "~6.1.11",
"@fullcalendar/daygrid": "~6.1.11",
"@fullcalendar/interaction": "~6.1.11",
"@fullcalendar/list": "~6.1.11",
"@fullcalendar/multimonth": "~6.1.11",
"@fullcalendar/timegrid": "~6.1.11"
}
},
"node_modules/function-bind": { "node_modules/function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@ -36010,9 +36033,14 @@
"integrity": "sha512-hF5jJB7cgUIxWD5MVjj8IU407HISyLu7BWXcEIuTytkfr8oolOXeCazqnnjmRbnFOncoJQVstTtq6SIhaT32Xg==" "integrity": "sha512-hF5jJB7cgUIxWD5MVjj8IU407HISyLu7BWXcEIuTytkfr8oolOXeCazqnnjmRbnFOncoJQVstTtq6SIhaT32Xg=="
}, },
"@fullcalendar/interaction": { "@fullcalendar/interaction": {
"version": "6.1.9", "version": "6.1.11",
"resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.9.tgz", "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.11.tgz",
"integrity": "sha512-I3FGnv0kKZpIwujg3HllbKrciNjTqeTYy3oJG226oAn7lV6wnrrDYMmuGmA0jPJAGN46HKrQqKN7ItxQRDec4Q==" "integrity": "sha512-ynOKjzuPwEAMgTQ6R/Z2zvzIIqG4p8/Qmnhi1q0vzPZZxSIYx3rlZuvpEK2WGBZZ1XEafDOP/LGfbWoNZe+qdg=="
},
"@fullcalendar/list": {
"version": "6.1.11",
"resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.11.tgz",
"integrity": "sha512-9Qx8uvik9pXD12u50FiHwNzlHv4wkhfsr+r03ycahW7vEeIAKCsIZGTkUfFP+96I5wHihrfLazu1cFQG4MPiuw=="
}, },
"@fullcalendar/multimonth": { "@fullcalendar/multimonth": {
"version": "6.1.11", "version": "6.1.11",
@ -44872,6 +44900,19 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
}, },
"fullcalendar": {
"version": "6.1.11",
"resolved": "https://registry.npmjs.org/fullcalendar/-/fullcalendar-6.1.11.tgz",
"integrity": "sha512-OOlx/+yFn9k5LnucRzcDmShONBecOVKNN6HHWe8jl7hGzQBmkxO+iD6eBokO6p24EY1PjATqhZkhJqHiCUgx3A==",
"requires": {
"@fullcalendar/core": "~6.1.11",
"@fullcalendar/daygrid": "~6.1.11",
"@fullcalendar/interaction": "~6.1.11",
"@fullcalendar/list": "~6.1.11",
"@fullcalendar/multimonth": "~6.1.11",
"@fullcalendar/timegrid": "~6.1.11"
}
},
"function-bind": { "function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",

View File

@ -16,6 +16,7 @@
"@fullcalendar/core": "^6.1.11", "@fullcalendar/core": "^6.1.11",
"@fullcalendar/daygrid": "^6.1.9", "@fullcalendar/daygrid": "^6.1.9",
"@fullcalendar/interaction": "^6.1.9", "@fullcalendar/interaction": "^6.1.9",
"@fullcalendar/list": "^6.1.11",
"@fullcalendar/multimonth": "^6.1.11", "@fullcalendar/multimonth": "^6.1.11",
"@fullcalendar/react": "^6.1.9", "@fullcalendar/react": "^6.1.9",
"@fullcalendar/resource": "^6.1.11", "@fullcalendar/resource": "^6.1.11",
@ -60,6 +61,7 @@
"downloadjs": "^1.4.7", "downloadjs": "^1.4.7",
"draft-js": "^0.11.7", "draft-js": "^0.11.7",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"fullcalendar": "^6.1.11",
"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",

View File

@ -65,9 +65,15 @@ import daygridPlugin from "@fullcalendar/daygrid";
import interactionPlugin from "@fullcalendar/interaction"; import interactionPlugin from "@fullcalendar/interaction";
import timeGridPlugin from "@fullcalendar/timegrid"; import timeGridPlugin from "@fullcalendar/timegrid";
import resourceTimeGridPlugin from '@fullcalendar/resource-timegrid'; import resourceTimeGridPlugin from '@fullcalendar/resource-timegrid';
import Radio from '@mui/material/Radio';
import RadioGroup from '@mui/material/RadioGroup';
import FormControlLabel from '@mui/material/FormControlLabel';
import FormControl from '@mui/material/FormControl';
import FormLabel from '@mui/material/FormLabel';
import allLocales from '@fullcalendar/core/locales-all' import allLocales from '@fullcalendar/core/locales-all'
import listPlugin from '@fullcalendar/list';
import multiMonthPlugin from '@fullcalendar/multimonth'
const DisplayPartnerSession = (props) => { const DisplayPartnerSession = (props) => {
@ -7958,6 +7964,7 @@ const DisplayPartnerSession = (props) => {
form.append("session_id", selected_session_id); form.append("session_id", selected_session_id);
form.append("jounree_modele_id", ""); form.append("jounree_modele_id", "");
form.append("option", Dialog_seq_choix_model_emargement); form.append("option", Dialog_seq_choix_model_emargement);
form.append("ecrase_existing", planification_ecrase_existing_seq);
//console.log(" form == ", form); //console.log(" form == ", form);
@ -7986,6 +7993,8 @@ const DisplayPartnerSession = (props) => {
setsequence_endDate(); setsequence_endDate();
setDialog_seq_choix_model_emargement_open(false); setDialog_seq_choix_model_emargement_open(false);
setDialog_seq_planif_periode_type("");
setplanification_ecrase_existing_seq("");
alert(res.data.message); alert(res.data.message);
Close_Dialog_Detail_seq_open(); Close_Dialog_Detail_seq_open();
@ -8014,8 +8023,8 @@ const DisplayPartnerSession = (props) => {
const Add_Automatic_Sequence_Session_From_Week_Model = event => { const Add_Automatic_Sequence_Session_From_Week_Model = event => {
var new_title = p_detail_sequence_title; var new_title = p_detail_sequence_title;
var new_start_date = moment(SessionstartDate).format("DD/MM/YYYY HH:mm"); var new_start_date = moment(planification_model_date_from).format("DD/MM/YYYY HH:mm");
var new_end_date = moment(SessionendDate).format("DD/MM/YYYY HH:mm"); var new_end_date = moment(planification_model_date_to).format("DD/MM/YYYY HH:mm");
var form = new FormData(); var form = new FormData();
@ -8023,8 +8032,9 @@ const DisplayPartnerSession = (props) => {
const stored_cookie = getCookie('tokenmysypart'); const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie); form.append("token", stored_cookie);
form.append("session_id", selected_session_id); form.append("session_id", selected_session_id);
form.append("date_debut", new_start_date); form.append("planif_date_debut", new_start_date);
form.append("date_fin", new_end_date); form.append("planif_date_fin", new_end_date);
form.append("ecrase_existing", planification_ecrase_existing_seq);
var json_str = JSON.stringify(semaine_type_event) var json_str = JSON.stringify(semaine_type_event)
form.append("semaine_tab_event", json_str); form.append("semaine_tab_event", json_str);
@ -8055,9 +8065,11 @@ const DisplayPartnerSession = (props) => {
setsequence_endDate(); setsequence_endDate();
setDialog_seq_choix_model_emargement_open(false); setDialog_seq_choix_model_emargement_open(false);
setDialog_seq_planif_periode_type("");
alert(res.data.message); alert(res.data.message);
Close_Dialog_Detail_seq_open(); Close_Dialog_Detail_seq_open();
Dialog_seq_CREATION_SEMAINE_TYPE_handleClose_buton();
} }
else { else {
@ -8077,6 +8089,78 @@ const DisplayPartnerSession = (props) => {
} }
const [Add_Automatic_Sequence_Session_From_Month_Model_api, setAdd_Automatic_Sequence_Session_From_Month_Model_api] = useState();
const [Add_Automatic_Sequence_Session_From_Month_Model_message, setAdd_Automatic_Sequence_Session_From_Month_Model_message] = useState();
const [Add_Automatic_Sequence_Session_From_Month_Model_result, setAdd_Automatic_Sequence_Session_From_Month_Model_result] = useState([]);
const Add_Automatic_Sequence_Session_From_Month_Model = event => {
var new_title = p_detail_sequence_title;
var new_start_date = moment(planification_model_date_from).format("DD/MM/YYYY HH:mm");
var new_end_date = moment(planification_model_date_to).format("DD/MM/YYYY HH:mm");
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("session_id", selected_session_id);
form.append("planif_date_debut", new_start_date);
form.append("planif_date_fin", new_end_date);
form.append("ecrase_existing", planification_ecrase_existing_seq);
var json_str = JSON.stringify(semaine_type_event)
form.append("semaine_tab_event", json_str);
//console.log(" form == ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Create_Automatic_Sequence_From_Month_Model/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Add_Automatic_Sequence_Session_From_Month_Model res.data.status = " + res.data.status);
//console.log(" In Add_Automatic_Sequence_Session_From_Month_Model res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setAdd_Automatic_Sequence_Session_From_Month_Model_api("true");
setAdd_Automatic_Sequence_Session_From_Month_Model_result(res.data.message);
Getall_Sequence_Of_Session(selected_session_id);
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
setsequence_startDate();
setsequence_endDate();
setDialog_seq_choix_model_emargement_open(false);
setDialog_seq_planif_periode_type("");
alert(res.data.message);
Close_Dialog_Detail_seq_open();
Dialog_seq_CREATION_SEMAINE_TYPE_handleClose_buton();
}
else {
setAdd_Automatic_Sequence_Session_From_Month_Model_api("false");
setAdd_Automatic_Sequence_Session_From_Month_Model_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('UpdateStagiaireData : Not good man :( Add_Automatic_Sequence_Session_From_Month_Model = ' + error);
setAdd_Automatic_Sequence_Session_From_Month_Model_api("false");
alert(" Impossible de créer automatiquement les séquences");
})
}
const [Update_One_Sequence_Session_api, setUpdate_One_Sequence_Session_api] = useState(); const [Update_One_Sequence_Session_api, setUpdate_One_Sequence_Session_api] = useState();
const [Update_One_Sequence_Session_message, setUpdate_One_Sequence_Session_message] = useState(); const [Update_One_Sequence_Session_message, setUpdate_One_Sequence_Session_message] = useState();
const [Update_One_Sequence_Session_result, setUpdate_One_Sequence_Session_result] = useState(); const [Update_One_Sequence_Session_result, setUpdate_One_Sequence_Session_result] = useState();
@ -8347,6 +8431,7 @@ const DisplayPartnerSession = (props) => {
function Dialog_1_handle_change_participant_session(message) { function Dialog_1_handle_change_participant_session(message) {
setDialog_seq_choix_model_emargement_message(message); setDialog_seq_choix_model_emargement_message(message);
setDialog_seq_planif_periode_type("");
setDialog_seq_choix_model_emargement_open(true); setDialog_seq_choix_model_emargement_open(true);
} }
@ -8356,6 +8441,7 @@ const DisplayPartnerSession = (props) => {
}; };
const Dialog_seq_choix_model_emargement_handleClose_buton = () => { const Dialog_seq_choix_model_emargement_handleClose_buton = () => {
setDialog_seq_planif_periode_type("");
setDialog_seq_choix_model_emargement_open(false); setDialog_seq_choix_model_emargement_open(false);
}; };
@ -10210,6 +10296,10 @@ const DisplayPartnerSession = (props) => {
{ "id": "2", "label": "Autre", "value": "autre" }, { "id": "2", "label": "Autre", "value": "autre" },
] ]
const [Dialog_seq_planif_periode_type, setDialog_seq_planif_periode_type] = React.useState("");
const [Dialog_seq_CREATION_SEMAINE_TYPE_message, setDialog_seq_CREATION_SEMAINE_TYPE_message] = React.useState(false); const [Dialog_seq_CREATION_SEMAINE_TYPE_message, setDialog_seq_CREATION_SEMAINE_TYPE_message] = React.useState(false);
const [Dialog_seq_CREATION_SEMAINE_TYPE_open, setDialog_seq_CREATION_SEMAINE_TYPE_open] = React.useState(false); const [Dialog_seq_CREATION_SEMAINE_TYPE_open, setDialog_seq_CREATION_SEMAINE_TYPE_open] = React.useState(false);
@ -10230,28 +10320,7 @@ const DisplayPartnerSession = (props) => {
}; };
const [semaine_type_event, setsemaine_type_event] = React.useState([ const [semaine_type_event, setsemaine_type_event] = React.useState([]);
{
"id": "1714820379044",
"title": "Nouvelle",
"start": "2024-05-02 11:00:00",
"end": "2024-05-02 12:30:00",
"agenda": "ddd",
"objectif": "ff",
"comment": "sdfds",
"day_week": "jeudi"
},
{
"id": "1714820397818",
"title": "Nouvelle",
"start": "2024-04-30 14:30:00",
"end": "2024-04-30 16:00:00",
"agenda": "ddfd",
"objectif": "fff",
"comment": "qqsdsq",
"day_week": "mardi"
}
]);
const [Dialog_EVENT_SEMAINE_TYPE_message, setDialog_EVENT_SEMAINE_TYPE_message] = React.useState(false); const [Dialog_EVENT_SEMAINE_TYPE_message, setDialog_EVENT_SEMAINE_TYPE_message] = React.useState(false);
@ -10277,6 +10346,7 @@ const DisplayPartnerSession = (props) => {
setsequence_event_type_semaine_endDate(new Date()); setsequence_event_type_semaine_endDate(new Date());
setDialog_EVENT_SEMAINE_TYPE_open(false); setDialog_EVENT_SEMAINE_TYPE_open(false);
setDialog_seq_CREATION_SEMAINE_TYPE_open(true);
}; };
@ -10306,6 +10376,7 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_event_type_semaine_objectif(""); setp_detail_sequence_event_type_semaine_objectif("");
setp_detail_sequence_event_type_semaine_comment(""); setp_detail_sequence_event_type_semaine_comment("");
setDialog_EVENT_SEMAINE_TYPE_open(true); setDialog_EVENT_SEMAINE_TYPE_open(true);
}; };
@ -10504,6 +10575,12 @@ const DisplayPartnerSession = (props) => {
setDialog_seq_CREATION_SEMAINE_TYPE_open(true); setDialog_seq_CREATION_SEMAINE_TYPE_open(true);
} }
const [planification_model_date_from, setplanification_model_date_from] = useState();
const [planification_model_date_to, setplanification_model_date_to] = useState();
const [planification_ecrase_existing_seq, setplanification_ecrase_existing_seq] = useState("1");
return ( return (
<div className="displaypartnersession"> <div className="displaypartnersession">
@ -10811,17 +10888,31 @@ const DisplayPartnerSession = (props) => {
className="displaypartnersession displaypopop_for_sequence_model_week" className="displaypartnersession displaypopop_for_sequence_model_week"
> >
<DialogTitle> Semaine Type à dupliquer </DialogTitle> <DialogTitle> {Dialog_seq_CREATION_SEMAINE_TYPE_message} </DialogTitle>
<DialogContent className="DialogContent_width_for_week_model"> <DialogContent className="DialogContent_width_for_week_model">
<DialogContentText> <DialogContentText>
{Dialog_seq_CREATION_SEMAINE_TYPE_message} {Dialog_seq_CREATION_SEMAINE_TYPE_message}
</DialogContentText> </DialogContentText>
{SessionstartDate && SessionendDate && <div className="div_row_dialog" style={{ textAlign: 'left' }}>
<div className="planification_Dialog_DatePicker">
Debut Formation = {new Date(moment(SessionstartDate, "DD/MM/YYYY")).toISOString().split('T')[0]} <br />
</div>
<div className="planification_Dialog_DatePicker">
Fin Formation = {new Date(moment(SessionendDate, "DD/MM/YYYY")).toISOString().split('T')[0]}
</div>
</div>}
<div className="div_row_dialog"> <div className="div_row_dialog">
<div style={{ "width": "98%", "marginLeft": "5px", }}> <div style={{ "width": "98%", "marginLeft": "5px", }}>
<FullCalendar {Dialog_seq_planif_periode_type && String(Dialog_seq_planif_periode_type) === "mois" && <FullCalendar
height={550} height={550}
locales={allLocales} locales={allLocales}
locale={'fr'} locale={'fr'}
@ -10838,6 +10929,42 @@ const DisplayPartnerSession = (props) => {
}} }}
//eventContent={(info) => <EventItem info={info} />} //eventContent={(info) => <EventItem info={info} />}
//plugins={[timeGridPlugin]} //plugins={[timeGridPlugin]}
plugins={[daygridPlugin, timeGridPlugin, interactionPlugin]}
views={["dayGridMonth", "dayGridWeek", "dayGridDay"]}
slotMinTime={Partner_Debut_Journee}
slotMaxTime={Partner_Fin_Journee}
scrollTime='08:00'
displayEventEnd={true}
eventContent={renderEventContent_event_type_semaine}
eventClick={handleEventClick_event_type_semaine}
/>}
{Dialog_seq_planif_periode_type && String(Dialog_seq_planif_periode_type) === "semaine" && <FullCalendar
height={550}
locales={allLocales}
locale={'fr'}
editable
selectable
//events={events}
events={semaine_type_event}
select={handleSelect_event_type_semaine}
headerToolbar={{
start: "today prev next",
center: "title",
end: "dayGridMonth,timeGridWeek,timeGridDay",
}}
//eventContent={(info) => <EventItem info={info} />}
//plugins={[timeGridPlugin]}
plugins={[ timeGridPlugin, daygridPlugin, interactionPlugin]} plugins={[ timeGridPlugin, daygridPlugin, interactionPlugin]}
views={["dayGridMonth", "dayGridWeek", "dayGridDay"]} views={["dayGridMonth", "dayGridWeek", "dayGridDay"]}
slotMinTime={Partner_Debut_Journee} slotMinTime={Partner_Debut_Journee}
@ -10846,69 +10973,154 @@ const DisplayPartnerSession = (props) => {
displayEventEnd={true} displayEventEnd={true}
eventContent={renderEventContent_event_type_semaine} eventContent={renderEventContent_event_type_semaine}
eventClick={handleEventClick_event_type_semaine} eventClick={handleEventClick_event_type_semaine}
/>}
/>
</div>
</div> </div>
</div>
<br />
<div className="div_row_dialog" style={{ textAlign: 'left' }}>
{SessionstartDate && SessionendDate && {SessionstartDate && SessionendDate &&
<div className="div_row_dialog"> <div>
<div className="planification_Dialog_DatePicker">
Dupliquer Du (date du ): Dupliquer Du :
<DatePicker <DatePicker
name="sessiondatedebut" name="planif_semaine_model_date_from"
id="sessiondatedebut" id="planif_semaine_model_date_from"
selected={SessionstartDate} selected={planification_model_date_from}
onChange={(date) => { onChange={(date) => {
if (edit_session_form) {
setSessionstartDate(date);
let local_date = new Date(date).getTime();
let date_end_session = new Date(SessionendDate).getTime();
let date_start_session = new Date(SessionstartDate).getTime();
/* console.log(" local_date = ", local_date);
console.log(" date_end_session = ", date_end_session);
console.log(" date_start_session = ", date_start_session);*/
if (local_date > date_end_session) {
alert(" La date est après la fin de la session");
return;
} }
if (local_date < date_start_session) {
alert(" La date est avant le début de la session");
return;
}
setplanification_model_date_from(date);
} }
} }
showTimeSelect={false} showTimeSelect={false}
filterTime={filterPassedTime_start} filterTime={filterPassedTime_start}
dateFormat="dd/MM/yyyy" dateFormat="dd/MM/yyyy"
className="disabled_style session_caract_Dialog_DatePicker" className="disabled_style "
locale='fr-FR' locale='fr-FR'
/> />
</div>
<div className="planification_Dialog_DatePicker">
<br /> Dupliquer Au :
Dupliquer Au (date au ):
<DatePicker <DatePicker
name="sessiondatedebut" name="planif_semaine_model_date_to"
id="sessiondatedebut" id="planif_semaine_model_date_to"
selected={SessionendDate} selected={planification_model_date_to}
onChange={(date) => { onChange={(date) => {
if (edit_session_form) {
SessionendDate(date);
let local_date = new Date(date).getTime();
let date_end_session = new Date(SessionendDate).getTime();
let date_start_session = new Date(SessionstartDate).getTime();
/* console.log(" local_date = ", local_date);
console.log(" date_end_session = ", date_end_session);
console.log(" date_start_session = ", date_start_session);*/
if (local_date > date_end_session) {
alert(" La date est après la fin de la session");
return;
} }
if (local_date < date_start_session) {
alert(" La date est avant le début de la session");
return;
}
setplanification_model_date_to(date);
} }
} }
showTimeSelect={false} showTimeSelect={false}
filterTime={filterPassedTime_start} filterTime={filterPassedTime_start}
dateFormat="dd/MM/yyyy" dateFormat="dd/MM/yyyy"
className="disabled_style session_caract_Dialog_DatePicker" className="disabled_style "
locale='fr-FR' locale='fr-FR'
/> />
<br /> </div>
</div>} </div>}
</div>
<div className="div_row_dialog" style={{ textAlign: 'left' }}>
<FormControl>
<Tooltip className="tooltip_css" id="ecrase_01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="ecrase_01" data-tooltip-html="Vous allez definitivement supprimer toutes planifications associées à cette session de formation">
<FormLabel id="demo-row-radio-buttons-group-label">Ecraser la planification existant <FcInfo /></FormLabel>
</a>
<RadioGroup
row
aria-labelledby="demo-row-radio-buttons-group-label"
name="row-radio-buttons-group"
defaultValue="0"
onChange={(e) => {
setplanification_ecrase_existing_seq(e.target.value);
if (String(e.target.value) === "1") {
alert(" Vous allez definitivement supprimer toutes planifications associées à cette session de formation ")
}
}}
>
<FormControlLabel value="1" control={<Radio />} label="Oui" />
<FormControlLabel value="0" control={<Radio />} label="Non" />
</RadioGroup>
</FormControl>
</div>
</DialogContent> </DialogContent>
<DialogActions> <DialogActions>
<div className="div_row"> <div className="div_row">
<div className="div_row_gauche"> <div className="div_row_gauche">
<Button onClick={Add_Automatic_Sequence_Session_From_Week_Model} className="bton_enreg_dialog">Crée en masse</Button> <Button onClick={(date) => {
let date_end_planif = new Date(planification_model_date_to).getTime();
let date_start_planif = new Date(planification_model_date_from).getTime();
if (date_end_planif < date_start_planif) {
alert(" La date de début est postérieure à la date de fin ");
return;
}
if (String(Dialog_seq_planif_periode_type) === "semaine")
Add_Automatic_Sequence_Session_From_Week_Model();
else if (String(Dialog_seq_planif_periode_type) === "mois")
Add_Automatic_Sequence_Session_From_Month_Model();
}}
className="bton_enreg_dialog">Crée en masse</Button>
</div> </div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}> <div className="div_row_droite" style={{ "textAlign": 'center' }}>
@ -11100,14 +11312,14 @@ const DisplayPartnerSession = (props) => {
> >
<DialogTitle> Choisir une modèle de séquence </DialogTitle> <DialogTitle> Choisir un modèle de planification </DialogTitle>
<DialogContent className="DialogContent_width" style={{ height: "15rem" }}> <DialogContent className="DialogContent_width" style={{ height: "15rem" }}>
<DialogContentText> <DialogContentText>
{Dialog_seq_choix_model_emargement_message} {Dialog_seq_choix_model_emargement_message}
</DialogContentText> </DialogContentText>
<div className="session_caract_Dialog" > Source <div className="session_caract_Dialog" >
<Autocomplete <Autocomplete
disablePortal disablePortal
name="event_dialog_modele_seq" name="event_dialog_modele_seq"
@ -11123,7 +11335,7 @@ const DisplayPartnerSession = (props) => {
}} }}
renderInput={(params) => <TextField {...params} placeholder="Choisir une option " /> renderInput={(params) => <TextField {...params} placeholder="Choisir un modèle " />
} }
/> />
@ -11131,7 +11343,35 @@ const DisplayPartnerSession = (props) => {
</div> </div>
<div className="div_row_dialog" style={{ textAlign: 'left' }}>
<FormControl>
<Tooltip className="tooltip_css" id="ecrase_01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="ecrase_01" data-tooltip-html="Vous allez definitivement supprimer toutes planifications associées à cette session de formation">
<FormLabel id="demo-row-radio-buttons-group-label">Ecraser la planification existant <FcInfo /> </FormLabel>
</a>
<RadioGroup
row
aria-labelledby="demo-row-radio-buttons-group-label"
name="row-radio-buttons-group"
defaultValue="0"
onChange={(e) => {
setplanification_ecrase_existing_seq(e.target.value);
if (String(e.target.value) === "1") {
alert(" Vous allez definitivement supprimer toutes planifications associées à cette session de formation ")
}
}}
>
<FormControlLabel value="1" control={<Radio />} label="Oui" />
<FormControlLabel value="0" control={<Radio />} label="Non" />
</RadioGroup>
</FormControl>
</div>
</DialogContent> </DialogContent>
@ -11148,16 +11388,29 @@ const DisplayPartnerSession = (props) => {
{Dialog_seq_choix_model_emargement && String(Dialog_seq_choix_model_emargement) === "3" && {Dialog_seq_choix_model_emargement && String(Dialog_seq_choix_model_emargement) === "3" &&
<Button onClick={(e) => { <Button onClick={(e) => {
setDialog_seq_planif_periode_type("semaine");
setp_detail_sequence_event_type_semaine_id(""); setp_detail_sequence_event_type_semaine_id("");
setDialog_seq_choix_model_emargement_open(false); setDialog_seq_choix_model_emargement_open(false);
setDialog_seq_CREATION_SEMAINE_TYPE_open(true); setDialog_seq_CREATION_SEMAINE_TYPE_open(true);
setDialog_seq_CREATION_SEMAINE_TYPE_message(" Planification à la SEMAINE ")
setplanification_model_date_from(SessionstartDate);
setplanification_model_date_to(SessionendDate);
}} className="bton_enreg_dialog">Configurer la semaine</Button>} }} className="bton_enreg_dialog">Configurer la semaine</Button>}
{Dialog_seq_choix_model_emargement && String(Dialog_seq_choix_model_emargement) === "4" && {Dialog_seq_choix_model_emargement && String(Dialog_seq_choix_model_emargement) === "4" &&
<Button onClick={(e) => { <Button onClick={(e) => {
alert(" En cours de construction"); setDialog_seq_planif_periode_type("mois");
setp_detail_sequence_event_type_semaine_id("");
setDialog_seq_choix_model_emargement_open(false);
setDialog_seq_CREATION_SEMAINE_TYPE_open(true);
setDialog_seq_CREATION_SEMAINE_TYPE_message(" Planification au MOIS ")
setplanification_model_date_from(SessionstartDate);
setplanification_model_date_to(SessionendDate);
}} className="bton_enreg_dialog">Configurer le mois</Button>} }} className="bton_enreg_dialog">Configurer le mois</Button>}
@ -12953,7 +13206,7 @@ const DisplayPartnerSession = (props) => {
{selected_code_session && String(selected_code_session).length > 0 && <div className="div_row"> {selected_code_session && String(selected_code_session).length > 0 && <div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_session} className="detail_class_submenu" id='detail_session' name='detail_session'>Détail Session</Button> <Button variant="outlined" ref={myRef} onClick={submenu_detail_session} className="detail_class_submenu" id='detail_session' name='detail_session'>Détail Session</Button>
<Button variant="outlined" ref={myRef} onClick={submenu_sequence_session} className="detail_class_submenu" id='sequence_session' name='sequence_session'>Séquences ({String(nb_sequence)})</Button> <Button variant="outlined" ref={myRef} onClick={submenu_sequence_session} className="detail_class_submenu" id='sequence_session' name='sequence_session'>Planif. ({String(nb_sequence)})</Button>
<Button variant="outlined" onClick={submenu_preinscrit} className="detail_class_submenu" id='preinscrit' name='preinscrit'>Preinscript. ({String(nb_stagiaire_Preinscrit)}) </Button> <Button variant="outlined" onClick={submenu_preinscrit} className="detail_class_submenu" id='preinscrit' name='preinscrit'>Preinscript. ({String(nb_stagiaire_Preinscrit)}) </Button>
<Button variant="outlined" onClick={submenu_inscrit} className="detail_class_submenu" id='inscrit' name='inscrit'>Inscription ({String(nb_stagiaire_Inscrit)}) </Button> <Button variant="outlined" onClick={submenu_inscrit} className="detail_class_submenu" id='inscrit' name='inscrit'>Inscription ({String(nb_stagiaire_Inscrit)}) </Button>
<Button variant="outlined" onClick={submenu_editique} className="detail_class_submenu" id='editique' name='editique'>Gestion </Button> <Button variant="outlined" onClick={submenu_editique} className="detail_class_submenu" id='editique' name='editique'>Gestion </Button>
@ -15351,6 +15604,7 @@ const DisplayPartnerSession = (props) => {
eventContent={renderEventContent} eventContent={renderEventContent}
eventClick={handleEventClick} eventClick={handleEventClick}
/> />
</div> </div>
@ -15363,58 +15617,18 @@ const DisplayPartnerSession = (props) => {
<div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}> <div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
<Popup
trigger={
<Button variant="outlined" <Button variant="outlined"
className="detail_class_submenu bton_add_session bton_add_session_create_automatic" style={{ "width": "40%" }} className="detail_class_submenu bton_add_session bton_add_session_create_automatic" style={{ "width": "40%" }}
id='menu_import_participant' name='menu_import_participant'>Création automatique id='menu_import_participant' name='menu_import_participant' onClick={(event) => {
setDialog_seq_choix_model_emargement_open(true);
setDialog_seq_planif_periode_type("");
}} > Planification automatique
<FcMultipleSmartphones /> <FcMultipleSmartphones />
</Button> </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">
{' '}
<font color="red"> Confirmer l'action <b> {actionmass_preinsc_val} </b> en masse. <br />
/!\ : Toutes les séquences de cette session seront supprimées. </font>
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
//Add_Automatic_Sequence_Session();
setDialog_seq_choix_model_emargement_open(true);
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>
&nbsp; &nbsp;
<Button variant="outlined" onClick={submenu_add_one_sequence} <Button variant="outlined" onClick={submenu_add_one_sequence}
className="detail_class_submenu bton_add_session" className="detail_class_submenu bton_add_session"

View File

@ -0,0 +1,366 @@
import React, { useRef, useState, useEffect } from "react";
import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem';
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import { Editor } from '@tinymce/tinymce-react';
import parse from 'html-react-parser';
import { FcViewDetails, FcDisapprove, FcInfo } from "react-icons/fc";
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import add_plus from "../mysy_img/plus.png";
import excel_icone from "../mysy_img/excel_icone.png";
import participants from "../mysy_img/participants.png";
import fileDownload from 'js-file-download'
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import { FcSearch } from "react-icons/fc";
import { FcAlarmClock, FcMultipleSmartphones, FcWorkflow } from "react-icons/fc";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import { format } from 'date-fns'
import moment from "moment";
import 'moment/locale/fr';
import InputAdornment from '@mui/material/InputAdornment';
import { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
import Box from '@mui/material/Box';
import { Typography, LinearProgress } from '@mui/material';
import styled from 'styled-components';
import { CiTrash } from "react-icons/ci";
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import { RestoreFromTrashRounded } from "@mui/icons-material";
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import { Fab } from "@material-ui/core";
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
import { confirmAlert } from 'react-confirm-alert';
import ToggleSwitch from "./ToggleSwitch";
import Module_Historique_Action from "./Module_Historique_Action";
import { HiDocumentCheck } from "react-icons/hi2";
import { BsSend } from "react-icons/bs";
import Autocomplete from '@mui/material/Autocomplete';
import { FcOpenedFolder } from "react-icons/fc";
import { gridClasses } from '@mui/x-data-grid';
import Link from '@mui/material/Link';
import { PiDotsThree } from "react-icons/pi";
import Module_Editique from "./Module_Editique";
import Module_Attestation_Formation from "./Module_Attestation_Formation";
import Module_Evaluation_Positionnement from "./Module_Evaluation_Positionnement";
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcPlanner } from "react-icons/fc";
import { CiBoxList } from "react-icons/ci";
import FullCalendar from "@fullcalendar/react";
import daygridPlugin from "@fullcalendar/daygrid";
import interactionPlugin from "@fullcalendar/interaction";
import timeGridPlugin from "@fullcalendar/timegrid";
import resourceTimeGridPlugin from '@fullcalendar/resource-timegrid';
import allLocales from '@fullcalendar/core/locales-all'
const Module_Session_Planification = (props) => {
const history = useHistory();
const [submenu, setsubmenu] = useState("");
const [rowss, setRows] = useState([]);
function ExpandableCell_50({ value }) {
const [expanded, setExpanded] = React.useState(false);
return (
<nav>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
{expanded ? value : String(value).slice(0, 50)}&nbsp;
{value.length > 50 && (
// eslint-disable-next-line jsx-a11y/anchor-is-valid
<Link
type="button"
component="button"
sx={{ fontSize: 'inherit' }}
onClick={() => setExpanded(!expanded)}
>
{expanded ? <nav> <PiDotsThree />Réduire</nav> : <nav> <PiDotsThree />Voir</nav>}
</Link>
)}
</div>}
{!value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
&nbsp;
</div>
}
</nav>
);
}
function Display_Colunm_text({ value }) {
return (
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
{value}&nbsp;
</div>
);
}
const columns_sequence = [
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true },
{ field: 'session_id', headerName: 'session_id', width: 200, hide: true, flex: 1, minWidth: 150, maxWidth: 300 },
{ field: 'sequence_title', headerName: 'Titre', minWidth: 200, flex: 1, hide: false, editable: false, resizable: true },
{ field: 'sequence_start', headerName: 'Debut', minWidth: 200, flex: 1, hide: false, editable: false },
{ field: 'sequence_end', headerName: 'Fin', minWidth: 200, flex: 1, hide: false, editable: false },
{ field: 'agenda', headerName: 'Agenda', minWidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <Display_Colunm_text {...params} />, },
{ field: 'objectif', headerName: 'Objectif', width: 0, flex: 0, hide: true, editable: false, },
{ field: 'commentaire', headerName: 'Commentaire', width: 0, flex: 0, hide: true, editable: false, },
{
field: "Detail", headerName: 'Voir detail', minWidth: 200, flex: 1,
renderCell: (cellValues) => {
return (
<Button
onClick={(event) => {
setsequence_gridline_id(cellValues.row.id);
setselected_detail_sequence_title(cellValues.row.sequence_title);
setselected_sequence_startDate(cellValues.row.sequence_start);
setselected_sequence_endDate(cellValues.row.sequence_end);
setp_detail_sequence_agenda(cellValues.row.agenda);
setp_detail_sequence_objectif(cellValues.row.objectif);
setp_detail_sequence_comment(cellValues.row.commentaire);
Getall_List_Sequence_Ressource(cellValues.row._id);
setselected_sequence_id(cellValues.row._id);
setdisplay_detail_sequence("1");
Get_List_Of_All_PJ_For_Session(cellValues.row._id);
if (document.getElementById('myRef_seq_ressource')) {
var divh = document.getElementById('myRef_seq_ressource').offsetTop;
window.scrollTo({
top: divh,
behavior: "smooth",
});
}
}}
>
<FcViewDetails />
</Button>
);
}
},
{
field: "modifier", headerName: 'Modifier', minWidth: 200, flex: 1,
renderCell: (cellValues) => {
return (
<Button
onClick={(event) => {
setsequence_gridline_id(cellValues.row.id);
setdisplay_detail_sequence("");
setp_detail_sequence_title(cellValues.row.sequence_title);
setselected_sequence_id(cellValues.row._id);
var date_du = new Date(moment(cellValues.row.sequence_start, "DD/MM/YYYY HH:mm"));
var date_au = new Date(moment(cellValues.row.sequence_end, "DD/MM/YYYY HH:mm"));
setsequence_startDate(date_du);
setsequence_endDate(date_au);
setp_detail_sequence_agenda(cellValues.row.agenda);
setp_detail_sequence_objectif(cellValues.row.objectif);
setp_detail_sequence_comment(cellValues.row.commentaire);
setupdate_sequence("1");
submenu_update_sequence();
}}
>
<FcViewDetails />
</Button>
);
}
},
{
field: "delete", headerName: 'Supprimer', minWidth: 200, flex: 1,
renderCell: (cellValues) => {
return (
<Popup
trigger={<Button
onClick={(event) => {
}}
>
<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 séquence 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) => {
Delete_Sequence_Session_Data(cellValues.row._id);
//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 columns_sequence_ressources_affectation = [
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true, minWidth: 200, },
{ field: 'related_target_collection_id', headerName: 'related_target_collection_id', minWidth: 200, hide: true, flex: 1, minWidth: 150, maxWidth: 300 },
{ field: 'related_target_collection', headerName: 'related_target_collection', minWidth: 150, hide: true, editable: false, resizable: true },
{ field: 'type_ressource', headerName: 'Type', minWidth: 150, hide: true, editable: false },
{ field: 'related_target_collection_object', headerName: 'object', minWidth: 200, hide: false, editable: false, resizable: true, flex: 1, },
{ field: 'related_target_collection_id_nom', headerName: 'nom', minWidth: 200, hide: false, editable: false, resizable: true, flex: 1, },
{ field: 'poste', headerName: 'Poste', minWidth: 200, hide: false, editable: false, flex: 1, },
{ field: 'comment', headerName: 'Comment', width: 200, hide: false, editable: false },
{
field: "delete", headerName: 'Supprimer',
renderCell: (cellValues) => {
return (
<Popup
trigger={<Button
onClick={(event) => {
}}
>
<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 ressource 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) => {
Delete_Sequence_Session_Ressource_Data(cellValues.row._id);
console.log('cellValues.row = ', cellValues.row);
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>
);
}
}
]
return (
<div className="modulesessionplanification">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
</div >
);
}
export default Module_Session_Planification;

View File

@ -2668,6 +2668,16 @@
max-width: none !important; max-width: none !important;
} }
.planification_Dialog_DatePicker_row{
float: left;
width: 100%;
}
.planification_Dialog_DatePicker{
background-color: #FFFFFF;
width: 50% !important;
float: left;
}
} }
// end media // end media

File diff suppressed because it is too large Load Diff

View File

@ -108,3 +108,4 @@
@import "./components/updateattendeelist"; @import "./components/updateattendeelist";
@import "./components/displayPartnerunite_enseignement"; @import "./components/displayPartnerunite_enseignement";
@import "./components/displaypopop_for_sequence_model_week"; @import "./components/displaypopop_for_sequence_model_week";
@import "./components/modulesessionplanification";