31/08/2023 - 21h30

recette2
cherif 2023-08-31 21:25:46 +02:00
parent 208fbd11cd
commit 34cea2748c
9 changed files with 2370 additions and 10 deletions

View File

@ -1,2 +1,5 @@
code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;date_debut_inscription;date_fin_inscription;formateur;distanciel;presentiel;prix_session;session_status;lms_class_code
session1;25/05/2023;29/05/2024;18;79 Rue de Sèvres;92100;Boulogne-Billancourt;03/01/2023;28/06/2024;EFAI;0;1;2590;1;INTRODUCTIONAUXBASESDEDONNEES
formation_code_externe;code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;date_debut_inscription;date_fin_inscription;formateur;distanciel;presentiel;prix_session;session_status;lms_class_code;session_etape
MYSY_Test_AP;KANA1;11/10/2023;13/10/2023;20;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;NBE;1;0;750;1;Apprentissage des Kana;0
MYSY_Test_AP;KANA2;14/11/2023;16/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;NBE;1;0;750;1;Apprentissage des Kana;0
MYSY_Test_AP;KANA3;21/11/2023;23/11/2023;10;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;NBE;1;0;750;1;Perfectionnement;0
MYSY_Test_AP;KANA4;28/11/2023;30/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;NBE;1;0;750;1;Perfectionnement;0

1 formation_code_externe code_session date_debut date_fin nb_participant adresse code_postal ville date_debut_inscription date_fin_inscription formateur distanciel presentiel prix_session session_status lms_class_code session_etape
2 MYSY_Test_AP session1 KANA1 25/05/2023 11/10/2023 29/05/2024 13/10/2023 18 20 79 Rue de Sèvres 2 passage de la Providence 92100 75020 Boulogne-Billancourt Paris 03/01/2023 01/09/2023 28/06/2024 30/09/2023 EFAI NBE 0 1 1 0 2590 750 1 INTRODUCTIONAUXBASESDEDONNEES Apprentissage des Kana 0
3 MYSY_Test_AP KANA2 14/11/2023 16/11/2023 15 2 passage de la Providence 75020 Paris 01/09/2023 30/09/2023 NBE 1 0 750 1 Apprentissage des Kana 0
4 MYSY_Test_AP KANA3 21/11/2023 23/11/2023 10 2 passage de la Providence 75020 Paris 01/09/2023 30/09/2023 NBE 1 0 750 1 Perfectionnement 0
5 MYSY_Test_AP KANA4 28/11/2023 30/11/2023 15 2 passage de la Providence 75020 Paris 01/09/2023 30/09/2023 NBE 1 0 750 1 Perfectionnement 0

View File

@ -1,2 +0,0 @@
formation_code_externe;code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;date_debut_inscription;date_fin_inscription;formateur;distanciel;presentiel;prix_session;session_status;lms_class_code;session_etape
MYSY_Test_OP;session1;25/10/2023;29/10/2024;18;79 Rue de Sèvres;92100;Boulogne-Billancourt;03/01/2023;28/10/2024;EFAI;0;1;2590;1;INTRODUCTIONAUXBASESDEDONNEES;0
1 formation_code_externe code_session date_debut date_fin nb_participant adresse code_postal ville date_debut_inscription date_fin_inscription formateur distanciel presentiel prix_session session_status lms_class_code session_etape
2 MYSY_Test_OP session1 25/10/2023 29/10/2024 18 79 Rue de Sèvres 92100 Boulogne-Billancourt 03/01/2023 28/10/2024 EFAI 0 1 2590 1 INTRODUCTIONAUXBASESDEDONNEES 0

View File

@ -38,7 +38,8 @@ import Emargement from "./pages/emargementOk";
import Formation_Cartouche_Com from "./pages/recherche_cartouche_com";
import SeDesabonner from './pages/sedesabonner';
import OrderConfirmation_3DS from "./pages/orderconfirmation_3DS";
import Training_Inactive_Or_Not_Found from "./pages/Traning_Inactif_Or_Not_Exist"
import Training_Inactive_Or_Not_Found from "./pages/Traning_Inactif_Or_Not_Exist";
import TestUrl_New from "./pages/testurl_new";
function App() {
@ -69,6 +70,7 @@ function App() {
<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} />

View File

@ -173,7 +173,7 @@ const DisplayPartnerSession = (props) => {
{ field: 'formateur', headerName: 'Formateur', width: datagrid_columns_size_model1, hide: true, hideable: true, },
{ field: 'nb_participant', headerName: 'Nb Parti.', width: datagrid_columns_size_model2, align: "center", },
{
field: 'taux_replissage', headerName: 'Replissage', align: "center", width: datagrid_columns_size_model1,
field: 'taux_remplissage', headerName: 'Remplissage', align: "center", width: datagrid_columns_size_model1,
align: "left",
renderCell: (params) => {
return (
@ -182,12 +182,12 @@ const DisplayPartnerSession = (props) => {
color="success"
sx={{ color: "#1bd900" }}
variant="determinate"
value={(params?.row.taux_replissage * 100).toFixed(2)}
value={(params?.row.taux_remplissage * 100).toFixed(2)}
/>
<Typography
variant="body2"
color="text.secondary"
>{`${(params?.row.taux_replissage * 100).toFixed(0)}%`}</Typography>
>{`${(params?.row.taux_remplissage * 100).toFixed(0)}%`}</Typography>
</>
);
},
@ -4496,7 +4496,7 @@ const DisplayPartnerSession = (props) => {
nb_participant: JSON.parse(item).nb_participant,
title: JSON.parse(item).title,
domaine: JSON.parse(item).domaine,
taux_replissage: JSON.parse(item).taux_replissage,
taux_remplissage: JSON.parse(item).taux_remplissage,
nb_inscrit: JSON.parse(item).nb_inscrit,
nb_preinscrit: JSON.parse(item).nb_preinscrit,
duration: JSON.parse(item).duration_concat,
@ -4619,7 +4619,7 @@ const DisplayPartnerSession = (props) => {
onChange={liste_sessions_file_change}
/>
<a href='/sample/template_import_session_plusieurs_formations.csv' download>Télécharger un fichier modèle</a>
<a href='/sample/template_import_session_formation.csv' download>Télécharger un fichier modèle</a>
</div>
</div>
<div className="div_row"> &nbsp;</div>

View File

@ -0,0 +1,94 @@
import React, { useState, useEffect, useCallback, useRef } from "react";
import axios from "axios";
import { Helmet } from "react-helmet";
import { useParams } from 'react-router-dom'
import Header from "./Header";
import { useLocation } from "react-router-dom";
import fileDownload from 'js-file-download'
import { RichTextEditor } from '@mantine/rte';
import { Editor } from '@tinymce/tinymce-react';
import Button from '@mui/material/Button';
const TestUrl_New = (props) => {
const { courseid, tabid } = useParams();
const [message, setMessage] = useState(null);
const editorRef_programme = useRef(null);
const [editorRef_programme_limite, seteditorRef_programme] = useState(1000);
const [field_programme, setfield_programme] = useState("");
const [editor_tochange, seteditor_tochange] = useState("");
function editor_keyup() {
seteditor_tochange("1");
}
function DataUpdated() {
}
function add_text() {
console.log(" Ajouter un texte ");
editorRef_programme.current.insertContent("<i> OKKK </i> ");
}
return (
<div className="testurl_new">
<Helmet>
<title>testurl_new</title>
<meta name="description" content="{this.metaDetails.description}" />
<meta name="keywords" content="{this.metaDetails.keywords}" />
</Helmet>
<Header />
<div className="div_mobile">
<h3> Page de test * testurl_new </h3>
parametres courseid = {courseid}, tabid = {tabid}
<br />
<div className="div_row">
<div style={{ "width": "48%", "marginLeft": "1rem", "float": "left" }}>
<div className="titre_training_text"> Programme (max 1000 caractères) </div>
<Editor
id="cherif"
onInit={(evt, editor) => editorRef_programme.current = editor}
initialValue={field_programme}
onKeyUp={editor_keyup}
onEditorChange={(newValue, editor) => {
if (String(editor_tochange) === "1") {
//alert(" change");
DataUpdated();
seteditor_tochange("");
}
}}
init={{
resize: false,
height: 300,
menubar: false,
plugins: [
'advlist autolink lists link image charmap print preview anchor',
'searchreplace visualblocks code fullscreen',
'insertdatetime media table paste code help wordcount'
],
content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px; }'
}}
/>
</div>
<div style={{ "width": "48%", "marginLeft": "1rem", "float": "left" }}>
<div className="titre1"> Action </div>
<Button className="bton_enreg" onClick={add_text}
>Ajouter text 'OKKK' &nbsp;
</Button>
</div>
</div>
</div>
</div >
)
}
export default TestUrl_New;

12
src/pages/estUrl_new.js Normal file
View File

@ -0,0 +1,12 @@
import TestUrl_New from "../components/TestUrl_new";
import Navigation from "../components/Navigation";
export default function Recherche() {
return (
<div>
<Navigation />
<TestUrl_New />
</div>
);
}

13
src/pages/testurl_new.js Normal file
View File

@ -0,0 +1,13 @@
import TestUrl_New from "../components/TestUrl_new";
import Navigation from "../components/Navigation";
export default function Recherche() {
return (
<div>
<Navigation />
<TestUrl_New />
</div>
);
}

File diff suppressed because it is too large Load Diff

View File

@ -75,4 +75,5 @@
@import "./components/global_mysy_css";
@import "./components/employes";
@import "./components/materiels";
@import "./components/testurl_new";