04/04/24 - 19h30

recette2
cherif 2024-04-04 19:15:58 +02:00
parent 14a34145c7
commit 2b6d2372d1
11 changed files with 7750 additions and 92 deletions

View File

@ -1,7 +1,7 @@
import React, { useState, useEffect } from "react";
import {BrowserRouter, Switch, Route} from "react-router-dom"
import React, { useState, useEffect } from "react";
import { BrowserRouter, Switch, Route } from "react-router-dom"
import './App.css';
import NotFound from './pages/NotFound'
import NotFound from './pages/NotFound'
import Contact from './pages/Contact'
import Connexion from './pages/Connexion'
import Login from './pages/Login';
@ -9,7 +9,7 @@ import Recherche from "./pages/recherche_new";
import Recherche_new_v2 from "./pages/recherche_new_v2";
import TestUrl from "./pages/testurl";
import Account from "./pages/account";
import DisplayDetailClass from "./pages/displaydetailclass";
import DisplayDetailClass from "./pages/displaydetailclass";
import DisplayDetailClass_new_v2 from "./pages/displaydetailclass_new_v2";
import DisplayDetailClassAction from "./pages/displaydetailclassaction";
import DisplayDetailArticle from "./pages/displaydetailarticle";
@ -43,10 +43,11 @@ import TestUrl_New from "./pages/testurl_new";
import QuiSommesNous_v3 from "./pages/quisommesnous_v3";
import Test_Drag_Drop from "./pages/test_drag_drop";
import Test_Drag_Drop2 from "./pages/test_dnd";
import Test_Drag_Drop2 from "./pages/test_dnd";
import ESign from "./pages/eSigne";
import ESignDiplayDignedDocument from "./pages/edigndiplaydigneddocument";
import SurveyDocument from "./pages/surveydocument";
function App() {
@ -57,80 +58,82 @@ function App() {
return (
<div>
<div className="App">
{/*API DEV = {process.env.REACT_APP_API_URL_DEV} <br/>
<div>
<div className="App">
{/*API DEV = {process.env.REACT_APP_API_URL_DEV} <br/>
API REC = {process.env.REACT_APP_API_URL_REC}<br/>
API URL = {process.env.REACT_APP_API_URL}<br/>
*/}
<div className="main_haut">
<BrowserRouter>
<scrollToTop />
<div className="main_haut">
<BrowserRouter>
<scrollToTop />
<Switch>
<Route path="/" exact component={Recherche_new_v2} />
<Route path="/acceuil" exact component={Acceuil} />
<Route path="/contact" exact component={Contact} />
<Route path="/mysy-user-account" exact component={Account} />
<Route path="/create_account" exact component={CreateAccount} />
<Route path="/user-connexion" exact component={Connexion} />
<Route path="/Connexion" exact component={Login} />
<Route path="/recherche-formation" exact component={Recherche_new_v2} />
<Route path="/recherche-formation/ref/:NewSearchText" exact component={Recherche_new_v2} />
<Route path="/testurl/:course/:tab" exact component={TestUrl} />
<Route path="/testurl_new/:courseid/:tabid" exact component={TestUrl_New} />
<Route path="/Display-Detail-formation/:classId" exact component={DisplayDetailClass_new_v2} />
<Route path="/Display-Detail-formation/:classId" exact component={DisplayDetailClass_new_v2} />
<Route path="/Display-Detail-formation/:classId/:action" exact component={DisplayDetailClass_new_v2} />
<Route path="/Display-Detail-formation_old/:classId/:action" exact component={DisplayDetailClass_new_v2} />
<Route path="/Display-Detail-Article/:articleId" exact component={DisplayDetailArticle} />
<Route path="/Display-Detail-formation-Coeur/:classId" exact component={CoupDeCoeur} />
<Route path="/Partner/:action/:orderid/:packs" exact component={Partner} />
<Route path="/" exact component={Recherche_new_v2} />
<Route path="/Partner/:action/:orderid" exact component={Partner} />
<Route path="/acceuil" exact component={Acceuil} />
<Route path="/contact" exact component={Contact} />
<Route path="/mysy-user-account" exact component={Account} />
<Route path="/create_account" exact component={CreateAccount} />
<Route path="/user-connexion" exact component={Connexion} />
<Route path="/Connexion" exact component={Login} />
<Route path="/recherche-formation" exact component={Recherche_new_v2} />
<Route path="/recherche-formation/ref/:NewSearchText" exact component={Recherche_new_v2} />
<Route path="/testurl/:course/:tab" exact component={TestUrl} />
<Route path="/testurl_new/:courseid/:tabid" exact component={TestUrl_New} />
<Route path="/Display-Detail-formation/:classId" exact component={DisplayDetailClass_new_v2} />
<Route path="/Display-Detail-formation/:classId" exact component={DisplayDetailClass_new_v2} />
<Route path="/Display-Detail-formation/:classId/:action" exact component={DisplayDetailClass_new_v2} />
<Route path="/Display-Detail-formation_old/:classId/:action" exact component={DisplayDetailClass_new_v2} />
<Route path="/Display-Detail-Article/:articleId" exact component={DisplayDetailArticle} />
<Route path="/Display-Detail-formation-Coeur/:classId" exact component={CoupDeCoeur} />
<Route path="/Partner/:action/:orderid/:packs" exact component={Partner} />
<Route path="/Partner/:action" exact component={Partner} />
<Route path="/Partner" exact component={Partner} />
<Route path="/PartnerLogin" exact component={PartnerLogin} />
<Route path="/PartnerLogin0" exact component={PartnerLogin0} />
<Route path="/PartnerLogin1" exact component={PartnerLogin1} />
<Route path="/Recherche-Article-formation" exact component={RechecheArticles} />
<Route path="/Ajout-Article-formation" exact component={AddArticle} />
<Route path="/ResetUserPwd/:token/:accounttype" exact component={ResetUserPwd} />
<Route path="/DeleteUserAccount/:token" exact component={DeleteUserAccount} />
<Route path="/QuiSommesNous" exact component={QuiSommesNous_v3} />
<Route path="/QuiSommesNous_v3" exact component={QuiSommesNous_v3} />
<Route path="/ContactezNous" exact component={ContactezNous} />
<Route path="/mysy-training-login/:obj/:objid" exact component={Login} />
<Route path="/mysy-account-activated/" exact component={AccountUserActivated} />
<Route path="/Produits-Services/" exact component={ProduitsService} />
<Route path="/Recherche_new/" exact component={Recherche_new} />
<Route path="/GestionAdministrative/:internal_url" exact component={GestionAdministrative} />
<Route path="/Recherche_new/:type/:categorie" exact component={Recherche_new} />
<Route path="/Recherche_old/" exact component={Recherche_old} />
<Route path="/Connexion-utilisateur-0/" exact component={UserSignFirst} />
<Route path="/Emargement/" exact component={Emargement} />
<Route path="/CartoucheComMySy/" exact component={Formation_Cartouche_Com} />
<Route path="/Test_DragDrop/" exact component={Test_Drag_Drop} />
<Route path="/Test_DragDrop2/" exact component={Test_Drag_Drop2} />
<Route path="/Recherche_new_v2/" exact component={Recherche_new_v2} />
<Route path="/Recherche_new_v2/:type/:categorie" exact component={Recherche_new_v2} />
<Route path="/unsubscribe/" exact component={SeDesabonner} />
<Route path="/OrderConfirmation_3DS/:orderid/:packs" exact component={OrderConfirmation_3DS} />
<Route path="/page-inconnue/" exact component={NotFound} />
<Route path="/formation-inconnue/" exact component={Training_Inactive_Or_Not_Found} />
<Route path="/E_Signature/:document_id" exact component={ESign} />
<Route path="/E_Document/:document_id/:partner_owner_recid/:secret_key_signature" exact component={ESignDiplayDignedDocument} />
<Route component={NotFound} />
<Route path="/Partner/:action/:orderid" exact component={Partner} />
<Route path="/Partner/:action" exact component={Partner} />
<Route path="/Partner" exact component={Partner} />
<Route path="/PartnerLogin" exact component={PartnerLogin} />
<Route path="/PartnerLogin0" exact component={PartnerLogin0} />
<Route path="/PartnerLogin1" exact component={PartnerLogin1} />
<Route path="/Recherche-Article-formation" exact component={RechecheArticles} />
<Route path="/Ajout-Article-formation" exact component={AddArticle} />
<Route path="/ResetUserPwd/:token/:accounttype" exact component={ResetUserPwd} />
<Route path="/DeleteUserAccount/:token" exact component={DeleteUserAccount} />
<Route path="/QuiSommesNous" exact component={QuiSommesNous_v3} />
<Route path="/QuiSommesNous_v3" exact component={QuiSommesNous_v3} />
<Route path="/ContactezNous" exact component={ContactezNous} />
<Route path="/mysy-training-login/:obj/:objid" exact component={Login} />
<Route path="/mysy-account-activated/" exact component={AccountUserActivated} />
<Route path="/Produits-Services/" exact component={ProduitsService} />
<Route path="/Recherche_new/" exact component={Recherche_new} />
<Route path="/GestionAdministrative/:internal_url" exact component={GestionAdministrative} />
<Route path="/Recherche_new/:type/:categorie" exact component={Recherche_new} />
<Route path="/Recherche_old/" exact component={Recherche_old} />
<Route path="/Connexion-utilisateur-0/" exact component={UserSignFirst} />
<Route path="/Emargement/" exact component={Emargement} />
<Route path="/CartoucheComMySy/" exact component={Formation_Cartouche_Com} />
<Route path="/Test_DragDrop/" exact component={Test_Drag_Drop} />
<Route path="/Test_DragDrop2/" exact component={Test_Drag_Drop2} />
<Route path="/Recherche_new_v2/" exact component={Recherche_new_v2} />
<Route path="/Recherche_new_v2/:type/:categorie" exact component={Recherche_new_v2} />
<Route path="/unsubscribe/" exact component={SeDesabonner} />
<Route path="/OrderConfirmation_3DS/:orderid/:packs" exact component={OrderConfirmation_3DS} />
<Route path="/page-inconnue/" exact component={NotFound} />
<Route path="/formation-inconnue/" exact component={Training_Inactive_Or_Not_Found} />
<Route path="/E_Signature/:document_id" exact component={ESign} />
<Route path="/E_Document/:document_id/:partner_owner_recid/:secret_key_signature" exact component={ESignDiplayDignedDocument} />
<Route path="/Survey/:survey_id/" exact component={SurveyDocument} />
<Route component={NotFound} />
</Switch>
</BrowserRouter>
</div>
</BrowserRouter>
</div>
</div>
</div>
);
}

View File

@ -4637,7 +4637,7 @@ const Apprenant = (props) => {
fontSize: 14
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
@ -4741,7 +4741,7 @@ const Apprenant = (props) => {
// 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) {
@ -6056,9 +6056,9 @@ const Apprenant = (props) => {
return 'cell--presentiel';
}
}}
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_id)) {
return 'line--statut--selected';
@ -6069,10 +6069,16 @@ const Apprenant = (props) => {
else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair';
}
}}
getEstimatedRowHeight={() => 200}
getRowHeight={() => "auto"}
sx={{
"& .MuiDataGrid-cellContent": {
minHeight: 50,
}
}}
/>
</Box>
<br />
@ -6197,7 +6203,7 @@ const Apprenant = (props) => {
</div>}
{String(display_detail_piece_joint) === "1" && String(add_One_Apprenant) !== "1" && selected_apprenant_id && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<div className="div_row" >
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}> Pièces Jointes </nav>
<div className="div_row" style={{ "padding": "5px" }}>

View File

@ -60,6 +60,7 @@ import Dashbord_Ressources_Humaines from "./Dashbord_Ressources_Humaines";
import Dashbord_Inscriptions from "./Dashbord_Inscription";
import Materiel_Salle from "./Materiel_Salle";
import CRM_Opportunite from "./Crm_Opportunite";
import Partner_Config_Formulaires from "./Partner_Config_Formulaires";
import Mon_Tableau_De_Bord from "./Mon_Tableau_De_Bord";
import Dashbord_Formation from "./Dashbord_Formation";
@ -276,11 +277,11 @@ const Partner = (props) => {
function retrieve_user_acces_right() {
const stored_cookie = getCookie('tokenmysypart');
if( !stored_cookie || String(stored_cookie).trim() === ""){
if (!stored_cookie || String(stored_cookie).trim() === "") {
history.push("/Connexion");
return;
}
var acces_right_token_name = stored_cookie + "_uar";
@ -339,7 +340,7 @@ const Partner = (props) => {
'mes_stagiaires', 'mes_employes', 'mon_materiel', 'config_document', 'factures_client', "config_technique",
"config_champ_specific", "module_agenda", "config_session_steps", "config_jours_heures", "dashbord_formation",
"dashbord_session", "mon_tableau_de_bord", "prix_achat", "mes_apprenants", "dashbord_ressources_humaines",
"dashbord_inscriptions", "mes_salles", "mes_opportunites"]
"dashbord_inscriptions", "mes_salles", "mes_opportunites", "config_formulaires"]
if (action && list_menu.includes(action)) {
@ -493,6 +494,20 @@ const Partner = (props) => {
}
function config_formulaires_func(event) {
var security_retval = check_user_acces_right("config_document", "read");
if (security_retval === 1) {
setmenu("config_formulaires");
setapiexcelimportmessage();
setformation_file_name();
history.push("/Partner/config_formulaires");
document.body.style.backgroundColor = "#ffffff";
} else {
Dialog_1_handle_acces_insuffisant("Vos droits ne sont pas suffisants pour acceder à la gestion des documents");
}
}
function mes_factures_client_func(event) {
//var security_retval = check_user_acces_right("facture_client", "read");
//if (security_retval === 1) {
@ -1421,6 +1436,12 @@ const Partner = (props) => {
</Dropdown.Item>
<Dropdown.Item>
{String(menu) !== "config_formulaires" && <div className="sousmenu" onClick={config_formulaires_func}>&nbsp;&nbsp;<FcFinePrint className="icone_menu" />&nbsp;FORMULAIRES</div>}
{String(menu) === "config_formulaires" && <div className="sousmenu_selected" onClick={config_formulaires_func}> &nbsp;&nbsp; <FcFinePrint className="icone_menu" />&nbsp;FORMULAIRES</div>}
</Dropdown.Item>
</Dropdown>
@ -1685,10 +1706,10 @@ const Partner = (props) => {
{String(menu) === "mes_opportunites" &&
<div className="div_droite">
<CRM_Opportunite conntected_employee_id={conntected_employee_id}
read_access={check_user_acces_right("materiel", "read")}
write_access={check_user_acces_right("materiel", "write")}
reduce={"0"}/>
<CRM_Opportunite conntected_employee_id={conntected_employee_id}
read_access={check_user_acces_right("materiel", "read")}
write_access={check_user_acces_right("materiel", "write")}
reduce={"0"} />
</div>
}
@ -1774,6 +1795,15 @@ const Partner = (props) => {
</div>
}
{String(menu) === "config_formulaires" && <div className="div_droite">
<Partner_Config_Formulaires conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("config_document", "read")} write_access={check_user_acces_right("config_document", "write")} />
</div>
}
{String(menu) === "config_champ_specific" && <div className="div_droite">
<Config_Champs_Personnalise conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("config_document", "read")} write_access={check_user_acces_right("config_document", "write")} />
@ -2118,7 +2148,7 @@ const Partner = (props) => {
<Button variant="outlined" onClick={changeHandler2} className="detail_class_submenu" style={{
"background": "#c8cfd5",
"minWidth": "15rem", "color": "black", "width": "auto",
}}
id='menu_import_formation' name='menu_import_formation'>Choisir un fichier et importer des formations &nbsp; <SendIcon />
</Button><br />
@ -2331,10 +2361,10 @@ const Partner = (props) => {
{String(menu) === "config_technique" && <div className="div_droite div_droite_ralonge">
<Configuration_Technique conntected_employee_id={conntected_employee_id}
read_access={check_user_acces_right("config_document", "read")}
write_access={check_user_acces_right("config_document", "write")}
reduce={"1"} />
<Configuration_Technique conntected_employee_id={conntected_employee_id}
read_access={check_user_acces_right("config_document", "read")}
write_access={check_user_acces_right("config_document", "write")}
reduce={"1"} />
</div>
}
@ -2353,6 +2383,15 @@ const Partner = (props) => {
</div>
}
{String(menu) === "config_formulaires" && <div className="div_droite div_droite_ralonge">
<Partner_Config_Formulaires conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("config_document", "read")} write_access={check_user_acces_right("config_document", "write")} />
</div>
}
{String(menu) === "config_champ_specific" && <div className="div_droite div_droite_ralonge">
<Config_Champs_Personnalise conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("config_document", "read")} write_access={check_user_acces_right("config_document", "write")} />

View File

@ -1867,7 +1867,6 @@ const Partner_Commande = (props) => {
disable_Order_Header_DetailFields();
order_header_submenu_main();
}
const [Update_One_Order_Data_api, setUpdate_One_Order_Data_api] = useState();

File diff suppressed because it is too large Load Diff

View File

@ -40,7 +40,7 @@ import DialogTitle from '@mui/material/DialogTitle';
import { TransitionProps } from '@mui/material/transitions';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
const Partner_Configuration_Session_Steps = (props) => {
const history = useHistory();
@ -766,7 +766,7 @@ const Partner_Configuration_Session_Steps = (props) => {
</div>}
{String(config_data_edit_mode) !== "1" &&
<div className="session_caract"> Point de configuration laaa<br />
<div className="session_caract"> Point de configuration <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -779,8 +779,6 @@ const Partner_Configuration_Session_Steps = (props) => {
disabled={false}
className="disabled_style"
value={p_detail_config_point}
/>

View File

@ -0,0 +1,357 @@
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 Rating from '@mui/material/Rating';
import CheckOut from "./CheckOut";
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 } 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 Autocomplete from '@mui/material/Autocomplete';
import Popup from 'reactjs-popup';
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 DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import { format } from 'date-fns'
import moment from "moment";
import InputAdornment from '@mui/material/InputAdornment';
import { AiFillCloseCircle } 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 { TransitionProps } from '@mui/material/transitions';
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import { useParams } from 'react-router-dom'
import Header from "./Header";
import Footer from "./Fotter";
import { FcInfo } from "react-icons/fc";
import { Document, Page } from 'react-pdf';
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 Radio from '@mui/material/Radio';
import { daDK } from "@mui/material/locale";
function SurveyDocument() {
const history = useHistory();
const { survey_id } = useParams();
const [isLoading, setLoading] = useState();
const [tab_variable, settab_variable] = useState([]);
const [get_Given_Survey_Data_api, setget_Given_Survey_Data_api] = useState();
const [get_Given_Survey_Data_message, setget_Given_Survey_Data_message] = useState();
const [get_Given_Survey_Data_result, setget_Given_Survey_Data_result] = useState([]);
function get_Given_Survey_Data() {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Survey_Data_No_Token/";
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
//form.append("token", stored_cookie);
form.append("survey_id", survey_id);
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
//console.log(" get_Given_Survey_Data : In test res.data.status = " + res.data.status);
//console.log(" get_Given_Survey_Data: res.data.message = " + res.data.message);
if (String(res.data.status) === "true") {
setget_Given_Survey_Data_api("true");
setget_Given_Survey_Data_result(res.data.message);
var new_data2 = {};
const new_data = JSON.parse(res.data.message).list_questions.map((x) => {
var obj_name = x._id;
var local_node = {}
new_data2[String(obj_name)] = "";
});
settab_variable(new_data2);
}
else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
return;
}
else {
setget_Given_Survey_Data_api("false");
setget_Given_Survey_Data_message(res.data.message)
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('get_Given_Survey_Data ee: Not good man :( = ', error);
setget_Given_Survey_Data_api("false");
get_Given_Survey_Data_message(" Impossible de recuperer les données")
})
}
useEffect(() => {
get_Given_Survey_Data();
window.scrollTo({
top: 0,
behavior: "smooth",
});
}, [])
const [Record_Survey_Data_api, setRecord_Survey_Data_api] = useState();
const [Record_Survey_Data_message, setRecord_Survey_Data_message] = useState();
const [Record_Survey_Data_result, setRecord_Survey_Data_result] = useState();
function Record_Survey_Data() {
var form = new FormData();
const myJSON = JSON.stringify(tab_variable);
form.append("survey_id", survey_id);
form.append("list_response", myJSON);
console.log(" form == ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Record_Survey_Data_No_Token/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Record_Survey_Data res.data.status = " + res.data.status);
//console.log(" In Record_Survey_Data res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
alert(res.data.message);
history.push("/");
}
else {
setRecord_Survey_Data_api("false");
setRecord_Survey_Data_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Record_Survey_Data : Not good man :( Record_Survey_Data = ' + error);
setRecord_Survey_Data_api("false");
alert(" Impossible d'enregistrer le formulaire ");
})
}
function change_survey_data(e) {
var tmp = tab_variable;
tmp[String(e.name)] = e.value;
settab_variable(tmp)
}
return (
<div className="surveydocument">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
<Header />
{String(get_Given_Survey_Data_api) === "true" && <div style={{ "textAlign": "left", }}>
<div style={{ "width": "80%", "marginLeft": "10%", "background": "#F2F4F4", overflow: "auto", "paddingBottom": "1rem" }}>
<br />
<div className="question_box_entete">
Formation : {JSON.parse(get_Given_Survey_Data_result).class_title} <br />
session_code : {JSON.parse(get_Given_Survey_Data_result).session_code} <br />
session_title : {JSON.parse(get_Given_Survey_Data_result).session_title} <br />
session_code_date_debut : {JSON.parse(get_Given_Survey_Data_result).session_code_date_debut} <br />
session_code_date_fin : {JSON.parse(get_Given_Survey_Data_result).session_code_date_fin} <br />
</div>
{JSON.parse(get_Given_Survey_Data_result).list_questions && JSON.parse(get_Given_Survey_Data_result).list_questions.length > 0 &&
JSON.parse(get_Given_Survey_Data_result).list_questions.map((question) => (
<div>
<div className="question_box">
{question.question} <br />
{question.type && String(question.type) === "text" &&
<TextField
margin="dense"
name={question._id}
fullWidth
type="text"
multiline={true}
rows={2}
onChange={(e) => {
change_survey_data(e.target);
}}
/>}
{question.type && String(question.type) === "note" && question.max_note &&
<div id={question._id}
name={question._id}>
<Rating
id={question._id}
name={question._id}
precision={0.5}
defaultValue={0}
max={parseInt(question.max_note)}
onChange={(e) => {
change_survey_data(e.target);
}}
/>
</div>
}
{question.type && String(question.type) === "entier" && question.max_note &&
<div>
<TextField
margin="dense"
fullWidth
type="integer"
name={question._id}
onChange={(e) => {
change_survey_data(e.target);
}}
/>
</div>
}
{question.type && String(question.type) === "bool" &&
<div>
<FormControl>
<FormLabel id="demo-row-radio-buttons-group-label">Gender</FormLabel>
<RadioGroup
row
aria-labelledby="demo-row-radio-buttons-group-label"
onChange={(e) => {
change_survey_data(e.target);
}}
name={question._id}
>
<FormControlLabel value="oui" control={<Radio />} label="Oui" />
<FormControlLabel value="non" control={<Radio />} label="Non" />
</RadioGroup>
</FormControl>
</div>
}
</div>
{/*
Question : {question.question} <br />
Type : {question.type} <br />
{question.max_note && question.max_note} <br />
*/}
</div>
))}
</div>
<div style={{ "width": "80%", "marginLeft": "10%", "background": "white", }}>
<br />
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_enreg" onClick={Record_Survey_Data}>Envoyer
</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
<Button variant="contained" className="bton_annule" onClick={"annule_edit_formulaire"}>Annuler
</Button>
</div>
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
</div>
</div>}
{String(get_Given_Survey_Data_api) === "false" && <div style={{ height: "40vh" }}>
Le document est invalide
</div>}
<div className="div_row">
&nbsp;
</div>
<div className="pieddepage">
<Footer />
</div>
</div>
);
}
export default SurveyDocument;

View File

@ -0,0 +1,17 @@
import Link from "next/link";
import Navigation from "../components/Navigation";
import SurveyDocument from "../components/SurveyDocument"
export default function Login() {
return (
<div>
<Navigation />
<div>
<SurveyDocument />
</div>
</div>
);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -102,3 +102,5 @@
@import "./components/materiel_salle";
@import "./components/crm_opportunite";
@import "./components/esign";
@import "./components/partner_configiguration_formulaires";
@import "./components/surveydocument";