22/09/2023 - 12h53

recette2
cherif 2023-09-22 12:53:21 +02:00
parent c283ba0115
commit a3d9886bc0
19 changed files with 1125 additions and 194 deletions

202
package-lock.json generated
View File

@ -18,6 +18,10 @@
"@fortawesome/free-regular-svg-icons": "^6.1.1", "@fortawesome/free-regular-svg-icons": "^6.1.1",
"@fortawesome/free-solid-svg-icons": "^6.1.1", "@fortawesome/free-solid-svg-icons": "^6.1.1",
"@fortawesome/react-fontawesome": "^0.1.18", "@fortawesome/react-fontawesome": "^0.1.18",
"@fullcalendar/core": "^6.1.8",
"@fullcalendar/daygrid": "^6.1.8",
"@fullcalendar/interaction": "^6.1.8",
"@fullcalendar/react": "^6.1.8",
"@mantine/core": "^4.2.10", "@mantine/core": "^4.2.10",
"@mantine/hooks": "^4.2.10", "@mantine/hooks": "^4.2.10",
"@mantine/rte": "^4.2.10", "@mantine/rte": "^4.2.10",
@ -70,6 +74,7 @@
"prerender-node": "^3.5.0", "prerender-node": "^3.5.0",
"react": "^17.0.2", "react": "^17.0.2",
"react-apexcharts": "^1.4.0", "react-apexcharts": "^1.4.0",
"react-big-calendar": "^1.8.4",
"react-bootstrap": "^2.1.2", "react-bootstrap": "^2.1.2",
"react-burger-menu": "^3.0.6", "react-burger-menu": "^3.0.6",
"react-canvas-js": "^1.0.1", "react-canvas-js": "^1.0.1",
@ -2925,6 +2930,40 @@
"react": ">=16.x" "react": ">=16.x"
} }
}, },
"node_modules/@fullcalendar/core": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.8.tgz",
"integrity": "sha512-i8JBIvZCWGO9dsMEDcx9bnsQZ9PtGSJdOXGgWbhLaGq2iq41OBdp9g9gM4b/Otv2oK8bL5Gl6CsMmb/HkDtA6Q==",
"dependencies": {
"preact": "~10.12.1"
}
},
"node_modules/@fullcalendar/daygrid": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.8.tgz",
"integrity": "sha512-kCZxQFKb9Vqa3CZRX0v7rMSJ2mlTt4gDpyLfiNJKxUAq7W51uKurPaFZWicaXy1ESHVBxKNlbx5uNjBpyu50JQ==",
"peerDependencies": {
"@fullcalendar/core": "~6.1.8"
}
},
"node_modules/@fullcalendar/interaction": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.8.tgz",
"integrity": "sha512-r6W4E9ohaA87M2uPSlmpE2WT7Fzu7LN0u2pE6D/tThruCEaAPbN8Pw5+sqclsuyTIL09mg0eSJm/ggJekTabSA==",
"peerDependencies": {
"@fullcalendar/core": "~6.1.8"
}
},
"node_modules/@fullcalendar/react": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-6.1.8.tgz",
"integrity": "sha512-E8GQSQyZHkjpwxQW5Vci7iZgN7f33ntuRcvfGii4Fn35t9VHGz2SEyKAWXpVf38elcKTZKVgajU9ipStd+1LEg==",
"peerDependencies": {
"@fullcalendar/core": "~6.1.8",
"react": "^16.7.0 || ^17 || ^18",
"react-dom": "^16.7.0 || ^17 || ^18"
}
},
"node_modules/@gatsbyjs/reach-router": { "node_modules/@gatsbyjs/reach-router": {
"version": "1.3.9", "version": "1.3.9",
"license": "MIT", "license": "MIT",
@ -13887,6 +13926,11 @@
"license": "MIT", "license": "MIT",
"peer": true "peer": true
}, },
"node_modules/date-arithmetic": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz",
"integrity": "sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg=="
},
"node_modules/date-fns": { "node_modules/date-fns": {
"version": "2.29.3", "version": "2.29.3",
"license": "MIT", "license": "MIT",
@ -13899,8 +13943,9 @@
} }
}, },
"node_modules/dayjs": { "node_modules/dayjs": {
"version": "1.11.6", "version": "1.11.10",
"license": "MIT" "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
"integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
}, },
"node_modules/debounce-fn": { "node_modules/debounce-fn": {
"version": "0.0.0", "version": "0.0.0",
@ -17999,6 +18044,11 @@
"which": "bin/which" "which": "bin/which"
} }
}, },
"node_modules/globalize": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/globalize/-/globalize-0.1.1.tgz",
"integrity": "sha512-5e01v8eLGfuQSOvx2MsDMOWS0GFtCx1wPzQSmcHw4hkxFzrQDBO3Xwg/m8Hr/7qXMrHeOIE29qWVzyv06u1TZA=="
},
"node_modules/globals": { "node_modules/globals": {
"version": "11.12.0", "version": "11.12.0",
"license": "MIT", "license": "MIT",
@ -24618,6 +24668,14 @@
"react": "^16.5.1 || ^17.0.0 || ^18.0.0" "react": "^16.5.1 || ^17.0.0 || ^18.0.0"
} }
}, },
"node_modules/luxon": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.3.tgz",
"integrity": "sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==",
"engines": {
"node": ">=12"
}
},
"node_modules/lz-string": { "node_modules/lz-string": {
"version": "1.4.4", "version": "1.4.4",
"license": "WTFPL", "license": "WTFPL",
@ -27611,6 +27669,17 @@
"node": "*" "node": "*"
} }
}, },
"node_modules/moment-timezone": {
"version": "0.5.43",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz",
"integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==",
"dependencies": {
"moment": "^2.29.4"
},
"engines": {
"node": "*"
}
},
"node_modules/move-concurrently": { "node_modules/move-concurrently": {
"version": "1.0.1", "version": "1.0.1",
"license": "ISC", "license": "ISC",
@ -33785,6 +33854,15 @@
"route-recognizer": "^0.1.11" "route-recognizer": "^0.1.11"
} }
}, },
"node_modules/preact": {
"version": "10.12.1",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz",
"integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
},
"node_modules/prelude-ls": { "node_modules/prelude-ls": {
"version": "1.2.1", "version": "1.2.1",
"license": "MIT", "license": "MIT",
@ -34354,6 +34432,38 @@
"react": "^15.0.0 || ^16.0.0 || ^17.0.0" "react": "^15.0.0 || ^16.0.0 || ^17.0.0"
} }
}, },
"node_modules/react-big-calendar": {
"version": "1.8.4",
"resolved": "https://registry.npmjs.org/react-big-calendar/-/react-big-calendar-1.8.4.tgz",
"integrity": "sha512-zo2LDQxWHvcnkvtgzZlxJsCfi6fI8neOSyjG5ntePLO2CAlkhHiwwXgynxIFeWCwJ5LMnhN6tBt03IN4Y0bOzQ==",
"dependencies": {
"@babel/runtime": "^7.20.7",
"clsx": "^1.2.1",
"date-arithmetic": "^4.1.0",
"dayjs": "^1.11.7",
"dom-helpers": "^5.2.1",
"globalize": "^0.1.1",
"invariant": "^2.2.4",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"luxon": "^3.2.1",
"memoize-one": "^6.0.0",
"moment": "^2.29.4",
"moment-timezone": "^0.5.40",
"prop-types": "^15.8.1",
"react-overlays": "^5.2.1",
"uncontrollable": "^7.2.1"
},
"peerDependencies": {
"react": "^16.14.0 || ^17 || ^18",
"react-dom": "^16.14.0 || ^17 || ^18"
}
},
"node_modules/react-big-calendar/node_modules/memoize-one": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
},
"node_modules/react-bootstrap": { "node_modules/react-bootstrap": {
"version": "2.6.0", "version": "2.6.0",
"license": "MIT", "license": "MIT",
@ -48028,6 +48138,32 @@
"prop-types": "^15.8.1" "prop-types": "^15.8.1"
} }
}, },
"@fullcalendar/core": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.8.tgz",
"integrity": "sha512-i8JBIvZCWGO9dsMEDcx9bnsQZ9PtGSJdOXGgWbhLaGq2iq41OBdp9g9gM4b/Otv2oK8bL5Gl6CsMmb/HkDtA6Q==",
"requires": {
"preact": "~10.12.1"
}
},
"@fullcalendar/daygrid": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.8.tgz",
"integrity": "sha512-kCZxQFKb9Vqa3CZRX0v7rMSJ2mlTt4gDpyLfiNJKxUAq7W51uKurPaFZWicaXy1ESHVBxKNlbx5uNjBpyu50JQ==",
"requires": {}
},
"@fullcalendar/interaction": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.8.tgz",
"integrity": "sha512-r6W4E9ohaA87M2uPSlmpE2WT7Fzu7LN0u2pE6D/tThruCEaAPbN8Pw5+sqclsuyTIL09mg0eSJm/ggJekTabSA==",
"requires": {}
},
"@fullcalendar/react": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-6.1.8.tgz",
"integrity": "sha512-E8GQSQyZHkjpwxQW5Vci7iZgN7f33ntuRcvfGii4Fn35t9VHGz2SEyKAWXpVf38elcKTZKVgajU9ipStd+1LEg==",
"requires": {}
},
"@gatsbyjs/reach-router": { "@gatsbyjs/reach-router": {
"version": "1.3.9", "version": "1.3.9",
"peer": true, "peer": true,
@ -55234,11 +55370,18 @@
"version": "2.0.0", "version": "2.0.0",
"peer": true "peer": true
}, },
"date-arithmetic": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz",
"integrity": "sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg=="
},
"date-fns": { "date-fns": {
"version": "2.29.3" "version": "2.29.3"
}, },
"dayjs": { "dayjs": {
"version": "1.11.6" "version": "1.11.10",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
"integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
}, },
"debounce-fn": { "debounce-fn": {
"version": "0.0.0" "version": "0.0.0"
@ -57999,6 +58142,11 @@
} }
} }
}, },
"globalize": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/globalize/-/globalize-0.1.1.tgz",
"integrity": "sha512-5e01v8eLGfuQSOvx2MsDMOWS0GFtCx1wPzQSmcHw4hkxFzrQDBO3Xwg/m8Hr/7qXMrHeOIE29qWVzyv06u1TZA=="
},
"globals": { "globals": {
"version": "11.12.0" "version": "11.12.0"
}, },
@ -62226,6 +62374,11 @@
"integrity": "sha512-keqxAx97PlaEN89PXZ6ki1N8nRjGWtDa4021GFYLNj0RgruM5odbpl8GHTExj0hhPq3sF6Up0gnxt6TSHu+ovw==", "integrity": "sha512-keqxAx97PlaEN89PXZ6ki1N8nRjGWtDa4021GFYLNj0RgruM5odbpl8GHTExj0hhPq3sF6Up0gnxt6TSHu+ovw==",
"requires": {} "requires": {}
}, },
"luxon": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.3.tgz",
"integrity": "sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg=="
},
"lz-string": { "lz-string": {
"version": "1.4.4" "version": "1.4.4"
}, },
@ -64258,6 +64411,14 @@
"moment": { "moment": {
"version": "2.29.4" "version": "2.29.4"
}, },
"moment-timezone": {
"version": "0.5.43",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz",
"integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==",
"requires": {
"moment": "^2.29.4"
}
},
"move-concurrently": { "move-concurrently": {
"version": "1.0.1", "version": "1.0.1",
"requires": { "requires": {
@ -68051,6 +68212,11 @@
"route-recognizer": "^0.1.11" "route-recognizer": "^0.1.11"
} }
}, },
"preact": {
"version": "10.12.1",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz",
"integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg=="
},
"prelude-ls": { "prelude-ls": {
"version": "1.2.1" "version": "1.2.1"
}, },
@ -68429,6 +68595,36 @@
"md5": "^2.0.0" "md5": "^2.0.0"
} }
}, },
"react-big-calendar": {
"version": "1.8.4",
"resolved": "https://registry.npmjs.org/react-big-calendar/-/react-big-calendar-1.8.4.tgz",
"integrity": "sha512-zo2LDQxWHvcnkvtgzZlxJsCfi6fI8neOSyjG5ntePLO2CAlkhHiwwXgynxIFeWCwJ5LMnhN6tBt03IN4Y0bOzQ==",
"requires": {
"@babel/runtime": "^7.20.7",
"clsx": "^1.2.1",
"date-arithmetic": "^4.1.0",
"dayjs": "^1.11.7",
"dom-helpers": "^5.2.1",
"globalize": "^0.1.1",
"invariant": "^2.2.4",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"luxon": "^3.2.1",
"memoize-one": "^6.0.0",
"moment": "^2.29.4",
"moment-timezone": "^0.5.40",
"prop-types": "^15.8.1",
"react-overlays": "^5.2.1",
"uncontrollable": "^7.2.1"
},
"dependencies": {
"memoize-one": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
}
}
},
"react-bootstrap": { "react-bootstrap": {
"version": "2.6.0", "version": "2.6.0",
"requires": { "requires": {

View File

@ -13,6 +13,10 @@
"@fortawesome/free-regular-svg-icons": "^6.1.1", "@fortawesome/free-regular-svg-icons": "^6.1.1",
"@fortawesome/free-solid-svg-icons": "^6.1.1", "@fortawesome/free-solid-svg-icons": "^6.1.1",
"@fortawesome/react-fontawesome": "^0.1.18", "@fortawesome/react-fontawesome": "^0.1.18",
"@fullcalendar/core": "^6.1.8",
"@fullcalendar/daygrid": "^6.1.8",
"@fullcalendar/interaction": "^6.1.8",
"@fullcalendar/react": "^6.1.8",
"@mantine/core": "^4.2.10", "@mantine/core": "^4.2.10",
"@mantine/hooks": "^4.2.10", "@mantine/hooks": "^4.2.10",
"@mantine/rte": "^4.2.10", "@mantine/rte": "^4.2.10",
@ -65,6 +69,7 @@
"prerender-node": "^3.5.0", "prerender-node": "^3.5.0",
"react": "^17.0.2", "react": "^17.0.2",
"react-apexcharts": "^1.4.0", "react-apexcharts": "^1.4.0",
"react-big-calendar": "^1.8.4",
"react-bootstrap": "^2.1.2", "react-bootstrap": "^2.1.2",
"react-burger-menu": "^3.0.6", "react-burger-menu": "^3.0.6",
"react-canvas-js": "^1.0.1", "react-canvas-js": "^1.0.1",

View File

@ -874,7 +874,7 @@ const AddClassManual = (props) => {
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a); //alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets"); alert("L'image ne doit pas dépasser un 1 Méga octets");
return; return;
} }
setisimgclassSelected(event.target.files[0]); setisimgclassSelected(event.target.files[0]);
@ -1969,7 +1969,7 @@ const AddClassManual = (props) => {
Les dimensions maximales sont de 256pixels X 256pixels Les dimensions maximales sont de 256pixels X 256pixels
</li> </li>
<li> <li>
La taille de l'image ne doit pas depasser 1 mega octet La taille de l'image ne doit pas dépasser 1 mega octet
</li> </li>
</div> </div>
</div> </div>

View File

@ -37,6 +37,9 @@ import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent'; import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText'; import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle'; import DialogTitle from '@mui/material/DialogTitle';
import { RestoreFromTrashRounded } from "@mui/icons-material";
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
const DisplayPartnerSession = (props) => { const DisplayPartnerSession = (props) => {
const history = useHistory(); const history = useHistory();
@ -106,15 +109,15 @@ const DisplayPartnerSession = (props) => {
})); }));
const [datagrid_columns_size_model1, setdatagrid_columns_size_model1] = useState(200); const [datagrid_columns_size_model1, setdatagrid_columns_size_model1] = useState(200);
const [datagrid_columns_size_model2, setdatagrid_columns_size_model2] = useState(80); const [datagrid_columns_size_model2, setdatagrid_columns_size_model2] = useState(100);
const columns = [ const columns = [
{ 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: 'class_internal_url', headerName: 'class_internal_url', hide: true }, { field: 'class_internal_url', headerName: 'class_internal_url', hide: true },
{ field: 'code_session', headerName: 'Code session', hide: false, width: datagrid_columns_size_model1, }, { field: 'code_session', headerName: 'Code session', hide: false, flex:1 },
{ {
field: 'statut', headerName: 'Statut', hide: false, width: datagrid_columns_size_model1, field: 'statut', headerName: 'Statut', hide: true, width: datagrid_columns_size_model2,
valueFormatter: (params) => { valueFormatter: (params) => {
if (String(params.value) === "0") if (String(params.value) === "0")
return "Inactif"; return "Inactif";
@ -126,12 +129,12 @@ const DisplayPartnerSession = (props) => {
}, },
{ {
field: 'etape', headerName: 'Etape', hide: false, width: datagrid_columns_size_model1, field: 'etape', headerName: 'Etape', hide: false, width: datagrid_columns_size_model2,
valueFormatter: (params) => { valueFormatter: (params) => {
if (String(params.value) === "0") if (String(params.value) === "0")
return "Projet"; return "Projet";
else if (String(params.value) === "1") else if (String(params.value) === "1")
return "Planification"; return "En Planif.";
else if (String(params.value) === "2") else if (String(params.value) === "2")
return "Planifiée"; return "Planifiée";
else if (String(params.value) === "3") else if (String(params.value) === "3")
@ -144,10 +147,9 @@ const DisplayPartnerSession = (props) => {
return "???"; return "???";
}, },
}, },
{ field: 'class_external_code', headerName: 'Code Formation', align: "center", hideable: true, flex:1, hide: true,},
{ field: 'date_debut', headerName: 'Debut', hide: false, width: datagrid_columns_size_model2, },
{ field: 'date_debut', headerName: 'Date debut', hide: false, width: datagrid_columns_size_model2, }, { field: 'date_fin', headerName: 'Fin', hideable: false, width: datagrid_columns_size_model2, },
{ field: 'date_fin', headerName: 'Datefin', hideable: false, width: datagrid_columns_size_model2, },
{ {
field: 'distantiel', headerName: 'Distantiel', hideable: false, width: datagrid_columns_size_model2, field: 'distantiel', headerName: 'Distantiel', hideable: false, width: datagrid_columns_size_model2,
valueFormatter: (params) => { valueFormatter: (params) => {
@ -173,7 +175,7 @@ const DisplayPartnerSession = (props) => {
{ field: 'formateur', headerName: 'Formateur', width: datagrid_columns_size_model1, hide: true, hideable: true, }, { 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: 'nb_participant', headerName: 'Nb Parti.', width: datagrid_columns_size_model2, align: "center", },
{ {
field: 'taux_remplissage', headerName: 'Remplissage', align: "center", width: datagrid_columns_size_model1, field: 'taux_remplissage', headerName: 'Remplissage', align: "center", flex:1,
align: "left", align: "left",
renderCell: (params) => { renderCell: (params) => {
return ( return (
@ -197,6 +199,7 @@ const DisplayPartnerSession = (props) => {
{ field: 'prix_session', headerName: 'Prix', width: datagrid_columns_size_model2, align: "center", }, { field: 'prix_session', headerName: 'Prix', width: datagrid_columns_size_model2, align: "center", },
{ field: 'title', headerName: 'Formation', width: datagrid_columns_size_model1, align: "center", hide: true, hideable: true, }, { field: 'title', headerName: 'Formation', width: datagrid_columns_size_model1, align: "center", hide: true, hideable: true, },
{ field: 'domaine', headerName: 'Domaine', width: datagrid_columns_size_model1, align: "center", hide: true, hideable: true, }, { field: 'domaine', headerName: 'Domaine', width: datagrid_columns_size_model1, align: "center", hide: true, hideable: true, },
{ field: 'duration', headerName: 'Durée', width: datagrid_columns_size_model2, align: "center", }, { field: 'duration', headerName: 'Durée', width: datagrid_columns_size_model2, align: "center", },
{ {
field: "delete", headerName: 'Supprimer', field: "delete", headerName: 'Supprimer',
@ -584,6 +587,70 @@ const DisplayPartnerSession = (props) => {
); );
} }
}, },
{
field: "annulation", headerName: 'Annulation',
renderCell: (cellValues) => {
return (
<Popup
trigger={<Button
onClick={(event) => {
handleClick_refuse(event, cellValues);
}}
>
<FcCancel />
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'inscription du stagiaire sera <i><font color="red"> définitivement annulée</font></i>. <br />
Il (le stagiaire) sera automatiquement <i><font color="red"> notifié par email de l'annulation de son inscription. </font></i> <br />
<br /> Motif du annulation : <br />
<textarea name='motif_refus' id="motif_refus" style={{ "width": "80%" }}
rows="3" maxlength="180" />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_refuse(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
);
}
},
@ -788,7 +855,7 @@ const DisplayPartnerSession = (props) => {
Get_List_Partner_Clients(); Get_List_Partner_Clients();
let windowWidth = window.innerWidth; let windowWidth = window.innerWidth;
if (windowWidth < 1001) { if (windowWidth < 1001) {
setdatagrid_columns_size_model2(10); setdatagrid_columns_size_model2(50);
} }
}, []) }, [])
@ -910,7 +977,7 @@ const DisplayPartnerSession = (props) => {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }
@ -926,6 +993,8 @@ const DisplayPartnerSession = (props) => {
//formData.append("class_internal_url", selected_internal_url); //formData.append("class_internal_url", selected_internal_url);
//console.log("token = " + stored_cookie); //console.log("token = " + stored_cookie);
setLoading(true);
fetch( fetch(
process.env.REACT_APP_API_URL + "myclass/api/AddStagiairetoClass_mass_for_many_session/", process.env.REACT_APP_API_URL + "myclass/api/AddStagiairetoClass_mass_for_many_session/",
{ {
@ -936,6 +1005,7 @@ const DisplayPartnerSession = (props) => {
.then((response) => response.json()) .then((response) => response.json())
.then((result) => { .then((result) => {
if (String(result['status']) === String("true")) { if (String(result['status']) === String("true")) {
setLoading(false);
//console.log('Success:', result['message']); //console.log('Success:', result['message']);
setliste_participants_file_change_result(result['message']); setliste_participants_file_change_result(result['message']);
setliste_participants_file_change_api("true"); setliste_participants_file_change_api("true");
@ -946,11 +1016,13 @@ const DisplayPartnerSession = (props) => {
submenu_inscrit(); submenu_inscrit();
} else if (String(result['status']) === String("Err_Connexion")) { } else if (String(result['status']) === String("Err_Connexion")) {
setLoading(false);
alert('Erreur: ' + result['message']); alert('Erreur: ' + result['message']);
history.push("/Connexion"); history.push("/Connexion");
} }
else { else {
setLoading(false);
setliste_participants_file_change_message(result['message']); setliste_participants_file_change_message(result['message']);
setliste_participants_file_change_api("false"); setliste_participants_file_change_api("false");
alert(result['message']); alert(result['message']);
@ -958,6 +1030,7 @@ const DisplayPartnerSession = (props) => {
}) })
.catch((error) => { .catch((error) => {
setLoading(false);
console.error('Error:', error); console.error('Error:', error);
setliste_participants_file_change_api("false"); setliste_participants_file_change_api("false");
alert(" Impossible d'importer la liste des participants"); alert(" Impossible d'importer la liste des participants");
@ -1098,7 +1171,7 @@ const DisplayPartnerSession = (props) => {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }
@ -3828,7 +3901,7 @@ const DisplayPartnerSession = (props) => {
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a); //alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets"); alert("L'image ne doit pas dépasser un 1 Méga octets");
return; return;
} }
setisimgclassSelected(event.target.files[0]); setisimgclassSelected(event.target.files[0]);
@ -4201,8 +4274,15 @@ const DisplayPartnerSession = (props) => {
}; };
const [isLoading, setLoading] = useState();
return ( return (
<div className="displaypartnersession"> <div className="displaypartnersession">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
<Dialog <Dialog
open={Dialog_1_open} open={Dialog_1_open}
onClose={Dialog_1_handleClose} onClose={Dialog_1_handleClose}
@ -4503,6 +4583,8 @@ const DisplayPartnerSession = (props) => {
nb_inscrit: JSON.parse(item).nb_inscrit, nb_inscrit: JSON.parse(item).nb_inscrit,
nb_preinscrit: JSON.parse(item).nb_preinscrit, nb_preinscrit: JSON.parse(item).nb_preinscrit,
duration: JSON.parse(item).duration_concat, duration: JSON.parse(item).duration_concat,
class_external_code: JSON.parse(item).class_external_code,
prix_session: JSON.parse(item).prix_session,
} }
))} ))}
@ -4611,7 +4693,7 @@ const DisplayPartnerSession = (props) => {
<br /> <br />
{session_file_name && <nav><i>{session_file_name}</i></nav>} {session_file_name && <nav><i>{session_file_name}</i></nav>}
{String(liste_sessions_file_change_api) === String("true") && <nav className="okUpdateData"> Les Sessions ont été correctement importés</nav>} {String(liste_sessions_file_change_api) === String("true") && <nav className="okUpdateData"> Les sessions ont été correctement importées</nav>}
{String(liste_sessions_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_sessions_file_change_message} </nav>} {String(liste_sessions_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_sessions_file_change_message} </nav>}
<input type="file" <input type="file"
@ -5305,7 +5387,7 @@ const DisplayPartnerSession = (props) => {
{GetCurrentPartnerClass_result && {GetCurrentPartnerClass_result &&
GetCurrentPartnerClass_result.map((myclass) => ( GetCurrentPartnerClass_result.map((myclass) => (
<MenuItem key={JSON.parse(myclass).internal_url} value={JSON.parse(myclass).internal_url} style={{ "paddingLeft": "5px", "textAlign": "left", }}> <MenuItem key={JSON.parse(myclass).internal_url} value={JSON.parse(myclass).internal_url} style={{ "paddingLeft": "5px", "textAlign": "left", "width":"100%"}}>
{JSON.parse(myclass).title} {JSON.parse(myclass).title}
</MenuItem> </MenuItem>
@ -5394,12 +5476,12 @@ const DisplayPartnerSession = (props) => {
value={p_one_session_etape} value={p_one_session_etape}
onChange={(e) => setp_one_session_etape(e.target.value)} onChange={(e) => setp_one_session_etape(e.target.value)}
> >
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Projet &nbsp;&nbsp;</MenuItem> <MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left", "width":'100%' }}>Projet &nbsp;&nbsp;</MenuItem>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Planification &nbsp;</MenuItem> <MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" , "width":'100%'}}>Planification &nbsp;</MenuItem>
<MenuItem value="2" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Planifiée &nbsp;</MenuItem> <MenuItem value="2" style={{ "paddingLeft": "5px", "textAlign": "left", "width":'100%' }}>Planifiée &nbsp;</MenuItem>
<MenuItem value="3" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Terminée &nbsp;</MenuItem> <MenuItem value="3" style={{ "paddingLeft": "5px", "textAlign": "left", "width":'100%' }}>Terminée &nbsp;</MenuItem>
<MenuItem value="4" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Facturée &nbsp;</MenuItem> <MenuItem value="4" style={{ "paddingLeft": "5px", "textAlign": "left" , "width":'100%'}}>Facturée &nbsp;</MenuItem>
<MenuItem value="-1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Annulée &nbsp;</MenuItem> <MenuItem value="-1" style={{ "paddingLeft": "5px", "textAlign": "left", "width":'100%' }}>Annulée &nbsp;</MenuItem>
</TextField> </TextField>
</div> </div>
@ -5684,7 +5766,7 @@ const DisplayPartnerSession = (props) => {
> >
{GetAttestation_Certif_result && {GetAttestation_Certif_result &&
GetAttestation_Certif_result.map((certificat) => ( GetAttestation_Certif_result.map((certificat) => (
<MenuItem key={JSON.parse(certificat).nom} value={JSON.parse(certificat).nom} style={{ "paddingLeft": "5px", "textAlign": "left" }}> <MenuItem key={JSON.parse(certificat).nom} value={JSON.parse(certificat).nom} style={{ "paddingLeft": "5px", "textAlign": "left", "width":'100%' }}>
{JSON.parse(certificat).nom}&nbsp; &nbsp;<br /> {JSON.parse(certificat).nom}&nbsp; &nbsp;<br />
</MenuItem> </MenuItem>
@ -6507,7 +6589,7 @@ const DisplayPartnerSession = (props) => {
Les dimensions maximales sont de 256pixels X 256pixels Les dimensions maximales sont de 256pixels X 256pixels
</li> </li>
<li> <li>
La taille de l'image ne doit pas depasser 1 mega octet La taille de l'image ne doit pas dépasser 1 mega octet
</li> </li>
</div> </div>
@ -6561,7 +6643,7 @@ const DisplayPartnerSession = (props) => {
{Getall_TrainingSession_result && {Getall_TrainingSession_result &&
Getall_TrainingSession_result.map((mysession) => ( Getall_TrainingSession_result.map((mysession) => (
<MenuItem key={JSON.parse(mysession)._id} value={JSON.parse(mysession)._id} <MenuItem key={JSON.parse(mysession)._id} value={JSON.parse(mysession)._id}
style={{ "paddingLeft": "5px", "textAlign": "left", }}> style={{ "paddingLeft": "5px", "textAlign": "left", "width":'100%' }}>
{JSON.parse(mysession).code_session}&nbsp;&nbsp; {JSON.parse(mysession).code_session}&nbsp;&nbsp;
</MenuItem> </MenuItem>
@ -6595,7 +6677,7 @@ const DisplayPartnerSession = (props) => {
{Get_List_Partner_Clients_result && {Get_List_Partner_Clients_result &&
Get_List_Partner_Clients_result.map((myclient) => ( Get_List_Partner_Clients_result.map((myclient) => (
<MenuItem key={JSON.parse(myclient).nom} value={JSON.parse(myclient)._id} <MenuItem key={JSON.parse(myclient).nom} value={JSON.parse(myclient)._id}
style={{ "paddingLeft": "5px", "textAlign": "left", }}> style={{ "paddingLeft": "5px", "textAlign": "left", "width":'100%' }}>
{JSON.parse(myclient).nom}&nbsp;&nbsp; {JSON.parse(myclient).nom}&nbsp;&nbsp;
</MenuItem> </MenuItem>

View File

@ -38,6 +38,8 @@ import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText'; import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle'; import DialogTitle from '@mui/material/DialogTitle';
import { TransitionProps } from '@mui/material/transitions'; import { TransitionProps } from '@mui/material/transitions';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
const DisplayPartnerStagiaires = (props) => { const DisplayPartnerStagiaires = (props) => {
const history = useHistory(); const history = useHistory();
@ -854,7 +856,7 @@ const DisplayPartnerStagiaires = (props) => {
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a); //alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets"); alert("L'image ne doit pas dépasser un 1 Méga octets");
return; return;
} }
setisimgclassSelected(event.target.files[0]); setisimgclassSelected(event.target.files[0]);
@ -1437,7 +1439,7 @@ const DisplayPartnerStagiaires = (props) => {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }
@ -1451,6 +1453,10 @@ const DisplayPartnerStagiaires = (props) => {
formData.append("token", stored_cookie); formData.append("token", stored_cookie);
//console.log("token = " + stored_cookie); //console.log("token = " + stored_cookie);
setLoading(true);
fetch( fetch(
process.env.REACT_APP_API_URL + "myclass/api/AddStagiairetoClass_mass_for_many_session/", process.env.REACT_APP_API_URL + "myclass/api/AddStagiairetoClass_mass_for_many_session/",
{ {
@ -1463,11 +1469,13 @@ const DisplayPartnerStagiaires = (props) => {
//console.log(" ## result['status'] = ", result['status']) //console.log(" ## result['status'] = ", result['status'])
if (String(result['status']) === String("Err_Connexion")) { if (String(result['status']) === String("Err_Connexion")) {
setLoading(false);
alert('Erreur: ' + result['message']); alert('Erreur: ' + result['message']);
history.push("/Connexion"); history.push("/Connexion");
} }
else if (String(result['status']) === String("true")) { else if (String(result['status']) === String("true")) {
setLoading(false);
//console.log('Success:', result['message']); //console.log('Success:', result['message']);
setliste_sessions_file_change_result(result['message']); setliste_sessions_file_change_result(result['message']);
setliste_sessions_file_change_api("true"); setliste_sessions_file_change_api("true");
@ -1478,6 +1486,7 @@ const DisplayPartnerStagiaires = (props) => {
} }
else { else {
setLoading(false);
setliste_sessions_file_change_message(result['message']); setliste_sessions_file_change_message(result['message']);
setliste_sessions_file_change_api("false"); setliste_sessions_file_change_api("false");
alert('Erreur: ' + result['message']); alert('Erreur: ' + result['message']);
@ -1487,6 +1496,7 @@ const DisplayPartnerStagiaires = (props) => {
}) })
.catch((error) => { .catch((error) => {
setLoading(false);
console.error('Error:', error); console.error('Error:', error);
setliste_sessions_file_change_api("false"); setliste_sessions_file_change_api("false");
alert(" Impossible d'importer les stagiaires "); alert(" Impossible d'importer les stagiaires ");
@ -2713,8 +2723,16 @@ const DisplayPartnerStagiaires = (props) => {
setfields1desabled(true); setfields1desabled(true);
} }
const [isLoading, setLoading] = useState();
return ( return (
<div className="displaypartnerstagiaire"> <div className="displaypartnerstagiaire">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
<Dialog <Dialog
open={Dialog_1_open} open={Dialog_1_open}
onClose={Dialog_1_handleClose} onClose={Dialog_1_handleClose}
@ -3637,7 +3655,7 @@ const DisplayPartnerStagiaires = (props) => {
Les dimensions maximales sont de 256pixels X 256pixels Les dimensions maximales sont de 256pixels X 256pixels
</li> </li>
<li> <li>
La taille de l'image ne doit pas depasser 1 mega octet La taille de l'image ne doit pas dépasser 1 mega octet
</li> </li>
</div> </div>

View File

@ -730,7 +730,7 @@ const Employes = (props) => {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }
@ -1432,7 +1432,7 @@ const Employes = (props) => {
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a); //alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets"); alert("L'image ne doit pas dépasser un 1 Méga octets");
return; return;
} }
setisimgclassSelected(event.target.files[0]); setisimgclassSelected(event.target.files[0]);
@ -2880,7 +2880,7 @@ const Employes = (props) => {
Les dimensions maximales sont de 256pixels X 256pixels Les dimensions maximales sont de 256pixels X 256pixels
</li> </li>
<li> <li>
La taille de l'image ne doit pas depasser 1 mega octet La taille de l'image ne doit pas dépasser 1 mega octet
</li> </li>
</div> </div>

View File

@ -33,6 +33,7 @@ import parse from 'html-react-parser'
import { Editor } from '@tinymce/tinymce-react'; import { Editor } from '@tinymce/tinymce-react';
import { FcAddImage } from "react-icons/fc"; import { FcAddImage } from "react-icons/fc";
import add_plus from "../mysy_img/plus.png"; import add_plus from "../mysy_img/plus.png";
import gif_new from "../mysy_img/new_icon_gif.gif";
import excel_icone from "../mysy_img/excel_icone.png"; import excel_icone from "../mysy_img/excel_icone.png";
import participants from "../mysy_img/participants.png"; import participants from "../mysy_img/participants.png";
import { useHistory } from "react-router-dom"; import { useHistory } from "react-router-dom";
@ -42,6 +43,9 @@ import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText'; import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle'; import DialogTitle from '@mui/material/DialogTitle';
import { CiTrash } from "react-icons/ci"; import { CiTrash } from "react-icons/ci";
import { ConstructionOutlined } from "@mui/icons-material";
import FiberNewIcon from '@mui/icons-material/FiberNew';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
function GestionAdministrative(props) { function GestionAdministrative(props) {
@ -376,7 +380,70 @@ function GestionAdministrative(props) {
); );
} }
}, },
{
field: "annulation", headerName: 'Annulation',
renderCell: (cellValues) => {
return (
<Popup
trigger={<Button
onClick={(event) => {
handleClick_refuse(event, cellValues);
}}
>
<FcCancel />
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'inscription du stagiaire sera <i><font color="red"> définitivement annulée</font></i>. <br />
Il (le stagiaire) sera automatiquement <i><font color="red"> notifié par email de l'annulation de son inscription. </font></i> <br />
<br /> Motif du annulation : <br />
<textarea name='motif_refus' id="motif_refus" style={{ "width": "80%" }}
rows="3" maxlength="180" />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_refuse(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
);
}
},
] ]
@ -944,6 +1011,9 @@ function GestionAdministrative(props) {
//const data = []; //const data = [];
//const [mydata, setmydata] = useState([]); //const [mydata, setmydata] = useState([]);
const [p_detail_external_code, setp_detail_external_code] = useState("");
const [p_detail_title, setp_detail_title] = useState("");
const [p_detail_trainer, setp_detail_trainer] = useState("");
const [GetCurrentClass_api, setGetCurrentClass_api] = useState(); const [GetCurrentClass_api, setGetCurrentClass_api] = useState();
@ -968,15 +1038,16 @@ function GestionAdministrative(props) {
var mylocaltraining = JSON.parse(res.data.message); var mylocaltraining = JSON.parse(res.data.message);
if (mylocaltraining.external_code) if (mylocaltraining.external_code)
document.getElementsByName("external_code")[0].value = mylocaltraining.external_code; setp_detail_external_code(mylocaltraining.external_code);
if (mylocaltraining.title) if (mylocaltraining.title) {
document.getElementsByName("title")[0].value = mylocaltraining.title; setp_detail_title(mylocaltraining.title);
setclasstitle(mylocaltraining.title); setclasstitle(mylocaltraining.title);
}
if (mylocaltraining.trainer) if (mylocaltraining.trainer)
document.getElementsByName("trainer")[0].value = mylocaltraining.trainer; setp_detail_trainer(mylocaltraining.trainer);
@ -1542,6 +1613,12 @@ function GestionAdministrative(props) {
return; return;
} }
// A present l'utilisateur a choisi une session, il n'est donc plus necessaire d'afficher le 'gif' qui l'alerte
// sur le faite qu'il y a une nouvelle session
setshow_new_session_gif("");
setselected_session_id(event.target.value); setselected_session_id(event.target.value);
@ -1704,15 +1781,24 @@ function GestionAdministrative(props) {
var session_ondemande = "0" var session_ondemande = "0"
session_ondemande = "" session_ondemande = ""
if (document.getElementById("session_ondemande") && document.getElementById("session_ondemande").value != "") { if (p_detail_session_ondemande) {
session_ondemande = document.getElementById("session_ondemande").value; session_ondemande = p_detail_session_ondemande;
} }
if (String(session_ondemande) === "1")
setp_detail_session_ondemande_label("Oui");
else
setp_detail_session_ondemande_label("Non");
var presentiel = "0" var presentiel = "0"
presentiel = "" if (p_detail_presentiel) {
if (document.getElementById("presentiel") && document.getElementById("presentiel").value != "") { presentiel = p_detail_presentiel;
presentiel = document.getElementById("presentiel").value; if (String(presentiel) === "1")
setp_detail_presentiel_label("Oui");
else
setp_detail_presentiel_label("Non");
} }
if (presentiel.trim() == "") { if (presentiel.trim() == "") {
alert(" Vous devez preciser si la session est en présentiel"); alert(" Vous devez preciser si la session est en présentiel");
@ -1720,9 +1806,13 @@ function GestionAdministrative(props) {
} }
var distantiel = "0" var distantiel = "0"
distantiel = "" if (p_detail_distantiel) {
if (document.getElementById("distantiel") && document.getElementById("distantiel").value != "") {
distantiel = document.getElementById("distantiel").value; distantiel = p_detail_distantiel;
if (String(distantiel) === "1")
setp_detail_distantiel_label("Oui");
else
setp_detail_distantiel_label("Non");
} }
if (distantiel.trim() == "") { if (distantiel.trim() == "") {
alert(" Vous devez preciser si la session est en distantiel"); alert(" Vous devez preciser si la session est en distantiel");
@ -1789,7 +1879,11 @@ function GestionAdministrative(props) {
form.append("code_session", code_session); form.append("code_session", code_session);
form.append("formateur", formateur); form.append("formateur", formateur);
form.append("lms_class_code", lms_class_code); form.append("lms_class_code", lms_class_code);
form.append("session_status", sessionStatus); if (sessionStatus)
form.append("session_status", "1");
else
form.append("session_status", "0");
form.append("date_debut_inscription", format(SessionstartDateInscription, 'dd/MM/yyyy kk:mm:ss')); form.append("date_debut_inscription", format(SessionstartDateInscription, 'dd/MM/yyyy kk:mm:ss'));
form.append("date_fin_inscription", format(SessionendDateInscription, 'dd/MM/yyyy kk:mm:ss')); form.append("date_fin_inscription", format(SessionendDateInscription, 'dd/MM/yyyy kk:mm:ss'));
if (selectedCertif) if (selectedCertif)
@ -1813,7 +1907,7 @@ function GestionAdministrative(props) {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_SessionFormation/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_SessionFormation/";
console.log(" ### CreateSessionFormation form = ", form); //console.log(" ### CreateSessionFormation form = ", form);
//return; //return;
@ -1825,8 +1919,8 @@ function GestionAdministrative(props) {
setCreateSessionFormation_api("true"); setCreateSessionFormation_api("true");
setCreateSessionFormation_result(res.data.message); setCreateSessionFormation_result(res.data.message);
setsessionChanged(false); setsessionChanged(false);
desableSessionFields();
GetCurrentClass_trainingsession(); GetCurrentClass_trainingsession();
desableSessionFields();
alert(" La mise à jour a été correctement faite"); alert(" La mise à jour a été correctement faite");
} else if (String(res.data.status) === String("Err_Connexion")) { } else if (String(res.data.status) === String("Err_Connexion")) {
@ -1843,10 +1937,26 @@ function GestionAdministrative(props) {
console.warn('CreateSessionFormation : Not good man :( mysearchtext = ' + error); console.warn('CreateSessionFormation : Not good man :( mysearchtext = ' + error);
setCreateSessionFormation_api("false"); setCreateSessionFormation_api("false");
alert(" Impossible d'ajouter ou mettre à jour la sessions");
}) })
} }
const [p_detail_one_session_ondemande, setp_detail_one_session_ondemande] = useState();
const [p_detail_session_ondemande, setp_detail_session_ondemande] = useState();
const [p_detail_session_ondemande_label, setp_detail_session_ondemande_label] = useState();
const [p_detail_one_presentiel, setp_detail_one_presentiel] = useState();
const [p_detail_presentiel, setp_detail_presentiel] = useState();
const [p_detail_presentiel_label, setp_detail_presentiel_label] = useState();
const [p_detail_one_distantiel, setp_detail_one_distantiel] = useState();
const [p_detail_distantiel, setp_detail_distantiel] = useState();
const [p_detail_distantiel_label, setp_detail_distantiel_label] = useState();
const [show_new_session_gif, setshow_new_session_gif] = useState();
const [one_CreateSessionFormation_api, setone_CreateSessionFormation_api] = useState(); const [one_CreateSessionFormation_api, setone_CreateSessionFormation_api] = useState();
const [one_CreateSessionFormation_message, setone_CreateSessionFormation_message] = useState(); const [one_CreateSessionFormation_message, setone_CreateSessionFormation_message] = useState();
@ -1885,16 +1995,15 @@ function GestionAdministrative(props) {
var one_session_ondemande = "0" var one_session_ondemande = "0"
one_session_ondemande = "" if (p_detail_one_session_ondemande) {
if (document.getElementById("one_session_ondemande") && document.getElementById("one_session_ondemande").value != "") { one_session_ondemande = p_detail_one_session_ondemande;
one_session_ondemande = document.getElementById("one_session_ondemande").value;
} }
var presentiel = "0" var presentiel = "0"
presentiel = "" presentiel = ""
if (document.getElementById("one_presentiel") && document.getElementById("one_presentiel").value != "") { if (p_detail_one_presentiel) {
presentiel = document.getElementById("one_presentiel").value; presentiel = p_detail_one_presentiel;
} }
if (presentiel.trim() == "") { if (presentiel.trim() == "") {
@ -1906,8 +2015,8 @@ function GestionAdministrative(props) {
var distantiel = "0" var distantiel = "0"
distantiel = "" distantiel = ""
if (document.getElementById("one_distantiel") && document.getElementById("one_distantiel").value != "") { if (p_detail_one_distantiel) {
distantiel = document.getElementById("one_distantiel").value; distantiel = p_detail_one_distantiel;
} }
if (distantiel.trim() == "") { if (distantiel.trim() == "") {
@ -1988,7 +2097,11 @@ function GestionAdministrative(props) {
form.append("code_session", code_session); form.append("code_session", code_session);
form.append("formateur", formateur); form.append("formateur", formateur);
form.append("lms_class_code", lms_class_code); form.append("lms_class_code", lms_class_code);
form.append("session_status", sessionStatus); if (sessionStatus)
form.append("session_status", "1");
else
form.append("session_status", "0");
form.append("date_debut_inscription", format(one_SessionstartDateInscription, 'dd/MM/yyyy kk:mm:ss')); form.append("date_debut_inscription", format(one_SessionstartDateInscription, 'dd/MM/yyyy kk:mm:ss'));
form.append("date_fin_inscription", format(one_SessionendDateInscription, 'dd/MM/yyyy kk:mm:ss')); form.append("date_fin_inscription", format(one_SessionendDateInscription, 'dd/MM/yyyy kk:mm:ss'));
form.append("attestation_certif", one_selectedCertif); form.append("attestation_certif", one_selectedCertif);
@ -2004,12 +2117,8 @@ function GestionAdministrative(props) {
} }
form.append("contenu_ftion", contenu_ftion); form.append("contenu_ftion", contenu_ftion);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_SessionFormation/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_SessionFormation/";
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
//console.log(" In One_CreateSessionFormation res.data.status = " + res.data.status); //console.log(" In One_CreateSessionFormation res.data.status = " + res.data.status);
//console.log(" In One_CreateSessionFormation res.data.message r_class = " + res.data.message); //console.log(" In One_CreateSessionFormation res.data.message r_class = " + res.data.message);
@ -2019,10 +2128,15 @@ function GestionAdministrative(props) {
setone_CreateSessionFormation_result(res.data.message); setone_CreateSessionFormation_result(res.data.message);
setsessionChanged(false); setsessionChanged(false);
GetCurrentClass_trainingsession(); GetCurrentClass_trainingsession();
alert(" La session a été correctement ajoutée");
One_clearSessionFields(); One_clearSessionFields();
setaddOneSession(); setaddOneSession();
setreduction_session("1"); setreduction_session("1");
setshow_new_session_gif('1');
alert(" La session a été correctement ajoutée");
if (ancre_ref_new_gif.current) {
ancre_ref_new_gif.current.scrollIntoView({ behavior: "smooth" });
}
} else if (String(res.data.status) === String("Err_Connexion")) { } else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message); alert('Erreur: ' + res.data.message);
@ -2038,12 +2152,14 @@ function GestionAdministrative(props) {
console.warn('One_CreateSessionFormation : Not good man :( = ' + error); console.warn('One_CreateSessionFormation : Not good man :( = ' + error);
setone_CreateSessionFormation_api("false"); setone_CreateSessionFormation_api("false");
alert(" Impossible d'ajouter la session de formation");
}) })
} }
const [selected_session_id, setselected_session_id] = useState(); const [selected_session_id, setselected_session_id] = useState();
const [GetCurrentSession_api, setGetCurrentSession_api] = useState(); const [GetCurrentSession_api, setGetCurrentSession_api] = useState();
@ -2122,19 +2238,56 @@ function GestionAdministrative(props) {
if (mylocaltraining.prix_session) if (mylocaltraining.prix_session)
document.getElementsByName("prix_session")[0].value = mylocaltraining.prix_session; document.getElementsByName("prix_session")[0].value = mylocaltraining.prix_session;
document.getElementsByName("distantiel")[0].value = "";
if (mylocaltraining.distantiel)
document.getElementsByName("distantiel")[0].value = mylocaltraining.distantiel; if (mylocaltraining.presentiel) {
setp_detail_presentiel(mylocaltraining.presentiel);
if (String(mylocaltraining.presentiel) === "1")
setp_detail_presentiel_label("Oui");
else
setp_detail_presentiel_label("Non");
}
else {
setp_detail_presentiel("0");
setp_detail_presentiel_label("Non");
}
if (mylocaltraining.distantiel) {
setp_detail_distantiel(mylocaltraining.distantiel);
if (String(mylocaltraining.distantiel) === "1") {
setp_detail_distantiel_label("Oui");
}
else
setp_detail_distantiel_label("Non");
}
else {
setp_detail_distantiel("0");
setp_detail_distantiel_label("Non");
}
document.getElementsByName("session_ondemande")[0].value = ""; if (mylocaltraining.session_ondemande) {
if (mylocaltraining.session_ondemande) setp_detail_session_ondemande(mylocaltraining.session_ondemande);
document.getElementsByName("session_ondemande")[0].value = mylocaltraining.session_ondemande;
if (String(mylocaltraining.session_ondemande) === "1")
setp_detail_session_ondemande_label("Oui");
else
setp_detail_session_ondemande_label("Non");
}
else {
setp_detail_session_ondemande("0");
setp_detail_session_ondemande_label("Non");
}
document.getElementsByName("presentiel")[0].value = "";
if (mylocaltraining.presentiel)
document.getElementsByName("presentiel")[0].value = mylocaltraining.presentiel;
if (mylocaltraining.contenu_ftion) if (mylocaltraining.contenu_ftion)
setfield_contenu_ftion(mylocaltraining.contenu_ftion); setfield_contenu_ftion(mylocaltraining.contenu_ftion);
@ -2166,9 +2319,9 @@ function GestionAdministrative(props) {
document.getElementsByName("code_postal")[0].value = mylocaltraining.code_postal; document.getElementsByName("code_postal")[0].value = mylocaltraining.code_postal;
if (String(mylocaltraining.session_status) === "true") if (String(mylocaltraining.session_status) === "1")
setsessionStatus(true); setsessionStatus(true);
else if (String(mylocaltraining.session_status) === "false") else if (String(mylocaltraining.session_status) === "0")
setsessionStatus(false); setsessionStatus(false);
} else { } else {
@ -2320,6 +2473,7 @@ function GestionAdministrative(props) {
function desableSessionFields() { function desableSessionFields() {
setfields1desabled(true);
document.getElementsByName("code_session")[0].disabled = true; document.getElementsByName("code_session")[0].disabled = true;
document.getElementsByName("code_session")[0].style.backgroundColor = "#ECEFF1"; document.getElementsByName("code_session")[0].style.backgroundColor = "#ECEFF1";
@ -2351,8 +2505,11 @@ function GestionAdministrative(props) {
document.getElementsByName("prix_session")[0].disabled = true; document.getElementsByName("prix_session")[0].disabled = true;
document.getElementsByName("prix_session")[0].style.backgroundColor = "#ECEFF1"; document.getElementsByName("prix_session")[0].style.backgroundColor = "#ECEFF1";
if (document.getElementsByName("session_ondemande") && document.getElementsByName("session_ondemande")[0]) {
//console.log(" GRRR ocument.getElementsByName('session_ondemande')[0] = ", document.getElementsByName("session_ondemande")[0].value);
document.getElementsByName("session_ondemande")[0].disabled = true; document.getElementsByName("session_ondemande")[0].disabled = true;
document.getElementsByName("session_ondemande")[0].style.backgroundColor = "#ECEFF1"; document.getElementsByName("session_ondemande")[0].style.backgroundColor = "#ECEFF1";
}
document.getElementsByName("presentiel")[0].disabled = true; document.getElementsByName("presentiel")[0].disabled = true;
document.getElementsByName("presentiel")[0].style.backgroundColor = "#ECEFF1"; document.getElementsByName("presentiel")[0].style.backgroundColor = "#ECEFF1";
@ -2366,7 +2523,7 @@ function GestionAdministrative(props) {
document.getElementsByName("sessiondatefininscription")[0].disabled = true; document.getElementsByName("sessiondatefininscription")[0].disabled = true;
document.getElementsByName("sessiondatefininscription")[0].style.backgroundColor = "#ECEFF1"; document.getElementsByName("sessiondatefininscription")[0].style.backgroundColor = "#ECEFF1";
setfields1desabled(true);
} }
@ -2875,7 +3032,7 @@ function GestionAdministrative(props) {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }
@ -2891,6 +3048,8 @@ function GestionAdministrative(props) {
formData.append("class_internal_url", internal_url); formData.append("class_internal_url", internal_url);
//console.log("token = " + stored_cookie); //console.log("token = " + stored_cookie);
setLoading(true);
fetch( fetch(
process.env.REACT_APP_API_URL + "myclass/api/AddStagiairetoClass_mass/", process.env.REACT_APP_API_URL + "myclass/api/AddStagiairetoClass_mass/",
{ {
@ -2900,7 +3059,9 @@ function GestionAdministrative(props) {
) )
.then((response) => response.json()) .then((response) => response.json())
.then((result) => { .then((result) => {
if (String(result['status']) === String("true")) { if (String(result['status']) === String("true")) {
setLoading(false);
//console.log('Success:', result['message']); //console.log('Success:', result['message']);
setliste_participants_file_change_result(result['message']); setliste_participants_file_change_result(result['message']);
setliste_participants_file_change_api("true"); setliste_participants_file_change_api("true");
@ -2911,19 +3072,24 @@ function GestionAdministrative(props) {
alert(" Les stagiaires ont été correctement importés"); alert(" Les stagiaires ont été correctement importés");
submenu_inscrit(); submenu_inscrit();
} else if (String(result['status']) === String("Err_Connexion")) { } else if (String(result['status']) === String("Err_Connexion")) {
setLoading(false);
alert('Erreur: ' + result['message']); alert('Erreur: ' + result['message']);
history.push("/Connexion"); history.push("/Connexion");
} }
else { else {
setLoading(false);
setliste_participants_file_change_message(result['message']); setliste_participants_file_change_message(result['message']);
setliste_participants_file_change_api("false"); setliste_participants_file_change_api("false");
alert(result['message']);
} }
}) })
.catch((error) => { .catch((error) => {
setLoading(false);
console.error('Error:', error); console.error('Error:', error);
setliste_participants_file_change_api("false"); setliste_participants_file_change_api("false");
alert(" Impossible d'importer le fichier");
}); });
}; };
@ -3106,7 +3272,7 @@ function GestionAdministrative(props) {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }
@ -3133,7 +3299,7 @@ function GestionAdministrative(props) {
//console.log(" ## result['status'] = ", result['status']) //console.log(" ## result['status'] = ", result['status'])
if (String(result['status']) === String("Err_Connexion")) { if (String(result['status']) === String("Err_Connexion")) {
alert('Erreur: ' + result['message']); alert(result['message']);
history.push("/Connexion"); history.push("/Connexion");
} }
@ -3150,7 +3316,7 @@ function GestionAdministrative(props) {
else { else {
setliste_sessions_file_change_message(result['message']); setliste_sessions_file_change_message(result['message']);
setliste_sessions_file_change_api("false"); setliste_sessions_file_change_api("false");
alert('Erreur: ' + result['message']); alert(result['message']);
} }
@ -4259,6 +4425,7 @@ function GestionAdministrative(props) {
} }
const ancre_ref_new_gif = useRef(null)
const [Delete_Session_Formation_api, setDelete_Session_Formation_api] = useState(); const [Delete_Session_Formation_api, setDelete_Session_Formation_api] = useState();
const [Delete_Session_Formation_message, setDelete_Session_Formation_message] = useState(); const [Delete_Session_Formation_message, setDelete_Session_Formation_message] = useState();
@ -4328,7 +4495,7 @@ function GestionAdministrative(props) {
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a); //alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets"); alert("L'image ne doit pas dépasser un 1 Méga octets");
return; return;
} }
setisimgclassSelected(event.target.files[0]); setisimgclassSelected(event.target.files[0]);
@ -4735,10 +4902,12 @@ function GestionAdministrative(props) {
setDialog_1_open(false); setDialog_1_open(false);
}; };
const [isLoading, setLoading] = useState();
return ( return (
<div className='gestionadministrative'> <div className='gestionadministrative'>
<Dialog <Dialog
open={Dialog_1_open} open={Dialog_1_open}
onClose={Dialog_1_handleClose} onClose={Dialog_1_handleClose}
@ -4767,51 +4936,34 @@ function GestionAdministrative(props) {
<div className="div_mobile"> <div className="div_mobile">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
<div className="zone_data"> <div className="zone_data">
<h4> Gestion Administrative de : <i><u> {classtitle} </u> </i> <h4> Gestion Administrative de : <i><u> {classtitle} </u> </i>
</h4> </h4>
isLoading = {isLoading} <br />
<div className="div_row session_data" style={{ "border": "None" }}> <div className="div_row session_data" style={{ "border": "None" }}>
<div className="training_data"> <div className="training_data">
<div className="training_caract"> <div className="training_caract ">
<TextField Code <br />
required
name="external_code"
label="Code"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/> <nav className="disabled_style_hilight"> {p_detail_external_code} </nav>
</div> </div>
<div className="training_caract"> <div className="training_caract">
<TextField
required Titre <br />
name="title" <nav className="disabled_style_hilight"> {p_detail_title} </nav>
label="Titre"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/>
</div> </div>
<div className="training_caract"> <div className="training_caract">
<TextField
required Formateur <br />
name="trainer" <nav className="disabled_style_hilight"> {p_detail_trainer} </nav>
label="Formateur"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/>
</div> </div>
</div> </div>
@ -4874,18 +5026,25 @@ function GestionAdministrative(props) {
/> />
</div> </div>
<div className="session_caract">Session à la demande* <i>(0 = Non, 1 = Oui) </i><br /> <div className="session_caract">Session à la demande* <br />
<TextField <TextField
name="one_session_ondemande" name="one_session_ondemande"
id="one_session_ondemande" id="one_session_ondemande"
type="number" select
InputLabelProps={{ InputLabelProps={{
shrink: true, shrink: true,
}} }}
inputProps={{ min: "0", max: "1", step: "1" }} inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false} disabled={false}
className="disabled_style enable_style" className="disabled_style enable_style"
value={p_detail_one_session_ondemande}
onChange={(e) => {
setp_detail_one_session_ondemande(e.target.value);
}}
> >
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Oui &nbsp;&nbsp;</MenuItem>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Non &nbsp;</MenuItem>
</TextField> </TextField>
</div> </div>
@ -4970,35 +5129,47 @@ function GestionAdministrative(props) {
</div> </div>
<div className="session_caract">Présentiel* <i>(0 = Non, 1 = Oui) </i><br /> <div className="session_caract">Présentiel* <br />
<TextField <TextField
name="one_presentiel" name="one_presentiel"
id="one_presentiel" id="one_presentiel"
type="number" select
InputLabelProps={{ InputLabelProps={{
shrink: true, shrink: true,
}} }}
inputProps={{ min: "0", max: "1", step: "1" }} inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false} disabled={false}
className="disabled_style enable_style" className="disabled_style enable_style"
> value={p_detail_one_presentiel}
onChange={(e) => {
setp_detail_one_presentiel(e.target.value);
}}
>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Oui &nbsp;&nbsp;</MenuItem>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Non &nbsp;</MenuItem>
</TextField> </TextField>
</div> </div>
<div className="session_caract">A distance* <i>(0 = Non, 1 = Oui) </i><br /> <div className="session_caract">A distance* <br />
<TextField <TextField
name="one_distantiel" name="one_distantiel"
id="one_distantiel" id="one_distantiel"
type="number" select
InputLabelProps={{ InputLabelProps={{
shrink: true, shrink: true,
}} }}
inputProps={{ min: "0", max: "1", step: "1" }} inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false} disabled={false}
className="disabled_style enable_style" className="disabled_style enable_style"
> value={p_detail_one_distantiel}
onChange={(e) => {
setp_detail_one_distantiel(e.target.value);
}}
>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Oui &nbsp;&nbsp;</MenuItem>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Non &nbsp;</MenuItem>
</TextField> </TextField>
</div> </div>
@ -5168,12 +5339,12 @@ function GestionAdministrative(props) {
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}> {<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}> <div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_envoyer" onClick={One_CreateSessionFormation}>Enregistrer la session <Button variant="contained" className="bton_enreg" onClick={One_CreateSessionFormation}>Enregistrer la session
</Button> </Button>
</div> </div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}> <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_fermer" onClick={One_annuleSessionUpdate}>Annuler <Button variant="contained" className="bton_annule" onClick={One_annuleSessionUpdate} style={{ "textAlign": "center" }}>Annuler
</Button> </Button>
</div> </div>
@ -5186,10 +5357,17 @@ function GestionAdministrative(props) {
} }
{String(addOneSession) !== "1" && <div> {String(addOneSession) !== "1" && <div>
<div className="div_row_gauche" style={{ "textAlign": "left", "paddingLeft": "5px" }}> <div className="div_row_gauche" style={{ "textAlign": "left", "paddingLeft": "5px" }} ref={ancre_ref_new_gif}>
<br /> <br />
Choisir une session <br /> {String(show_new_session_gif) !== "1" && <nav style={{ "width": '100%', "float": 'left' }}>
Choisir une session
</nav>
}
{String(show_new_session_gif) === "1" && <nav style={{ "width": '100%', "float": 'left' }}>
Choisir la nouvelle session &nbsp; <FiberNewIcon color="success" fontSize="large" /> &nbsp;<img src={gif_new} alt="Nouvelle session" className="gif_new_css" />
</nav>
}
<TextField <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required required
@ -5228,32 +5406,8 @@ function GestionAdministrative(props) {
))} ))}
</TextField> </TextField>
{/* Choisir une session <br />
<select id="session_liste" value={mysession} onChange={handleChangeSession} className="selectsession">
<option value="" className="select_option_css">Choisir</option>
{GetCurrentClass_trainingsession_result &&
GetCurrentClass_trainingsession_result.map((session) => (
<option id="mysy_code_session" value={(JSON.parse(session)._id)} mysy_code_session={(JSON.parse(session).code_session)} className="select_option_css">
{(JSON.parse(session).code_session) && (JSON.parse(session).code_session) + " - "}
{(JSON.parse(session).session_ondemande) === "1" && " A la Demande - "}
{(!JSON.parse(session).session_ondemande || JSON.parse(session).session_ondemande === "0") &&
(JSON.parse(session).date_debut).substring(0, 10) + " au " + (JSON.parse(session).date_fin).substring(0, 10)}
{/*(JSON.parse(session).date_debut).substring(0, 10)} au {(JSON.parse(session).date_fin).substring(0, 10) * /} -
{(JSON.parse(session).distantiel) === "1" && " A Distance - "}
{(JSON.parse(session).presentiel) === "1" && (JSON.parse(session).adresse) && " En Présentiel - " + (JSON.parse(session).adresse)}
{(JSON.parse(session).presentiel) === "1" && (!JSON.parse(session).adresse) && " En Présentiel - "}
{(JSON.parse(session).code_postal) && " " + (JSON.parse(session).code_postal)}
</option>
))}
</select>
*/}
</div> </div>
<div className="div_row_droite"> <div className="div_row_droite">
@ -5338,21 +5492,48 @@ function GestionAdministrative(props) {
/> />
</div> </div>
<div className="session_caract">Session à la demande* <i>(0 = Non, 1 = Oui) </i><br /> {fields1desabled && <div className="session_caract">Session à la demande * <br />
<TextField <TextField
name="session_ondemande" name="session_ondemande"
id="session_ondemande" id="session_ondemande"
type="number"
InputLabelProps={{ InputLabelProps={{
shrink: true, shrink: true,
}} }}
inputProps={{ min: "0", max: "1", step: "1" }} inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false} disabled={false}
className="disabled_style enable_style" className="disabled_style enable_style"
> value={p_detail_session_ondemande_label}
/>
</div>
}
{!fields1desabled && <div className="session_caract">Session à la demande * <br />
<TextField
name="session_ondemande"
id="session_ondemande"
select
InputLabelProps={{
shrink: true,
}}
inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false}
className="disabled_style enable_style"
value={p_detail_session_ondemande}
onChange={(e) => {
setp_detail_session_ondemande(e.target.value);
IssessionChanged();
}}
>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Oui &nbsp;&nbsp;</MenuItem>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Non &nbsp;</MenuItem>
</TextField> </TextField>
</div> </div>
}
<div className="session_caract"> <div className="session_caract">
Date Debut Date Debut
@ -5434,37 +5615,90 @@ function GestionAdministrative(props) {
</div> </div>
<div className="session_caract">Présentiel *<i>(0 = Non, 1 = Oui) </i><br /> {fields1desabled && <div className="session_caract">Présentiel *<br />
<TextField <TextField
name="presentiel" name="presentiel"
id="presentiel" id="presentiel"
type="number"
InputLabelProps={{ InputLabelProps={{
shrink: true, shrink: true,
}} }}
inputProps={{ min: "0", max: "1", step: "1" }} inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false} disabled={false}
className="disabled_style" className="disabled_style"
value={p_detail_presentiel_label}
> >
</TextField> </TextField>
</div> </div>}
<div className="session_caract">A distance*<i>(0 = Non, 1 = Oui) </i><br /> {!fields1desabled && <div className="session_caract">Présentiel *<br />
<TextField
name="presentiel"
id="presentiel"
select
InputLabelProps={{
shrink: true,
}}
inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false}
className="disabled_style"
value={p_detail_presentiel}
onChange={(e) => {
setp_detail_presentiel(e.target.value);
IssessionChanged();
}}
>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Oui &nbsp;&nbsp;</MenuItem>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Non &nbsp;</MenuItem>
</TextField>
</div>}
{fields1desabled && <div className="session_caract">A distance *<br />
<TextField <TextField
name="distantiel" name="distantiel"
id="distantiel" id="distantiel"
type="number"
InputLabelProps={{ InputLabelProps={{
shrink: true, shrink: true,
}} }}
inputProps={{ min: "0", max: "1", step: "1" }} inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false} disabled={false}
className="disabled_style" className="disabled_style"
value={p_detail_distantiel_label}
> >
</TextField> </TextField>
</div> </div>}
{!fields1desabled && <div className="session_caract">A distance *<br />
<TextField
name="distantiel"
id="distantiel"
select
InputLabelProps={{
shrink: true,
}}
inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false}
className="disabled_style"
value={p_detail_distantiel}
onChange={(e) => {
setp_detail_distantiel(e.target.value);
IssessionChanged();
}}
>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Oui &nbsp;&nbsp;</MenuItem>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Non &nbsp;</MenuItem>
</TextField>
</div>}
{String(reduction_session) === "0" && <div> {String(reduction_session) === "0" && <div>
<div className="session_caract"> Adresse<br /> <div className="session_caract"> Adresse<br />
@ -5658,7 +5892,7 @@ function GestionAdministrative(props) {
{!sessionChanged && mysession && fields1desabled && {!sessionChanged && mysession && fields1desabled &&
<Popup <Popup
trigger={<Button variant="contained" className="bton_supprimer" onClick={Delete_Session_Formation}>Supprimer trigger={<Button variant="contained" className="bton_suppr" onClick={Delete_Session_Formation} style={{ "textAlign": "center" }}>Supprimer
</Button> </Button>
} }
modal modal
@ -5712,17 +5946,17 @@ function GestionAdministrative(props) {
{sessionChanged && mysession && {sessionChanged && mysession &&
<Button variant="contained" className="bton_envoyer" onClick={CreateSessionFormation}>Enregistrer les modifications <Button variant="contained" className="bton_enreg" onClick={CreateSessionFormation}>Enregistrer les modifications
</Button>} </Button>}
</div> </div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}> <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
{!sessionChanged && mysession && fields1desabled && {!sessionChanged && mysession && fields1desabled &&
<Button variant="contained" className="bton_fermer" onClick={enableSessionFields}>Editer <Button variant="contained" className="bton_edit" onClick={enableSessionFields} style={{ "textAlign": "center" }}>Editer
</Button>} </Button>}
{((sessionChanged && mysession) || !fields1desabled) && {((sessionChanged && mysession) || !fields1desabled) &&
<Button variant="contained" className="bton_fermer" onClick={annuleSessionUpdate}>Annuler les modifications <Button variant="contained" className="bton_annule" onClick={annuleSessionUpdate} style={{ "textAlign": "center" }}>Annuler les modifications
</Button>} </Button>}
</div> </div>
@ -6425,12 +6659,12 @@ function GestionAdministrative(props) {
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}> {<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}> <div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_envoyer" onClick={One_Create_Participant}>Enregistrer le participant <Button variant="contained" className="bton_enreg" onClick={One_Create_Participant}>Enregistrer le participant
</Button> </Button>
</div> </div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}> <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_fermer" onClick={One_annuleAdd_Participant}>Annuler <Button variant="contained" className="bton_annule" onClick={One_annuleAdd_Participant} style={{ "textAlign": "center" }}>Annuler
</Button> </Button>
</div> </div>
@ -6505,7 +6739,7 @@ function GestionAdministrative(props) {
Les dimensions maximales sont de 256pixels X 256pixels Les dimensions maximales sont de 256pixels X 256pixels
</li> </li>
<li> <li>
La taille de l'image ne doit pas depasser 1 mega octet La taille de l'image ne doit pas dépasser 1 mega octet
</li> </li>
</div> </div>
@ -6956,13 +7190,13 @@ function GestionAdministrative(props) {
{String(participant_data_changed) === "1" && String(participant_data_edit_mode) === "1" && <div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}> {String(participant_data_changed) === "1" && String(participant_data_edit_mode) === "1" && <div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_envoyer" onClick={Update_One_StagiaireData}>Enregistrer les modifications <Button variant="contained" className="bton_enreg" onClick={Update_One_StagiaireData}>Enregistrer les modifications
</Button> </Button>
</div>} </div>}
{String(participant_data_edit_mode) === "1" && <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} onClick={AnnuleAttendeeDetailFields}> {String(participant_data_edit_mode) === "1" && <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} onClick={AnnuleAttendeeDetailFields}>
<Button variant="contained" className="bton_fermer" onClick={AnnuleAttendeeDetailFields}>Annuler <Button variant="contained" className="bton_annule" onClick={AnnuleAttendeeDetailFields} style={{ "textAlign": "center" }}>Annuler
</Button> </Button>
</div>} </div>}
</div> </div>
@ -6976,7 +7210,7 @@ function GestionAdministrative(props) {
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}> <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_fermer" onClick={EnableAttendeeDetailFields}>Editer <Button variant="contained" className="bton_fermer" onClick={EnableAttendeeDetailFields} style={{ "textAlign": "center" }}>Editer
</Button> </Button>
</div> </div>

View File

@ -194,7 +194,7 @@ function HebergementLms(props) {
//console.log("file_size = ", file_size, " file_type = ", file_type); //console.log("file_size = ", file_size, " file_type = ", file_type);
//console.log(" fileUploaded = ", fileUploaded); //console.log(" fileUploaded = ", fileUploaded);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }
@ -337,7 +337,7 @@ function HebergementLms(props) {
console.log("file_size = ", file_size, " file_type = ", file_type, " naturalWidth = ", fileUploaded.naturalWidth); console.log("file_size = ", file_size, " file_type = ", file_type, " naturalWidth = ", fileUploaded.naturalWidth);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }

View File

@ -413,7 +413,7 @@ const Materiels = (props) => {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }
@ -1064,7 +1064,7 @@ const Materiels = (props) => {
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a); //alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets"); alert("L'image ne doit pas dépasser un 1 Méga octets");
return; return;
} }
setisimgclassSelected(event.target.files[0]); setisimgclassSelected(event.target.files[0]);
@ -2496,7 +2496,7 @@ const Materiels = (props) => {
Les dimensions maximales sont de 256pixels X 256pixels Les dimensions maximales sont de 256pixels X 256pixels
</li> </li>
<li> <li>
La taille de l'image ne doit pas depasser 1 mega octet La taille de l'image ne doit pas dépasser 1 mega octet
</li> </li>
</div> </div>

View File

@ -131,7 +131,7 @@ const Partner = (props) => {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }

View File

@ -191,7 +191,7 @@ const Partner_Client = (props) => {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }

View File

@ -649,7 +649,7 @@ const Partner_Commande = (props) => {
//console.log("file_size = ",file_size," file_type = ",file_type); //console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets"); alert("Le fichier ne doit pas dépasser un 1 Méga octets");
return; return;
} }

View File

@ -13,6 +13,33 @@ import MenuItem from '@mui/material/MenuItem';
import { getCookie, setCookie } from 'react-use-cookie'; import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom"; import { useHistory } from "react-router-dom";
import { Calendar, dateFnsLocalizer } from 'react-big-calendar'
import format from 'date-fns/format'
import parse from 'date-fns/parse'
import startOfWeek from 'date-fns/startOfWeek'
import getDay from 'date-fns/getDay'
import enUS from 'date-fns/locale/en-US'
import FullCalendar from "@fullcalendar/react";
import daygridPlugin from "@fullcalendar/daygrid";
import interactionPlugin from "@fullcalendar/interaction";
import { v4 as uuid } from "uuid";
const locales = {
'en-US': enUS,
}
const localizer = dateFnsLocalizer({
format,
parse,
startOfWeek,
getDay,
locales,
})
const TestUrl_New = (props) => { const TestUrl_New = (props) => {
const { courseid, tabid } = useParams(); const { courseid, tabid } = useParams();
@ -197,7 +224,7 @@ const TestUrl_New = (props) => {
if (editorRef_programme){ if (editorRef_programme) {
var programme = editorRef_programme.current.getContent(); var programme = editorRef_programme.current.getContent();
form.append("contenu_doc", programme); form.append("contenu_doc", programme);
} }
@ -236,6 +263,32 @@ const TestUrl_New = (props) => {
}) })
} }
const myEventsList = []
const [events, setEvents] = useState([]);
const handleSelect = (info) => {
const { start, end } = info;
const eventNamePrompt = prompt("Enter, event name");
if (eventNamePrompt) {
setEvents([
...events,
{
start,
end,
title: eventNamePrompt,
id: uuid(),
},
]);
}
};
const EventItem = ({ info }) => {
const { event } = info;
return (
<div>
<p>{event.title}</p>
</div>
);
};
return ( return (
<div className="testurl_new"> <div className="testurl_new">
@ -251,6 +304,30 @@ const TestUrl_New = (props) => {
<h3> Page de test * testurl_new </h3> <h3> Page de test * testurl_new </h3>
parametres courseid = {courseid}, tabid = {tabid} parametres courseid = {courseid}, tabid = {tabid}
<br /> <br />
{/* <div>
<Calendar
localizer={localizer}
events={myEventsList}
startAccessor="start"
endAccessor="end"
style={{ height: 500 }}
/>
</div>*/}
<div style={{"width":"90%", "marginLeft":"1%"}}>
<FullCalendar
editable
selectable
events={events}
select={handleSelect}
headerToolbar={{
start: "today prev next",
end: "dayGridMonth dayGridWeek dayGridDay",
}}
eventContent={(info) => <EventItem info={info} />}
plugins={[daygridPlugin, interactionPlugin]}
views={["dayGridMonth", "dayGridWeek", "dayGridDay"]}
/>;
</div>
<div className="div_row_gauche texte_area_filter" > <div className="div_row_gauche texte_area_filter" >
<TextField <TextField

View File

@ -1477,7 +1477,7 @@ function UpdateParnterInfo() {
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a); //alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets"); alert("L'image ne doit pas dépasser un 1 Méga octets");
return; return;
} }
setisimgclassSelected(event.target.files[0]); setisimgclassSelected(event.target.files[0]);
@ -1510,7 +1510,7 @@ function UpdateParnterInfo() {
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a); //alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) { if (file_size > 1000000) {
alert("L'image ne doit pas depasser un 1 Méga octets"); alert("L'image ne doit pas dépasser un 1 Méga octets");
return; return;
} }
setisimgcachetSelected(event.target.files[0]); setisimgcachetSelected(event.target.files[0]);
@ -1859,7 +1859,7 @@ function UpdateParnterInfo() {
Les dimensions maximales sont de 256pixels X 256pixels Les dimensions maximales sont de 256pixels X 256pixels
</li> </li>
<li> <li>
La taille de l'image ne doit pas depasser 1 mega octet La taille de l'image ne doit pas dépasser 1 mega octet
</li> </li>
</div> </div>
@ -1900,7 +1900,7 @@ function UpdateParnterInfo() {
Les dimensions maximales sont de 256pixels X 256pixels Les dimensions maximales sont de 256pixels X 256pixels
</li> </li>
<li> <li>
La taille de l'image ne doit pas depasser 1 mega octet La taille de l'image ne doit pas dépasser 1 mega octet
</li> </li>
</div> </div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 KiB

View File

@ -1,5 +1,36 @@
.displaypartnersession { .displaypartnersession {
.loader-container {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
position: fixed;
background: white;
background-color: transparent;
z-index: 1;
top: 0px;
opacity: 80%;
}
.spinner {
width: 20rem;
height: 10rem;
border: 8px solid;
border-color: #3d5af1 transparent #3d5af1 transparent;
border-radius: 50%;
animation: spin-anim 1.2s linear infinite;
background-color: red;
color: black;
}
.mysy_spinner{
border-radius: 5px;
border: 1px solid black;
opacity: 100%;
}
.Mui-disabled { .Mui-disabled {
font-size: small !important; font-size: small !important;
@ -2100,6 +2131,7 @@
text-align: center; text-align: center;
} }
} }
// end media // end media

View File

@ -1,5 +1,36 @@
.displaypartnerstagiaire { .displaypartnerstagiaire {
.loader-container {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
position: fixed;
background: white;
background-color: transparent;
z-index: 1;
top: 0px;
opacity: 80%;
}
.spinner {
width: 20rem;
height: 10rem;
border: 8px solid;
border-color: #3d5af1 transparent #3d5af1 transparent;
border-radius: 50%;
animation: spin-anim 1.2s linear infinite;
background-color: red;
color: black;
}
.mysy_spinner{
border-radius: 5px;
border: 1px solid black;
opacity: 100%;
}
.Mui-disabled { .Mui-disabled {
font-size: small !important; font-size: small !important;

View File

@ -1,5 +1,37 @@
.gestionadministrative { .gestionadministrative {
.loader-container {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
position: fixed;
background: white;
background-color: transparent;
z-index: 1;
top: 0px;
opacity: 80%;
}
.spinner {
width: 20rem;
height: 10rem;
border: 8px solid;
border-color: #3d5af1 transparent #3d5af1 transparent;
border-radius: 50%;
animation: spin-anim 1.2s linear infinite;
background-color: red;
color: black;
}
.mysy_spinner{
border-radius: 5px;
border: 1px solid black;
opacity: 100%;
}
.Mui-disabled { .Mui-disabled {
font-size: small !important; font-size: small !important;
padding: 0px !important; padding: 0px !important;
@ -266,6 +298,54 @@
color: red !important; color: red !important;
} }
.bton_suppr {
background: transparent;
color: red;
border-radius: 5rem;
font-size: small;
text-align: center;
height: 2.5rem;
width: 100%;
margin-left: 10px;
margin-right: 10px;
}
.bton_enreg {
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
text-align: center;
height: 2.5rem;
width: 100%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_edit {
border-radius: 5rem;
font-size: small;
background: black !important;
text-align: right;
height: 2.5rem;
width: 100%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_annule {
border-radius: 5rem;
font-size: small;
background: lightgray !important;
text-align: right;
height: 2.5rem;
width: 100%;
color: black;
margin-left: 10px;
margin-right: 10px;
}
.css-1x5jdmq { .css-1x5jdmq {
padding: 6px !important; padding: 6px !important;
} }
@ -290,6 +370,13 @@
width: 6%; width: 6%;
} }
.gif_new_css {
width: 8%;
}
.bton_add_session { .bton_add_session {
background: #c8cfd5; background: #c8cfd5;
color: black; color: black;
@ -633,6 +720,56 @@
color: red !important; color: red !important;
} }
.bton_suppr {
background: transparent;
color: red;
border-radius: 5rem;
font-size: small;
text-align: center;
height: 2.5rem;
width: 80%;
margin-left: 10px;
margin-right: 10px;
}
.bton_enreg {
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
text-align: center;
height: 2.5rem;
width: 80%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_edit {
border-radius: 5rem;
font-size: small;
background: black !important;
text-align: right;
height: 2.5rem;
width: 80%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_annule {
border-radius: 5rem;
font-size: small;
background: lightgray !important;
text-align: right;
height: 2.5rem;
width: 80%;
color: black;
margin-left: 10px;
margin-right: 10px;
}
.css-1x5jdmq { .css-1x5jdmq {
padding: 6px !important; padding: 6px !important;
} }
@ -651,7 +788,7 @@
.preview_certif:hover { .preview_certif:hover {
transform: scale(2); transform: scale(2);
margin-left: 5rem; margin-left: 0.5rem;
} }
.hr_break { .hr_break {
@ -662,6 +799,10 @@
width: 6%; width: 6%;
} }
.gif_new_css {
width: 8%;
}
.bton_add_session { .bton_add_session {
background: #c8cfd5; background: #c8cfd5;
color: black; color: black;
@ -996,6 +1137,56 @@
} }
.bton_suppr {
background: transparent;
color: red;
border-radius: 5rem;
font-size: small;
text-align: center;
height: 2.5rem;
width: 65%;
margin-left: 10px;
margin-right: 10px;
}
.bton_enreg {
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
text-align: center;
height: 2.5rem;
width: 65%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_edit {
border-radius: 5rem;
font-size: small;
background: black !important;
text-align: right;
height: 2.5rem;
width: 65%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_annule {
border-radius: 5rem;
font-size: small;
background: lightgray !important;
text-align: right;
height: 2.5rem;
width: 65%;
color: black;
margin-left: 10px;
margin-right: 10px;
}
.css-1x5jdmq { .css-1x5jdmq {
padding: 6px !important; padding: 6px !important;
} }
@ -1013,8 +1204,8 @@
} }
.preview_certif:hover { .preview_certif:hover {
transform: scale(2); transform: scale(1.8);
margin-left: 5rem; margin-left: 0.5rem;
} }
.hr_break { .hr_break {
@ -1025,6 +1216,10 @@
width: 8%; width: 8%;
} }
.gif_new_css {
width: 10%;
}
.bton_add_session { .bton_add_session {
background: #c8cfd5; background: #c8cfd5;
color: black; color: black;
@ -1259,6 +1454,11 @@
background: white; background: white;
} }
.disabled_style_hilight {
color: black !important;
font-weight: 600 !important;
}
.training_caract { .training_caract {
width: 30%; width: 30%;
padding: 5px; padding: 5px;
@ -1335,8 +1535,8 @@
} }
.preview_certif:hover { .preview_certif:hover {
transform: scale(1.8); transform: scale(1.5);
margin-left: 10rem; margin-left: 1rem;
} }
@ -1372,6 +1572,10 @@
width: 8%; width: 8%;
} }
.gif_new_css {
width: 10%;
}
.bton_add_session { .bton_add_session {
background: #c8cfd5; background: #c8cfd5;
color: black; color: black;
@ -1432,6 +1636,56 @@
} }
.bton_suppr {
background: transparent;
color: red;
border-radius: 5rem;
font-size: small;
text-align: center;
height: 2.5rem;
width: 40%;
margin-left: 10px;
margin-right: 10px;
}
.bton_enreg {
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
text-align: center;
height: 2.5rem;
width: 40%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_edit {
border-radius: 5rem;
font-size: small;
background: black !important;
text-align: right;
height: 2.5rem;
width: 40%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_annule {
border-radius: 5rem;
font-size: small;
background: lightgray !important;
text-align: right;
height: 2.5rem;
width: 40%;
color: black;
margin-left: 10px;
margin-right: 10px;
}
.enable_style { .enable_style {
background-color: #FFFFFF; background-color: #FFFFFF;
} }
@ -1495,7 +1749,7 @@
// end media // end media
.css-igs3ac{ .css-igs3ac {
border: none !important; border: none !important;
} }

View File

@ -78,4 +78,6 @@
@import "./components/testurl_new"; @import "./components/testurl_new";
@import "./components/partner_commande"; @import "./components/partner_commande";
@import "./components/config_document"; @import "./components/config_document";
@import 'react-big-calendar/lib/sass/styles';
@import 'react-big-calendar/lib/addons/dragAndDrop/styles'; // if using DnD