04/12/2023 - 12h30
parent
90deb8fa59
commit
ddb2d4fea0
1
.env
1
.env
|
@ -7,3 +7,4 @@ REACT_APP_API_URL_recette=https://devapimysy.mysy-training.com/
|
||||||
REACT_APP_API_URL=http://localhost:5001/
|
REACT_APP_API_URL=http://localhost:5001/
|
||||||
REACT_APP_BASE_URL=http://localhost:3009/recherche-formation
|
REACT_APP_BASE_URL=http://localhost:3009/recherche-formation
|
||||||
REACT_APP_ENV=DEV
|
REACT_APP_ENV=DEV
|
||||||
|
GENERATE_SOURCEMAP=false
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "my-app2",
|
"name": "MySy Training",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
|
@ -33,6 +33,7 @@
|
||||||
"@mui/x-date-pickers": "^5.0.0",
|
"@mui/x-date-pickers": "^5.0.0",
|
||||||
"@mui/x-date-pickers-pro": "^5.0.0",
|
"@mui/x-date-pickers-pro": "^5.0.0",
|
||||||
"@nivo/bar": "^0.84.0",
|
"@nivo/bar": "^0.84.0",
|
||||||
|
"@nivo/line": "^0.84.0",
|
||||||
"@nivo/pie": "^0.84.0",
|
"@nivo/pie": "^0.84.0",
|
||||||
"@react-icons/all-files": "^4.1.0",
|
"@react-icons/all-files": "^4.1.0",
|
||||||
"@stripe/react-stripe-js": "^1.12.0",
|
"@stripe/react-stripe-js": "^1.12.0",
|
||||||
|
@ -57,6 +58,7 @@
|
||||||
"gatsby-plugin-cookie-gdpr-axeptio": "^1.0.2",
|
"gatsby-plugin-cookie-gdpr-axeptio": "^1.0.2",
|
||||||
"google-map-react": "^2.1.10",
|
"google-map-react": "^2.1.10",
|
||||||
"html-react-parser": "^2.0.0",
|
"html-react-parser": "^2.0.0",
|
||||||
|
"increase-memory-limit": "^1.0.7",
|
||||||
"js-cookie": "^3.0.1",
|
"js-cookie": "^3.0.1",
|
||||||
"js-file-download": "^0.4.12",
|
"js-file-download": "^0.4.12",
|
||||||
"js-video-url-parser": "^0.5.1",
|
"js-video-url-parser": "^0.5.1",
|
||||||
|
@ -5380,6 +5382,40 @@
|
||||||
"react": ">= 16.14.0 < 19.0.0"
|
"react": ">= 16.14.0 < 19.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@nivo/line": {
|
||||||
|
"version": "0.84.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@nivo/line/-/line-0.84.0.tgz",
|
||||||
|
"integrity": "sha512-QE0JwZ7oIwMnsDQeSr1Q6iyqD2UBVLtBMdfMsJLhnlI3V62VkY98/L3o8M7+7Wy/V2UiEMJ+14C2qhXd+XLgsA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@nivo/annotations": "0.84.0",
|
||||||
|
"@nivo/axes": "0.84.0",
|
||||||
|
"@nivo/colors": "0.84.0",
|
||||||
|
"@nivo/core": "0.84.0",
|
||||||
|
"@nivo/legends": "0.84.0",
|
||||||
|
"@nivo/scales": "0.84.0",
|
||||||
|
"@nivo/tooltip": "0.84.0",
|
||||||
|
"@nivo/voronoi": "0.84.0",
|
||||||
|
"@react-spring/web": "9.4.5 || ^9.7.2",
|
||||||
|
"d3-shape": "^1.3.5",
|
||||||
|
"prop-types": "^15.7.2"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">= 16.14.0 < 19.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@nivo/line/node_modules/d3-path": {
|
||||||
|
"version": "1.0.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
|
||||||
|
"integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
|
||||||
|
},
|
||||||
|
"node_modules/@nivo/line/node_modules/d3-shape": {
|
||||||
|
"version": "1.3.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
|
||||||
|
"integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
|
||||||
|
"dependencies": {
|
||||||
|
"d3-path": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@nivo/pie": {
|
"node_modules/@nivo/pie": {
|
||||||
"version": "0.84.0",
|
"version": "0.84.0",
|
||||||
"resolved": "https://registry.npmjs.org/@nivo/pie/-/pie-0.84.0.tgz",
|
"resolved": "https://registry.npmjs.org/@nivo/pie/-/pie-0.84.0.tgz",
|
||||||
|
@ -5462,6 +5498,21 @@
|
||||||
"@react-spring/web": "9.4.5 || ^9.7.2"
|
"@react-spring/web": "9.4.5 || ^9.7.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@nivo/voronoi": {
|
||||||
|
"version": "0.84.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@nivo/voronoi/-/voronoi-0.84.0.tgz",
|
||||||
|
"integrity": "sha512-CJTb0sQWYNbfjjrCEK3W0jt1v+hqAd4fDUNJxB3SNRHEEQtF+MCr2EG3p/CWyxIb3avjF4N53/03tQpnuDwBvQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@nivo/core": "0.84.0",
|
||||||
|
"@types/d3-delaunay": "^5.3.0",
|
||||||
|
"@types/d3-scale": "^3.2.3",
|
||||||
|
"d3-delaunay": "^5.3.0",
|
||||||
|
"d3-scale": "^3.2.3"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">= 16.14.0 < 19.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@nodelib/fs.scandir": {
|
"node_modules/@nodelib/fs.scandir": {
|
||||||
"version": "2.1.5",
|
"version": "2.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||||
|
@ -6555,6 +6606,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz",
|
||||||
"integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w=="
|
"integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w=="
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/d3-delaunay": {
|
||||||
|
"version": "5.3.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-5.3.4.tgz",
|
||||||
|
"integrity": "sha512-GEQuDXVKQvHulQ+ecKyCubOmVjXrifAj7VR26rWVAER/IbWemaT/Tmo84ESiTtoDghg5ILdMZH7pYXQEt/Vu9A=="
|
||||||
|
},
|
||||||
"node_modules/@types/d3-ease": {
|
"node_modules/@types/d3-ease": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz",
|
||||||
|
@ -11530,6 +11586,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
|
||||||
"integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
|
"integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/d3-delaunay": {
|
||||||
|
"version": "5.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz",
|
||||||
|
"integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==",
|
||||||
|
"dependencies": {
|
||||||
|
"delaunator": "4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/d3-ease": {
|
"node_modules/d3-ease": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
|
||||||
|
@ -15351,6 +15415,17 @@
|
||||||
"node": ">=0.8.19"
|
"node": ">=0.8.19"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/increase-memory-limit": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/increase-memory-limit/-/increase-memory-limit-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-ozyn+HHAPD9VxMT1U50A7G8XXlktUWhnnEDYSeDYnQjKsNrBWHqq6XfEA0uhMdDPD+q/7rXWlzF1CbXX/c1LiQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"glob": "^7.1.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"increase-memory-limit": "index.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/indent-string": {
|
"node_modules/indent-string": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
||||||
|
@ -34194,7 +34269,8 @@
|
||||||
"@bedrock-layout/use-stateful-ref": {
|
"@bedrock-layout/use-stateful-ref": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/@bedrock-layout/use-stateful-ref/-/use-stateful-ref-1.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@bedrock-layout/use-stateful-ref/-/use-stateful-ref-1.4.1.tgz",
|
||||||
"integrity": "sha512-4eKO2KdQEXcR5LI4QcxqlJykJUDQJWDeWYAukIn6sRQYoabcfI5kDl61PUi6FR6o8VFgQ8IEP7HleKqWlSe8SQ=="
|
"integrity": "sha512-4eKO2KdQEXcR5LI4QcxqlJykJUDQJWDeWYAukIn6sRQYoabcfI5kDl61PUi6FR6o8VFgQ8IEP7HleKqWlSe8SQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@callstack/react-theme-provider": {
|
"@callstack/react-theme-provider": {
|
||||||
"version": "3.0.8",
|
"version": "3.0.8",
|
||||||
|
@ -34329,12 +34405,14 @@
|
||||||
"@csstools/postcss-unset-value": {
|
"@csstools/postcss-unset-value": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz",
|
||||||
"integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g=="
|
"integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@csstools/selector-specificity": {
|
"@csstools/selector-specificity": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
|
||||||
"integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg=="
|
"integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@date-io/core": {
|
"@date-io/core": {
|
||||||
"version": "2.16.0",
|
"version": "2.16.0",
|
||||||
|
@ -34566,7 +34644,8 @@
|
||||||
"@emotion/use-insertion-effect-with-fallbacks": {
|
"@emotion/use-insertion-effect-with-fallbacks": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
|
||||||
"integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A=="
|
"integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@emotion/utils": {
|
"@emotion/utils": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -34850,17 +34929,20 @@
|
||||||
"@fullcalendar/daygrid": {
|
"@fullcalendar/daygrid": {
|
||||||
"version": "6.1.9",
|
"version": "6.1.9",
|
||||||
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.9.tgz",
|
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.9.tgz",
|
||||||
"integrity": "sha512-o/6joH/7lmVHXAkbaa/tUbzWYnGp/LgfdiFyYPkqQbjKEeivNZWF1WhHqFbhx0zbFONSHtrvkjY2bjr+Ef2quQ=="
|
"integrity": "sha512-o/6joH/7lmVHXAkbaa/tUbzWYnGp/LgfdiFyYPkqQbjKEeivNZWF1WhHqFbhx0zbFONSHtrvkjY2bjr+Ef2quQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@fullcalendar/interaction": {
|
"@fullcalendar/interaction": {
|
||||||
"version": "6.1.9",
|
"version": "6.1.9",
|
||||||
"resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.9.tgz",
|
"resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.9.tgz",
|
||||||
"integrity": "sha512-I3FGnv0kKZpIwujg3HllbKrciNjTqeTYy3oJG226oAn7lV6wnrrDYMmuGmA0jPJAGN46HKrQqKN7ItxQRDec4Q=="
|
"integrity": "sha512-I3FGnv0kKZpIwujg3HllbKrciNjTqeTYy3oJG226oAn7lV6wnrrDYMmuGmA0jPJAGN46HKrQqKN7ItxQRDec4Q==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@fullcalendar/react": {
|
"@fullcalendar/react": {
|
||||||
"version": "6.1.9",
|
"version": "6.1.9",
|
||||||
"resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-6.1.9.tgz",
|
"resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-6.1.9.tgz",
|
||||||
"integrity": "sha512-ioxu0V++pYz2u/N1LL1V8DkMyiKGRun0gMAll2tQz3Kzi3r9pTwncGKRb1zO8h0e+TrInU08ywk/l5lBwp7eog=="
|
"integrity": "sha512-ioxu0V++pYz2u/N1LL1V8DkMyiKGRun0gMAll2tQz3Kzi3r9pTwncGKRb1zO8h0e+TrInU08ywk/l5lBwp7eog==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@fullcalendar/timegrid": {
|
"@fullcalendar/timegrid": {
|
||||||
"version": "6.1.9",
|
"version": "6.1.9",
|
||||||
|
@ -35762,7 +35844,8 @@
|
||||||
"@mantine/hooks": {
|
"@mantine/hooks": {
|
||||||
"version": "4.2.12",
|
"version": "4.2.12",
|
||||||
"resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-4.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-4.2.12.tgz",
|
||||||
"integrity": "sha512-/2GOsgv1tAUFBXOUV0YBZdDZHj3pHN82Sv1oI/hJMjfIT3ZkGeeiJO8Cw9cBcn76t6caP6Czi3hcuKhjz71O+A=="
|
"integrity": "sha512-/2GOsgv1tAUFBXOUV0YBZdDZHj3pHN82Sv1oI/hJMjfIT3ZkGeeiJO8Cw9cBcn76t6caP6Czi3hcuKhjz71O+A==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@mantine/rte": {
|
"@mantine/rte": {
|
||||||
"version": "4.2.12",
|
"version": "4.2.12",
|
||||||
|
@ -35862,7 +35945,8 @@
|
||||||
"@material-ui/types": {
|
"@material-ui/types": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz",
|
||||||
"integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A=="
|
"integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@material-ui/utils": {
|
"@material-ui/utils": {
|
||||||
"version": "4.11.3",
|
"version": "4.11.3",
|
||||||
|
@ -35877,7 +35961,8 @@
|
||||||
"@modulz/radix-icons": {
|
"@modulz/radix-icons": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@modulz/radix-icons/-/radix-icons-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@modulz/radix-icons/-/radix-icons-4.0.0.tgz",
|
||||||
"integrity": "sha512-d79T4cYvMGMocVC/q1WiMO578FPFfUoxmXIkduc8cUQAPDr7thuEV5HrCHhqqqkoVaYD0QPct180ilcNUyGPrg=="
|
"integrity": "sha512-d79T4cYvMGMocVC/q1WiMO578FPFfUoxmXIkduc8cUQAPDr7thuEV5HrCHhqqqkoVaYD0QPct180ilcNUyGPrg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@mui/base": {
|
"@mui/base": {
|
||||||
"version": "5.0.0-beta.11",
|
"version": "5.0.0-beta.11",
|
||||||
|
@ -36113,7 +36198,8 @@
|
||||||
"@mui/types": {
|
"@mui/types": {
|
||||||
"version": "7.2.4",
|
"version": "7.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz",
|
||||||
"integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA=="
|
"integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@mui/utils": {
|
"@mui/utils": {
|
||||||
"version": "5.14.5",
|
"version": "5.14.5",
|
||||||
|
@ -36446,6 +36532,39 @@
|
||||||
"prop-types": "^15.7.2"
|
"prop-types": "^15.7.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@nivo/line": {
|
||||||
|
"version": "0.84.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@nivo/line/-/line-0.84.0.tgz",
|
||||||
|
"integrity": "sha512-QE0JwZ7oIwMnsDQeSr1Q6iyqD2UBVLtBMdfMsJLhnlI3V62VkY98/L3o8M7+7Wy/V2UiEMJ+14C2qhXd+XLgsA==",
|
||||||
|
"requires": {
|
||||||
|
"@nivo/annotations": "0.84.0",
|
||||||
|
"@nivo/axes": "0.84.0",
|
||||||
|
"@nivo/colors": "0.84.0",
|
||||||
|
"@nivo/core": "0.84.0",
|
||||||
|
"@nivo/legends": "0.84.0",
|
||||||
|
"@nivo/scales": "0.84.0",
|
||||||
|
"@nivo/tooltip": "0.84.0",
|
||||||
|
"@nivo/voronoi": "0.84.0",
|
||||||
|
"@react-spring/web": "9.4.5 || ^9.7.2",
|
||||||
|
"d3-shape": "^1.3.5",
|
||||||
|
"prop-types": "^15.7.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"d3-path": {
|
||||||
|
"version": "1.0.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
|
||||||
|
"integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
|
||||||
|
},
|
||||||
|
"d3-shape": {
|
||||||
|
"version": "1.3.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
|
||||||
|
"integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
|
||||||
|
"requires": {
|
||||||
|
"d3-path": "1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@nivo/pie": {
|
"@nivo/pie": {
|
||||||
"version": "0.84.0",
|
"version": "0.84.0",
|
||||||
"resolved": "https://registry.npmjs.org/@nivo/pie/-/pie-0.84.0.tgz",
|
"resolved": "https://registry.npmjs.org/@nivo/pie/-/pie-0.84.0.tgz",
|
||||||
|
@ -36526,6 +36645,18 @@
|
||||||
"@react-spring/web": "9.4.5 || ^9.7.2"
|
"@react-spring/web": "9.4.5 || ^9.7.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@nivo/voronoi": {
|
||||||
|
"version": "0.84.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@nivo/voronoi/-/voronoi-0.84.0.tgz",
|
||||||
|
"integrity": "sha512-CJTb0sQWYNbfjjrCEK3W0jt1v+hqAd4fDUNJxB3SNRHEEQtF+MCr2EG3p/CWyxIb3avjF4N53/03tQpnuDwBvQ==",
|
||||||
|
"requires": {
|
||||||
|
"@nivo/core": "0.84.0",
|
||||||
|
"@types/d3-delaunay": "^5.3.0",
|
||||||
|
"@types/d3-scale": "^3.2.3",
|
||||||
|
"d3-delaunay": "^5.3.0",
|
||||||
|
"d3-scale": "^3.2.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@nodelib/fs.scandir": {
|
"@nodelib/fs.scandir": {
|
||||||
"version": "2.1.5",
|
"version": "2.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||||
|
@ -36719,7 +36850,8 @@
|
||||||
"@react-icons/all-files": {
|
"@react-icons/all-files": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz",
|
||||||
"integrity": "sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ=="
|
"integrity": "sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@react-spring/animated": {
|
"@react-spring/animated": {
|
||||||
"version": "9.7.3",
|
"version": "9.7.3",
|
||||||
|
@ -36767,7 +36899,8 @@
|
||||||
"@restart/context": {
|
"@restart/context": {
|
||||||
"version": "2.1.4",
|
"version": "2.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz",
|
||||||
"integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q=="
|
"integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@restart/hooks": {
|
"@restart/hooks": {
|
||||||
"version": "0.4.7",
|
"version": "0.4.7",
|
||||||
|
@ -37298,6 +37431,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz",
|
||||||
"integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w=="
|
"integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w=="
|
||||||
},
|
},
|
||||||
|
"@types/d3-delaunay": {
|
||||||
|
"version": "5.3.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-5.3.4.tgz",
|
||||||
|
"integrity": "sha512-GEQuDXVKQvHulQ+ecKyCubOmVjXrifAj7VR26rWVAER/IbWemaT/Tmo84ESiTtoDghg5ILdMZH7pYXQEt/Vu9A=="
|
||||||
|
},
|
||||||
"@types/d3-ease": {
|
"@types/d3-ease": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz",
|
||||||
|
@ -38267,12 +38405,14 @@
|
||||||
"acorn-import-assertions": {
|
"acorn-import-assertions": {
|
||||||
"version": "1.8.0",
|
"version": "1.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
|
||||||
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw=="
|
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"acorn-jsx": {
|
"acorn-jsx": {
|
||||||
"version": "5.3.2",
|
"version": "5.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
|
||||||
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
|
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"acorn-node": {
|
"acorn-node": {
|
||||||
"version": "1.8.2",
|
"version": "1.8.2",
|
||||||
|
@ -38363,7 +38503,8 @@
|
||||||
"ajv-errors": {
|
"ajv-errors": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
|
||||||
"integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ=="
|
"integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"ajv-formats": {
|
"ajv-formats": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
|
@ -38394,7 +38535,8 @@
|
||||||
"ajv-keywords": {
|
"ajv-keywords": {
|
||||||
"version": "3.5.2",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
|
||||||
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
|
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"alphanum-sort": {
|
"alphanum-sort": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
|
@ -38869,7 +39011,8 @@
|
||||||
"babel-plugin-named-asset-import": {
|
"babel-plugin-named-asset-import": {
|
||||||
"version": "0.3.8",
|
"version": "0.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz",
|
||||||
"integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q=="
|
"integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"babel-plugin-polyfill-corejs2": {
|
"babel-plugin-polyfill-corejs2": {
|
||||||
"version": "0.3.3",
|
"version": "0.3.3",
|
||||||
|
@ -39176,7 +39319,8 @@
|
||||||
"bootstrap": {
|
"bootstrap": {
|
||||||
"version": "5.2.3",
|
"version": "5.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
|
||||||
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ=="
|
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"bootstrap-icons": {
|
"bootstrap-icons": {
|
||||||
"version": "1.10.3",
|
"version": "1.10.3",
|
||||||
|
@ -40333,7 +40477,8 @@
|
||||||
"css-declaration-sorter": {
|
"css-declaration-sorter": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
|
||||||
"integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w=="
|
"integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"css-tree": {
|
"css-tree": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
|
@ -40437,22 +40582,26 @@
|
||||||
"postcss-discard-comments": {
|
"postcss-discard-comments": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
|
||||||
"integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ=="
|
"integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-discard-duplicates": {
|
"postcss-discard-duplicates": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
|
||||||
"integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw=="
|
"integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-discard-empty": {
|
"postcss-discard-empty": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
|
||||||
"integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A=="
|
"integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-discard-overridden": {
|
"postcss-discard-overridden": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
|
||||||
"integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw=="
|
"integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-merge-longhand": {
|
"postcss-merge-longhand": {
|
||||||
"version": "5.1.7",
|
"version": "5.1.7",
|
||||||
|
@ -40513,7 +40662,8 @@
|
||||||
"postcss-normalize-charset": {
|
"postcss-normalize-charset": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
|
||||||
"integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg=="
|
"integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-normalize-display-values": {
|
"postcss-normalize-display-values": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
|
@ -40788,7 +40938,8 @@
|
||||||
"css-prefers-color-scheme": {
|
"css-prefers-color-scheme": {
|
||||||
"version": "6.0.3",
|
"version": "6.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz",
|
||||||
"integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA=="
|
"integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"css-select": {
|
"css-select": {
|
||||||
"version": "4.3.0",
|
"version": "4.3.0",
|
||||||
|
@ -41047,7 +41198,8 @@
|
||||||
"cssnano-utils": {
|
"cssnano-utils": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
|
||||||
"integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA=="
|
"integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"csso": {
|
"csso": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
|
@ -41147,6 +41299,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
|
||||||
"integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
|
"integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
|
||||||
},
|
},
|
||||||
|
"d3-delaunay": {
|
||||||
|
"version": "5.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz",
|
||||||
|
"integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==",
|
||||||
|
"requires": {
|
||||||
|
"delaunator": "4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"d3-ease": {
|
"d3-ease": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
|
||||||
|
@ -41745,7 +41905,8 @@
|
||||||
"draftjs-utils": {
|
"draftjs-utils": {
|
||||||
"version": "0.10.2",
|
"version": "0.10.2",
|
||||||
"resolved": "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz",
|
||||||
"integrity": "sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg=="
|
"integrity": "sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"duplexer": {
|
"duplexer": {
|
||||||
"version": "0.1.1",
|
"version": "0.1.1",
|
||||||
|
@ -42348,7 +42509,8 @@
|
||||||
"eslint-plugin-react-hooks": {
|
"eslint-plugin-react-hooks": {
|
||||||
"version": "4.6.0",
|
"version": "4.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
|
||||||
"integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g=="
|
"integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"eslint-plugin-testing-library": {
|
"eslint-plugin-testing-library": {
|
||||||
"version": "5.9.1",
|
"version": "5.9.1",
|
||||||
|
@ -43329,7 +43491,8 @@
|
||||||
"gatsby-plugin-cookie-gdpr-axeptio": {
|
"gatsby-plugin-cookie-gdpr-axeptio": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/gatsby-plugin-cookie-gdpr-axeptio/-/gatsby-plugin-cookie-gdpr-axeptio-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/gatsby-plugin-cookie-gdpr-axeptio/-/gatsby-plugin-cookie-gdpr-axeptio-1.0.2.tgz",
|
||||||
"integrity": "sha512-2XvGm0s6iS8tBGer/ntQ904L2LrQOR+MQ9o07/6We993bgZiqUvgezSxz39G/33GcN3Ccwn1tVSqhG48+nNjVQ=="
|
"integrity": "sha512-2XvGm0s6iS8tBGer/ntQ904L2LrQOR+MQ9o07/6We993bgZiqUvgezSxz39G/33GcN3Ccwn1tVSqhG48+nNjVQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"generic-names": {
|
"generic-names": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
|
@ -43855,7 +44018,8 @@
|
||||||
"html-to-draftjs": {
|
"html-to-draftjs": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/html-to-draftjs/-/html-to-draftjs-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/html-to-draftjs/-/html-to-draftjs-1.5.0.tgz",
|
||||||
"integrity": "sha512-kggLXBNciKDwKf+KYsuE+V5gw4dZ7nHyGMX9m0wy7urzWjKGWyNFetmArRLvRV0VrxKN70WylFsJvMTJx02OBQ=="
|
"integrity": "sha512-kggLXBNciKDwKf+KYsuE+V5gw4dZ7nHyGMX9m0wy7urzWjKGWyNFetmArRLvRV0VrxKN70WylFsJvMTJx02OBQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"html-webpack-plugin": {
|
"html-webpack-plugin": {
|
||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
|
@ -44012,7 +44176,8 @@
|
||||||
"icss-utils": {
|
"icss-utils": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
|
||||||
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="
|
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"idb": {
|
"idb": {
|
||||||
"version": "7.1.1",
|
"version": "7.1.1",
|
||||||
|
@ -44098,6 +44263,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
||||||
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
|
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
|
||||||
},
|
},
|
||||||
|
"increase-memory-limit": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/increase-memory-limit/-/increase-memory-limit-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-ozyn+HHAPD9VxMT1U50A7G8XXlktUWhnnEDYSeDYnQjKsNrBWHqq6XfEA0uhMdDPD+q/7rXWlzF1CbXX/c1LiQ==",
|
||||||
|
"requires": {
|
||||||
|
"glob": "^7.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"indent-string": {
|
"indent-string": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
||||||
|
@ -45654,7 +45827,8 @@
|
||||||
"jest-pnp-resolver": {
|
"jest-pnp-resolver": {
|
||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
|
||||||
"integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w=="
|
"integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"jest-regex-util": {
|
"jest-regex-util": {
|
||||||
"version": "27.5.1",
|
"version": "27.5.1",
|
||||||
|
@ -48643,7 +48817,8 @@
|
||||||
"postcss-browser-comments": {
|
"postcss-browser-comments": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz",
|
||||||
"integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg=="
|
"integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-calc": {
|
"postcss-calc": {
|
||||||
"version": "7.0.5",
|
"version": "7.0.5",
|
||||||
|
@ -49137,7 +49312,8 @@
|
||||||
"postcss-flexbugs-fixes": {
|
"postcss-flexbugs-fixes": {
|
||||||
"version": "5.0.2",
|
"version": "5.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz",
|
||||||
"integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ=="
|
"integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-focus-visible": {
|
"postcss-focus-visible": {
|
||||||
"version": "6.0.4",
|
"version": "6.0.4",
|
||||||
|
@ -49158,12 +49334,14 @@
|
||||||
"postcss-font-variant": {
|
"postcss-font-variant": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
|
||||||
"integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA=="
|
"integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-gap-properties": {
|
"postcss-gap-properties": {
|
||||||
"version": "3.0.5",
|
"version": "3.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz",
|
||||||
"integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg=="
|
"integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-image-set-function": {
|
"postcss-image-set-function": {
|
||||||
"version": "4.0.7",
|
"version": "4.0.7",
|
||||||
|
@ -49186,7 +49364,8 @@
|
||||||
"postcss-initial": {
|
"postcss-initial": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz",
|
||||||
"integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ=="
|
"integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-js": {
|
"postcss-js": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
|
@ -49302,12 +49481,14 @@
|
||||||
"postcss-logical": {
|
"postcss-logical": {
|
||||||
"version": "5.0.4",
|
"version": "5.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz",
|
||||||
"integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g=="
|
"integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-media-minmax": {
|
"postcss-media-minmax": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz",
|
||||||
"integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ=="
|
"integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-merge-longhand": {
|
"postcss-merge-longhand": {
|
||||||
"version": "4.0.11",
|
"version": "4.0.11",
|
||||||
|
@ -49579,7 +49760,8 @@
|
||||||
"postcss-modules-extract-imports": {
|
"postcss-modules-extract-imports": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
|
||||||
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw=="
|
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-modules-local-by-default": {
|
"postcss-modules-local-by-default": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
|
@ -49956,7 +50138,8 @@
|
||||||
"postcss-opacity-percentage": {
|
"postcss-opacity-percentage": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz",
|
||||||
"integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A=="
|
"integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-ordered-values": {
|
"postcss-ordered-values": {
|
||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
|
@ -50005,7 +50188,8 @@
|
||||||
"postcss-page-break": {
|
"postcss-page-break": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
|
||||||
"integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ=="
|
"integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-place": {
|
"postcss-place": {
|
||||||
"version": "7.0.5",
|
"version": "7.0.5",
|
||||||
|
@ -50166,7 +50350,8 @@
|
||||||
"postcss-replace-overflow-wrap": {
|
"postcss-replace-overflow-wrap": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
|
||||||
"integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw=="
|
"integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-selector-not": {
|
"postcss-selector-not": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
|
@ -50792,7 +50977,8 @@
|
||||||
"react-canvas-js": {
|
"react-canvas-js": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-canvas-js/-/react-canvas-js-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-canvas-js/-/react-canvas-js-1.0.1.tgz",
|
||||||
"integrity": "sha512-rn+CEpdUmybItigZLPcSgecSf0kEWASa15jA3GbVsi9WJ19jngu/OW9+bUkepl5Eiioz0pkIiyny+3sJWcTcZg=="
|
"integrity": "sha512-rn+CEpdUmybItigZLPcSgecSf0kEWASa15jA3GbVsi9WJ19jngu/OW9+bUkepl5Eiioz0pkIiyny+3sJWcTcZg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-clock": {
|
"react-clock": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
|
@ -50898,7 +51084,8 @@
|
||||||
"react-confirm-alert": {
|
"react-confirm-alert": {
|
||||||
"version": "2.8.0",
|
"version": "2.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-confirm-alert/-/react-confirm-alert-2.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-confirm-alert/-/react-confirm-alert-2.8.0.tgz",
|
||||||
"integrity": "sha512-qvNjJWuWUpTh+q4NecUjCMIWLNDl8IwW6JRIky5pzoiFBXsLWSA2Z1VsaDsQedwgyxEpKnMEJFETkDogBpv/kA=="
|
"integrity": "sha512-qvNjJWuWUpTh+q4NecUjCMIWLNDl8IwW6JRIky5pzoiFBXsLWSA2Z1VsaDsQedwgyxEpKnMEJFETkDogBpv/kA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-cookie": {
|
"react-cookie": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
|
@ -51050,7 +51237,8 @@
|
||||||
"bootstrap": {
|
"bootstrap": {
|
||||||
"version": "4.6.2",
|
"version": "4.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
|
||||||
"integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ=="
|
"integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"entities": {
|
"entities": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
|
@ -51374,7 +51562,8 @@
|
||||||
"react-hook-form": {
|
"react-hook-form": {
|
||||||
"version": "7.41.2",
|
"version": "7.41.2",
|
||||||
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.41.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.41.2.tgz",
|
||||||
"integrity": "sha512-Uz5kNlfkEZve0sr5y2LsxPDGN3eNDjjKb1XJgand1E5Ay0S3zWo8YcJQNGu88/Zs6JaFnrJqTXbSr6B2q7wllA=="
|
"integrity": "sha512-Uz5kNlfkEZve0sr5y2LsxPDGN3eNDjjKb1XJgand1E5Ay0S3zWo8YcJQNGu88/Zs6JaFnrJqTXbSr6B2q7wllA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-html-parser": {
|
"react-html-parser": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
|
@ -51450,7 +51639,8 @@
|
||||||
"react-icons": {
|
"react-icons": {
|
||||||
"version": "4.10.1",
|
"version": "4.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.10.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.10.1.tgz",
|
||||||
"integrity": "sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw=="
|
"integrity": "sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-input-range": {
|
"react-input-range": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
|
@ -51533,7 +51723,8 @@
|
||||||
"react-meta-tags": {
|
"react-meta-tags": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-meta-tags/-/react-meta-tags-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-meta-tags/-/react-meta-tags-1.0.1.tgz",
|
||||||
"integrity": "sha512-uylBI9UOI0QCGDsl6PlZaHnp+MxEpwslTlicPjnlcD68I8Kl2hdbuAZBRih+yU5StArSMB6T0jBrgst6rAuDYQ=="
|
"integrity": "sha512-uylBI9UOI0QCGDsl6PlZaHnp+MxEpwslTlicPjnlcD68I8Kl2hdbuAZBRih+yU5StArSMB6T0jBrgst6rAuDYQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-motion": {
|
"react-motion": {
|
||||||
"version": "0.5.2",
|
"version": "0.5.2",
|
||||||
|
@ -51560,7 +51751,8 @@
|
||||||
"react-native-iphone-x-helper": {
|
"react-native-iphone-x-helper": {
|
||||||
"version": "1.3.1",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",
|
||||||
"integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg=="
|
"integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-native-paper": {
|
"react-native-paper": {
|
||||||
"version": "4.12.5",
|
"version": "4.12.5",
|
||||||
|
@ -51605,12 +51797,14 @@
|
||||||
"react-onclickoutside": {
|
"react-onclickoutside": {
|
||||||
"version": "6.12.2",
|
"version": "6.12.2",
|
||||||
"resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.12.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.12.2.tgz",
|
||||||
"integrity": "sha512-NMXGa223OnsrGVp5dJHkuKxQ4czdLmXSp5jSV9OqiCky9LOpPATn3vLldc+q5fK3gKbEHvr7J1u0yhBh/xYkpA=="
|
"integrity": "sha512-NMXGa223OnsrGVp5dJHkuKxQ4czdLmXSp5jSV9OqiCky9LOpPATn3vLldc+q5fK3gKbEHvr7J1u0yhBh/xYkpA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-only-when": {
|
"react-only-when": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/react-only-when/-/react-only-when-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-only-when/-/react-only-when-1.0.2.tgz",
|
||||||
"integrity": "sha512-agE6l3L6bqaVuwNtjihTQ36M+VBfPS63KOzcNL4ZTmlwSxQPvhzIqmBWfiol0/wLYmKxCcBqgXkEJpvj5Kob8Q=="
|
"integrity": "sha512-agE6l3L6bqaVuwNtjihTQ36M+VBfPS63KOzcNL4ZTmlwSxQPvhzIqmBWfiol0/wLYmKxCcBqgXkEJpvj5Kob8Q==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-overlays": {
|
"react-overlays": {
|
||||||
"version": "5.2.1",
|
"version": "5.2.1",
|
||||||
|
@ -51674,7 +51868,8 @@
|
||||||
"react-range": {
|
"react-range": {
|
||||||
"version": "1.8.14",
|
"version": "1.8.14",
|
||||||
"resolved": "https://registry.npmjs.org/react-range/-/react-range-1.8.14.tgz",
|
"resolved": "https://registry.npmjs.org/react-range/-/react-range-1.8.14.tgz",
|
||||||
"integrity": "sha512-v2nyD5106rHf9dwHzq+WRlhCes83h1wJRHIMFjbZsYYsO6LF4mG/mR3cH7Cf+dkeHq65DItuqIbLn/3jjYjsHg=="
|
"integrity": "sha512-v2nyD5106rHf9dwHzq+WRlhCes83h1wJRHIMFjbZsYYsO6LF4mG/mR3cH7Cf+dkeHq65DItuqIbLn/3jjYjsHg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-rating-stars-component": {
|
"react-rating-stars-component": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
|
@ -51871,7 +52066,8 @@
|
||||||
"react-scroll-to-top": {
|
"react-scroll-to-top": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-scroll-to-top/-/react-scroll-to-top-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-scroll-to-top/-/react-scroll-to-top-3.0.0.tgz",
|
||||||
"integrity": "sha512-I/k45Ujai097du59tHBbzGxN7Lyc6K8Uc3IChq6HMXaBfB8N/rrfm055T5Yv0DWfVpf6pOFaBmhD3LOfH5unGw=="
|
"integrity": "sha512-I/k45Ujai097du59tHBbzGxN7Lyc6K8Uc3IChq6HMXaBfB8N/rrfm055T5Yv0DWfVpf6pOFaBmhD3LOfH5unGw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-search-autocomplete": {
|
"react-search-autocomplete": {
|
||||||
"version": "7.2.2",
|
"version": "7.2.2",
|
||||||
|
@ -51986,7 +52182,8 @@
|
||||||
"react-side-effect": {
|
"react-side-effect": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz",
|
||||||
"integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw=="
|
"integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-simple-modal": {
|
"react-simple-modal": {
|
||||||
"version": "1.1.5",
|
"version": "1.1.5",
|
||||||
|
@ -52032,12 +52229,14 @@
|
||||||
"react-simple-modal-cb": {
|
"react-simple-modal-cb": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/react-simple-modal-cb/-/react-simple-modal-cb-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/react-simple-modal-cb/-/react-simple-modal-cb-2.0.4.tgz",
|
||||||
"integrity": "sha512-BhUoY0ngqcAi2DtEq6Ii5HRh+yKOI+BB8ZlIILE5+2KLNH86Oeq9plq7KXKcKAzHtLPRr+iMqHqu7Hg8qdMTEA=="
|
"integrity": "sha512-BhUoY0ngqcAi2DtEq6Ii5HRh+yKOI+BB8ZlIILE5+2KLNH86Oeq9plq7KXKcKAzHtLPRr+iMqHqu7Hg8qdMTEA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-simple-star-rating": {
|
"react-simple-star-rating": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-simple-star-rating/-/react-simple-star-rating-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-simple-star-rating/-/react-simple-star-rating-4.1.1.tgz",
|
||||||
"integrity": "sha512-mUj1FxGPchOly1Zj00eakntIEIZKxBaiGcMW+UE5RK3/UWt6+6i8HUHnIH8ICXbjQYS+gWGi4NamwgvMZYTYzg=="
|
"integrity": "sha512-mUj1FxGPchOly1Zj00eakntIEIZKxBaiGcMW+UE5RK3/UWt6+6i8HUHnIH8ICXbjQYS+gWGi4NamwgvMZYTYzg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-slideshow-image": {
|
"react-slideshow-image": {
|
||||||
"version": "3.7.5",
|
"version": "3.7.5",
|
||||||
|
@ -52096,7 +52295,8 @@
|
||||||
"react-social-login-buttons": {
|
"react-social-login-buttons": {
|
||||||
"version": "3.6.1",
|
"version": "3.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-social-login-buttons/-/react-social-login-buttons-3.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-social-login-buttons/-/react-social-login-buttons-3.6.1.tgz",
|
||||||
"integrity": "sha512-DIz30W+C147s7wxwt8zgwjx5pE+gTJwtUzTNKpKZO3bEY06eLjcY1zvZ8h35hQd1Yjd7b4rLkeuZBwlLURYIfg=="
|
"integrity": "sha512-DIz30W+C147s7wxwt8zgwjx5pE+gTJwtUzTNKpKZO3bEY06eLjcY1zvZ8h35hQd1Yjd7b4rLkeuZBwlLURYIfg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-sortable-tree-patch-react-17": {
|
"react-sortable-tree-patch-react-17": {
|
||||||
"version": "2.9.0",
|
"version": "2.9.0",
|
||||||
|
@ -52264,7 +52464,8 @@
|
||||||
"react-to-print": {
|
"react-to-print": {
|
||||||
"version": "2.14.13",
|
"version": "2.14.13",
|
||||||
"resolved": "https://registry.npmjs.org/react-to-print/-/react-to-print-2.14.13.tgz",
|
"resolved": "https://registry.npmjs.org/react-to-print/-/react-to-print-2.14.13.tgz",
|
||||||
"integrity": "sha512-PqUGgTRZvkyBzWgaZHVBECWPX2nGEc3HOUy6WNXof6HT4yTFI92wtIkqQtr4jfvHbadqjwTgzgh6vgN8KXlWWw=="
|
"integrity": "sha512-PqUGgTRZvkyBzWgaZHVBECWPX2nGEc3HOUy6WNXof6HT4yTFI92wtIkqQtr4jfvHbadqjwTgzgh6vgN8KXlWWw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-toastify": {
|
"react-toastify": {
|
||||||
"version": "9.1.1",
|
"version": "9.1.1",
|
||||||
|
@ -52297,12 +52498,14 @@
|
||||||
"react-transition-state": {
|
"react-transition-state": {
|
||||||
"version": "1.1.5",
|
"version": "1.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/react-transition-state/-/react-transition-state-1.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/react-transition-state/-/react-transition-state-1.1.5.tgz",
|
||||||
"integrity": "sha512-ITY2mZqc2dWG2eitJkYNdcSFW8aKeOlkL2A/vowRrLL8GH3J6Re/SpD/BLvQzrVOTqjsP0b5S9N10vgNNzwMUQ=="
|
"integrity": "sha512-ITY2mZqc2dWG2eitJkYNdcSFW8aKeOlkL2A/vowRrLL8GH3J6Re/SpD/BLvQzrVOTqjsP0b5S9N10vgNNzwMUQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-use-cookie": {
|
"react-use-cookie": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-use-cookie/-/react-use-cookie-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-use-cookie/-/react-use-cookie-1.4.0.tgz",
|
||||||
"integrity": "sha512-e21YFkimh8OX6Ctqq89YeeiwsIL1jr2GyCeBdkBKDWY5X5o2yonbQuqfFODK4opteJS3F7ya0OuYg06lOeqvJQ=="
|
"integrity": "sha512-e21YFkimh8OX6Ctqq89YeeiwsIL1jr2GyCeBdkBKDWY5X5o2yonbQuqfFODK4opteJS3F7ya0OuYg06lOeqvJQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"react-video-js-player": {
|
"react-video-js-player": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
|
@ -52844,7 +53047,8 @@
|
||||||
"reactjs-popup": {
|
"reactjs-popup": {
|
||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.5.tgz",
|
||||||
"integrity": "sha512-b5hv9a6aGsHEHXFAgPO5s1Jw1eSkopueyUVxQewGdLgqk2eW0IVXZrPRpHR629YcgIpC2oxtX8OOZ8a7bQJbxA=="
|
"integrity": "sha512-b5hv9a6aGsHEHXFAgPO5s1Jw1eSkopueyUVxQewGdLgqk2eW0IVXZrPRpHR629YcgIpC2oxtX8OOZ8a7bQJbxA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"reactstrap": {
|
"reactstrap": {
|
||||||
"version": "9.1.5",
|
"version": "9.1.5",
|
||||||
|
@ -53271,7 +53475,8 @@
|
||||||
"rifm": {
|
"rifm": {
|
||||||
"version": "0.12.1",
|
"version": "0.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz",
|
||||||
"integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg=="
|
"integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"rimraf": {
|
"rimraf": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
|
@ -54030,7 +54235,8 @@
|
||||||
"bootstrap": {
|
"bootstrap": {
|
||||||
"version": "4.3.1",
|
"version": "4.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz",
|
||||||
"integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag=="
|
"integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==",
|
||||||
|
"requires": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -54749,7 +54955,8 @@
|
||||||
"style-loader": {
|
"style-loader": {
|
||||||
"version": "3.3.1",
|
"version": "3.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
|
||||||
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ=="
|
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"style-to-js": {
|
"style-to-js": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
|
@ -54802,7 +55009,8 @@
|
||||||
"styled-jsx": {
|
"styled-jsx": {
|
||||||
"version": "5.0.7",
|
"version": "5.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz",
|
||||||
"integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA=="
|
"integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"stylehacks": {
|
"stylehacks": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.3",
|
||||||
|
@ -55069,7 +55277,8 @@
|
||||||
"swr": {
|
"swr": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz",
|
||||||
"integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw=="
|
"integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"symbol-observable": {
|
"symbol-observable": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
|
@ -55753,17 +55962,20 @@
|
||||||
"use-composed-ref": {
|
"use-composed-ref": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz",
|
||||||
"integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ=="
|
"integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"use-global-state": {
|
"use-global-state": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/use-global-state/-/use-global-state-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/use-global-state/-/use-global-state-0.1.2.tgz",
|
||||||
"integrity": "sha512-zfkipI7HgwPEhYD8JTUxCrm50sHwXMbKAQ5WtAkD41LJ6XJTRZROgeMFxmAPdk58FcXPOOhOE+pUnE1HbGeTuw=="
|
"integrity": "sha512-zfkipI7HgwPEhYD8JTUxCrm50sHwXMbKAQ5WtAkD41LJ6XJTRZROgeMFxmAPdk58FcXPOOhOE+pUnE1HbGeTuw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"use-isomorphic-layout-effect": {
|
"use-isomorphic-layout-effect": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
|
||||||
"integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA=="
|
"integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"use-latest": {
|
"use-latest": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
|
@ -55776,7 +55988,8 @@
|
||||||
"use-sync-external-store": {
|
"use-sync-external-store": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
|
||||||
"integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA=="
|
"integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"util": {
|
"util": {
|
||||||
"version": "0.11.1",
|
"version": "0.11.1",
|
||||||
|
@ -56868,7 +57081,8 @@
|
||||||
"ws": {
|
"ws": {
|
||||||
"version": "8.11.0",
|
"version": "8.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
|
||||||
"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg=="
|
"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
|
||||||
|
"requires": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -57383,7 +57597,8 @@
|
||||||
"ws": {
|
"ws": {
|
||||||
"version": "7.5.9",
|
"version": "7.5.9",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
|
||||||
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q=="
|
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"wysiwyg": {
|
"wysiwyg": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "my-app2",
|
"name": "MySy Training",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -28,6 +28,7 @@
|
||||||
"@mui/x-date-pickers": "^5.0.0",
|
"@mui/x-date-pickers": "^5.0.0",
|
||||||
"@mui/x-date-pickers-pro": "^5.0.0",
|
"@mui/x-date-pickers-pro": "^5.0.0",
|
||||||
"@nivo/bar": "^0.84.0",
|
"@nivo/bar": "^0.84.0",
|
||||||
|
"@nivo/line": "^0.84.0",
|
||||||
"@nivo/pie": "^0.84.0",
|
"@nivo/pie": "^0.84.0",
|
||||||
"@react-icons/all-files": "^4.1.0",
|
"@react-icons/all-files": "^4.1.0",
|
||||||
"@stripe/react-stripe-js": "^1.12.0",
|
"@stripe/react-stripe-js": "^1.12.0",
|
||||||
|
@ -52,6 +53,7 @@
|
||||||
"gatsby-plugin-cookie-gdpr-axeptio": "^1.0.2",
|
"gatsby-plugin-cookie-gdpr-axeptio": "^1.0.2",
|
||||||
"google-map-react": "^2.1.10",
|
"google-map-react": "^2.1.10",
|
||||||
"html-react-parser": "^2.0.0",
|
"html-react-parser": "^2.0.0",
|
||||||
|
"increase-memory-limit": "^1.0.7",
|
||||||
"js-cookie": "^3.0.1",
|
"js-cookie": "^3.0.1",
|
||||||
"js-file-download": "^0.4.12",
|
"js-file-download": "^0.4.12",
|
||||||
"js-video-url-parser": "^0.5.1",
|
"js-video-url-parser": "^0.5.1",
|
||||||
|
@ -146,8 +148,8 @@
|
||||||
"wysiwyg": "^2.0.0"
|
"wysiwyg": "^2.0.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-scripts start",
|
"start": "set \"GENERATE_SOURCEMAP=false\" && react-scripts start --max-old-space-size=16384",
|
||||||
"build": "react-scripts build",
|
"build": "react-scripts build --max-old-space-size=16384",
|
||||||
"test": "react-scripts test",
|
"test": "react-scripts test",
|
||||||
"eject": "react-scripts eject",
|
"eject": "react-scripts eject",
|
||||||
"winBuild": "set \"GENERATE_SOURCEMAP=false\" && react-scripts build"
|
"winBuild": "set \"GENERATE_SOURCEMAP=false\" && react-scripts build"
|
||||||
|
|
|
@ -0,0 +1,431 @@
|
||||||
|
import React, { useRef, useState, useEffect } from "react";
|
||||||
|
import TextField from '@mui/material/TextField';
|
||||||
|
import MenuItem from '@mui/material/MenuItem';
|
||||||
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
|
import Button from '@mui/material/Button';
|
||||||
|
import axios from "axios";
|
||||||
|
import { getCookie, setCookie } from 'react-use-cookie';
|
||||||
|
import { useHistory } from "react-router-dom";
|
||||||
|
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
||||||
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
|
import { Tooltip } from 'react-tooltip'
|
||||||
|
import 'reactjs-popup/dist/index.css';
|
||||||
|
import DatePicker from "react-datepicker";
|
||||||
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
|
import { format } from 'date-fns'
|
||||||
|
import moment from "moment";
|
||||||
|
import Box from '@mui/material/Box';
|
||||||
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
|
import { tokens } from "./../theme";
|
||||||
|
import { MdOutlineAddchart, } from "react-icons/md";
|
||||||
|
|
||||||
|
|
||||||
|
import {
|
||||||
|
ListItem,
|
||||||
|
ListItemText,
|
||||||
|
useTheme,
|
||||||
|
} from "@mui/material";
|
||||||
|
|
||||||
|
import { ResponsiveLine } from '@nivo/line'
|
||||||
|
import { TbColumns2, TbColumns1 } from "react-icons/tb";
|
||||||
|
|
||||||
|
|
||||||
|
const Dashbord_Formation = (props) => {
|
||||||
|
|
||||||
|
const history = useHistory();
|
||||||
|
const [isLoading, setLoading] = useState();
|
||||||
|
|
||||||
|
const theme = useTheme();
|
||||||
|
const colors = tokens(theme.palette.mode);
|
||||||
|
|
||||||
|
const [isMySyDashboard, setisMySyDashboard] = useState(false);
|
||||||
|
|
||||||
|
var date_today_90j = new Date();
|
||||||
|
date_today_90j.setDate(date_today_90j.getDate() - 90);
|
||||||
|
|
||||||
|
|
||||||
|
const [p_filter_date_from, setp_filter_date_from] = useState(date_today_90j.toLocaleDateString('fr-FR'));
|
||||||
|
const [p_filter_date_to, setp_filter_date_to] = useState(new Date().toLocaleDateString('fr-FR'));
|
||||||
|
|
||||||
|
|
||||||
|
const [dashbord_internal_code, setdashbord_internal_code] = useState("");
|
||||||
|
|
||||||
|
const [Getall_Qry_Formation_Session_result_JSON, setGetall_Qry_Formation_Session_result_JSON] = useState([]);
|
||||||
|
const [Getall_Qry_Formation_Session_api, setGetall_Qry_Formation_Session_api] = useState();
|
||||||
|
const [Getall_Qry_Formation_Session_message, setGetall_Qry_Formation_Session_message] = useState();
|
||||||
|
const [Getall_Qry_Formation_Session_result, setGetall_Qry_Formation_Session_result] = useState([]);
|
||||||
|
function Getall_Qry_Formation_Session(event) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
var date_from = "";
|
||||||
|
if (p_filter_date_from) {
|
||||||
|
date_from = p_filter_date_from;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var date_to = "";
|
||||||
|
if (p_filter_date_to) {
|
||||||
|
date_to = p_filter_date_to;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("session_start_date", date_from);
|
||||||
|
form.append("session_end_date", date_to);
|
||||||
|
form.append("filter_value", filter_value);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_Formation_By_Session_By_Periode/";
|
||||||
|
|
||||||
|
setLoading(true);
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
setLoading(false);
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
console.log(" In Getall_Qry_Formation_Session res.data.status = " + res.data.status);
|
||||||
|
console.log(" In Getall_Qry_Formation_Session res.data.message r_class = " + res.data.message);
|
||||||
|
setGetall_Qry_Formation_Session_result_JSON(JSON.parse( res.data.message ));
|
||||||
|
|
||||||
|
var jsonObj = JSON.parse( res.data.message );
|
||||||
|
|
||||||
|
console.log(" jsonObj = ", jsonObj);
|
||||||
|
|
||||||
|
setGetall_Qry_Formation_Session_api("true");
|
||||||
|
setGetall_Qry_Formation_Session_result(res.data.message );
|
||||||
|
|
||||||
|
console.log(" Getall_Qry_Formation_Session_result_JSON = ", Getall_Qry_Formation_Session_result_JSON);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setGetall_Qry_Formation_Session_api("false");
|
||||||
|
setGetall_Qry_Formation_Session_message(res.data.message);
|
||||||
|
alert(res.data.message)
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.warn('Not good man :( Getall_Qry_Formation_Session = ', error);
|
||||||
|
setGetall_Qry_Formation_Session_api("false");
|
||||||
|
alert("Impossible de récuperer les données demandées")
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
|
||||||
|
|
||||||
|
Getall_Qry_Formation_Session();
|
||||||
|
|
||||||
|
window.scrollTo({
|
||||||
|
top: 0,
|
||||||
|
behavior: "smooth",
|
||||||
|
});
|
||||||
|
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
const [Add_To_User_TBD_api, setAdd_To_User_TBD_api] = useState();
|
||||||
|
const [Add_To_User_TBD_message, setAdd_To_User_TBD_message] = useState();
|
||||||
|
const [Add_To_User_TBD_result, setAdd_To_User_TBD_result] = useState();
|
||||||
|
function Add_To_User_TBD(local_dashbord_internal_code) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
//console.log(" ### dashbord_internal_code = ", local_dashbord_internal_code);
|
||||||
|
|
||||||
|
var tdb_title = "default";
|
||||||
|
var filter_val = "";
|
||||||
|
|
||||||
|
|
||||||
|
if (document.getElementsByName("tdb_title")[0]) {
|
||||||
|
tdb_title = document.getElementsByName("tdb_title")[0].value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.getElementsByName("filtre11")[0]) {
|
||||||
|
filter_val = document.getElementsByName("filtre11")[0].value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si filter_val = "d", alors on va recuperer l'interval de date
|
||||||
|
if (String(filter_val) === "d") {
|
||||||
|
var date_from = p_filter_date_from;
|
||||||
|
var date_to = p_filter_date_to;
|
||||||
|
|
||||||
|
|
||||||
|
filter_val = "{'session_start_date':'" + String(date_from) + "' , 'session_end_date':'" + String(date_to) + "'}";
|
||||||
|
} else {
|
||||||
|
filter_val = "{'periode':'" + String(filter_val) + "'}"
|
||||||
|
}
|
||||||
|
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("dashbord_internal_code", local_dashbord_internal_code);
|
||||||
|
form.append("default_filter", filter_val);
|
||||||
|
form.append("title", tdb_title);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_To_User_Dashbord/";
|
||||||
|
|
||||||
|
//console.log(" ## myurl = ", myurl);
|
||||||
|
|
||||||
|
setLoading(true);
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
setLoading(false);
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
//console.log(" In Add_To_User_TBD res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Add_To_User_TBD res.data.message r_class = " + res.data.message);
|
||||||
|
|
||||||
|
setAdd_To_User_TBD_api("true");
|
||||||
|
setAdd_To_User_TBD_result(res.data.message);
|
||||||
|
settdb_title();
|
||||||
|
alert(res.data.message)
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setAdd_To_User_TBD_api("false");
|
||||||
|
setAdd_To_User_TBD_message(res.data.message);
|
||||||
|
alert(res.data.message)
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.warn('Not good man :( Add_To_User_TBD = ', error);
|
||||||
|
setAdd_To_User_TBD_api("false");
|
||||||
|
alert("Impossible d'ajouter le tableau de bord");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const [filter_value, setfilter_value] = useState("d");
|
||||||
|
const [tdb_title, settdb_title] = useState();
|
||||||
|
|
||||||
|
const [display_nb_column, setdisplay_nb_column] = useState("2");
|
||||||
|
const [display_column_size, setdisplay_column_size] = useState("50%");
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="dashbord_formation">
|
||||||
|
{isLoading && <div className="loader-container">
|
||||||
|
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
<h3> Tableaux de bord des formations</h3>
|
||||||
|
<div className="div_row"> </div>
|
||||||
|
<div className="div_row" style={{ "textAlign": "right", "paddingRight": "20px" }}> Affichage
|
||||||
|
<Tooltip id="my_tooltip_1_col" style={{ "fontSize": "12px" }} />
|
||||||
|
<a data-tooltip-id="my_tooltip_1_col" data-tooltip-content="Affichage sur une colonne">
|
||||||
|
<TbColumns1 style={{ "cursor": "pointer" }} onClick={(e) => {
|
||||||
|
setdisplay_nb_column("1");
|
||||||
|
setdisplay_column_size("100%");
|
||||||
|
|
||||||
|
}} />
|
||||||
|
</a>
|
||||||
|
<Tooltip id="my_tooltip_2_col" style={{ "fontSize": "12px" }} />
|
||||||
|
<a data-tooltip-id="my_tooltip_2_col" data-tooltip-content="Affichage sur deux colonnes">
|
||||||
|
<TbColumns2 style={{ "cursor": "pointer" }} onClick={(e) => {
|
||||||
|
setdisplay_nb_column("2");
|
||||||
|
setdisplay_column_size("50%");
|
||||||
|
|
||||||
|
}} />
|
||||||
|
</a> </div>
|
||||||
|
|
||||||
|
<div className="div_row">
|
||||||
|
<div className="" style={{ "width": "30%" }}>
|
||||||
|
Filtre <br />
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
required
|
||||||
|
name="filtre11"
|
||||||
|
id="filtre11"
|
||||||
|
select
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
disabled={false}
|
||||||
|
className="disabled_style"
|
||||||
|
value={filter_value}
|
||||||
|
onChange={(e) => {
|
||||||
|
setfilter_value(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
>
|
||||||
|
<MenuItem value="m0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Mois en cours </MenuItem>
|
||||||
|
<MenuItem value="m1" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Mois précédant </MenuItem>
|
||||||
|
<MenuItem value="d" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Choisir des dates </MenuItem>
|
||||||
|
</TextField>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{filter_value && String(filter_value) === "d" && <div>
|
||||||
|
<div className="session_caract">
|
||||||
|
Date Debut
|
||||||
|
<DatePicker
|
||||||
|
name="one_sessiondatedebut"
|
||||||
|
id="one_sessiondatedebut"
|
||||||
|
|
||||||
|
selected={new Date(moment(p_filter_date_from, "dd/MM/yyyy"))}
|
||||||
|
onChange={(date) => {
|
||||||
|
setp_filter_date_from(format(date, 'dd/MM/yyyy'));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showTimeSelect={false}
|
||||||
|
dateFormat="dd/MM/yyyy"
|
||||||
|
className="disabled_style session_caract_Dialog_DatePicker"
|
||||||
|
locale='fr-FR'
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="session_caract">
|
||||||
|
Date Fin
|
||||||
|
<DatePicker
|
||||||
|
name="one_sessiondatefin"
|
||||||
|
id="one_sessiondatefin"
|
||||||
|
selected={new Date(moment(p_filter_date_to, "dd/MM/yyyy"))}
|
||||||
|
onChange={(date) => {
|
||||||
|
setp_filter_date_to(format(date, 'dd/MM/yyyy'));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showTimeSelect={false}
|
||||||
|
dateFormat="dd/MM/yyyy"
|
||||||
|
className="disabled_style enable_style"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
<Button variant="contained" className="bton_enreg" onClick={(e) => {
|
||||||
|
Getall_Qry_Formation_Session();
|
||||||
|
}}> Afficher
|
||||||
|
</Button><br />
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div style={{ "float": "left", "width": "100%", "paddingRight": "5px" }}>
|
||||||
|
<div style={{ "float": "left", "width": String(display_column_size), "height": "42rem", "float": "left", "paddingRight": "5px" }} >
|
||||||
|
|
||||||
|
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
||||||
|
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Formation : Evolution session par formation </nav>
|
||||||
|
<Tooltip id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
||||||
|
<a data-tooltip-id="my-tooltip01" data-tooltip-content="Ajouter à ma liste de TBD">
|
||||||
|
|
||||||
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
|
<MdOutlineAddchart style={{ "cursor": "pointer", }} onClick={(e) => settdb_title("1")} />
|
||||||
|
</nav>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{tdb_title && String(tdb_title) === "1" && <nav> Donnez un titre <TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
required
|
||||||
|
name="tdb_title"
|
||||||
|
id="tdb_title"
|
||||||
|
text
|
||||||
|
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
disabled={false}
|
||||||
|
className="disabled_style"
|
||||||
|
|
||||||
|
|
||||||
|
/>
|
||||||
|
<nav style={{ "textAlign": "center" }}> <button onClick={(event) => {
|
||||||
|
setdashbord_internal_code("CODE_FORMATION_01")
|
||||||
|
Add_To_User_TBD("tbd_code_formation_01");
|
||||||
|
|
||||||
|
}}> Ajouter </button> <button onClick={(e) => settdb_title("0")}> Fermer </button>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</nav>}
|
||||||
|
<Box style={{ "color": "black", "height": "30rem" }}>
|
||||||
|
|
||||||
|
<ResponsiveLine
|
||||||
|
data={Getall_Qry_Formation_Session_result_JSON}
|
||||||
|
margin={{ top: 50, right: 110, bottom: 50, left: 60 }}
|
||||||
|
xScale={{ type: 'point' }}
|
||||||
|
yScale={{
|
||||||
|
type: 'linear',
|
||||||
|
min: 'auto',
|
||||||
|
max: 'auto',
|
||||||
|
stacked: true,
|
||||||
|
reverse: false
|
||||||
|
}}
|
||||||
|
yFormat=" >-.2f"
|
||||||
|
axisTop={null}
|
||||||
|
axisRight={null}
|
||||||
|
axisBottom={{
|
||||||
|
tickSize: 5,
|
||||||
|
tickPadding: 5,
|
||||||
|
tickRotation: 0,
|
||||||
|
legend: 'transportation',
|
||||||
|
legendOffset: 36,
|
||||||
|
legendPosition: 'middle'
|
||||||
|
}}
|
||||||
|
axisLeft={{
|
||||||
|
tickSize: 5,
|
||||||
|
tickPadding: 5,
|
||||||
|
tickRotation: 0,
|
||||||
|
legend: 'count',
|
||||||
|
legendOffset: -40,
|
||||||
|
legendPosition: 'middle'
|
||||||
|
}}
|
||||||
|
pointSize={10}
|
||||||
|
pointColor={{ theme: 'background' }}
|
||||||
|
pointBorderWidth={2}
|
||||||
|
pointBorderColor={{ from: 'serieColor' }}
|
||||||
|
pointLabelYOffset={-12}
|
||||||
|
useMesh={true}
|
||||||
|
legends={[
|
||||||
|
{
|
||||||
|
anchor: 'bottom-right',
|
||||||
|
direction: 'column',
|
||||||
|
justify: false,
|
||||||
|
translateX: 100,
|
||||||
|
translateY: 0,
|
||||||
|
itemsSpacing: 0,
|
||||||
|
itemDirection: 'left-to-right',
|
||||||
|
itemWidth: 80,
|
||||||
|
itemHeight: 20,
|
||||||
|
itemOpacity: 0.75,
|
||||||
|
symbolSize: 12,
|
||||||
|
symbolShape: 'circle',
|
||||||
|
symbolBorderColor: 'rgba(0, 0, 0, .5)',
|
||||||
|
effects: [
|
||||||
|
{
|
||||||
|
on: 'hover',
|
||||||
|
style: {
|
||||||
|
itemBackground: 'rgba(0, 0, 0, .03)',
|
||||||
|
itemOpacity: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default Dashbord_Formation;
|
|
@ -0,0 +1,444 @@
|
||||||
|
import React, { useRef, useState, useEffect } from "react";
|
||||||
|
|
||||||
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
|
|
||||||
|
import axios from "axios";
|
||||||
|
import { getCookie, setCookie } from 'react-use-cookie';
|
||||||
|
import { useHistory } from "react-router-dom";
|
||||||
|
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
||||||
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
|
import { Tooltip } from 'react-tooltip'
|
||||||
|
import fileDownload from 'js-file-download'
|
||||||
|
import Popup from 'reactjs-popup';
|
||||||
|
import 'reactjs-popup/dist/index.css';
|
||||||
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
|
import Box from '@mui/material/Box';
|
||||||
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
|
|
||||||
|
|
||||||
|
import { tokens } from "../theme";
|
||||||
|
import { MdDeleteForever } from "react-icons/md";
|
||||||
|
|
||||||
|
|
||||||
|
import {
|
||||||
|
useTheme,
|
||||||
|
} from "@mui/material";
|
||||||
|
|
||||||
|
import { ResponsiveLine } from '@nivo/line'
|
||||||
|
|
||||||
|
import { RiFileExcel2Line } from "react-icons/ri";
|
||||||
|
|
||||||
|
const Dashbord_Formation_Evol_Session = (props) => {
|
||||||
|
|
||||||
|
const [user_dashbord_id, setuser_dashbord_id] = useState(props.user_dashbord_id);
|
||||||
|
|
||||||
|
|
||||||
|
const history = useHistory();
|
||||||
|
const [isLoading, setLoading] = useState();
|
||||||
|
|
||||||
|
const theme = useTheme();
|
||||||
|
const colors = tokens(theme.palette.mode);
|
||||||
|
|
||||||
|
const [isMySyDashboard, setisMySyDashboard] = useState(false);
|
||||||
|
|
||||||
|
var date_today_90j = new Date();
|
||||||
|
date_today_90j.setDate(date_today_90j.getDate() - 90);
|
||||||
|
|
||||||
|
|
||||||
|
const [p_filter_date_from, setp_filter_date_from] = useState(date_today_90j.toLocaleDateString('fr-FR'));
|
||||||
|
const [p_filter_date_to, setp_filter_date_to] = useState(new Date().toLocaleDateString('fr-FR'));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const [Remove_From_User_TBD_api, setRemove_From_User_TBD_api] = useState();
|
||||||
|
const [Remove_From_User_TBD_message, setRemove_From_User_TBD_message] = useState();
|
||||||
|
const [Remove_From_User_TBD_result, setRemove_From_User_TBD_result] = useState();
|
||||||
|
function Remove_From_User_TBD() {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("user_dashbord_id", user_dashbord_id);
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_To_User_Dashbord/";
|
||||||
|
|
||||||
|
//console.log(" ## myurl = ", myurl);
|
||||||
|
|
||||||
|
setLoading(true);
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
setLoading(false);
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
//console.log(" In Remove_From_User_TBD res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Remove_From_User_TBD res.data.message r_class = " + res.data.message);
|
||||||
|
|
||||||
|
setRemove_From_User_TBD_api("true");
|
||||||
|
setRemove_From_User_TBD_result(res.data.message);
|
||||||
|
Getall_Qry_Formation_Session();
|
||||||
|
alert(res.data.message);
|
||||||
|
window.location.reload();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setRemove_From_User_TBD_api("false");
|
||||||
|
setRemove_From_User_TBD_message(res.data.message);
|
||||||
|
alert(res.data.message)
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.warn('Not good man :( Remove_From_User_TBD = ', error);
|
||||||
|
setRemove_From_User_TBD_api("false");
|
||||||
|
alert("Impossible de supprimer le tableau de bord de votre liste");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const [Getall_Qry_Formation_Session_result_JSON, setGetall_Qry_Formation_Session_result_JSON] = useState([]);
|
||||||
|
const [Getall_Qry_Formation_Session_api, setGetall_Qry_Formation_Session_api] = useState();
|
||||||
|
const [Getall_Qry_Formation_Session_message, setGetall_Qry_Formation_Session_message] = useState();
|
||||||
|
const [Getall_Qry_Formation_Session_result, setGetall_Qry_Formation_Session_result] = useState([]);
|
||||||
|
function Getall_Qry_Formation_Session(event) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
var date_from = "";
|
||||||
|
if (p_filter_date_from) {
|
||||||
|
date_from = p_filter_date_from;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var date_to = "";
|
||||||
|
if (p_filter_date_to) {
|
||||||
|
date_to = p_filter_date_to;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("session_start_date", date_from);
|
||||||
|
form.append("session_end_date", date_to);
|
||||||
|
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_Formation_By_Session_By_Periode/";
|
||||||
|
|
||||||
|
|
||||||
|
setLoading(true);
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
setLoading(false);
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
console.log(" In Getall_Qry_Formation_Session res.data.status = " + res.data.status);
|
||||||
|
console.log(" In Getall_Qry_Formation_Session res.data.message r_class = " + res.data.message);
|
||||||
|
setGetall_Qry_Formation_Session_result_JSON(JSON.parse( res.data.message ));
|
||||||
|
|
||||||
|
var jsonObj = JSON.parse( res.data.message );
|
||||||
|
|
||||||
|
console.log(" jsonObj = ", jsonObj);
|
||||||
|
|
||||||
|
setGetall_Qry_Formation_Session_api("true");
|
||||||
|
setGetall_Qry_Formation_Session_result(res.data.message );
|
||||||
|
|
||||||
|
console.log(" Getall_Qry_Formation_Session_result_JSON = ", Getall_Qry_Formation_Session_result_JSON);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setGetall_Qry_Formation_Session_api("false");
|
||||||
|
setGetall_Qry_Formation_Session_message(res.data.message);
|
||||||
|
alert(res.data.message)
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.warn('Not good man :( Getall_Qry_Formation_Session = ', error);
|
||||||
|
setGetall_Qry_Formation_Session_api("false");
|
||||||
|
alert("Impossible de récuperer les données demandées")
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const [dashbord_internal_code, setdashbord_internal_code] = useState("");
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
|
||||||
|
setp_filter_date_from(props.user_dashbord_filter_start);
|
||||||
|
setp_filter_date_to(props.user_dashbord_filter_end);
|
||||||
|
|
||||||
|
|
||||||
|
Getall_Qry_Formation_Session();
|
||||||
|
|
||||||
|
window.scrollTo({
|
||||||
|
top: 0,
|
||||||
|
behavior: "smooth",
|
||||||
|
});
|
||||||
|
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
|
const [filter_value, setfilter_value] = useState("");
|
||||||
|
const [tdb_title, settdb_title] = useState();
|
||||||
|
|
||||||
|
function Export_Dashbord_to_CSV(local_dashbord_internal_id) {
|
||||||
|
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
var nom_fichier_cmd = "export_csv.csv";
|
||||||
|
console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- local_dashbord_internal_id = ", local_dashbord_internal_id);
|
||||||
|
|
||||||
|
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_Formation_By_Session_By_Periode_Export_CSV/" + stored_cookie + "/" + local_dashbord_internal_id;
|
||||||
|
|
||||||
|
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
|
||||||
|
setLoading(true);
|
||||||
|
axios.get(url, { responseType: 'blob', },)
|
||||||
|
.then((res) => {
|
||||||
|
setLoading(false);
|
||||||
|
//console.log(" In Export_Dashbord_to_CSV res.data = " + res.data);
|
||||||
|
if (String(res.data) === String("false")) {
|
||||||
|
alert("Impossible d'exporter les données (2) ");
|
||||||
|
} else {
|
||||||
|
fileDownload(res.data, nom_fichier_cmd)
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.error('Error:', error);
|
||||||
|
alert(" Impossible d'exporter les données ")
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="dashbord_session" style={{ "marginLeft": "1px", "marginRight": "2px" }}>
|
||||||
|
{isLoading && <div className="loader-container">
|
||||||
|
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
{/* <div className="div_row">
|
||||||
|
<div className="" style={{ "width": "30%" }}>
|
||||||
|
Filtre <br />
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
required
|
||||||
|
name="filtre11"
|
||||||
|
id="filtre11"
|
||||||
|
select
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
disabled={false}
|
||||||
|
className="disabled_style"
|
||||||
|
value={filter_value}
|
||||||
|
onChange={(e) => {
|
||||||
|
setfilter_value(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
>
|
||||||
|
<MenuItem value="m0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Mois en cours </MenuItem>
|
||||||
|
<MenuItem value="t0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Trimestre en cours </MenuItem>
|
||||||
|
<MenuItem value="d" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Choisir des dates </MenuItem>
|
||||||
|
</TextField>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{filter_value && String(filter_value) === "d" && <div>
|
||||||
|
<div className="session_caract">
|
||||||
|
Date Debut
|
||||||
|
<DatePicker
|
||||||
|
name="one_sessiondatedebut"
|
||||||
|
id="one_sessiondatedebut"
|
||||||
|
|
||||||
|
selected={new Date(moment(p_filter_date_from, "dd/MM/yyyy"))}
|
||||||
|
onChange={(date) => {
|
||||||
|
setp_filter_date_from(format(date, 'dd/MM/yyyy'));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showTimeSelect={false}
|
||||||
|
dateFormat="dd/MM/yyyy"
|
||||||
|
className="disabled_style session_caract_Dialog_DatePicker"
|
||||||
|
locale='fr-FR'
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="session_caract">
|
||||||
|
Date Fin
|
||||||
|
<DatePicker
|
||||||
|
name="one_sessiondatefin"
|
||||||
|
id="one_sessiondatefin"
|
||||||
|
selected={new Date(moment(p_filter_date_to, "dd/MM/yyyy"))}
|
||||||
|
onChange={(date) => {
|
||||||
|
setp_filter_date_to(format(date, 'dd/MM/yyyy'));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showTimeSelect={false}
|
||||||
|
dateFormat="dd/MM/yyyy"
|
||||||
|
className="disabled_style enable_style"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
<Button variant="contained" className="bton_enreg" onClick={(e) => {
|
||||||
|
Getall_Qry_Session_Data();
|
||||||
|
Getall_Qry_Session_Data_By_Trainer();
|
||||||
|
}}> Afficher
|
||||||
|
</Button><br />
|
||||||
|
|
||||||
|
|
||||||
|
</div>*/}
|
||||||
|
|
||||||
|
<div style={{ "height": "40rem" }}>
|
||||||
|
|
||||||
|
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
||||||
|
<nav style={{ "width": "80%", "float": "left", "textAlign": "center" }}> TBD : {props.user_dashbord_title} - Du : {props.user_dashbord_filter_start} au : {props.user_dashbord_filter_end}</nav>
|
||||||
|
<Tooltip id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
||||||
|
<a data-tooltip-id="my-tooltip02" data-tooltip-content="Supprimer de ma liste de TBD">
|
||||||
|
<Popup
|
||||||
|
trigger={
|
||||||
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
|
<MdDeleteForever style={{ "cursor": "pointer", }} />
|
||||||
|
</nav>
|
||||||
|
}
|
||||||
|
modal
|
||||||
|
nested
|
||||||
|
position="center center"
|
||||||
|
>
|
||||||
|
{close => (
|
||||||
|
<div>
|
||||||
|
<button className="gest_close" onClick={close}>
|
||||||
|
×
|
||||||
|
</button>
|
||||||
|
<div className="gest_header"> MySy Information </div>
|
||||||
|
<div className="gest_content">
|
||||||
|
{' '}
|
||||||
|
|
||||||
|
En confirmant cette opération, le tableau sera supprimé de votre tableau de bord global.<br />
|
||||||
|
Vous pourrez le rajouter à nouveau si besoin. <br />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div className="gest_actions">
|
||||||
|
<div style={{ "width": "45%", "float": "left" }}>
|
||||||
|
<button className="gest_bton_popup" onClick={(event) => {
|
||||||
|
Remove_From_User_TBD();
|
||||||
|
//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>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<Tooltip id="my-tooltip03" style={{ "fontSize": "12px" }} />
|
||||||
|
<a data-tooltip-id="my-tooltip03" data-tooltip-content="Export Csv/Excel">
|
||||||
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
|
<RiFileExcel2Line style={{ "cursor": "pointer", }} onClick={(event) => {
|
||||||
|
Export_Dashbord_to_CSV(props.user_dashbord_id);
|
||||||
|
|
||||||
|
}} />
|
||||||
|
</nav>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Box style={{ "color": "black", "height": "30rem" }}>
|
||||||
|
|
||||||
|
<ResponsiveLine
|
||||||
|
data={Getall_Qry_Formation_Session_result_JSON}
|
||||||
|
margin={{ top: 50, right: 110, bottom: 50, left: 60 }}
|
||||||
|
xScale={{ type: 'point' }}
|
||||||
|
yScale={{
|
||||||
|
type: 'linear',
|
||||||
|
min: 'auto',
|
||||||
|
max: 'auto',
|
||||||
|
stacked: true,
|
||||||
|
reverse: false
|
||||||
|
}}
|
||||||
|
yFormat=" >-.2f"
|
||||||
|
axisTop={null}
|
||||||
|
axisRight={null}
|
||||||
|
axisBottom={{
|
||||||
|
tickSize: 5,
|
||||||
|
tickPadding: 5,
|
||||||
|
tickRotation: 0,
|
||||||
|
legend: 'transportation',
|
||||||
|
legendOffset: 36,
|
||||||
|
legendPosition: 'middle'
|
||||||
|
}}
|
||||||
|
axisLeft={{
|
||||||
|
tickSize: 5,
|
||||||
|
tickPadding: 5,
|
||||||
|
tickRotation: 0,
|
||||||
|
legend: 'count',
|
||||||
|
legendOffset: -40,
|
||||||
|
legendPosition: 'middle'
|
||||||
|
}}
|
||||||
|
pointSize={10}
|
||||||
|
pointColor={{ theme: 'background' }}
|
||||||
|
pointBorderWidth={2}
|
||||||
|
pointBorderColor={{ from: 'serieColor' }}
|
||||||
|
pointLabelYOffset={-12}
|
||||||
|
useMesh={true}
|
||||||
|
legends={[
|
||||||
|
{
|
||||||
|
anchor: 'bottom-right',
|
||||||
|
direction: 'column',
|
||||||
|
justify: false,
|
||||||
|
translateX: 100,
|
||||||
|
translateY: 0,
|
||||||
|
itemsSpacing: 0,
|
||||||
|
itemDirection: 'left-to-right',
|
||||||
|
itemWidth: 80,
|
||||||
|
itemHeight: 20,
|
||||||
|
itemOpacity: 0.75,
|
||||||
|
symbolSize: 12,
|
||||||
|
symbolShape: 'circle',
|
||||||
|
symbolBorderColor: 'rgba(0, 0, 0, .5)',
|
||||||
|
effects: [
|
||||||
|
{
|
||||||
|
on: 'hover',
|
||||||
|
style: {
|
||||||
|
itemBackground: 'rgba(0, 0, 0, .03)',
|
||||||
|
itemOpacity: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</Box>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default Dashbord_Formation_Evol_Session;
|
|
@ -6,59 +6,20 @@ import Button from '@mui/material/Button';
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
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 CheckOut from "./CheckOut";
|
|
||||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
|
||||||
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
||||||
import { Editor } from '@tinymce/tinymce-react';
|
|
||||||
import parse from 'html-react-parser';
|
|
||||||
import { FcViewDetails, FcDisapprove } from "react-icons/fc";
|
|
||||||
import 'react-tooltip/dist/react-tooltip.css'
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
import { Tooltip } from 'react-tooltip'
|
import { Tooltip } from 'react-tooltip'
|
||||||
import add_plus from "../mysy_img/plus.png";
|
|
||||||
import excel_icone from "../mysy_img/excel_icone.png";
|
|
||||||
import participants from "../mysy_img/participants.png";
|
|
||||||
import fileDownload from 'js-file-download'
|
|
||||||
import Popup from 'reactjs-popup';
|
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
|
||||||
import DatePicker from "react-datepicker";
|
import DatePicker from "react-datepicker";
|
||||||
import "react-datepicker/dist/react-datepicker.css";
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
import { format } from 'date-fns'
|
import { format } from 'date-fns'
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import InputAdornment from '@mui/material/InputAdornment';
|
|
||||||
import { AiFillCloseCircle } from "react-icons/ai";
|
|
||||||
import Box from '@mui/material/Box';
|
import Box from '@mui/material/Box';
|
||||||
import { Typography, LinearProgress, sliderClasses } from '@mui/material';
|
|
||||||
import styled from 'styled-components';
|
|
||||||
import { CiTrash } from "react-icons/ci";
|
|
||||||
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
|
|
||||||
import Dialog from '@mui/material/Dialog';
|
|
||||||
import DialogActions from '@mui/material/DialogActions';
|
|
||||||
import DialogContent from '@mui/material/DialogContent';
|
|
||||||
import DialogContentText from '@mui/material/DialogContentText';
|
|
||||||
import DialogTitle from '@mui/material/DialogTitle';
|
|
||||||
import { TransitionProps } from '@mui/material/transitions';
|
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
//import FullCalendar from "@fullcalendar/react";
|
|
||||||
import daygridPlugin from "@fullcalendar/daygrid";
|
|
||||||
//import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
//import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
import allLocales from '@fullcalendar/core/locales-all'
|
|
||||||
import { RepeatOnRounded } from "@mui/icons-material";
|
|
||||||
import { alignPropType } from "react-bootstrap/esm/types";
|
|
||||||
|
|
||||||
import { tokens } from "./../theme";
|
import { tokens } from "./../theme";
|
||||||
import { MdOutlineAddchart, MdAssignmentAdd, MdOutlinePlaylistRemove, MdDeleteForever } from "react-icons/md";
|
import { MdOutlineAddchart,} from "react-icons/md";
|
||||||
|
|
||||||
import FullCalendar, { formatDate } from "@fullcalendar/react";
|
|
||||||
import dayGridPlugin from "@fullcalendar/daygrid";
|
|
||||||
import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ListItem,
|
|
||||||
ListItemText,
|
|
||||||
useTheme,
|
useTheme,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
|
|
||||||
|
@ -69,10 +30,6 @@ import { TbColumns2, TbColumns1 } from "react-icons/tb";
|
||||||
|
|
||||||
const Dashbord_Session = (props) => {
|
const Dashbord_Session = (props) => {
|
||||||
|
|
||||||
const myconntected_employee_id = props.conntected_employee_id;
|
|
||||||
|
|
||||||
const [selected_employee_id, setselected_employee_id] = useState(props.conntected_employee_id);
|
|
||||||
|
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const [isLoading, setLoading] = useState();
|
const [isLoading, setLoading] = useState();
|
||||||
|
|
||||||
|
@ -187,6 +144,7 @@ const Dashbord_Session = (props) => {
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("session_start_date", date_from);
|
form.append("session_start_date", date_from);
|
||||||
form.append("session_end_date", date_to);
|
form.append("session_end_date", date_to);
|
||||||
|
form.append("filter_value", filter_value);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -247,6 +205,7 @@ const Dashbord_Session = (props) => {
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("session_start_date", date_from);
|
form.append("session_start_date", date_from);
|
||||||
form.append("session_end_date", date_to);
|
form.append("session_end_date", date_to);
|
||||||
|
form.append("filter_value", filter_value);
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_Session_By_Trainer_By_Periode/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_Session_By_Trainer_By_Periode/";
|
||||||
|
|
||||||
|
@ -309,7 +268,7 @@ const Dashbord_Session = (props) => {
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("session_start_date", date_from);
|
form.append("session_start_date", date_from);
|
||||||
form.append("session_end_date", date_to);
|
form.append("session_end_date", date_to);
|
||||||
|
form.append("filter_value", filter_value);
|
||||||
|
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_Session_Repartition_Session_By_Trainer_By_Periode/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_Session_Repartition_Session_By_Trainer_By_Periode/";
|
||||||
|
@ -326,7 +285,7 @@ const Dashbord_Session = (props) => {
|
||||||
setGetall_Qry_Session_Data_Pourcent_Trainer_api("true");
|
setGetall_Qry_Session_Data_Pourcent_Trainer_api("true");
|
||||||
setGetall_Qry_Session_Data_Pourcent_Trainer_result(res.data.message);
|
setGetall_Qry_Session_Data_Pourcent_Trainer_result(res.data.message);
|
||||||
|
|
||||||
// console.log("### setGetall_Qry_Session_Data_Pourcent_Trainer_result_JSON = ", Getall_Qry_Session_Data_Pourcent_Trainer_result_JSON);
|
//console.log("### setGetall_Qry_Session_Data_Pourcent_Trainer_result_JSON = ", Getall_Qry_Session_Data_Pourcent_Trainer_result_JSON);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -361,7 +320,7 @@ const Dashbord_Session = (props) => {
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
const [filter_value, setfilter_value] = useState("m0");
|
const [filter_value, setfilter_value] = useState("d");
|
||||||
const [tdb_title, settdb_title] = useState();
|
const [tdb_title, settdb_title] = useState();
|
||||||
|
|
||||||
const [display_nb_column, setdisplay_nb_column] = useState("2");
|
const [display_nb_column, setdisplay_nb_column] = useState("2");
|
||||||
|
@ -381,7 +340,7 @@ const Dashbord_Session = (props) => {
|
||||||
<TbColumns1 style={{ "cursor": "pointer" }} onClick={(e) => {
|
<TbColumns1 style={{ "cursor": "pointer" }} onClick={(e) => {
|
||||||
setdisplay_nb_column("1");
|
setdisplay_nb_column("1");
|
||||||
setdisplay_column_size("100%");
|
setdisplay_column_size("100%");
|
||||||
console.log(" display_column_size = ", display_column_size);
|
|
||||||
}} />
|
}} />
|
||||||
</a>
|
</a>
|
||||||
<Tooltip id="my_tooltip_2_col" style={{ "fontSize": "12px" }} />
|
<Tooltip id="my_tooltip_2_col" style={{ "fontSize": "12px" }} />
|
||||||
|
@ -389,7 +348,7 @@ const Dashbord_Session = (props) => {
|
||||||
<TbColumns2 style={{ "cursor": "pointer" }} onClick={(e) => {
|
<TbColumns2 style={{ "cursor": "pointer" }} onClick={(e) => {
|
||||||
setdisplay_nb_column("2");
|
setdisplay_nb_column("2");
|
||||||
setdisplay_column_size("50%");
|
setdisplay_column_size("50%");
|
||||||
console.log(" display_column_size = ", display_column_size);
|
|
||||||
}} />
|
}} />
|
||||||
</a> </div>
|
</a> </div>
|
||||||
|
|
||||||
|
@ -415,7 +374,7 @@ const Dashbord_Session = (props) => {
|
||||||
|
|
||||||
>
|
>
|
||||||
<MenuItem value="m0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Mois en cours </MenuItem>
|
<MenuItem value="m0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Mois en cours </MenuItem>
|
||||||
<MenuItem value="t0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Trimestre en cours </MenuItem>
|
<MenuItem value="m1" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Mois précédant </MenuItem>
|
||||||
<MenuItem value="d" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Choisir des dates </MenuItem>
|
<MenuItem value="d" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Choisir des dates </MenuItem>
|
||||||
</TextField>
|
</TextField>
|
||||||
</div>
|
</div>
|
||||||
|
@ -464,71 +423,52 @@ const Dashbord_Session = (props) => {
|
||||||
<Button variant="contained" className="bton_enreg" onClick={(e) => {
|
<Button variant="contained" className="bton_enreg" onClick={(e) => {
|
||||||
Getall_Qry_Session_Data();
|
Getall_Qry_Session_Data();
|
||||||
Getall_Qry_Session_Data_By_Trainer();
|
Getall_Qry_Session_Data_By_Trainer();
|
||||||
|
Getall_Qry_Session_Data_Pourcent_Trainer();
|
||||||
}}> Afficher
|
}}> Afficher
|
||||||
</Button><br />
|
</Button><br />
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div style={{ "float": "left", "width": "100%" , "paddingRight":"5px" }}>
|
|
||||||
<div style={{ "float": "left", "width": String(display_column_size),"height":"30rem" , "float":"left", "paddingRight":"5px"}} >
|
|
||||||
|
<div style={{ "float": "left", "width": "100%", "paddingRight": "5px" }}>
|
||||||
|
<div style={{ "float": "left", "width": String(display_column_size), "height": "42rem", "float": "left", "paddingRight": "5px" }} >
|
||||||
|
|
||||||
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
||||||
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Taux de remplissage </nav>
|
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Taux de remplissage </nav>
|
||||||
<Tooltip id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
<Tooltip id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
||||||
<a data-tooltip-id="my-tooltip01" data-tooltip-content="Ajouter à ma liste de TBD">
|
<a data-tooltip-id="my-tooltip01" data-tooltip-content="Ajouter à ma liste de TBD">
|
||||||
|
|
||||||
<Popup
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
trigger={
|
<MdOutlineAddchart style={{ "cursor": "pointer", }} onClick={(e) => settdb_title("1")} />
|
||||||
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
</nav>
|
||||||
<MdOutlineAddchart style={{ "cursor": "pointer", }} />
|
|
||||||
</nav>
|
|
||||||
}
|
|
||||||
modal
|
|
||||||
nested
|
|
||||||
position="center center"
|
|
||||||
>
|
|
||||||
{close => (
|
|
||||||
<div>
|
|
||||||
<button className="gest_close" onClick={close}>
|
|
||||||
×
|
|
||||||
</button>
|
|
||||||
<div className="gest_header"> MySy Information </div>
|
|
||||||
<div className="gest_content">
|
|
||||||
{' '}
|
|
||||||
|
|
||||||
En confirmant cette opération, le tableau sera ajouté de votre tableau de bord global.<br />
|
|
||||||
Vous pourrez le supprimer à nouveau si besoin. <br />
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div className="gest_actions">
|
|
||||||
<div style={{ "width": "45%", "float": "left" }}>
|
|
||||||
<button className="gest_bton_popup" onClick={(event) => {
|
|
||||||
setdashbord_internal_code("CODE_SESSION_01")
|
|
||||||
Add_To_User_TBD("tbd_code_session_01");
|
|
||||||
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>
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
{tdb_title && String(tdb_title) === "1" && <nav> Donnez un titre <TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
required
|
||||||
|
name="tdb_title"
|
||||||
|
id="tdb_title"
|
||||||
|
text
|
||||||
|
|
||||||
<Box height="50vh" style={{ "color": "black" }}>
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
disabled={false}
|
||||||
|
className="disabled_style"
|
||||||
|
|
||||||
|
|
||||||
|
/>
|
||||||
|
<nav style={{ "textAlign": "center" }}> <button onClick={(event) => {
|
||||||
|
setdashbord_internal_code("CODE_SESSION_01")
|
||||||
|
Add_To_User_TBD("tbd_code_session_01");
|
||||||
|
|
||||||
|
}}> Ajouter </button> <button onClick={(e) => settdb_title("0")}> Fermer </button>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</nav>}
|
||||||
|
<Box style={{ "color": "black", "height": "30rem" }}>
|
||||||
|
|
||||||
<ResponsiveBar
|
<ResponsiveBar
|
||||||
data={Getall_Qry_Session_Data_result_JSON}
|
data={Getall_Qry_Session_Data_result_JSON}
|
||||||
|
@ -668,64 +608,41 @@ const Dashbord_Session = (props) => {
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style={{ "float": "left", "width": String(display_column_size),"height":"30rem" , "float":"left", "paddingRight":"5px"}} >
|
<div style={{ "float": "left", "width": String(display_column_size), "height": "42rem", "float": "left", "paddingRight": "5px" }} >
|
||||||
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
||||||
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Nb Session par formateur </nav>
|
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Nb Session par formateur </nav>
|
||||||
<Tooltip id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
<Tooltip id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
||||||
<a data-tooltip-id="my-tooltip01" data-tooltip-content="Ajouter à ma liste de TBD">
|
<a data-tooltip-id="my-tooltip01" data-tooltip-content="Ajouter à ma liste de TBD">
|
||||||
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
<Popup
|
<MdOutlineAddchart style={{ "cursor": "pointer", }} onClick={(e) => settdb_title("2")} />
|
||||||
trigger={
|
</nav>
|
||||||
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
|
||||||
<MdOutlineAddchart style={{ "cursor": "pointer", }} />
|
|
||||||
</nav>
|
|
||||||
}
|
|
||||||
modal
|
|
||||||
nested
|
|
||||||
position="center center"
|
|
||||||
>
|
|
||||||
{close => (
|
|
||||||
<div>
|
|
||||||
<button className="gest_close" onClick={close}>
|
|
||||||
×
|
|
||||||
</button>
|
|
||||||
<div className="gest_header"> MySy Information </div>
|
|
||||||
<div className="gest_content">
|
|
||||||
{' '}
|
|
||||||
|
|
||||||
En confirmant cette opération, le tableau sera ajouté de votre tableau de bord global.<br />
|
|
||||||
Vous pourrez le supprimer à nouveau si besoin. <br />
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div className="gest_actions">
|
|
||||||
<div style={{ "width": "45%", "float": "left" }}>
|
|
||||||
<button className="gest_bton_popup" onClick={(event) => {
|
|
||||||
setdashbord_internal_code("CODE_SESSION_02")
|
|
||||||
Add_To_User_TBD("tbd_code_session_02");
|
|
||||||
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>
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
{tdb_title && String(tdb_title) === "2" && <nav> Donnez un titre <TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
required
|
||||||
|
name="tdb_title"
|
||||||
|
id="tdb_title"
|
||||||
|
text
|
||||||
|
|
||||||
<Box height="50vh" style={{ "color": "black" }}>
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
disabled={false}
|
||||||
|
className="disabled_style"
|
||||||
|
|
||||||
|
|
||||||
|
/>
|
||||||
|
<nav style={{ "textAlign": "center" }}> <button onClick={(event) => {
|
||||||
|
setdashbord_internal_code("CODE_SESSION_02")
|
||||||
|
Add_To_User_TBD("tbd_code_session_02");
|
||||||
|
|
||||||
|
}}> Ajouter </button> <button onClick={(e) => settdb_title("0")}> Fermer </button>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</nav>}
|
||||||
|
|
||||||
|
<Box style={{ "color": "black", "height": "30rem" }}>
|
||||||
|
|
||||||
<ResponsiveBar
|
<ResponsiveBar
|
||||||
data={Getall_Qry_Session_Data_By_Trainer_result_JSON}
|
data={Getall_Qry_Session_Data_By_Trainer_result_JSON}
|
||||||
|
@ -866,67 +783,45 @@ const Dashbord_Session = (props) => {
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style={{ "float": "left", "width": String(display_column_size) ,"height":"30rem", "float":"left", "paddingRight":"5px"}} >
|
<div style={{ "float": "left", "width": String(display_column_size), "height": "42rem", "float": "left", "paddingRight": "5px" }} >
|
||||||
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
||||||
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Repartition par Formateur </nav>
|
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Repartition par Formateur </nav>
|
||||||
<Tooltip id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
<Tooltip id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
||||||
<a data-tooltip-id="my-tooltip01" data-tooltip-content="Ajouter à ma liste de TBD">
|
<a data-tooltip-id="my-tooltip01" data-tooltip-content="Ajouter à ma liste de TBD">
|
||||||
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
<Popup
|
<MdOutlineAddchart style={{ "cursor": "pointer", }} onClick={(e) => settdb_title("3")} />
|
||||||
trigger={
|
</nav>
|
||||||
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
|
||||||
<MdOutlineAddchart style={{ "cursor": "pointer", }} />
|
|
||||||
</nav>
|
|
||||||
}
|
|
||||||
modal
|
|
||||||
nested
|
|
||||||
position="center center"
|
|
||||||
>
|
|
||||||
{close => (
|
|
||||||
<div>
|
|
||||||
<button className="gest_close" onClick={close}>
|
|
||||||
×
|
|
||||||
</button>
|
|
||||||
<div className="gest_header"> MySy Information </div>
|
|
||||||
<div className="gest_content">
|
|
||||||
{' '}
|
|
||||||
|
|
||||||
En confirmant cette opération, le tableau sera ajouté de votre tableau de bord global.<br />
|
|
||||||
Vous pourrez le supprimer à nouveau si besoin. <br />
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div className="gest_actions">
|
|
||||||
<div style={{ "width": "45%", "float": "left" }}>
|
|
||||||
<button className="gest_bton_popup" onClick={(event) => {
|
|
||||||
setdashbord_internal_code("CODE_SESSION_03")
|
|
||||||
Add_To_User_TBD("tbd_code_session_03");
|
|
||||||
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>
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{tdb_title && String(tdb_title) === "3" && <nav> Donnez un titre <TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
required
|
||||||
|
name="tdb_title"
|
||||||
|
id="tdb_title"
|
||||||
|
text
|
||||||
|
|
||||||
<Box height="50vh" style={{ "color": "black" }}>
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
disabled={false}
|
||||||
|
className="disabled_style"
|
||||||
|
|
||||||
|
|
||||||
|
/>
|
||||||
|
<nav style={{ "textAlign": "center" }}> <button onClick={(event) => {
|
||||||
|
setdashbord_internal_code("CODE_SESSION_03")
|
||||||
|
Add_To_User_TBD("tbd_code_session_03");
|
||||||
|
|
||||||
|
}}> Ajouter </button> <button onClick={(e) => settdb_title("0")}> Fermer </button>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</nav>}
|
||||||
|
|
||||||
|
<Box style={{ "color": "black", "height": "30rem" }}>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ResponsivePie
|
<ResponsivePie
|
||||||
data={Getall_Qry_Session_Data_Pourcent_Trainer_result_JSON}
|
data={Getall_Qry_Session_Data_Pourcent_Trainer_result_JSON}
|
||||||
margin={{ top: 40, right: 80, bottom: 80, left: 80 }}
|
margin={{ top: 40, right: 80, bottom: 80, left: 80 }}
|
||||||
|
@ -1069,7 +964,7 @@ const Dashbord_Session = (props) => {
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,71 +1,27 @@
|
||||||
import React, { useRef, useState, useEffect } from "react";
|
import React, { useRef, useState, useEffect } from "react";
|
||||||
import TextField from '@mui/material/TextField';
|
|
||||||
import MenuItem from '@mui/material/MenuItem';
|
|
||||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
import Button from '@mui/material/Button';
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
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 CheckOut from "./CheckOut";
|
|
||||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
|
||||||
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
||||||
import { Editor } from '@tinymce/tinymce-react';
|
|
||||||
import parse from 'html-react-parser';
|
|
||||||
import { FcViewDetails, FcDisapprove } from "react-icons/fc";
|
|
||||||
import 'react-tooltip/dist/react-tooltip.css'
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
import { Tooltip } from 'react-tooltip'
|
import { Tooltip } from 'react-tooltip'
|
||||||
import add_plus from "../mysy_img/plus.png";
|
|
||||||
import excel_icone from "../mysy_img/excel_icone.png";
|
|
||||||
import participants from "../mysy_img/participants.png";
|
|
||||||
import fileDownload from 'js-file-download'
|
import fileDownload from 'js-file-download'
|
||||||
import Popup from 'reactjs-popup';
|
import Popup from 'reactjs-popup';
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
|
||||||
import DatePicker from "react-datepicker";
|
|
||||||
import "react-datepicker/dist/react-datepicker.css";
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
import { format } from 'date-fns'
|
|
||||||
import moment from "moment";
|
|
||||||
import InputAdornment from '@mui/material/InputAdornment';
|
|
||||||
import { AiFillCloseCircle } from "react-icons/ai";
|
|
||||||
import Box from '@mui/material/Box';
|
import Box from '@mui/material/Box';
|
||||||
import { Typography, LinearProgress, sliderClasses } from '@mui/material';
|
|
||||||
import styled from 'styled-components';
|
|
||||||
import { CiTrash } from "react-icons/ci";
|
|
||||||
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
|
|
||||||
import Dialog from '@mui/material/Dialog';
|
|
||||||
import DialogActions from '@mui/material/DialogActions';
|
|
||||||
import DialogContent from '@mui/material/DialogContent';
|
|
||||||
import DialogContentText from '@mui/material/DialogContentText';
|
|
||||||
import DialogTitle from '@mui/material/DialogTitle';
|
|
||||||
import { TransitionProps } from '@mui/material/transitions';
|
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
//import FullCalendar from "@fullcalendar/react";
|
|
||||||
import daygridPlugin from "@fullcalendar/daygrid";
|
|
||||||
//import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
//import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
import allLocales from '@fullcalendar/core/locales-all'
|
|
||||||
import { RepeatOnRounded } from "@mui/icons-material";
|
|
||||||
import { alignPropType } from "react-bootstrap/esm/types";
|
|
||||||
|
|
||||||
import { tokens } from "../theme";
|
import { tokens } from "../theme";
|
||||||
import { MdOutlineAddchart, MdAssignmentAdd, MdOutlinePlaylistRemove, MdDeleteForever } from "react-icons/md";
|
import { MdDeleteForever } from "react-icons/md";
|
||||||
|
|
||||||
import FullCalendar, { formatDate } from "@fullcalendar/react";
|
|
||||||
import dayGridPlugin from "@fullcalendar/daygrid";
|
|
||||||
import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ListItem,
|
|
||||||
ListItemText,
|
|
||||||
useTheme,
|
useTheme,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
|
|
||||||
import { ResponsivePie } from '@nivo/pie'
|
|
||||||
import { ResponsiveBar } from "@nivo/bar";
|
import { ResponsiveBar } from "@nivo/bar";
|
||||||
|
|
||||||
|
import { RiFileExcel2Line } from "react-icons/ri";
|
||||||
|
|
||||||
const Dashbord_Session_Par_Fteur = (props) => {
|
const Dashbord_Session_Par_Fteur = (props) => {
|
||||||
|
|
||||||
|
@ -394,8 +350,12 @@ const Dashbord_Session_Par_Fteur = (props) => {
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
|
setp_filter_date_from(props.user_dashbord_filter_start);
|
||||||
|
setp_filter_date_to(props.user_dashbord_filter_end);
|
||||||
|
|
||||||
Getall_Qry_Session_Data_By_Trainer();
|
Getall_Qry_Session_Data_By_Trainer();
|
||||||
|
|
||||||
|
|
||||||
window.scrollTo({
|
window.scrollTo({
|
||||||
top: 0,
|
top: 0,
|
||||||
behavior: "smooth",
|
behavior: "smooth",
|
||||||
|
@ -404,9 +364,39 @@ const Dashbord_Session_Par_Fteur = (props) => {
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
const [filter_value, setfilter_value] = useState("m0");
|
const [filter_value, setfilter_value] = useState("");
|
||||||
const [tdb_title, settdb_title] = useState();
|
const [tdb_title, settdb_title] = useState();
|
||||||
|
|
||||||
|
function Export_Dashbord_to_CSV(local_dashbord_internal_id) {
|
||||||
|
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
var nom_fichier_cmd = "export_csv.csv";
|
||||||
|
console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- local_dashbord_internal_id = ", local_dashbord_internal_id);
|
||||||
|
|
||||||
|
var url = process.env.REACT_APP_API_URL + "myclass/api/Export_Dashbord_To_Csv/" + stored_cookie + "/" + local_dashbord_internal_id;
|
||||||
|
|
||||||
|
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
|
||||||
|
setLoading(true);
|
||||||
|
axios.get(url, { responseType: 'blob', },)
|
||||||
|
.then((res) => {
|
||||||
|
setLoading(false);
|
||||||
|
//console.log(" In Export_Dashbord_to_CSV res.data = " + res.data);
|
||||||
|
if (String(res.data) === String("false")) {
|
||||||
|
alert("Impossible d'exporter les données (2) ");
|
||||||
|
} else {
|
||||||
|
fileDownload(res.data, nom_fichier_cmd)
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.error('Error:', error);
|
||||||
|
alert(" Impossible d'exporter les données ")
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="dashbord_session" style={{ "marginLeft": "1px", "marginRight": "2px" }}>
|
<div className="dashbord_session" style={{ "marginLeft": "1px", "marginRight": "2px" }}>
|
||||||
{isLoading && <div className="loader-container">
|
{isLoading && <div className="loader-container">
|
||||||
|
@ -493,7 +483,7 @@ const Dashbord_Session_Par_Fteur = (props) => {
|
||||||
<div style={{ "height": "40rem" }}>
|
<div style={{ "height": "40rem" }}>
|
||||||
|
|
||||||
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
||||||
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Nb Session par formateur </nav>
|
<nav style={{ "width": "80%", "float": "left", "textAlign": "center" }}> TBD : {props.user_dashbord_title} - Du : {props.user_dashbord_filter_start} au : {props.user_dashbord_filter_end}</nav>
|
||||||
<Tooltip id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
<Tooltip id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
||||||
<a data-tooltip-id="my-tooltip02" data-tooltip-content="Supprimer de ma liste de TBD">
|
<a data-tooltip-id="my-tooltip02" data-tooltip-content="Supprimer de ma liste de TBD">
|
||||||
<Popup
|
<Popup
|
||||||
|
@ -544,6 +534,17 @@ const Dashbord_Session_Par_Fteur = (props) => {
|
||||||
)}
|
)}
|
||||||
</Popup>
|
</Popup>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<Tooltip id="my-tooltip03" style={{ "fontSize": "12px" }} />
|
||||||
|
<a data-tooltip-id="my-tooltip03" data-tooltip-content="Export Csv/Excel">
|
||||||
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
|
<RiFileExcel2Line style={{ "cursor": "pointer", }} onClick={(event) => {
|
||||||
|
Export_Dashbord_to_CSV(props.user_dashbord_id);
|
||||||
|
|
||||||
|
}} />
|
||||||
|
</nav>
|
||||||
|
</a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Box style={{ "color": "black", "height": "30rem" }}>
|
<Box style={{ "color": "black", "height": "30rem" }}>
|
||||||
|
|
|
@ -1,71 +1,26 @@
|
||||||
import React, { useRef, useState, useEffect } from "react";
|
import React, { useRef, useState, useEffect } from "react";
|
||||||
import TextField from '@mui/material/TextField';
|
|
||||||
import MenuItem from '@mui/material/MenuItem';
|
|
||||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
import Button from '@mui/material/Button';
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
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 CheckOut from "./CheckOut";
|
|
||||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
|
||||||
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
|
||||||
import { Editor } from '@tinymce/tinymce-react';
|
|
||||||
import parse from 'html-react-parser';
|
|
||||||
import { FcViewDetails, FcDisapprove } from "react-icons/fc";
|
|
||||||
import 'react-tooltip/dist/react-tooltip.css'
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
import { Tooltip } from 'react-tooltip'
|
import { Tooltip } from 'react-tooltip'
|
||||||
import add_plus from "../mysy_img/plus.png";
|
|
||||||
import excel_icone from "../mysy_img/excel_icone.png";
|
|
||||||
import participants from "../mysy_img/participants.png";
|
|
||||||
import fileDownload from 'js-file-download'
|
import fileDownload from 'js-file-download'
|
||||||
import Popup from 'reactjs-popup';
|
import Popup from 'reactjs-popup';
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
|
||||||
import DatePicker from "react-datepicker";
|
|
||||||
import "react-datepicker/dist/react-datepicker.css";
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
import { format } from 'date-fns'
|
|
||||||
import moment from "moment";
|
|
||||||
import InputAdornment from '@mui/material/InputAdornment';
|
|
||||||
import { AiFillCloseCircle } from "react-icons/ai";
|
|
||||||
import Box from '@mui/material/Box';
|
import Box from '@mui/material/Box';
|
||||||
import { Typography, LinearProgress, sliderClasses } from '@mui/material';
|
|
||||||
import styled from 'styled-components';
|
|
||||||
import { CiTrash } from "react-icons/ci";
|
|
||||||
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
|
|
||||||
import Dialog from '@mui/material/Dialog';
|
|
||||||
import DialogActions from '@mui/material/DialogActions';
|
|
||||||
import DialogContent from '@mui/material/DialogContent';
|
|
||||||
import DialogContentText from '@mui/material/DialogContentText';
|
|
||||||
import DialogTitle from '@mui/material/DialogTitle';
|
|
||||||
import { TransitionProps } from '@mui/material/transitions';
|
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
//import FullCalendar from "@fullcalendar/react";
|
|
||||||
import daygridPlugin from "@fullcalendar/daygrid";
|
|
||||||
//import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
//import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
import allLocales from '@fullcalendar/core/locales-all'
|
|
||||||
import { RepeatOnRounded } from "@mui/icons-material";
|
|
||||||
import { alignPropType } from "react-bootstrap/esm/types";
|
|
||||||
|
|
||||||
import { tokens } from "../theme";
|
import { tokens } from "../theme";
|
||||||
import { MdOutlineAddchart, MdAssignmentAdd, MdOutlinePlaylistRemove, MdDeleteForever } from "react-icons/md";
|
import { MdDeleteForever } from "react-icons/md";
|
||||||
|
|
||||||
import FullCalendar, { formatDate } from "@fullcalendar/react";
|
|
||||||
import dayGridPlugin from "@fullcalendar/daygrid";
|
|
||||||
import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ListItem,
|
|
||||||
ListItemText,
|
|
||||||
useTheme,
|
useTheme,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
|
|
||||||
import { ResponsivePie } from '@nivo/pie'
|
import { ResponsivePie } from '@nivo/pie'
|
||||||
import { ResponsiveBar } from "@nivo/bar";
|
|
||||||
|
|
||||||
|
|
||||||
|
import { RiFileExcel2Line } from "react-icons/ri";
|
||||||
|
|
||||||
const Dashbord_Session_Repartition_Fteur = (props) => {
|
const Dashbord_Session_Repartition_Fteur = (props) => {
|
||||||
|
|
||||||
|
@ -84,8 +39,8 @@ const Dashbord_Session_Repartition_Fteur = (props) => {
|
||||||
date_today_90j.setDate(date_today_90j.getDate() - 90);
|
date_today_90j.setDate(date_today_90j.getDate() - 90);
|
||||||
|
|
||||||
|
|
||||||
const [p_filter_date_from, setp_filter_date_from] = useState(date_today_90j.toLocaleDateString('fr-FR'));
|
const [p_filter_date_from, setp_filter_date_from] = useState(props.user_dashbord_filter_start);
|
||||||
const [p_filter_date_to, setp_filter_date_to] = useState(new Date().toLocaleDateString('fr-FR'));
|
const [p_filter_date_to, setp_filter_date_to] = useState(props.user_dashbord_filter_end);
|
||||||
|
|
||||||
const [Add_To_User_TBD_api, setAdd_To_User_TBD_api] = useState();
|
const [Add_To_User_TBD_api, setAdd_To_User_TBD_api] = useState();
|
||||||
const [Add_To_User_TBD_message, setAdd_To_User_TBD_message] = useState();
|
const [Add_To_User_TBD_message, setAdd_To_User_TBD_message] = useState();
|
||||||
|
@ -395,9 +350,12 @@ const Dashbord_Session_Repartition_Fteur = (props) => {
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
|
setp_filter_date_from(props.user_dashbord_filter_start);
|
||||||
|
setp_filter_date_to(props.user_dashbord_filter_end);
|
||||||
|
|
||||||
Getall_Qry_Session_Data_Pourcent_Trainer();
|
Getall_Qry_Session_Data_Pourcent_Trainer();
|
||||||
|
|
||||||
|
|
||||||
window.scrollTo({
|
window.scrollTo({
|
||||||
top: 0,
|
top: 0,
|
||||||
behavior: "smooth",
|
behavior: "smooth",
|
||||||
|
@ -406,9 +364,39 @@ const Dashbord_Session_Repartition_Fteur = (props) => {
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
const [filter_value, setfilter_value] = useState("m0");
|
const [filter_value, setfilter_value] = useState("");
|
||||||
const [tdb_title, settdb_title] = useState();
|
const [tdb_title, settdb_title] = useState();
|
||||||
|
|
||||||
|
function Export_Dashbord_to_CSV(local_dashbord_internal_id) {
|
||||||
|
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
var nom_fichier_cmd = "export_csv.csv";
|
||||||
|
console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- local_dashbord_internal_id = ", local_dashbord_internal_id);
|
||||||
|
|
||||||
|
var url = process.env.REACT_APP_API_URL + "myclass/api/Export_Dashbord_To_Csv/" + stored_cookie + "/" + local_dashbord_internal_id;
|
||||||
|
|
||||||
|
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
|
||||||
|
setLoading(true);
|
||||||
|
axios.get(url, { responseType: 'blob', },)
|
||||||
|
.then((res) => {
|
||||||
|
setLoading(false);
|
||||||
|
//console.log(" In Export_Dashbord_to_CSV res.data = " + res.data);
|
||||||
|
if (String(res.data) === String("false")) {
|
||||||
|
alert("Impossible d'exporter les données (2) ");
|
||||||
|
} else {
|
||||||
|
fileDownload(res.data, nom_fichier_cmd)
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.error('Error:', error);
|
||||||
|
alert(" Impossible d'exporter les données ")
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="dashbord_session" style={{ "marginLeft": "1px", "marginRight": "2px" }}>
|
<div className="dashbord_session" style={{ "marginLeft": "1px", "marginRight": "2px" }}>
|
||||||
{isLoading && <div className="loader-container">
|
{isLoading && <div className="loader-container">
|
||||||
|
@ -494,7 +482,7 @@ const Dashbord_Session_Repartition_Fteur = (props) => {
|
||||||
|
|
||||||
<div style={{ "height": "40rem" }}>
|
<div style={{ "height": "40rem" }}>
|
||||||
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
||||||
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Repartition par Formateur </nav>
|
<nav style={{ "width": "80%", "float": "left", "textAlign": "center" }}> TBD : {props.user_dashbord_title} - Du : {props.user_dashbord_filter_start} au : {props.user_dashbord_filter_end}</nav>
|
||||||
<Tooltip id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
<Tooltip id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
||||||
<a data-tooltip-id="my-tooltip02" data-tooltip-content="Supprimer de ma liste de TBD">
|
<a data-tooltip-id="my-tooltip02" data-tooltip-content="Supprimer de ma liste de TBD">
|
||||||
<Popup
|
<Popup
|
||||||
|
@ -545,8 +533,18 @@ const Dashbord_Session_Repartition_Fteur = (props) => {
|
||||||
)}
|
)}
|
||||||
</Popup>
|
</Popup>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<Tooltip id="my-tooltip03" style={{ "fontSize": "12px" }} />
|
||||||
|
<a data-tooltip-id="my-tooltip03" data-tooltip-content="Export Csv/Excel">
|
||||||
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
|
<RiFileExcel2Line style={{ "cursor": "pointer", }} onClick={(event) => {
|
||||||
|
Export_Dashbord_to_CSV(props.user_dashbord_id);
|
||||||
|
|
||||||
|
}} />
|
||||||
|
</nav>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<Box style={{ "color": "black", "height": "30rem" }}>
|
<Box style={{ "color": "black", "height": "30rem" }}>
|
||||||
|
|
||||||
|
|
|
@ -1,71 +1,28 @@
|
||||||
import React, { useRef, useState, useEffect } from "react";
|
import React, { useRef, useState, useEffect } from "react";
|
||||||
import TextField from '@mui/material/TextField';
|
|
||||||
import MenuItem from '@mui/material/MenuItem';
|
|
||||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
import Button from '@mui/material/Button';
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
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 CheckOut from "./CheckOut";
|
|
||||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
|
||||||
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
||||||
import { Editor } from '@tinymce/tinymce-react';
|
|
||||||
import parse from 'html-react-parser';
|
|
||||||
import { FcViewDetails, FcDisapprove } from "react-icons/fc";
|
|
||||||
import 'react-tooltip/dist/react-tooltip.css'
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
import { Tooltip } from 'react-tooltip'
|
import { Tooltip } from 'react-tooltip'
|
||||||
import add_plus from "../mysy_img/plus.png";
|
|
||||||
import excel_icone from "../mysy_img/excel_icone.png";
|
|
||||||
import participants from "../mysy_img/participants.png";
|
|
||||||
import fileDownload from 'js-file-download'
|
import fileDownload from 'js-file-download'
|
||||||
import Popup from 'reactjs-popup';
|
import Popup from 'reactjs-popup';
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
|
||||||
import DatePicker from "react-datepicker";
|
|
||||||
import "react-datepicker/dist/react-datepicker.css";
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
import { format } from 'date-fns'
|
|
||||||
import moment from "moment";
|
|
||||||
import InputAdornment from '@mui/material/InputAdornment';
|
|
||||||
import { AiFillCloseCircle } from "react-icons/ai";
|
|
||||||
import Box from '@mui/material/Box';
|
import Box from '@mui/material/Box';
|
||||||
import { Typography, LinearProgress, sliderClasses } from '@mui/material';
|
|
||||||
import styled from 'styled-components';
|
|
||||||
import { CiTrash } from "react-icons/ci";
|
|
||||||
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
|
|
||||||
import Dialog from '@mui/material/Dialog';
|
|
||||||
import DialogActions from '@mui/material/DialogActions';
|
|
||||||
import DialogContent from '@mui/material/DialogContent';
|
|
||||||
import DialogContentText from '@mui/material/DialogContentText';
|
|
||||||
import DialogTitle from '@mui/material/DialogTitle';
|
|
||||||
import { TransitionProps } from '@mui/material/transitions';
|
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
//import FullCalendar from "@fullcalendar/react";
|
|
||||||
import daygridPlugin from "@fullcalendar/daygrid";
|
|
||||||
//import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
//import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
import allLocales from '@fullcalendar/core/locales-all'
|
|
||||||
import { RepeatOnRounded } from "@mui/icons-material";
|
|
||||||
import { alignPropType } from "react-bootstrap/esm/types";
|
|
||||||
|
|
||||||
import { tokens } from "../theme";
|
import { tokens } from "../theme";
|
||||||
import { MdOutlineAddchart, MdAssignmentAdd, MdOutlinePlaylistRemove, MdDeleteForever } from "react-icons/md";
|
import { MdDeleteForever } from "react-icons/md";
|
||||||
|
|
||||||
import FullCalendar, { formatDate } from "@fullcalendar/react";
|
|
||||||
import dayGridPlugin from "@fullcalendar/daygrid";
|
|
||||||
import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ListItem,
|
|
||||||
ListItemText,
|
|
||||||
useTheme,
|
useTheme,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
|
|
||||||
import { ResponsivePie } from '@nivo/pie'
|
|
||||||
import { ResponsiveBar } from "@nivo/bar";
|
import { ResponsiveBar } from "@nivo/bar";
|
||||||
|
|
||||||
|
import { RiFileExcel2Line } from "react-icons/ri";
|
||||||
|
|
||||||
const Dashbord_Session_Taux_Remplissage = (props) => {
|
const Dashbord_Session_Taux_Remplissage = (props) => {
|
||||||
|
|
||||||
|
@ -84,8 +41,8 @@ const Dashbord_Session_Taux_Remplissage = (props) => {
|
||||||
date_today_90j.setDate(date_today_90j.getDate() - 90);
|
date_today_90j.setDate(date_today_90j.getDate() - 90);
|
||||||
|
|
||||||
|
|
||||||
const [p_filter_date_from, setp_filter_date_from] = useState(date_today_90j.toLocaleDateString('fr-FR'));
|
const [p_filter_date_from, setp_filter_date_from] = useState(props.user_dashbord_filter_start);
|
||||||
const [p_filter_date_to, setp_filter_date_to] = useState(new Date().toLocaleDateString('fr-FR'));
|
const [p_filter_date_to, setp_filter_date_to] = useState(props.user_dashbord_filter_end);
|
||||||
|
|
||||||
const [Add_To_User_TBD_api, setAdd_To_User_TBD_api] = useState();
|
const [Add_To_User_TBD_api, setAdd_To_User_TBD_api] = useState();
|
||||||
const [Add_To_User_TBD_message, setAdd_To_User_TBD_message] = useState();
|
const [Add_To_User_TBD_message, setAdd_To_User_TBD_message] = useState();
|
||||||
|
@ -175,7 +132,7 @@ const Dashbord_Session_Taux_Remplissage = (props) => {
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_To_User_Dashbord/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_To_User_Dashbord/";
|
||||||
|
|
||||||
console.log(" ## myurl = ", myurl);
|
//console.log(" ## myurl = ", myurl);
|
||||||
|
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
axios.post(myurl, form).then(res => {
|
axios.post(myurl, form).then(res => {
|
||||||
|
@ -228,15 +185,15 @@ const Dashbord_Session_Taux_Remplissage = (props) => {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
form.append("token", stored_cookie);
|
form.append("token", stored_cookie);
|
||||||
form.append("session_start_date", date_from);
|
form.append("session_start_date", date_from);
|
||||||
form.append("session_end_date", date_to);
|
form.append("session_end_date", date_to);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_List_Session_Data/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_List_Session_Data/";
|
||||||
|
|
||||||
|
console.log(" ### form = ", form);
|
||||||
|
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
axios.post(myurl, form).then(res => {
|
axios.post(myurl, form).then(res => {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
|
@ -394,8 +351,13 @@ const Dashbord_Session_Taux_Remplissage = (props) => {
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
|
setp_filter_date_from(props.user_dashbord_filter_start);
|
||||||
|
setp_filter_date_to(props.user_dashbord_filter_end);
|
||||||
|
|
||||||
|
|
||||||
Getall_Qry_Session_Data();
|
Getall_Qry_Session_Data();
|
||||||
|
|
||||||
|
|
||||||
window.scrollTo({
|
window.scrollTo({
|
||||||
top: 0,
|
top: 0,
|
||||||
behavior: "smooth",
|
behavior: "smooth",
|
||||||
|
@ -407,6 +369,36 @@ const Dashbord_Session_Taux_Remplissage = (props) => {
|
||||||
const [filter_value, setfilter_value] = useState("m0");
|
const [filter_value, setfilter_value] = useState("m0");
|
||||||
const [tdb_title, settdb_title] = useState();
|
const [tdb_title, settdb_title] = useState();
|
||||||
|
|
||||||
|
function Export_Dashbord_to_CSV(local_dashbord_internal_id) {
|
||||||
|
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
|
||||||
|
var nom_fichier_cmd = "export_csv.csv";
|
||||||
|
console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- local_dashbord_internal_id = ", local_dashbord_internal_id);
|
||||||
|
|
||||||
|
var url = process.env.REACT_APP_API_URL + "myclass/api/Export_Dashbord_To_Csv/" + stored_cookie + "/" + local_dashbord_internal_id;
|
||||||
|
|
||||||
|
//console.log(" nom_fichier_cmd = ", nom_fichier_cmd, " --- selected_id = ", selected_id, " --- url =", url);
|
||||||
|
setLoading(true);
|
||||||
|
axios.get(url, { responseType: 'blob', },)
|
||||||
|
.then((res) => {
|
||||||
|
setLoading(false);
|
||||||
|
//console.log(" In Export_Dashbord_to_CSV res.data = " + res.data);
|
||||||
|
if (String(res.data) === String("false")) {
|
||||||
|
alert( "Impossible d'exporter les données (2) ");
|
||||||
|
} else {
|
||||||
|
fileDownload(res.data, nom_fichier_cmd)
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
setLoading(false);
|
||||||
|
console.error('Error:', error);
|
||||||
|
alert(" Impossible d'exporter les données ")
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="dashbord_session" style={{ "marginLeft": "1px", "marginRight": "2px" }}>
|
<div className="dashbord_session" style={{ "marginLeft": "1px", "marginRight": "2px" }}>
|
||||||
{isLoading && <div className="loader-container">
|
{isLoading && <div className="loader-container">
|
||||||
|
@ -491,7 +483,9 @@ const Dashbord_Session_Taux_Remplissage = (props) => {
|
||||||
|
|
||||||
<div style={{ "height": "40rem" }}>
|
<div style={{ "height": "40rem" }}>
|
||||||
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
<div className="titre1" style={{ "float": "left", "cursor": "none" }}>
|
||||||
<nav style={{ "width": "90%", "float": "left", "textAlign": "center" }}> TBD Session : Taux de remplissage </nav>
|
<nav style={{ "width": "80%", "float": "left", "textAlign": "center" }}> TBD : {props.user_dashbord_title} - Du : {props.user_dashbord_filter_start} au : {props.user_dashbord_filter_end}</nav>
|
||||||
|
|
||||||
|
|
||||||
<Tooltip id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
<Tooltip id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
||||||
<a data-tooltip-id="my-tooltip02" data-tooltip-content="Supprimer de ma liste de TBD">
|
<a data-tooltip-id="my-tooltip02" data-tooltip-content="Supprimer de ma liste de TBD">
|
||||||
|
|
||||||
|
@ -544,6 +538,17 @@ const Dashbord_Session_Taux_Remplissage = (props) => {
|
||||||
</Popup>
|
</Popup>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<Tooltip id="my-tooltip03" style={{ "fontSize": "12px" }} />
|
||||||
|
<a data-tooltip-id="my-tooltip03" data-tooltip-content="Export Csv/Excel">
|
||||||
|
<nav style={{ "width": "9%", "float": "right", "textAlign": "right", "cursor": "pointer" }}>
|
||||||
|
<RiFileExcel2Line style={{ "cursor": "pointer", }} onClick={(event) => {
|
||||||
|
Export_Dashbord_to_CSV(props.user_dashbord_id);
|
||||||
|
|
||||||
|
}} />
|
||||||
|
</nav>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,10 @@
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { Button, FormGroup, Label, Input } from "reactstrap";
|
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import FormControl from '@mui/material/FormControl';
|
|
||||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
|
||||||
import { useParams } from 'react-router-dom'
|
import { useParams } from 'react-router-dom'
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import Box from '@mui/material/Box';
|
|
||||||
import InputLabel from '@mui/material/InputLabel';
|
|
||||||
import InputAdornment from '@mui/material/InputAdornment';
|
|
||||||
import TextField from '@mui/material/TextField';
|
|
||||||
import OutlinedInput from '@mui/material/OutlinedInput';
|
|
||||||
import Visibility from '@mui/icons-material/Visibility';
|
|
||||||
import VisibilityOff from '@mui/icons-material/VisibilityOff';
|
|
||||||
import IconButton from '@mui/material/IconButton';
|
|
||||||
import Header from "./Header";
|
import Header from "./Header";
|
||||||
import Footer from "./Fotter";
|
import Footer from "./Fotter";
|
||||||
import { getCookie } from 'react-use-cookie';
|
import { getCookie } from 'react-use-cookie';
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
import React, { useRef, useState, useEffect } from "react";
|
|
||||||
import Popup from 'reactjs-popup';
|
|
||||||
import 'reactjs-popup/dist/index.css';
|
|
||||||
import ReactBootstrap from 'react-bootstrap'
|
|
||||||
import { Modal } from 'react-bootstrap';
|
|
||||||
import axios from "axios";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const DisplayClass = (props) => {
|
|
||||||
|
|
||||||
const [result, setResult] = useState("");
|
|
||||||
const [myApiResponse, setmyApiResponse] = useState("false");
|
|
||||||
const [myApiMessage, setmyApimyApiMessage] = useState("");
|
|
||||||
const [trainingRef, settrainingRef] = useState("");
|
|
||||||
|
|
||||||
function MyDisplayClass(e) {
|
|
||||||
|
|
||||||
var trainingind = e.target.value;
|
|
||||||
//console.log(" #################" + trainingind);
|
|
||||||
|
|
||||||
//alert(" la formation a traiter est : " + trainingind);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<h2> Affichage detaillé d'une formation </h2>
|
|
||||||
<li className="displayclass">
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li> Titre : {props.formation.title} </li>
|
|
||||||
<li> Description : {props.formation.description} </li>
|
|
||||||
<li> domain : {props.formation.domain} </li>
|
|
||||||
<li> Langue : {props.formation.lang} </li>
|
|
||||||
<li> Certification : {props.formation.certif} </li>
|
|
||||||
<li> Type : {props.formation.type} </li>
|
|
||||||
<li> Support : {props.formation.support} </li>
|
|
||||||
<li> Prix : {props.formation.price} </li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export default DisplayClass;
|
|
|
@ -48,6 +48,7 @@ import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
|
||||||
import Module_Absence from "./Module_Absence";
|
import Module_Absence from "./Module_Absence";
|
||||||
import { RiMoreFill } from "react-icons/ri";
|
import { RiMoreFill } from "react-icons/ri";
|
||||||
import Switch from '@mui/material/Switch';
|
import Switch from '@mui/material/Switch';
|
||||||
|
import { FcSearch } from "react-icons/fc";
|
||||||
|
|
||||||
const DisplayPartnerStagiaires = (props) => {
|
const DisplayPartnerStagiaires = (props) => {
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
@ -4043,7 +4044,7 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
|
|
||||||
form.append("tuteur1_email", p_detail_tuteur1_email);
|
form.append("tuteur1_email", p_detail_tuteur1_email);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (p_detail_tuteur1_telephone)
|
if (p_detail_tuteur1_telephone)
|
||||||
form.append("tuteur1_telephone", p_detail_tuteur1_telephone);
|
form.append("tuteur1_telephone", p_detail_tuteur1_telephone);
|
||||||
|
@ -4093,7 +4094,7 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
else
|
else
|
||||||
form.append("tuteur2_prenom", "");
|
form.append("tuteur2_prenom", "");
|
||||||
|
|
||||||
if (p_detail_tuteur2_email && String(p_detail_tuteur2_email).trim() !== "" ) {
|
if (p_detail_tuteur2_email && String(p_detail_tuteur2_email).trim() !== "") {
|
||||||
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
|
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
|
||||||
if (!p_detail_tuteur2_email.match(validRegex)) {
|
if (!p_detail_tuteur2_email.match(validRegex)) {
|
||||||
alert("L'adresse email est invalide.");
|
alert("L'adresse email est invalide.");
|
||||||
|
@ -4101,7 +4102,7 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
}
|
}
|
||||||
form.append("tuteur2_email", p_detail_tuteur2_email);
|
form.append("tuteur2_email", p_detail_tuteur2_email);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (p_detail_tuteur2_telephone)
|
if (p_detail_tuteur2_telephone)
|
||||||
|
@ -4169,6 +4170,66 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const [Dialog_convention_message, setDialog_convention_message] = React.useState(false);
|
||||||
|
const [Dialog_convention_open, setDialog_convention_open] = React.useState(false);
|
||||||
|
function Dialog_convention_handle_change_participant_session(message) {
|
||||||
|
setDialog_convention_message(message);
|
||||||
|
setDialog_convention_open(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Dialog_convention_handleClose = () => {
|
||||||
|
//alert(" Utiliser le bouton 'fermer' ");
|
||||||
|
//setOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Dialog_convention_handleClose_buton = () => {
|
||||||
|
setDialog_convention_open(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const [selected_convention_id, setselected_convention_id] = useState();
|
||||||
|
const [selected_convention_type, setselected_convention_type] = useState("email");
|
||||||
|
const [selected_convention_email_destinataire_prod, setselected_convention_email_destinataire_prod] = useState("");
|
||||||
|
const [selected_convention_email_test, setselected_convention_email_test] = useState("");
|
||||||
|
|
||||||
|
|
||||||
|
const [Get_List_Stagiaire_Conventions_api, setGet_List_Stagiaire_Conventions_api] = useState();
|
||||||
|
const [Get_List_Stagiaire_Conventions_message, setGet_List_Stagiaire_Conventions_message] = useState();
|
||||||
|
const [Get_List_Stagiaire_Conventions_result, setGet_List_Stagiaire_Conventions_result] = useState();
|
||||||
|
function Get_List_Stagiaire_Conventions(event) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
|
||||||
|
form.append("class_internal_url", selected_internal_url);
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("inscription_id", selected_id);
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Conventions_Stagiaire/";
|
||||||
|
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
//console.log(" In Get_List_Stagiaire_Conventions res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Get_List_Stagiaire_Conventions res.data.message r_class = " + res.data.message);
|
||||||
|
setGet_List_Stagiaire_Conventions_api("true");
|
||||||
|
setGet_List_Stagiaire_Conventions_result(res.data.message);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setGet_List_Stagiaire_Conventions_api("false");
|
||||||
|
setGet_List_Stagiaire_Conventions_message(res.data.message);
|
||||||
|
alert(res.data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
console.warn('Not good man :( Get_List_Stagiaire_Conventions = ', error);
|
||||||
|
setGet_List_Stagiaire_Conventions_api("false");
|
||||||
|
alert("Impossible de récupérer les modèles de convention");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="displaypartnerstagiaire">
|
<div className="displaypartnerstagiaire">
|
||||||
|
@ -4485,6 +4546,197 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
|
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
|
<Dialog
|
||||||
|
open={Dialog_convention_open}
|
||||||
|
onClose={Dialog_convention_handleClose}
|
||||||
|
className="displaypartnersession"
|
||||||
|
>
|
||||||
|
|
||||||
|
<DialogTitle>MySy Information</DialogTitle>
|
||||||
|
<DialogContent className="DialogContent_width">
|
||||||
|
|
||||||
|
<div className="session_caract_Dialog" > Version convention
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_version_convention"
|
||||||
|
id="event_dialog_version_convention"
|
||||||
|
|
||||||
|
select
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value={selected_convention_id}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_id(e.target.value);
|
||||||
|
var result2 = Get_List_Stagiaire_Conventions_result.filter((local_mymanager) => JSON.parse(local_mymanager)._id === String(e.target.value))
|
||||||
|
setselected_convention_type(JSON.parse(result2).type_doc);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
>
|
||||||
|
{Get_List_Stagiaire_Conventions_result &&
|
||||||
|
Get_List_Stagiaire_Conventions_result.map((myclient) => (
|
||||||
|
<MenuItem key={JSON.parse(myclient)._id} value={JSON.parse(myclient)._id}
|
||||||
|
style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>
|
||||||
|
{JSON.parse(myclient).nom} <b>{JSON.parse(myclient).type_doc} </b>
|
||||||
|
|
||||||
|
</MenuItem>
|
||||||
|
))}
|
||||||
|
|
||||||
|
|
||||||
|
</TextField>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Type Document<br />
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, width: '75%' }}
|
||||||
|
|
||||||
|
name="event_dialog_type_convention"
|
||||||
|
id="event_dialog_type_convention"
|
||||||
|
|
||||||
|
select
|
||||||
|
|
||||||
|
|
||||||
|
value={selected_convention_type}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_type(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
|
||||||
|
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Email </MenuItem>
|
||||||
|
<MenuItem value="pdf" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >PDF </MenuItem>
|
||||||
|
</TextField>
|
||||||
|
{String(selected_convention_type) === "email" && <label className="bton_image_class" style={{ "width": "20%", "float": "right", "height": "3.5rem", "paddingTop": "15px" }} onClick={(e) => {
|
||||||
|
|
||||||
|
|
||||||
|
}} > <FcSearch /> Test</label>}
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" > Type Document<br />
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 } }}
|
||||||
|
|
||||||
|
name="event_dialog_type_convention"
|
||||||
|
id="event_dialog_type_convention"
|
||||||
|
|
||||||
|
select
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value={selected_convention_type}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_type(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
|
||||||
|
<MenuItem value="email" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Email </MenuItem>
|
||||||
|
<MenuItem value="pdf" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >PDF </MenuItem>
|
||||||
|
</TextField>
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Recevoir un pré-envoie
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_email_test_convention"
|
||||||
|
id="event_dialog_email_test_convention"
|
||||||
|
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value={selected_convention_email_test}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_email_test(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" > Recevoir un pré-envoie
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_email_test_convention"
|
||||||
|
id="event_dialog_email_test_convention"
|
||||||
|
fullWidth
|
||||||
|
value=""
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Email destinaitaire
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_email_production_convention"
|
||||||
|
id="event_dialog_email_production_convention"
|
||||||
|
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value={selected_convention_email_destinataire_prod}
|
||||||
|
onChange={(e) => {
|
||||||
|
setselected_convention_email_destinataire_prod(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" > Email destinaitaire
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
|
||||||
|
name="event_dialog_email_production_convention"
|
||||||
|
id="event_dialog_email_production_convention"
|
||||||
|
|
||||||
|
fullWidth
|
||||||
|
|
||||||
|
value=""
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</DialogContent>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<DialogActions>
|
||||||
|
<div className="div_row">
|
||||||
|
<div className="div_row_gauche">
|
||||||
|
{String(selected_convention_type) === "email" && <Button onChange={(e) => {
|
||||||
|
if (String(selected_convention_email_test).length > 2) {
|
||||||
|
const response = window.confirm(" Vous allez envoyer le convention au destinaitaire final. Continuer ?");
|
||||||
|
if (!response) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
alert(" Ok envoyé");
|
||||||
|
Dialog_convention_handleClose_buton();
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
className="bton_enreg_dialog">Envoyer</Button>}
|
||||||
|
{String(selected_convention_type) === "pdf" && <Button onClick={"Add_One_Sequence_Session_Ressource"} className="bton_enreg_dialog">Télécharger</Button>}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||||
|
<Button onClick={Dialog_convention_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</DialogActions>
|
||||||
|
|
||||||
|
</Dialog>
|
||||||
|
|
||||||
<h3> Vos stagiaires </h3>
|
<h3> Vos stagiaires </h3>
|
||||||
<div className="div_row">
|
<div className="div_row">
|
||||||
|
@ -5536,6 +5788,17 @@ const DisplayPartnerStagiaires = (props) => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="div_row_droite">
|
||||||
|
<div style={{ "marginLeft": "1rem" }}>
|
||||||
|
|
||||||
|
<label className="bton_image_class" onClick={(e) => {
|
||||||
|
Get_List_Stagiaire_Conventions();
|
||||||
|
setDialog_convention_open(true);
|
||||||
|
}} >Editer une convention</label><br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="session_data" >
|
<div className="session_data" >
|
||||||
|
|
|
@ -3,26 +3,14 @@ import { useForm } from "react-hook-form";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import Articles from "../components/Article";
|
import Articles from "../components/Article";
|
||||||
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
||||||
import { BsFillXCircleFill } from "react-icons/bs";
|
|
||||||
import { IoAddSharp } from "react-icons/io5";
|
|
||||||
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
|
|
||||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
|
||||||
import Pagination from "./TestPagination";
|
import Pagination from "./TestPagination";
|
||||||
import data from "./data/mock-data.json";
|
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { getCookie, removeCookie } from 'react-use-cookie';
|
import { getCookie, removeCookie } from 'react-use-cookie';
|
||||||
import { Helmet } from "react-helmet";
|
|
||||||
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
|
|
||||||
import Button from '@mui/material/Button';
|
|
||||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
|
||||||
import Footer from "./Fotter";
|
|
||||||
import Header from "./Header";
|
|
||||||
import MenuItem from "@material-ui/core/MenuItem";
|
|
||||||
import Menu from "@material-ui/core/Menu";
|
|
||||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||||
import { useCookies } from "react-cookie";
|
import { useCookies } from "react-cookie";
|
||||||
import connect_white from "../mysy_img/connect_white_v2.png";
|
|
||||||
import connect_green from "../mysy_img/connect_green.png";
|
|
||||||
|
|
||||||
let PageSize = 5;
|
let PageSize = 5;
|
||||||
const ListeArticles = (props) => {
|
const ListeArticles = (props) => {
|
||||||
|
|
|
@ -1,59 +1,31 @@
|
||||||
import React, { useRef, useState, useEffect } from "react";
|
import React, { useRef, useState, useEffect } from "react";
|
||||||
import TextField from '@mui/material/TextField';
|
|
||||||
import MenuItem from '@mui/material/MenuItem';
|
|
||||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
import Button from '@mui/material/Button';
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
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 CheckOut from "./CheckOut";
|
|
||||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
|
||||||
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
|
||||||
import { Editor } from '@tinymce/tinymce-react';
|
|
||||||
import parse from 'html-react-parser';
|
|
||||||
import { FcViewDetails, FcDisapprove } from "react-icons/fc";
|
|
||||||
import 'react-tooltip/dist/react-tooltip.css'
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
import { Tooltip } from 'react-tooltip'
|
import { Tooltip } from 'react-tooltip'
|
||||||
import add_plus from "../mysy_img/plus.png";
|
|
||||||
import excel_icone from "../mysy_img/excel_icone.png";
|
|
||||||
import participants from "../mysy_img/participants.png";
|
|
||||||
import fileDownload from 'js-file-download'
|
|
||||||
import Popup from 'reactjs-popup';
|
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcPlanner } from "react-icons/fc";
|
|
||||||
import DatePicker from "react-datepicker";
|
|
||||||
import "react-datepicker/dist/react-datepicker.css";
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
import { format } from 'date-fns'
|
|
||||||
import moment from "moment";
|
|
||||||
import InputAdornment from '@mui/material/InputAdornment';
|
|
||||||
import { AiFillCloseCircle } from "react-icons/ai";
|
|
||||||
import Box from '@mui/material/Box';
|
|
||||||
import { Typography, LinearProgress, sliderClasses } from '@mui/material';
|
|
||||||
import styled from 'styled-components';
|
|
||||||
import { CiTrash, CiBoxList } from "react-icons/ci";
|
|
||||||
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
|
|
||||||
import Dialog from '@mui/material/Dialog';
|
|
||||||
import DialogActions from '@mui/material/DialogActions';
|
|
||||||
import DialogContent from '@mui/material/DialogContent';
|
|
||||||
import DialogContentText from '@mui/material/DialogContentText';
|
|
||||||
import DialogTitle from '@mui/material/DialogTitle';
|
|
||||||
import { TransitionProps } from '@mui/material/transitions';
|
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
import FullCalendar from "@fullcalendar/react";
|
|
||||||
import daygridPlugin from "@fullcalendar/daygrid";
|
|
||||||
import interactionPlugin from "@fullcalendar/interaction";
|
|
||||||
import timeGridPlugin from "@fullcalendar/timegrid";
|
|
||||||
|
|
||||||
import allLocales from '@fullcalendar/core/locales-all'
|
|
||||||
import { RepeatOnRounded, RestaurantMenu } from "@mui/icons-material";
|
|
||||||
import { alignPropType } from "react-bootstrap/esm/types";
|
|
||||||
|
|
||||||
import ToggleSwitch from "./ToggleSwitch";
|
|
||||||
import Dashbord_Session_Par_Fteur from "./Dashbord_Session_Par_Fteur";
|
import Dashbord_Session_Par_Fteur from "./Dashbord_Session_Par_Fteur";
|
||||||
import Dashbord_Session_Taux_Remplissage from "./Dashbord_Session_Taux_Remplissage";
|
import Dashbord_Session_Taux_Remplissage from "./Dashbord_Session_Taux_Remplissage";
|
||||||
import Dashbord_Session_Repartition_Fteur from "./Dashbord_Session_Repartition_Fteur";
|
import Dashbord_Session_Repartition_Fteur from "./Dashbord_Session_Repartition_Fteur";
|
||||||
|
import Dashbord_Formation_Evol_Session from "./Dashbord_Formation_Evol_Session";
|
||||||
|
|
||||||
import { TbColumns2, TbColumns1 } from "react-icons/tb";
|
import { TbColumns2, TbColumns1 } from "react-icons/tb";
|
||||||
|
|
||||||
|
|
||||||
const Mon_Tableau_De_Bord = (props) => {
|
const Mon_Tableau_De_Bord = (props) => {
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,8 +54,8 @@ const Mon_Tableau_De_Bord = (props) => {
|
||||||
axios.post(myurl, form).then(res => {
|
axios.post(myurl, form).then(res => {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
if (String(res.data.status) === String("true")) {
|
if (String(res.data.status) === String("true")) {
|
||||||
console.log(" In Get_Connected_User_Dashbord res.data.status = " + res.data.status);
|
//console.log(" In Get_Connected_User_Dashbord res.data.status = " + res.data.status);
|
||||||
console.log(" In Get_Connected_User_Dashbord res.data.message r_class = " + res.data.message);
|
//console.log(" In Get_Connected_User_Dashbord res.data.message r_class = " + res.data.message);
|
||||||
|
|
||||||
setGet_Connected_User_Dashbord_api("true");
|
setGet_Connected_User_Dashbord_api("true");
|
||||||
setGet_Connected_User_Dashbord_result(res.data.message);
|
setGet_Connected_User_Dashbord_result(res.data.message);
|
||||||
|
@ -117,6 +89,7 @@ const Mon_Tableau_De_Bord = (props) => {
|
||||||
|
|
||||||
|
|
||||||
const [display_nb_column, setdisplay_nb_column] = useState("2");
|
const [display_nb_column, setdisplay_nb_column] = useState("2");
|
||||||
|
const [display_column_size, setdisplay_column_size] = useState("49%");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mon_tableau_de_bord">
|
<div className="mon_tableau_de_bord">
|
||||||
|
@ -132,37 +105,55 @@ const Mon_Tableau_De_Bord = (props) => {
|
||||||
<a data-tooltip-id="my_tooltip_1_col" data-tooltip-content="Affichage sur une colonne">
|
<a data-tooltip-id="my_tooltip_1_col" data-tooltip-content="Affichage sur une colonne">
|
||||||
<TbColumns1 style={{ "cursor": "pointer" }} onClick={(e) => {
|
<TbColumns1 style={{ "cursor": "pointer" }} onClick={(e) => {
|
||||||
setdisplay_nb_column("1");
|
setdisplay_nb_column("1");
|
||||||
|
setdisplay_column_size("95%");
|
||||||
}} />
|
}} />
|
||||||
</a>
|
</a>
|
||||||
<Tooltip id="my_tooltip_2_col" style={{ "fontSize": "12px" }} />
|
<Tooltip id="my_tooltip_2_col" style={{ "fontSize": "12px" }} />
|
||||||
<a data-tooltip-id="my_tooltip_2_col" data-tooltip-content="Affichage sur deux colonnes">
|
<a data-tooltip-id="my_tooltip_2_col" data-tooltip-content="Affichage sur deux colonnes">
|
||||||
<TbColumns2 style={{ "cursor": "pointer" }} onClick={(e) => {
|
<TbColumns2 style={{ "cursor": "pointer" }} onClick={(e) => {
|
||||||
setdisplay_nb_column("2");
|
setdisplay_nb_column("2");
|
||||||
|
setdisplay_column_size("49%");
|
||||||
}} />
|
}} />
|
||||||
</a> </div>
|
</a> </div>
|
||||||
|
|
||||||
{display_nb_column && String(display_nb_column) == "2" && <div>
|
{display_nb_column && <div>
|
||||||
{Get_Connected_User_Dashbord_result &&
|
{Get_Connected_User_Dashbord_result &&
|
||||||
Get_Connected_User_Dashbord_result.map((step) => (
|
Get_Connected_User_Dashbord_result.map((step) => (
|
||||||
|
|
||||||
<div className="div_row" style={{ "width": "49%", "float": "left", "paddingRight":"2px" }}>
|
<div className="div_row" style={{ "width": String(display_column_size), "float": "left", "paddingRight": "2px" }}>
|
||||||
|
|
||||||
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_01" &&
|
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_01" &&
|
||||||
|
|
||||||
<Dashbord_Session_Taux_Remplissage user_dashbord_id={String(JSON.parse(step)._id)} />
|
<Dashbord_Session_Taux_Remplissage user_dashbord_id={String(JSON.parse(step)._id)}
|
||||||
|
user_dashbord_title={String(JSON.parse(step).title)}
|
||||||
|
user_dashbord_filter_start={String(JSON.parse(step).start_date)}
|
||||||
|
user_dashbord_filter_end={String(JSON.parse(step).end_date)} />
|
||||||
}
|
}
|
||||||
|
|
||||||
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_02" &&
|
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_02" &&
|
||||||
|
|
||||||
<Dashbord_Session_Par_Fteur user_dashbord_id={String(JSON.parse(step)._id)} />
|
<Dashbord_Session_Par_Fteur user_dashbord_id={String(JSON.parse(step)._id)}
|
||||||
|
user_dashbord_title={String(JSON.parse(step).title)}
|
||||||
|
user_dashbord_filter_start={String(JSON.parse(step).start_date)}
|
||||||
|
user_dashbord_filter_end={String(JSON.parse(step).end_date)} />
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_03" &&
|
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_03" &&
|
||||||
|
|
||||||
|
<Dashbord_Session_Repartition_Fteur user_dashbord_id={String(JSON.parse(step)._id)}
|
||||||
|
user_dashbord_title={String(JSON.parse(step).title)}
|
||||||
|
user_dashbord_filter_start={String(JSON.parse(step).start_date)}
|
||||||
|
user_dashbord_filter_end={String(JSON.parse(step).end_date)} />
|
||||||
|
}
|
||||||
|
|
||||||
<Dashbord_Session_Repartition_Fteur user_dashbord_id={String(JSON.parse(step)._id)} />
|
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_formation_01" &&
|
||||||
|
|
||||||
|
<Dashbord_Formation_Evol_Session user_dashbord_id={String(JSON.parse(step)._id)}
|
||||||
|
user_dashbord_title={String(JSON.parse(step).title)}
|
||||||
|
user_dashbord_filter_start={String(JSON.parse(step).start_date)}
|
||||||
|
user_dashbord_filter_end={String(JSON.parse(step).end_date)} />
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -171,41 +162,18 @@ const Mon_Tableau_De_Bord = (props) => {
|
||||||
))}
|
))}
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
|
{!Get_Connected_User_Dashbord_result || Get_Connected_User_Dashbord_result.length <= 0 && <div>
|
||||||
|
|
||||||
|
|
||||||
{display_nb_column && String(display_nb_column) == "1" && <div>
|
<div className="div_row">
|
||||||
{Get_Connected_User_Dashbord_result &&
|
<p className="text_tbd_vide"> Pour utiliser le votre tableau de bord, Merci de de configurer à partir du menu : "Configuration" == > "Tableau de bord"</p>
|
||||||
Get_Connected_User_Dashbord_result.map((step) => (
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="div_row" style={{ "width": "95%", "float": "left" }}>
|
|
||||||
|
|
||||||
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_01" &&
|
|
||||||
|
|
||||||
<Dashbord_Session_Taux_Remplissage user_dashbord_id={String(JSON.parse(step)._id)} />
|
|
||||||
}
|
|
||||||
|
|
||||||
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_02" &&
|
|
||||||
|
|
||||||
<Dashbord_Session_Par_Fteur user_dashbord_id={String(JSON.parse(step)._id)} />
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
{String(JSON.parse(step).dashbord_internal_code) === "tbd_code_session_03" &&
|
|
||||||
|
|
||||||
|
|
||||||
<Dashbord_Session_Repartition_Fteur user_dashbord_id={String(JSON.parse(step)._id)} />
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
))}
|
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import partnerbannerimg from "../mysy_img/MYSY_banner_compte.png";
|
|
||||||
import profileimg from "../mysy_img/MYSY-profil-2.png";
|
import profileimg from "../mysy_img/MYSY-profil-2.png";
|
||||||
import TrainingForm from "./AddClassManual"
|
import TrainingForm from "./AddClassManual"
|
||||||
import PartnerTranings from "./DisplayPartnerTrainingsPagination";
|
import PartnerTranings from "./DisplayPartnerTrainingsPagination";
|
||||||
|
@ -12,11 +12,7 @@ import { useHistory } from "react-router-dom";
|
||||||
import PartnerInfo from "./UpdatePartnerInfo";
|
import PartnerInfo from "./UpdatePartnerInfo";
|
||||||
import PartenairStat from "./PartenairStat";
|
import PartenairStat from "./PartenairStat";
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
|
||||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
|
||||||
|
|
||||||
import downarrow from "../mysy_img/downarrow.png";
|
|
||||||
import uparrow from "../mysy_img/uparrow.png";
|
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
import { GiTeacher } from "react-icons/gi";
|
import { GiTeacher } from "react-icons/gi";
|
||||||
import Footer from "./Fotter";
|
import Footer from "./Fotter";
|
||||||
|
@ -57,6 +53,7 @@ import Partner_Configuration_Session_Steps from "./Partner_Config_Session_Steps"
|
||||||
import Partner_Configuration_Jours_Travail from "./Partner_Config_Jours_Travail";
|
import Partner_Configuration_Jours_Travail from "./Partner_Config_Jours_Travail";
|
||||||
import Dashbord_Session from "./Dashbord_Session";
|
import Dashbord_Session from "./Dashbord_Session";
|
||||||
import Mon_Tableau_De_Bord from "./Mon_Tableau_De_Bord";
|
import Mon_Tableau_De_Bord from "./Mon_Tableau_De_Bord";
|
||||||
|
import Dashbord_Formation from "./Dashbord_Formation";
|
||||||
|
|
||||||
import Dialog from '@mui/material/Dialog';
|
import Dialog from '@mui/material/Dialog';
|
||||||
import DialogActions from '@mui/material/DialogActions';
|
import DialogActions from '@mui/material/DialogActions';
|
||||||
|
@ -1579,11 +1576,19 @@ const Partner = (props) => {
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{String(menu) === "dashbord_formation" && <div className="div_droite">
|
||||||
|
|
||||||
|
<Dashbord_Formation conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("dashbord", "read")} write_access={check_user_acces_right("dashbord", "write")} />
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{String(menu) === "mon_tableau_de_bord" && <div className="div_droite">
|
{String(menu) === "mon_tableau_de_bord" && <div className="div_droite">
|
||||||
|
|
||||||
<Mon_Tableau_De_Bord conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("dashbord", "read")} write_access={check_user_acces_right("dashbord", "write")} />
|
<Mon_Tableau_De_Bord conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("dashbord", "read")} write_access={check_user_acces_right("dashbord", "write")} />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,14 @@
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import partnerbannerimg from "../mysy_img/MYSY_banner_compte.png";
|
|
||||||
import { Button, FormGroup, Label, Input } from "reactstrap";
|
import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||||
import { useCookies } from "react-cookie";
|
import { useCookies } from "react-cookie";
|
||||||
import { confirmAlert } from 'react-confirm-alert';
|
import { confirmAlert } from 'react-confirm-alert';
|
||||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
|
||||||
import Footer from "./Fotter";
|
import Footer from "./Fotter";
|
||||||
import MenuItem from "@material-ui/core/MenuItem";
|
|
||||||
import Menu from "@material-ui/core/Menu";
|
|
||||||
import Header from "./Header";
|
import Header from "./Header";
|
||||||
import { getCookie, removeCookie } from 'react-use-cookie';
|
import { getCookie, removeCookie } from 'react-use-cookie';
|
||||||
|
|
||||||
|
|
|
@ -6,12 +6,9 @@ import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||||
import { useCookies } from "react-cookie";
|
import { useCookies } from "react-cookie";
|
||||||
import { confirmAlert } from 'react-confirm-alert';
|
import { confirmAlert } from 'react-confirm-alert';
|
||||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
|
||||||
import Footer from "./Fotter";
|
import Footer from "./Fotter";
|
||||||
import MenuItem from "@material-ui/core/MenuItem";
|
|
||||||
import Menu from "@material-ui/core/Menu";
|
|
||||||
import Header from "./Header";
|
import Header from "./Header";
|
||||||
|
|
||||||
import Visibility from '@mui/icons-material/Visibility';
|
import Visibility from '@mui/icons-material/Visibility';
|
||||||
|
|
|
@ -32,12 +32,7 @@ import { Typography, LinearProgress, sliderClasses } from '@mui/material';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import { CiTrash } from "react-icons/ci";
|
import { CiTrash } from "react-icons/ci";
|
||||||
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
|
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
|
||||||
import Dialog from '@mui/material/Dialog';
|
|
||||||
import DialogActions from '@mui/material/DialogActions';
|
|
||||||
import DialogContent from '@mui/material/DialogContent';
|
|
||||||
import DialogContentText from '@mui/material/DialogContentText';
|
|
||||||
import DialogTitle from '@mui/material/DialogTitle';
|
|
||||||
import { TransitionProps } from '@mui/material/transitions';
|
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import UpdateUserInfo from "../components/UpdateUserInfo";
|
|
||||||
import Button from '@mui/material/Button';
|
import Button from '@mui/material/Button';
|
||||||
|
|
||||||
import { AiOutlineEdit } from "react-icons/ai";
|
|
||||||
import { getCookie } from 'react-use-cookie';
|
import { getCookie } from 'react-use-cookie';
|
||||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
@ -15,24 +14,10 @@ import AccountCircle from '@mui/icons-material/AccountCircle';
|
||||||
import PhoneIcon from '@mui/icons-material/Phone'
|
import PhoneIcon from '@mui/icons-material/Phone'
|
||||||
import EmailIcon from '@mui/icons-material/Email'
|
import EmailIcon from '@mui/icons-material/Email'
|
||||||
import HomeIcon from '@mui/icons-material/Home'
|
import HomeIcon from '@mui/icons-material/Home'
|
||||||
import { Button2, Form, FormGroup, Label } from "reactstrap";
|
|
||||||
import { faBullseye } from "@fortawesome/fontawesome-free-solid";
|
|
||||||
import tick_ok from "../mysy_img/tick_OK.png";
|
|
||||||
import tick_ko from "../mysy_img/tick_KO.png";
|
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import CheckOut from "./CheckOut";
|
|
||||||
import PaymentMethod from "./PaymentMethode";
|
|
||||||
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
|
|
||||||
import fileDownload from 'js-file-download'
|
|
||||||
import PayementComponent_Carte from "./PaymentMethode_Carte"
|
|
||||||
import img_logo_stripe from "./../mysy_img/logo-stripe-secure.png";
|
|
||||||
import SendIcon from '@mui/icons-material/Send';
|
|
||||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
|
||||||
import { RiAddCircleLine } from "react-icons/ri";
|
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
|
||||||
import 'react-tooltip/dist/react-tooltip.css'
|
import 'react-tooltip/dist/react-tooltip.css'
|
||||||
import { Tooltip } from 'react-tooltip'
|
|
||||||
import Popup from 'reactjs-popup';
|
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
||||||
|
|
||||||
|
|
|
@ -2,29 +2,15 @@ import React, { useState, useEffect, } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { getCookie, setCookie } from 'react-use-cookie';
|
import { getCookie, setCookie } from 'react-use-cookie';
|
||||||
import Box from '@mui/material/Box';
|
import Box from '@mui/material/Box';
|
||||||
import InputLabel from '@mui/material/InputLabel';
|
|
||||||
import InputAdornment from '@mui/material/InputAdornment';
|
import InputAdornment from '@mui/material/InputAdornment';
|
||||||
import FormControl from '@mui/material/FormControl';
|
|
||||||
import TextField from '@mui/material/TextField';
|
import TextField from '@mui/material/TextField';
|
||||||
import AccountCircle from '@mui/icons-material/AccountCircle';
|
|
||||||
import PhoneIcon from '@mui/icons-material/Phone'
|
|
||||||
import EmailIcon from '@mui/icons-material/Email'
|
import EmailIcon from '@mui/icons-material/Email'
|
||||||
import LanguageIcon from '@mui/icons-material/Language';
|
|
||||||
import HomeIcon from '@mui/icons-material/Home'
|
|
||||||
import { Button, Form, FormGroup, Label } from "reactstrap";
|
import { Button, Form, FormGroup, Label } from "reactstrap";
|
||||||
import PasswordIcon from '@mui/icons-material/Password'
|
|
||||||
import Visibility from '@mui/icons-material/Visibility';
|
import Visibility from '@mui/icons-material/Visibility';
|
||||||
import VisibilityOff from '@mui/icons-material/VisibilityOff';
|
import VisibilityOff from '@mui/icons-material/VisibilityOff';
|
||||||
import IconButton from '@mui/material/IconButton';
|
import IconButton from '@mui/material/IconButton';
|
||||||
import OutlinedInput from '@mui/material/OutlinedInput';
|
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import TwitterIcon from '@mui/icons-material/Twitter';
|
|
||||||
import FacebookIcon from '@mui/icons-material/Facebook';
|
|
||||||
import LinkedInIcon from '@mui/icons-material/LinkedIn';
|
|
||||||
import axios from "axios";
|
|
||||||
import { ConsoleView } from "react-device-detect";
|
|
||||||
import MenuItem from '@mui/material/MenuItem';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,16 +5,13 @@ import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||||
import { FacebookLoginButton, GoogleLoginButton } from "react-social-login-buttons";
|
import { FacebookLoginButton, GoogleLoginButton } from "react-social-login-buttons";
|
||||||
//import { getCookie, setCookie, removeCookie } from 'react-use-cookie';
|
//import { getCookie, setCookie, removeCookie } from 'react-use-cookie';
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import { useCookies } from "react-cookie";
|
|
||||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
|
||||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||||
import tick_ok from "../mysy_img/tick_OK.png";
|
import tick_ok from "../mysy_img/tick_OK.png";
|
||||||
import tick_ko from "../mysy_img/tick_KO.png";
|
import tick_ko from "../mysy_img/tick_KO.png";
|
||||||
import Popup from 'reactjs-popup';
|
import Popup from 'reactjs-popup';
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
import axios from "axios";
|
|
||||||
import { useParams } from 'react-router-dom'
|
|
||||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
|
||||||
import Footer from "./Fotter";
|
import Footer from "./Fotter";
|
||||||
import MenuItem from "@material-ui/core/MenuItem";
|
import MenuItem from "@material-ui/core/MenuItem";
|
||||||
import Menu from "@material-ui/core/Menu";
|
import Menu from "@material-ui/core/Menu";
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { Helmet } from "react-helmet";
|
|
||||||
import DisplayUserGoals from "./DisplayUserGoals";
|
import DisplayUserGoals from "./DisplayUserGoals";
|
||||||
import { IoCloseCircleOutline, IoAddCircleOutline } from "react-icons/io5";
|
|
||||||
import { Button, Form, FormGroup, Label } from "reactstrap";
|
|
||||||
import UpdateUserGoals from "./UpdateUserGoals";
|
|
||||||
import UpdateUserProfil from "./UpdateUserProfil";
|
import UpdateUserProfil from "./UpdateUserProfil";
|
||||||
|
|
||||||
function ProfilObjectif() {
|
function ProfilObjectif() {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -3,10 +3,7 @@ import { useForm } from "react-hook-form";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import Articles from "../components/Article";
|
import Articles from "../components/Article";
|
||||||
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
||||||
import { BsFillXCircleFill } from "react-icons/bs";
|
|
||||||
import { IoAddSharp } from "react-icons/io5";
|
|
||||||
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
|
|
||||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
|
||||||
import Pagination from "./TestPagination";
|
import Pagination from "./TestPagination";
|
||||||
import data from "./data/mock-data.json";
|
import data from "./data/mock-data.json";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
|
|
|
@ -4,23 +4,9 @@ import axios from "axios";
|
||||||
import Formation from "./Formation_Cartouche_Com";
|
import Formation from "./Formation_Cartouche_Com";
|
||||||
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
||||||
import { BsFillXCircleFill } from "react-icons/bs";
|
import { BsFillXCircleFill } from "react-icons/bs";
|
||||||
import { IoAddSharp } from "react-icons/io5";
|
|
||||||
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
|
|
||||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
|
||||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
||||||
import img_met_program from "../mysy_img/met_programmation.jpg";
|
|
||||||
import img_met_hotel from "../mysy_img/met_hotel.jpg";
|
|
||||||
import img_met_graphisme from "../mysy_img/metier_graphisme.jpg";
|
|
||||||
|
|
||||||
import img_met_autre from "../mysy_img/met_autre.jpg";
|
|
||||||
import img_met_digital from "../mysy_img/met_digital.jpg";
|
|
||||||
import img_met_management from "../mysy_img/met_management.jpg";
|
|
||||||
import img_met_projet from "../mysy_img/met_projet.jpg";
|
|
||||||
|
|
||||||
import img_met_market from "../mysy_img/met_market.jpg";
|
|
||||||
import img_met_autre2 from "../mysy_img/met_autre2.jpg";
|
|
||||||
import img_met_dev_perso from "../mysy_img/metier_dev_perso.jpg";
|
|
||||||
import img_met_rh from "../mysy_img/met_rh.jpg";
|
|
||||||
|
|
||||||
import img_met_bureautic from "../mysy_img/met_burautic.jpg";
|
import img_met_bureautic from "../mysy_img/met_burautic.jpg";
|
||||||
import img_met_vente from "../mysy_img/met_vente.jpg";
|
import img_met_vente from "../mysy_img/met_vente.jpg";
|
||||||
|
@ -31,14 +17,11 @@ import data from "./data/mock-data.json";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { getCookie, removeCookie } from 'react-use-cookie';
|
import { getCookie, removeCookie } from 'react-use-cookie';
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import NosArticlesAlaUne from "./ArticlesAlaUnes";
|
|
||||||
import Drole from "./DroleVsCherchezFormation";
|
|
||||||
import { Android } from "@mui/icons-material";
|
|
||||||
import AideRecherche from "./AideRecherche"
|
import AideRecherche from "./AideRecherche"
|
||||||
import { useParams } from 'react-router-dom'
|
import { useParams } from 'react-router-dom'
|
||||||
import Footer from "./Fotter";
|
import Footer from "./Fotter";
|
||||||
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
|
|
||||||
import Button from '@mui/material/Button';
|
|
||||||
import MenuItem from "@material-ui/core/MenuItem";
|
import MenuItem from "@material-ui/core/MenuItem";
|
||||||
import Menu from "@material-ui/core/Menu";
|
import Menu from "@material-ui/core/Menu";
|
||||||
import Header from "./Header";
|
import Header from "./Header";
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -4,26 +4,8 @@ import axios from "axios";
|
||||||
import Formation from "./Formation";
|
import Formation from "./Formation";
|
||||||
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
||||||
import { BsFillXCircleFill } from "react-icons/bs";
|
import { BsFillXCircleFill } from "react-icons/bs";
|
||||||
import { IoAddSharp, IoAtCircle } from "react-icons/io5";
|
|
||||||
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
|
|
||||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
|
||||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
|
||||||
import img_met_program from "../mysy_img/met_programmation.jpg";
|
|
||||||
import img_met_hotel from "../mysy_img/met_hotel.jpg";
|
|
||||||
import img_met_graphisme from "../mysy_img/metier_graphisme.jpg";
|
|
||||||
|
|
||||||
import img_met_autre from "../mysy_img/met_autre.jpg";
|
|
||||||
import img_met_digital from "../mysy_img/met_digital.jpg";
|
|
||||||
import img_met_management from "../mysy_img/met_management.jpg";
|
|
||||||
import img_met_projet from "../mysy_img/met_projet.jpg";
|
|
||||||
|
|
||||||
import img_met_market from "../mysy_img/met_market.jpg";
|
|
||||||
import img_met_autre2 from "../mysy_img/met_autre2.jpg";
|
|
||||||
import img_met_dev_perso from "../mysy_img/metier_dev_perso.jpg";
|
|
||||||
import img_met_rh from "../mysy_img/met_rh.jpg";
|
|
||||||
|
|
||||||
import img_met_bureautic from "../mysy_img/met_burautic.jpg";
|
|
||||||
import img_met_vente from "../mysy_img/met_vente.jpg";
|
|
||||||
|
|
||||||
|
|
||||||
import Pagination from "./TestPagination";
|
import Pagination from "./TestPagination";
|
||||||
|
@ -31,9 +13,7 @@ import data from "./data/mock-data.json";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { getCookie, removeCookie } from 'react-use-cookie';
|
import { getCookie, removeCookie } from 'react-use-cookie';
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import NosArticlesAlaUne from "./ArticlesAlaUnes";
|
|
||||||
import Drole from "./DroleVsCherchezFormation";
|
|
||||||
import { Android, NoEncryption } from "@mui/icons-material";
|
|
||||||
import AideRecherche from "./AideRecherche"
|
import AideRecherche from "./AideRecherche"
|
||||||
import { useParams } from 'react-router-dom'
|
import { useParams } from 'react-router-dom'
|
||||||
import Footer_v2 from "./Fotter_v2";
|
import Footer_v2 from "./Fotter_v2";
|
||||||
|
|
|
@ -12,11 +12,7 @@ import EmailIcon from '@mui/icons-material/Email'
|
||||||
import LanguageIcon from '@mui/icons-material/Language';
|
import LanguageIcon from '@mui/icons-material/Language';
|
||||||
import HomeIcon from '@mui/icons-material/Home'
|
import HomeIcon from '@mui/icons-material/Home'
|
||||||
import { Button, Form, FormGroup, Label } from "reactstrap";
|
import { Button, Form, FormGroup, Label } from "reactstrap";
|
||||||
import PasswordIcon from '@mui/icons-material/Password'
|
|
||||||
import Visibility from '@mui/icons-material/Visibility';
|
|
||||||
import VisibilityOff from '@mui/icons-material/VisibilityOff';
|
|
||||||
import IconButton from '@mui/material/IconButton';
|
|
||||||
import OutlinedInput from '@mui/material/OutlinedInput';
|
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import TwitterIcon from '@mui/icons-material/Twitter';
|
import TwitterIcon from '@mui/icons-material/Twitter';
|
||||||
import FacebookIcon from '@mui/icons-material/Facebook';
|
import FacebookIcon from '@mui/icons-material/Facebook';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import Recherche from "../components/Recherche.js";
|
|
||||||
import Navigation from "../components/Navigation";
|
import Navigation from "../components/Navigation";
|
||||||
import Footer from "./footer";
|
import Footer from "./footer";
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ const recherche = () => {
|
||||||
<div>
|
<div>
|
||||||
<Navigation />
|
<Navigation />
|
||||||
<div>
|
<div>
|
||||||
<Recherche/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import Recherche_new from "../components/Recherche_new";
|
|
||||||
import Navigation from "../components/Navigation";
|
import Navigation from "../components/Navigation";
|
||||||
import Footer from "./footer";
|
import Footer from "./footer";
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ const recherche = () => {
|
||||||
<div>
|
<div>
|
||||||
<Navigation />
|
<Navigation />
|
||||||
<div>
|
<div>
|
||||||
<Recherche_new />
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2565,6 +2565,17 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.text_tbd_vide {
|
||||||
|
|
||||||
|
color: #34495E;
|
||||||
|
padding: 1.5rem;
|
||||||
|
font-size: 2rem;
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 5rem !important;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.MuiMenu-paper {
|
.MuiMenu-paper {
|
||||||
|
|
|
@ -89,4 +89,5 @@
|
||||||
@import "./components/partner_configuration_jours_travail";
|
@import "./components/partner_configuration_jours_travail";
|
||||||
@import "./components/dashbord_session";
|
@import "./components/dashbord_session";
|
||||||
@import "./components/mon_tableau_de_bord";
|
@import "./components/mon_tableau_de_bord";
|
||||||
|
@import "./components/dashbord_formation";
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue