12/02/26 - 10h

branche_01062025
Cherif 2026-02-12 10:11:07 +01:00
parent 45def3b46b
commit 674505fff9
1 changed files with 426 additions and 218 deletions

View File

@ -300,34 +300,6 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
{ field: 'rang', headerName: 'Rang', hide: false, maxWidth: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'description', headerName: 'Description', flex: 1, hide: false, minWidth: 200, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'display_competence', headerName: 'Afficher', flex: 1, hide: false, maxWidth: 200, renderCell: (params) => <ExpandableCell_50 {...params} />,
renderCell: (cellValues) => {
return (
<nav style={{ width: '100%', 'textAlign': 'center' }}>
<Button
onClick={(event) => {
}}
variant="outlined"
>
Affich Compét.
</Button>
</nav>
);
},
},
{ field: 'add_competence', headerName: 'Compétence', flex: 1, hide: false, minWidth: 200, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: "delete", headerName: 'Supprimer',
renderCell: (cellValues) => {
@ -395,6 +367,7 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
const column_competence_with_activite = [
{ field: 'mysy_single_field', headerName: 'mysy_single_field', hide: true, Width: 0, disableExport: true, },
{ field: 'activite_pedagogique_id', headerName: 'activite_pedagogique_id', hide: true, Width: 0, disableExport: true, },
{ field: 'competence_id', headerName: 'competence_id', hide: true, Width: 0, disableExport: true, },
{ field: 'activite_pedagogique_code', headerName: 'Activité Pédagogique', flex: 1, hide: false, maxWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
@ -429,14 +402,14 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
<div className="gest_content">
{' '}
En confirmant cette opération, la tâche sera <i><font color="red"> définitivement supprimée de cette activité </font></i>. <br />
En confirmant cette opération, la compétence <i><font color="red"> sera supprimée de cette activité </font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
// handleClick_delete_tache_from_activite(event, cellValues);
handleClick_delete_Competence_From_Activite_In_Pole_Activite(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
@ -467,6 +440,59 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
]
const [handleClick_delete_Competence_From_Activite_In_Pole_Activite_pedago_api, sethandleClick_delete_Competence_From_Activite_In_Pole_Activite_pedago_api] = useState();
const [handleClick_delete_Competence_From_Activite_In_Pole_Activite_message, sethandleClick_delete_Competence_From_Activite_In_Pole_Activite_message] = useState();
const [handleClick_delete_Competence_From_Activite_In_Pole_Activite_result, sethandleClick_delete_Competence_From_Activite_In_Pole_Activite_result] = useState([]);
function handleClick_delete_Competence_From_Activite_In_Pole_Activite(event, cellValues) {
var mysy_single_field_id = cellValues.row.mysy_single_field;
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("pole_activite_id", selected_id);
form.append("mysy_single_field", mysy_single_field_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_Competence_Activite_From_Pole_pedagogique_And_Activite/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In handleClick_delete_Competence_From_Activite_In_Pole_Activite res.data.status = " + res.data.status);
//console.log(" In handleClick_delete_Competence_From_Activite_In_Pole_Activite res.data.message r_class = " + res.data.message);
sethandleClick_delete_Competence_From_Activite_In_Pole_Activite_pedago_api("true");
sethandleClick_delete_Competence_From_Activite_In_Pole_Activite_result(res.data.message);
Get_Given_Pole_Activite_pedago_data(selected_id);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
}
else {
sethandleClick_delete_Competence_From_Activite_In_Pole_Activite_pedago_api("false");
sethandleClick_delete_Competence_From_Activite_In_Pole_Activite_message(res.data.message);
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( handleClick_delete_Competence_From_Activite_In_Pole_Activite = ', error);
sethandleClick_delete_Competence_From_Activite_In_Pole_Activite_pedago_api("false");
alert(" Impossible de supprimer la compétence de l'activité ");
//setmyApimyApiMessage("")
})
}
const New_Option_Tuteur_Role = [
{ "id": "0", "label": "Parent", "value": "0" },
{ "id": "1", "label": "Tuteur légal", "value": "1" },
@ -622,8 +648,6 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
setGetall_Partner_Pole_Activite_Pedago_result(res.data.message);
setRows(res.data.message);
}
else {
setGetall_Partner_Pole_Activite_Pedago_api("false");
@ -647,6 +671,97 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
}
const [NewGetall_Partner_Competence_Pedago_result, setNewGetall_Partner_Competence_Pedago_result] = useState([{
"_id": "",
"id": "",
"label": "",
"code": "",
}]);
const [Getall_Partner_Competence_Pedago_api, setGetall_Partner_Competence_Pedago_api] = useState();
const [Getall_Partner_Competence_Pedago_message, setGetall_Partner_Competence_Pedago_message] = useState();
const [Getall_Partner_Competence_Pedago_result, setGetall_Partner_Competence_Pedago_result] = useState();
function Getall_Partner_Competence_Pedago(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_competence_pedagogique_no_filter/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Partner_Competence_Pedago res.data.status = " + res.data.status);
// console.log(" In Getall_Partner_Competence_Pedago res.data.message r_class = " + res.data.message);
setGetall_Partner_Competence_Pedago_api("true");
setGetall_Partner_Competence_Pedago_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
var local_code = JSON.parse(x).code;
var local_description = JSON.parse(x).description;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_code + " - " + String(local_description).substring(0, 20),
"description": local_description,
"code": local_code,
};
new_data2.push(node);
// return {"_id": " + str(local_id) + ", "label": " + local_courrier_template_ref_interne + '" , "courrier_template_ref_interne": "' + local_courrier_template_ref_interne + '", "nom_champ_technique": "' + local_nom_champ_technique + '", "nom_champ_fonctionel": "' + local_nom_champ_fonctionel + '","valide": "1" };
});
var node = {
"_id": "",
"id": "",
"label": "",
"code": "",
"description": "",
};
new_data2.push(node);
if (new_data2.length > 0) {
setNewGetall_Partner_Competence_Pedago_result(new_data2);
}
}
else {
setGetall_Partner_Competence_Pedago_api("false");
setGetall_Partner_Competence_Pedago_message(res.data.message);
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
console.warn('Not good man :( Getall_Partner_Competence_Pedago = ', error);
setGetall_Partner_Competence_Pedago_api("false");
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(" Impossible de recuperer la liste des compétences pédagogiques");
setalert_type("error");
// alert(" Impossible de recuperer la liste des employés");
//setmyApimyApiMessage("")
})
}
useEffect(() => {
@ -709,6 +824,13 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
const [p_detail_pole_activite_pedago_tab_activite, setp_detail_pole_activite_pedago_tab_activite] = useState([]);
const [p_detail_pole_activite_pedago_tab_activite_with_code, setp_detail_pole_activite_pedago_tab_activite_with_code] = useState([]);
const [New_p_detail_pole_activite_pedago_tab_activite_with_code, setNew_p_detail_pole_activite_pedago_tab_activite_with_code] = useState([{
"_id": "",
"id": "",
"label": "",
"code": "",
}]);
const [tab_competence_activite_pedagogique_with_code, settab_competence_activite_pedagogique_with_code] = useState([]);
@ -951,8 +1073,8 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
if (String(res.data.status) === "true") {
setLoading(false);
//console.log(" In Get_Employee_Data res.data.status = " + res.data.status);
// console.log(" In Get_Employee_Data res.data.message r_class = " + res.data.message);
//console.log(" In Get_Given_Pole_Activite_pedago_data res.data.status = " + res.data.status);
// console.log(" In Get_Given_Pole_Activite_pedago_data res.data.message r_class = " + res.data.message);
setGet_Given_Pole_Activite_pedago_data_api("true");
setGet_Given_Pole_Activite_pedago_data_result(res.data.message);
@ -999,10 +1121,57 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
else
setp_detail_pole_activite_pedago_tab_activite([]);
if (pole_activite_pedago.tab_activite_pedagogique_with_code)
if (pole_activite_pedago.tab_activite_pedagogique_with_code) {
setp_detail_pole_activite_pedago_tab_activite_with_code(pole_activite_pedago.tab_activite_pedagogique_with_code);
else
var new_data2 = [];
const new_data = pole_activite_pedago.tab_activite_pedagogique_with_code.map((x) => {
//---
var localid = (x).id;
var local_id = (x)._id;
var local_code = (x).code;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_code,
"code": local_code,
};
new_data2.push(node);
});
//---
var node = {
"_id": "",
"id": "",
"label": "",
"code": "",
};
new_data2.push(node);
if (new_data2.length > 0) {
setNew_p_detail_pole_activite_pedago_tab_activite_with_code(new_data2);
} else {
}
}
else {
setp_detail_pole_activite_pedago_tab_activite_with_code([]);
setNew_p_detail_pole_activite_pedago_tab_activite_with_code([{
"_id": "",
"id": "",
"label": "",
"code": "",
}])
}
if (pole_activite_pedago.tab_competence_activite_pedagogique_with_code)
settab_competence_activite_pedagogique_with_code(pole_activite_pedago.tab_competence_activite_pedagogique_with_code);
@ -1017,7 +1186,7 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
//alert(" Aucun employé recuperé");
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(" Aucun employé recuperé");
setalert_message(" Aucun Pôle d'activité recuperé");
setalert_type("warning");
}
@ -1392,6 +1561,11 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
};
const [selected_activite_for_competence_id, setselected_activite_for_competence_id] = useState("");
const [selected_competence_for_competence_id, setselected_competence_for_competence_id] = useState("");
const [selected_pole_activite_to_add_id, setselected_pole_activite_to_add_id] = useState("");
const [selected_pole_activite_to_add_rang, setselected_pole_activite_to_add_rang] = useState("0");
@ -1630,13 +1804,75 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
setdisplay_alert_mysy("1");
setalert_message(" Impossible d'ajouter la l'activité");
setalert_message(" Impossible d'ajouter l'activité");
setalert_type("error");
})
}
function Add_Competence_To_Activite_In_Pole(activite_pedagogique_id, competence_pedagogique_id) {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("pole_activite_id", selected_id);
form.append("activite_pedagogique_id", activite_pedagogique_id);
form.append("competence_id", competence_pedagogique_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_Competence_To_Pole_pedagogique_And_Activite/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
Get_Given_Pole_Activite_pedago_data(selected_id);
Dialog_Competence_To_Activite_handleClose_buton();
}
else {
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
console.warn('UpdateStagiaireData : Not good man :( mysearchtext = ' + error);
setdisplay_alert_mysy("1");
setalert_message(" Impossible d'ajouter la compétence");
setalert_type("error");
})
}
const [Dialog_Competence_To_Activite_open, setDialog_Competence_To_Activite_open] = React.useState(false);
const Dialog_Competence_To_Activite_handleClose_buton = () => {
setDialog_Competence_To_Activite_open(false);
};
return (
<div className="module_pole_activite_pedagogique">
@ -1657,6 +1893,151 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
{/*** FIN Affichage des messages d'alerte*/}
{/* Dialog pour ajouter une COMPETENCE A UNE ACTIVITE*/}
<Dialog
open={Dialog_Competence_To_Activite_open}
// onClose={Dialog_Competence_To_Activite_handleClose}
// className="displaypartnersession"
className="displaypartnersession"
static
onClose={() => null}
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
position: 'absolute',
top: '7rem',
margin: "2px",
},
}}
hideBackdrop={true}
disableScrollLock
classes={{
paper: classes.dialog
}}
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }}
id="draggable-dialog-title"> Ajout Compétence à une Activité</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
<div className="session_caract_Dialog" > <b> Activité pédagogique </b>
{New_p_detail_pole_activite_pedago_tab_activite_with_code && New_p_detail_pole_activite_pedago_tab_activite_with_code.length > 0 && <Autocomplete
disablePortal
name="raison_cloture"
id="raison_cloture"
fullWidth
options={New_p_detail_pole_activite_pedago_tab_activite_with_code}
onChange={(event, value) => {
setselected_competence_for_competence_id("");
if (value && value._id) {
setselected_activite_for_competence_id(value._id);
} else {
setselected_activite_for_competence_id("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</div>
<div className="session_caract_Dialog" > <b> Compétence pédagogique zzzz</b>
{NewGetall_Partner_Competence_Pedago_result && NewGetall_Partner_Competence_Pedago_result.length > 0 && <Autocomplete
disablePortal
name="raison_cloture"
id="raison_cloture"
fullWidth
options={NewGetall_Partner_Competence_Pedago_result}
onChange={(event, value) => {
if (value && value._id) {
setselected_competence_for_competence_id(value._id);
} else {
setselected_competence_for_competence_id("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</div>
</DialogContent>
<DialogActions>
<IconButton
autoFocus
onClick={Dialog_Competence_To_Activite_handleClose_buton}
color="primary"
className={classes.customizedButton}
>
<CancelPresentationIcon />
</IconButton>
<div className="div_row">
<div className="div_row_gauche">
<Button
className="bton_enreg_dialog" onClick={(e) => {
if (selected_activite_for_competence_id.length <= 0 || selected_competence_for_competence_id.length <= 0) {
setdisplay_alert_mysy("1");
setalert_message(" Vous devez choisir une activité et une compétence pédagogique ");
setalert_type("error");
}
Add_Competence_To_Activite_In_Pole(selected_activite_for_competence_id, selected_competence_for_competence_id);
}}
> Ajouter </Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_Competence_To_Activite_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
</div>
</div>
</DialogActions>
</Dialog>
{/* FIN Dialog pour ajouter une COMPETENCE A UNE ACTIVITE*/}
{/* Dialog pour ajouter une ACTIVITE PEDAGOGIQUE */}
<Dialog
open={Dialog_Pole_Activite_open}
@ -1910,6 +2291,8 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
Get_Given_Pole_Activite_pedago_data(newSelectionModel.row._id);
submenu_detail_activite_padagogique();
Getall_Partner_Competence_Pedago();
}}
rowsPerPageOptions={[10]}
@ -2569,179 +2952,7 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
</div>
</div>
<div className="div_row" >
<div className="Grid_1_col" >
<div className="Grid_2_col_sub_colone" style={{ minHeight: '10rem', padding: "0px" }}>
<div style={{ width: '100%', float: 'left' }}>
<div className="Grid_2_col_sub_colone_header">
Liste Blocs Compétences
</div>
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
fontFamily: "Plus Jakarta Sans, sans-serif", color: '#EEF1F6',
'& .line--statut--inscrit': {
backgroundColor: '#CEF6D8',
color: 'black',
},
'& .line--statut--preinscrit': {
backgroundColor: '#F7F2E0',
color: 'black',
},
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
"& .MuiDataGrid-row": {
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
}
},*/
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#d2e5f4",
color: "#0a2a4d",
fontSize: '14px',
fontFamily: 'DM Sans',
},
'& .line--statut--selected': {
backgroundColor: '#e9f7f1',
color: '#0a2a4d',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: '#0a2a4d',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: '#0a2a4d',
},
[`& .${gridClasses.cell}`]: {
py: 1,
},
}}
>
<DataGrid
// checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setSelectionModel(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_employee_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
}
}}
selectionModel={selectionModel_taches_with_code}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={p_detail_pole_activite_pedago_tab_bloc_competence.map((item, index) => (
{
id: index,
_id: (item)._id,
code: (item).code,
description: (item).description,
rang: (item).rang,
obligatoire: (item).obligatoire,
}
))}
columns={column_bloc_competence}
pageSize={10}
className="datagridclass"
onRowDoubleClick={(newSelectionModel, e) => {
}}
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
//sx={datagridSx}
getCellClassName={(params) => {
//field === "statut"
if (params.field === "status" && String(params.value) == "0") {
return 'cell--statut--preinscrit';
}
if (params.field === "status" && String(params.value) == "1") {
return 'cell--statut--inscrit';
}
if (params.field === "status" && String(params.value) == "-1") {
return 'cell--statut--annule';
}
}}
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_tache_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';
}
}}
getEstimatedRowHeight={() => 200}
getRowHeight={() => "auto"}
sx={{
"& .MuiDataGrid-cellContent": {
minHeight: 50,
}
}}
/>
</Box>
<br />
</div>
</div>
</div>
<div className="div_row" style={{ "border": "None", marginTop: "1rem" }}>
<div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
<Button variant="outlined" onClick={(event) => {
}}
className="detail_class_submenu bton_add_session"
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Bloc Compétences &nbsp;
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />
</Button>
<br />
</div>
</div>
</div>
</div>
<div className="div_row" >
<div className="Grid_1_col" >
@ -2773,11 +2984,6 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
},
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
"& .MuiDataGrid-row": {
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
}
},*/
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#d2e5f4",
color: "#0a2a4d",
@ -2820,6 +3026,7 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
rows={tab_competence_activite_pedagogique_with_code.map((item, index) => (
{
id: index,
mysy_single_field: (item).mysy_single_field,
activite_pedagogique_id: (item).activite_pedagogique_id,
activite_pedagogique_code: (item).activite_pedagogique_code,
activite_pedagogique_description: (item).activite_pedagogique_description,
@ -2900,11 +3107,12 @@ const Module_Pole_Actvitie_Pedagogique = (props) => {
<div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
<Button variant="outlined" onClick={(event) => {
setselected_activite_for_competence_id("");
setselected_competence_for_competence_id("");
setDialog_Competence_To_Activite_open(true);
}}
className="detail_class_submenu bton_add_session"
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Bloc Compétences &nbsp;
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Compétences &nbsp;
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />
</Button>