07/04/2024 - 13h19

recette2
cherif 2024-04-07 12:56:44 +02:00
parent e4d5914456
commit dd228700f6
4 changed files with 133 additions and 75 deletions

View File

@ -10013,6 +10013,8 @@ const DisplayPartnerSession = (props) => {
/* Recuperation des evaluations */ /* Recuperation des evaluations */
const [selectionModel_evaluation, setSelectionModel_evaluation] = React.useState([]); const [selectionModel_evaluation, setSelectionModel_evaluation] = React.useState([]);
const [rowss_evaluation, setRows_evaluation] = useState([]); const [rowss_evaluation, setRows_evaluation] = useState([]);
const [GetListePreinscrit_evaluation_api, setGetListePreinscrit_evaluation_api] = useState(); const [GetListePreinscrit_evaluation_api, setGetListePreinscrit_evaluation_api] = useState();
const [GetListePreinscrit_evaluation_meassage, setGetListePreinscrit_evaluation_meassage] = useState(); const [GetListePreinscrit_evaluation_meassage, setGetListePreinscrit_evaluation_meassage] = useState();
const [GetListePreinscrit_evaluation_result, setGetListePreinscrit_evaluation_result] = useState([]) const [GetListePreinscrit_evaluation_result, setGetListePreinscrit_evaluation_result] = useState([])

View File

@ -10,7 +10,7 @@ import { getCookie } from 'react-use-cookie';
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid'; import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import excel_icone from "../mysy_img/excel_icone.png"; import excel_icone from "../mysy_img/excel_icone.png";
import Popup from 'reactjs-popup'; import Popup from 'reactjs-popup';
import fileDownload from 'js-file-download' import fileDownload from 'js-file-download';
import 'reactjs-popup/dist/index.css'; import 'reactjs-popup/dist/index.css';
import { AiFillCloseCircle, } from "react-icons/ai"; import { AiFillCloseCircle, } from "react-icons/ai";
import parse from 'html-react-parser' import parse from 'html-react-parser'

View File

@ -11,7 +11,7 @@ import CheckOut from "./CheckOut";
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid'; import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css"; import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import 'react-tooltip/dist/react-tooltip.css' import 'react-tooltip/dist/react-tooltip.css'
import fileDownload from 'js-file-download';
import Popup from 'reactjs-popup' import Popup from 'reactjs-popup'
import 'reactjs-popup/dist/index.css'; import 'reactjs-popup/dist/index.css';
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc"; import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
@ -40,74 +40,78 @@ const Module_Evaluation_Positionnement = (props) => {
const [isLoading, setLoading] = useState(); const [isLoading, setLoading] = 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>
);
}
const columns_q_position = [ const columns_q_position = [
{ 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: 'Form. Code', headerName: 'form_code', minwidth: 200, flex: 1, hideable: true, resizable: true, }, { field: 'form_code', headerName: 'Form. Code', hide: true, minwidth: 200, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email', headerName: 'email', minwidth: 200, flex: 1, hideable: true, resizable: true, }, { field: 'email', headerName: 'email', minwidth: 300, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 200, flex: 1, hide: false, editable: true, }, { field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'prenom', headerName: 'prenom', minwidth: 200, flex: 1, hide: false, editable: false, }, { field: 'prenom', headerName: 'prenom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ {
field: 'status', headerName: 'Statut', width: 100, editable: false, flex: true, field: 'status', headerName: 'Statut', width: 100, editable: false, flex: true,
valueFormatter: (params) => { valueFormatter: (params) => {
if (String(params.value) === "0") if (String(params.value) === "0")
return "Init"; return "Init.";
else if (String(params.value) === "1") else if (String(params.value) === "1")
return "Envoyé"; return "Env.";
else if (String(params.value) === "2") else if (String(params.value) === "2")
return "Répondu"; return "Rép.";
else else
return " ?"; return " ?";
}, },
}, },
{ {
field: 'date_envoie', headerName: 'Date Envoi', width: 150, editable: false, field: 'date_envoie', headerName: 'Date Envoi', width: 150, editable: false,
valueFormatter: (params) => { valueFormatter: (params) => {
return String(params.value).substring(0, 16) if (params.value)
return String(params.value).substring(0, 16)
else
return ""
}, },
}, },
{/* {
field: "voir", headerName: 'voir', field: 'date_reponse', headerName: 'Date Réponse', width: 150, editable: false,
renderCell: (cellValues) => { valueFormatter: (params) => {
return ( if (params.value)
return String(params.value).substring(0, 16)
else
return ""
<Button },
},
onClick={(event) => {
//handleClick_valide_emargement(event, cellValues);
}}
>
<FcApproval />
</Button>
);
}
*/ },
{/*
field: "envoyer", headerName: 'Envoyer',
renderCell: (cellValues) => {
return (
<Button
onClick={(event) => {
//handleClick_valide_emargement(event, cellValues);
}}
>
<FcApproval />
</Button>
);
}
*/},
] ]
@ -413,6 +417,37 @@ const Module_Evaluation_Positionnement = (props) => {
} }
function Export_survey_datatab_class() {
const stored_cookie = getCookie('tokenmysypart');
var nom_fichier_cmd = "export_reponses.xlsx";
var url = process.env.REACT_APP_API_URL + "myclass/api/Export_To_Excel_Survey_with_filter/" + stored_cookie + "/" + selected_session_id+"/pos/";
setLoading(true);
axios.get(url, { responseType: 'blob', },)
.then((res) => {
setLoading(false);
//console.log(" In Export_Dashbord_to_CSV res.data = " + res.data);
if (String(res.data) === String("false")) {
alert("Impossible d'exporter les réponses (2) ");
} else {
fileDownload(res.data, nom_fichier_cmd)
}
}).catch((error) => {
setLoading(false);
console.error('Error:', error);
alert(" Impossible d'exporter les réponses ")
});
setLoading(false);
}
return ( return (
<div className="module_evaluation_positionnement"> <div className="module_evaluation_positionnement">
@ -615,8 +650,13 @@ const Module_Evaluation_Positionnement = (props) => {
<Button className="bton_emarge" onClick={(event) => { <Button className="bton_emarge" onClick={(event) => {
Getall_Survey_Q_Positionnement_By_Session(); Getall_Survey_Q_Positionnement_By_Session();
}}>Actualiser la liste</Button><br /> }}>Actualiser la liste</Button>
<Button className="bton_emarge" onClick={(event) => {
Export_survey_datatab_class();
}}>Exporter (excel)</Button><br />
</div> </div>
@ -652,8 +692,14 @@ const Module_Evaluation_Positionnement = (props) => {
py: 1, py: 1,
}, },
'& .line--attestion_envoye': { '& .line--positionnement_envoye': {
backgroundColor: '#ccffcc', backgroundColor: '#F9E79F',
color: 'black',
},
'& .line--positionnement_repondu': {
backgroundColor: '#ABEBC6',
color: 'black', color: 'black',
fontWeight: '600', fontWeight: '600',
}, },
@ -682,9 +728,9 @@ const Module_Evaluation_Positionnement = (props) => {
nom: JSON.parse(item).nom, nom: JSON.parse(item).nom,
prenom: JSON.parse(item).prenom, prenom: JSON.parse(item).prenom,
status: JSON.parse(item).statut, status: JSON.parse(item).statut,
form_code: JSON.parse(item).formulaire.description, form_code: JSON.parse(item).formulaire.code,
date_envoie: JSON.parse(item).date_envoi,
date_reponse: JSON.parse(item).date_reponse,
} }
))} ))}
@ -696,8 +742,6 @@ const Module_Evaluation_Positionnement = (props) => {
}} }}
rowsPerPageOptions={[10]} rowsPerPageOptions={[10]}
disableSelectionOnClick disableSelectionOnClick
components={{ components={{
@ -706,25 +750,17 @@ const Module_Evaluation_Positionnement = (props) => {
//sx={datagridSx} //sx={datagridSx}
getCellClassName={(params) => { getCellClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_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';
}
}} }}
getRowClassName={(params) => { getRowClassName={(params) => {
if (String(params.row.status) === "1") { if (String(params.row.status) === "1") {
return 'line--positionnement_envoye';
}
return 'line--attestion_envoye'; if (String(params.row.status) === "2") {
return 'line--positionnement_repondu';
} }
// Pour la gestion de la couleur de zone double cliquée // Pour la gestion de la couleur de zone double cliquée
@ -814,7 +850,7 @@ const Module_Evaluation_Positionnement = (props) => {
{' '} {' '}
{String(actionmass_q_position_val) === "resend" && {String(actionmass_q_position_val) === "resend" &&
<font color="red"> Confirmer l'envoi de en masse de {selectionModel_q_position.length} attestation(s) de formation. <font color="red"> Confirmer l'envoi de en masse de {selectionModel_q_position.length} questionnaire(s) de positionnement.
</font>} </font>}
</div> </div>
<div className="gest_actions"> <div className="gest_actions">

View File

@ -149,9 +149,27 @@ function SurveyDocument() {
form.append("survey_id", survey_id); form.append("survey_id", survey_id);
form.append("list_response", myJSON); form.append("list_response", myJSON);
var is_empty_field = 0;
for (let i = 0; i < Object.keys(tab_variable).length; i++) {
var key = Object.keys(tab_variable)[i];
var val = tab_variable[key];
document.getElementsByName(key)[0].style.backgroundColor = "#FFFFFF";
if( String(val).length === 0 ){
document.getElementsByName(key)[0].style.backgroundColor = "#F9E79F";
is_empty_field = 1;
}
}
if( is_empty_field === 1 ){
alert(" Le questionnaire n'est pas correctement rempli");
return;
}
console.log(" form == ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Record_Survey_Data_No_Token/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Record_Survey_Data_No_Token/";
@ -261,7 +279,8 @@ function SurveyDocument() {
} }
{question.type && String(question.type) === "entier" && question.max_note && {question.type && String(question.type) === "entier" && question.max_note &&
<div> <div id={question._id}
name={question._id}>
<TextField <TextField
margin="dense" margin="dense"
fullWidth fullWidth
@ -275,7 +294,8 @@ function SurveyDocument() {
</div> </div>
} }
{question.type && String(question.type) === "bool" && {question.type && String(question.type) === "bool" &&
<div> <div id={question._id}
name={question._id}>
<FormControl> <FormControl>
<RadioGroup <RadioGroup