recette2
cherif 2025-05-25 18:28:00 +02:00
parent 9795ff1e2a
commit fd4325c09c
9 changed files with 178 additions and 48 deletions

11
package-lock.json generated
View File

@ -133,6 +133,7 @@
"react-md-spinner": "^1.0.0", "react-md-spinner": "^1.0.0",
"react-meta-tags": "^1.0.1", "react-meta-tags": "^1.0.1",
"react-multi-carousel": "^2.8.2", "react-multi-carousel": "^2.8.2",
"react-native-country-flag": "^2.0.2",
"react-native-paper": "^4.9.2", "react-native-paper": "^4.9.2",
"react-native-web": "^0.17.5", "react-native-web": "^0.17.5",
"react-paginate": "^8.1.1", "react-paginate": "^8.1.1",
@ -27299,6 +27300,11 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/react-native-country-flag": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/react-native-country-flag/-/react-native-country-flag-2.0.2.tgz",
"integrity": "sha512-5LMWxS79ZQ0Q9ntYgDYzWp794+HcQGXQmzzZNBR1AT7z5HcJHtX7rlk8RHi7RVzfp5gW6plWSZ4dKjRpu/OafQ=="
},
"node_modules/react-native-iphone-x-helper": { "node_modules/react-native-iphone-x-helper": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz", "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",
@ -55530,6 +55536,11 @@
"resolved": "https://registry.npmjs.org/react-multi-carousel/-/react-multi-carousel-2.8.2.tgz", "resolved": "https://registry.npmjs.org/react-multi-carousel/-/react-multi-carousel-2.8.2.tgz",
"integrity": "sha512-M9Y7DfAp8bA/r6yexttU6RLA7uyppje4c0ELRuCHZWswH+u7nr0uVP6qHNPjc4XGOEY1MYFOb5nBg7JvoKutuQ==" "integrity": "sha512-M9Y7DfAp8bA/r6yexttU6RLA7uyppje4c0ELRuCHZWswH+u7nr0uVP6qHNPjc4XGOEY1MYFOb5nBg7JvoKutuQ=="
}, },
"react-native-country-flag": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/react-native-country-flag/-/react-native-country-flag-2.0.2.tgz",
"integrity": "sha512-5LMWxS79ZQ0Q9ntYgDYzWp794+HcQGXQmzzZNBR1AT7z5HcJHtX7rlk8RHi7RVzfp5gW6plWSZ4dKjRpu/OafQ=="
},
"react-native-iphone-x-helper": { "react-native-iphone-x-helper": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz", "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",

View File

@ -128,6 +128,7 @@
"react-md-spinner": "^1.0.0", "react-md-spinner": "^1.0.0",
"react-meta-tags": "^1.0.1", "react-meta-tags": "^1.0.1",
"react-multi-carousel": "^2.8.2", "react-multi-carousel": "^2.8.2",
"react-native-country-flag": "^2.0.2",
"react-native-paper": "^4.9.2", "react-native-paper": "^4.9.2",
"react-native-web": "^0.17.5", "react-native-web": "^0.17.5",
"react-paginate": "^8.1.1", "react-paginate": "^8.1.1",

BIN
public/img/fr_flag.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

View File

@ -231,7 +231,7 @@ const Jury = (props) => {
{ field: 'code', headerName: 'Code', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, }, { field: 'code', headerName: 'Code', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'description', headerName: 'Description', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, }, { field: 'description', headerName: 'Description', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'cible', headerName: 'Cible', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, }, { field: 'cible', headerName: 'Cible', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email_jury', headerName: 'Mail Diff.', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, }, { field: 'email_jury', headerName: 'Mail Diff.', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'chef_jury_nom_prenom', headerName: 'Responsable', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, }, { field: 'chef_jury_nom_prenom', headerName: 'Responsable', flex: 1, hide: false, minWidth: 180, renderCell: (params) => <ExpandableCell_50 {...params} />, },
@ -4472,7 +4472,7 @@ const Jury = (props) => {
id="detail_jury_observation" id="detail_jury_observation"
aria-label="minimum height" aria-label="minimum height"
minRows={3} minRows={3}
maxRows={4} maxRows={5}
//placeholder="Minimum 3 rows" //placeholder="Minimum 3 rows"
style={{ style={{
border: "1px solid gainsboro", width: '99%', padding: '2px', border: "1px solid gainsboro", width: '99%', padding: '2px',
@ -5241,7 +5241,7 @@ const Jury = (props) => {
<DialogContentText> <DialogContentText>
</DialogContentText> </DialogContentText>
zzzzz
<div className="titre1"> Créneau </div> <div className="titre1"> Créneau </div>
<div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'flex-start', alignItems: 'center', flexWrap: 'wrap' }}> <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'flex-start', alignItems: 'center', flexWrap: 'wrap' }}>
@ -5423,9 +5423,7 @@ const Jury = (props) => {
</div> </div>
<div className="titre1"> Salles & Materiels </div>
<div> Reservation Salle et materiel à faire </div>
<div className="titre1"> Apprenants </div> <div className="titre1"> Apprenants </div>
@ -6351,20 +6349,7 @@ const Jury = (props) => {
}, },
// gestion couleur des lignes avec le statut d'inscription
'& .line--statut--annule': {
backgroundColor: '#D8D8D8',
color: 'white',
},
'& .line--statut--inscrit': {
backgroundColor: '#CEF6D8',
color: 'black',
},
'& .line--statut--preinscrit': {
backgroundColor: '#F7F2E0',
color: 'black',
},
"& .MuiDataGrid-columnHeaders": { "& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5", backgroundColor: "#c8cfd5",
@ -7481,7 +7466,7 @@ const Jury = (props) => {
</div>} </div>}
{selected_jury_cible && String(selected_jury_cible) === "soutenance" && New_Option_Cible_Jury && {selected_jury_cible && String(selected_jury_cible) === "soutenance" && New_Option_Cible_Jury &&
New_Get_List_UE_From_Session_Id_result && New_Get_List_UE_From_Session_Id_result.length > 0 && New_Get_List_UE_From_Session_Id_result && New_Get_List_UE_From_Session_Id_result.length > 0 &&
@ -8681,11 +8666,12 @@ const Jury = (props) => {
id="detail_soutenance_observation" id="detail_soutenance_observation"
aria-label="minimum height" aria-label="minimum height"
maxRows={10} minRows={3}
maxRows={5}
//placeholder="Minimum 3 rows" //placeholder="Minimum 3 rows"
style={{ style={{
border: "1px solid gainsboro", width: '99%', padding: '2px', border: "1px solid gainsboro", width: '99%', padding: '2px',
maxHeight: '15rem', height: '10rem', minHeight: '10rem', marginBottom: '3rem' maxHeight: '15rem', height: '5rem', minHeight: '5rem', marginBottom: '3rem'
}} }}
value={p_detail_soutenance_observation} value={p_detail_soutenance_observation}
@ -8748,11 +8734,11 @@ const Jury = (props) => {
id="detail_soutenance_observation" id="detail_soutenance_observation"
aria-label="minimum height" aria-label="minimum height"
minRows={3} minRows={3}
maxRows={4} maxRows={5}
//placeholder="Minimum 3 rows" //placeholder="Minimum 3 rows"
style={{ style={{
border: "1px solid gainsboro", width: '99%', padding: '2px', border: "1px solid gainsboro", width: '99%', padding: '2px',
maxHeight: '15rem', height: '10rem', minHeight: '10rem', marginBottom: '3rem' maxHeight: '10rem', height: '5rem', minHeight: '5rem', marginBottom: '3rem'
}} }}
value={p_detail_soutenance_observation} value={p_detail_soutenance_observation}
onChange={(e) => { onChange={(e) => {

View File

@ -38,6 +38,16 @@ import { IconButton } from '@material-ui/core';
import MoreVertIcon from '@mui/icons-material/MoreVert'; import MoreVertIcon from '@mui/icons-material/MoreVert';
import Menu from '@mui/material/Menu'; import Menu from '@mui/material/Menu';
import MenuItem from '@mui/material/MenuItem'; import MenuItem from '@mui/material/MenuItem';
import {
GridToolbarContainer, GridToolbarExport, GridToolbarColumnsButton,
GridToolbarFilterButton, GridToolbarDensitySelector, GridToolbarExportContainer, useGridApiContext,
gridFilteredSortedRowIdsSelector,
gridVisibleColumnFieldsSelector,
GridValueGetterParams,
GridPreferencePanelsValue,
} from '@mui/x-data-grid';
import * as XLSX from 'xlsx';
function PaperComponent(props) { function PaperComponent(props) {
return ( return (
@ -398,7 +408,7 @@ const Module_Session_Notes_Classement = (props) => {
{ field: 'note_td', headerName: 'note_td', hide: true }, { field: 'note_td', headerName: 'note_td', hide: true },
{ field: 'note_tp', headerName: 'note_tp', hide: true }, { field: 'note_tp', headerName: 'note_tp', hide: true },
{ field: 'note_examen', headerName: 'note_examen', hide: true }, { field: 'note_examen', headerName: 'note_examen', hide: true },
{ field: 'jury_note', headerName: 'Note Jury', hide: true}, { field: 'jury_note', headerName: 'Note Jury', hide: true },
{ field: 'jury_observation', headerName: 'Observ. Jury', width: 200, editable: jury_cell_editable, renderCell: (params) => <ExpandableCell_50_bg_hiligt_red_color {...params} />, align: "left", }, { field: 'jury_observation', headerName: 'Observ. Jury', width: 200, editable: jury_cell_editable, renderCell: (params) => <ExpandableCell_50_bg_hiligt_red_color {...params} />, align: "left", },
@ -1754,6 +1764,115 @@ const Module_Session_Notes_Classement = (props) => {
}) })
} }
// DEBUT EXPORT EXCEL DATAGRID
function CustomToolbar(props) {
return (
<GridToolbarContainer {...props}>
<GridToolbarColumnsButton />
<GridToolbarFilterButton />
<GridToolbarDensitySelector
slotProps={{ tooltip: { title: 'Change density' } }}
/>
<Box sx={{ flexGrow: 1 }} />
<ExportButton data_colums={props.data_colums} />
</GridToolbarContainer>
);
}
function getExcelData(apiRef) {
// Select rows and columns
const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef);
// Format the data. Here we only keep the value
const data = filteredSortedRowIds.map((id) => {
const row = {};
visibleColumnsField.forEach((field) => {
row[field] = apiRef.current.getCellParams(id, field).value;
});
return row;
});
return data;
}
function ExportButton(props) {
return (
<GridToolbarExportContainer {...props}>
<ExportMenuItem data_colums={props.data_colums} />
</GridToolbarExportContainer>
);
}
function handleExport(apiRef, data_colums) {
const data = getExcelData(apiRef);
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef);
const local_config = {
keys: visibleColumnsField,
columnNames: data_colums.filter((mydata) => (mydata).disableExport !== true).map(function (mydata) {
if (mydata.headerName && visibleColumnsField.includes(mydata.field)) {
if (mydata.headerName) {
return mydata.headerName;
}
}
}),
fileName: 'data_' + String(new Date().toJSON().slice(0, 10)).replaceAll("-", "_") + '.xlsx',
sheetName: 'Export_' + String(new Date().toJSON().slice(0, 10)).replaceAll("-", "_"),
};
local_config.columnNames = local_config.columnNames.filter(function (element) {
return element !== undefined;
});
const rows = data.map((row) => {
const mRow = {};
for (const key of local_config.keys) {
mRow[key] = row[key];
}
return mRow;
});
const worksheet = XLSX.utils.json_to_sheet(rows);
XLSX.utils.sheet_add_aoa(worksheet, [[...local_config.columnNames]], {
origin: 'A1',
});
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, local_config.sheetName);
XLSX.writeFile(workbook, local_config.fileName, { compression: true });
}
function ExportMenuItem(props) {
const apiRef = useGridApiContext();
const { hideMenu } = props;
return (
<MenuItem
onClick={() => {
handleExport(apiRef, props.data_colums);
// Hide the export menu after the export
hideMenu?.();
}}
>
Export Excel
</MenuItem>
);
}
// FIN EXPORT EXCEL DATAGRID
const [vue_note, setvue_note] = useState("classement"); const [vue_note, setvue_note] = useState("classement");
@ -1817,18 +1936,18 @@ const Module_Session_Notes_Classement = (props) => {
{Dialog_1_message} {Dialog_1_message}
</DialogContentText> </DialogContentText>
<div className="session_caract_Dialog" > <b> Observation </b> <br /> <div className="session_caract_Dialog" > <b> Observation </b> <br />
<TextareaAutosize <TextareaAutosize
name="detail_jury_observation" name="detail_jury_observation"
id="detail_jury_observation" id="detail_jury_observation"
aria-label="minimum height" aria-label="minimum height"
minRows={3} minRows={3}
maxRows={4} maxRows={5}
//placeholder="Minimum 3 rows" //placeholder="Minimum 3 rows"
style={{ style={{
border: "1px solid gainsboro", width: '99%', padding: '2px', border: "1px solid gainsboro", width: '99%', padding: '2px',
maxHeight: '15rem', height: '10rem', minHeight: '10rem', marginBottom: '3rem' maxHeight: '10rem', height: '5rem', minHeight: '5rem', marginBottom: '3rem'
}} }}
value={p_detail_jury_observation} value={p_detail_jury_observation}
onChange={(e) => { onChange={(e) => {
@ -2019,6 +2138,10 @@ const Module_Session_Notes_Classement = (props) => {
setadd_One_Employee();*/ setadd_One_Employee();*/
} }
}} }}
selectionModel={selectionModel_note_Session_classement} selectionModel={selectionModel_note_Session_classement}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText} localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
@ -2054,9 +2177,14 @@ const Module_Session_Notes_Classement = (props) => {
rowsPerPageOptions={[10]} rowsPerPageOptions={[10]}
disableSelectionOnClick disableSelectionOnClick
components={{ /* components={{
Toolbar: GridToolbar, Toolbar: GridToolbar,
}}*/
components={{
Toolbar: CustomToolbar
}} }}
componentsProps={{ toolbar: { data_colums: columns_list_session_note_classement_final } }}
//sx={datagridSx} //sx={datagridSx}
@ -2569,9 +2697,14 @@ const Module_Session_Notes_Classement = (props) => {
rowsPerPageOptions={[10]} rowsPerPageOptions={[10]}
disableSelectionOnClick disableSelectionOnClick
components={{ /* components={{
Toolbar: GridToolbar, Toolbar: GridToolbar,
}}*/
components={{
Toolbar: CustomToolbar
}} }}
componentsProps={{ toolbar: { data_colums: columns_list_evaluation_note_classement_final } }}
//sx={datagridSx} //sx={datagridSx}
getCellClassName={(params) => { getCellClassName={(params) => {
@ -2754,9 +2887,14 @@ const Module_Session_Notes_Classement = (props) => {
rowsPerPageOptions={[10]} rowsPerPageOptions={[10]}
disableSelectionOnClick disableSelectionOnClick
components={{ /* components={{
Toolbar: GridToolbar, Toolbar: GridToolbar,
}}*/
components={{
Toolbar: CustomToolbar
}} }}
componentsProps={{ toolbar: { data_colums: columns_list_evaluation_detail_note_classement_final } }}
//sx={datagridSx} //sx={datagridSx}
getCellClassName={(params) => { getCellClassName={(params) => {

View File

@ -502,7 +502,7 @@ const Partner_Config_Ftion_Initiale = (props) => {
function Add_Config_Type_Eval() { function Add_Config_Type_Eval() {
var form = new FormData(); var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA"); //form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart'); const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie); form.append("token", stored_cookie);

View File

@ -1,3 +1,5 @@
const FrenchSolution = ({ width = 162, height = 120 }) => { const FrenchSolution = ({ width = 162, height = 120 }) => {
const containerStyle = { const containerStyle = {
width: width, width: width,
@ -38,7 +40,7 @@ const FrenchSolution = ({ width = 162, height = 120 }) => {
<div style={containerStyle}> <div style={containerStyle}>
<div className="FrenchSolution_block_containerStyle">Solutions</div> <div className="FrenchSolution_block_containerStyle">Solutions</div>
<div className="FrenchSolution_block_percentageStyle">100%</div> <div className="FrenchSolution_block_percentageStyle">100%</div>
<div className="FrenchSolution_block_frenchStyle">française 🇫🇷</div> <div className="FrenchSolution_block_frenchStyle">française <img src="/img/fr_flag.png" alt="France" style={{height:'15px', width:'24px', borderRadius:'1px' }}/> </div>
</div> </div>
); );
}; };

View File

@ -4,21 +4,12 @@ import "./new_homepage.css";
import { Helmet } from "react-helmet"; import { Helmet } from "react-helmet";
import WhyUsLayout from './WhyUsLayout.js'; import WhyUsLayout from './WhyUsLayout.js';
import LogoCloud from './LogoCloud.js'; import LogoCloud from './LogoCloud.js';
import VisionSection from './VisionSection.js';
import KeyMetrics from './KeyMetrics.js';
import Features from './Features.js'; import Features from './Features.js';
import AboutUsSection from './block_stat/AboutUsSection.js'; import AboutUsSection from './block_stat/AboutUsSection.js';
import FrenchSolution from './FrenchSolution.js'; import FrenchSolution from './FrenchSolution.js';
import CommentMarche from './CommentMarche.js'; import CommentMarche from './CommentMarche.js';
import New_C_Tatif_Section from "../tarif_section_automatic_files/PricingSection" import New_C_Tatif_Section from "../tarif_section_automatic_files/PricingSection"
import GO_Entreprise_Img from "../../mysy_img/mysy_training_landscape.png";
import Banniere_mysy_goent from "../../mysy_img/Banniere_mysy_goent.png";
import Banniere_mysy_goent_mobile from "../../mysy_img/cherif_balde_landscape.png";
import Banniere_mysy_goent_mobile2 from "../../mysy_img/landscape.png";
const New_C_A_Propos_2025 = (props) => { const New_C_A_Propos_2025 = (props) => {
useEffect(() => { useEffect(() => {
@ -49,7 +40,8 @@ const New_C_A_Propos_2025 = (props) => {
</div> </div>
<div className="title_and_cat_title_text2"> <div className="title_and_cat_title_text2">
Toutes les fonctionnalités dont vous avez besoin, au meilleur prix &nbsp; 🇫🇷 &nbsp; Toutes les fonctionnalités dont vous avez besoin, au meilleur prix &nbsp; <img src="/img/fr_flag.png" alt="France" style={{height:'15px',
width:'24px', borderRadius:'1px' }}/>
</div> </div>
</div> </div>
@ -86,7 +78,7 @@ const New_C_A_Propos_2025 = (props) => {
</div> </div>
<div className="fonctionnalite_Background_bannier_event"> {/* <div className="fonctionnalite_Background_bannier_event">
<div style={{ width: '100%' }}> <div style={{ width: '100%' }}>
<div className="bannier_event"> <div className="bannier_event">
<nav className="LogoCloud_h2" style={{ width: '100%' }} <nav className="LogoCloud_h2" style={{ width: '100%' }}
@ -132,7 +124,7 @@ const New_C_A_Propos_2025 = (props) => {
</div> </div>
</div> </div>
</div> </div>*/}
<div className="fonctionnalite_Background_home_page_img_saas"> <div className="fonctionnalite_Background_home_page_img_saas">

View File

@ -23,7 +23,7 @@
top: 0px; top: 0px;
opacity: 80%; opacity: 80%;
left: 0px; left: 0px;
} }
.spinner { .spinner {
width: 20rem; width: 20rem;
@ -1882,7 +1882,7 @@
text-align: center; text-align: center;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
color: white; color: white;
cursor: pointer; cursor: normal;
font-style: italic; font-style: italic;
background-color: gray; background-color: gray;
font-weight: normal; font-weight: normal;
@ -2599,7 +2599,7 @@
text-align: center; text-align: center;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
color: white; color: white;
cursor: pointer; cursor: normal;
font-style: italic; font-style: italic;
background-color: gray; background-color: gray;
font-weight: normal; font-weight: normal;