From a1aeffd03af30315d2373cb0714cd4f793ce5544 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Fri, 27 Sep 2024 23:34:14 +0200 Subject: [PATCH 01/31] Added long press to fetch calendar mobile, fixed progress bar calendar fetch styling issue chrome, updated calendar tooltip, fixed landing page horizontal scrolling bug mobile --- src/components/LandingPage/LandingPage.jsx | 9 ++++++-- src/components/LandingPage/LandingPage2.css | 6 ++---- src/components/app/Homeworks/Calendar.css | 23 ++++++++++++++++++--- src/components/app/Homeworks/Calendar.jsx | 14 +++++++++++++ src/components/app/Homeworks/Homeworks.jsx | 2 +- 5 files changed, 44 insertions(+), 10 deletions(-) diff --git a/src/components/LandingPage/LandingPage.jsx b/src/components/LandingPage/LandingPage.jsx index 4431a7e..8f811cc 100644 --- a/src/components/LandingPage/LandingPage.jsx +++ b/src/components/LandingPage/LandingPage.jsx @@ -104,7 +104,7 @@ export default function LandingPage({ token, accountsList }) { parallaxItems.forEach(item => { let speed = item.getAttribute("data-speed"); - let yPos = -(scrollPosition * speed); + let yPos = -(scrollPosition * speed) - 100; item.style.transform = `translateY(${yPos}px)`; }); } @@ -152,6 +152,11 @@ export default function LandingPage({ token, accountsList }) { */} +
@@ -161,7 +166,7 @@ export default function LandingPage({ token, accountsList }) { -
+
{/*
diff --git a/src/components/LandingPage/LandingPage2.css b/src/components/LandingPage/LandingPage2.css index 23e4fd4..2e20f61 100644 --- a/src/components/LandingPage/LandingPage2.css +++ b/src/components/LandingPage/LandingPage2.css @@ -324,16 +324,14 @@ html:has(.landing-page) { /* -------------------------------------------------------------------------- */ .parallax-item { - position: absolute; + position: relative; } .parallax-item.blob1 { left: -80px; - top: min(130vh, 1500px); width: 200px; } .parallax-item.blob2 { - right: -70px; - top: min(130vh, 1500px); + right: -300px; width: 250px; } diff --git a/src/components/app/Homeworks/Calendar.css b/src/components/app/Homeworks/Calendar.css index f93cb09..39f1ea3 100644 --- a/src/components/app/Homeworks/Calendar.css +++ b/src/components/app/Homeworks/Calendar.css @@ -161,8 +161,8 @@ } .calendar .progress-bar { - /* display: none; */ - width: calc(100%-30px); + width: calc(100% - 30px); + /* Fixed the calculation syntax */ border: 1px solid rgba(var(--text-color-alt), 1); border-radius: 10px; margin: 15px; @@ -170,12 +170,29 @@ height: 15px; color: rgba(var(--text-color-alt), .5); display: none; + /* Changed to block to ensure it shows */ } .calendar progress { + -webkit-appearance: none; + /* Ensure consistent styling across browsers */ + appearance: none; + width: 100%; + height: 100%; color: rgba(var(--text-color-alt), .5); } +.calendar progress::-webkit-progress-bar { + background-color: rgba(var(--text-color-alt), .3); + border-radius: 10px; +} + +.calendar progress::-webkit-progress-value { + background-color: rgba(var(--text-color-alt), .5); + border-radius: 10px; +} + .calendar progress::-moz-progress-bar { - background: rgba(var(--text-color-alt), .5); + background-color: rgba(var(--text-color-alt), .5); + border-radius: 10px; } \ No newline at end of file diff --git a/src/components/app/Homeworks/Calendar.jsx b/src/components/app/Homeworks/Calendar.jsx index 50615a4..0c3865f 100644 --- a/src/components/app/Homeworks/Calendar.jsx +++ b/src/components/app/Homeworks/Calendar.jsx @@ -13,6 +13,7 @@ export default function Calendar({ onDateClick }) { const { useUserData, fetchHomeworksSequentially } = useContext(AppContext); const location = useLocation(); const [calendarDays, setCalendarDays] = useState([]); + const [longPressTimeout, setLongPressTimeout] = useState(null); const progressBarRef = useRef(null); const oldSelectedDate = useRef(null); @@ -70,6 +71,17 @@ export default function Calendar({ onDateClick }) { if (event.shiftKey) fetchAllHomeworks(day); }; + const handleTouchStart = (day) => { + const timeout = setTimeout(() => { + fetchAllHomeworks(day); + }, 800); // 800ms long press threshold + setLongPressTimeout(timeout); + }; + + const handleTouchEnd = () => { + clearTimeout(longPressTimeout); + }; + const getDayClass = (day) => { // const dayStr = format(day, 'yyyy-MM-dd'); const isDifferentMonth = format(day, 'MM') !== format(selectedDate, 'MM'); @@ -168,6 +180,8 @@ export default function Calendar({ onDateClick }) { className={getDayClass(day)} style={getDayStyle(day)} onClick={(event) => handleDayClick(day, event)} + onTouchStart={() => handleTouchStart(day)} + onTouchEnd={handleTouchEnd} > {day.getDate()} diff --git a/src/components/app/Homeworks/Homeworks.jsx b/src/components/app/Homeworks/Homeworks.jsx index 4a3a163..89ca803 100644 --- a/src/components/app/Homeworks/Homeworks.jsx +++ b/src/components/app/Homeworks/Homeworks.jsx @@ -92,7 +92,7 @@ export default function Homeworks({ isLoggedIn, activeAccount, fetchHomeworks })

Calendrier

Cliquez sur une date pour accéder aux devoirs associés.


-

SHIFT + CLIC pour charger tous les devoirs à partir de la date sélectionnée jusqu'à aujourd'hui.


+

SHIFT + CLIC ou apppui prolongé pour charger tous les devoirs à partir de la date sélectionnée jusqu'à aujourd'hui.


Légende

GRIS : aujourd'hui

BLEU : devoirs

From e9829fa9c28253efefff06459869d76bbdcb77c1 Mon Sep 17 00:00:00 2001 From: Fefe_du_973 <80718477+Fefedu973@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:12:33 +0200 Subject: [PATCH 02/31] Delete src/components/LandingPage/LandingPage.jsx --- src/components/LandingPage/LandingPage.jsx | 274 --------------------- 1 file changed, 274 deletions(-) delete mode 100644 src/components/LandingPage/LandingPage.jsx diff --git a/src/components/LandingPage/LandingPage.jsx b/src/components/LandingPage/LandingPage.jsx deleted file mode 100644 index 8f811cc..0000000 --- a/src/components/LandingPage/LandingPage.jsx +++ /dev/null @@ -1,274 +0,0 @@ -import { useRef, useEffect, useContext, useState } from "react"; -import { Link, useLocation, useNavigate } from "react-router-dom"; - -import OutlineEffectDiv from "../generic/CustomDivs/OutlineEffectDiv"; -import { AppContext } from "../../App" - -// graphics -import EdpuLogo from "../graphics/EdpuLogo"; -import InfoTypoIcon from "../graphics/InfoTypoIcon"; -import UpArrow from "../graphics/UpArrow"; -import EDPLogo from "../graphics/EDPLogo"; -import EDPLogoFullWidth from "../graphics/EDPLogoFullWidth"; -import DiscordFullLogo from "../graphics/DiscordFullLogo"; -import GitHubFullLogo from "../graphics/GitHubFullLogo"; -import SunIcon from "../graphics/SunIcon"; -import MoonIcon from "../graphics/MoonIcon"; -import HoverFollowDiv from "../generic/CustomDivs/HoverFollowDiv"; - -import "./LandingPage.css"; -import "./LandingPage2.css"; - -export default function LandingPage({ token, accountsList }) { - const { isMobileLayout, isTabletLayout, actualDisplayTheme, useUserSettings } = useContext(AppContext); - - const [isLoggedIn, setIsLoggedIn] = useState(token && accountsList.length > 0); // this one is different from the one in App.jsx - - const [isTop, setIsTop] = useState(true); - const [isScrollNAvigation, setIsScrollNavigation] = useState(false); - const homeSectionRef = useRef(null) - const communitySectionRef = useRef(null) - const openSourceSectionRef = useRef(null) - - const location = useLocation() - const navigate = useNavigate() - - const theme = useUserSettings("displayTheme") - const displayMode = useUserSettings("displayMode").get(); - - const changeTheme = () => { - theme.set(actualDisplayTheme === "light" ? "dark" : "light"); - }; - - useEffect(() => { - setIsLoggedIn(token && accountsList.length > 0); - }, [token, accountsList]) - - useEffect(() => { - const observer = new IntersectionObserver((intersections) => { - for (const intersection of intersections) { - if (intersection.isIntersecting) { - const elementChildren = intersection.target.children - const elements = [elementChildren[0], elementChildren[1].children[0], elementChildren[1].children[1]].flat(); - for (let i = 0; i <= elements.length; ++i) { - setTimeout(() => { - if (elements[i]) { - // elements[i].style.opacity = 1 - elements[i].classList.toggle("visible", true); - } - }, i * 200) - } - } - } - }, { - rootMargin: "0px 0px -250px 0px", - threshold: 0.1, - }) - - if (communitySectionRef.current && openSourceSectionRef.current) { - observer.observe(communitySectionRef.current) - observer.observe(openSourceSectionRef.current) - return () => { - if (communitySectionRef.current) observer.unobserve(communitySectionRef.current) - if (openSourceSectionRef.current) observer.unobserve(openSourceSectionRef.current) - } - } - }, []); - - useEffect(() => { - const handleScroll = () => { - setIsTop(window.scrollY === 0); - }; - window.addEventListener("scroll", handleScroll); - - return () => { - window.removeEventListener("scroll", handleScroll); - }; - }, []); - - useEffect(() => { - if (!location.hash) { - navigate("#home", { replace: true }); - } - const section = document.getElementById(location.hash.slice(1)) - if (section) { - section.scrollIntoView({ block: (location.hash === "#home" ? "start" : "center") }) - } - }, [location.hash]); - - - useEffect(() => { - const handleScroll = () => { - const parallaxItems = document.querySelectorAll(".parallax-item"); - let scrollPosition = window.scrollY; - - parallaxItems.forEach(item => { - let speed = item.getAttribute("data-speed"); - let yPos = -(scrollPosition * speed) - 100; - item.style.transform = `translateY(${yPos}px)`; - }); - } - - document.addEventListener("scroll", handleScroll); - - return () => { - document.removeEventListener("scroll", handleScroll); - } - - }, []) - - return (
- {!isMobileLayout && } -
- -
Service open source non-affilié à Aplim
-
-

Découvrez Ecole Directe Plus

-

EDP offre une expérience unique avec une interface moderne et intuitive, enrichie de fonctionnalités exclusives, le tout de façon gratuite, libre et open-source.

- {isLoggedIn ? "Ouvrir l'app" : "Se connecter"} -
-
- Capture d'écran du site -
-
-
- {(displayMode !== "performance") && <> - {/*
- - - -
*/} -
-
- - - -
-
- - - -
- {/*
- - - -
*/} - } -
-

Une multitude de
fonctionnalités inédites

-
- - -

Points forts

-

Découvrez vos talents cachés grâce à un aperçu rapide de vos points forts. Parce que vous méritez de savoir à quel point vous êtes incroyable, nous mettons en lumière les matières dans lesquelles vous excellez.

-
-
- - -

Calcul automatique et instantané des moyennes

-

Fini les calculs laborieux à la main. EDP fait tout le boulot pour vous. Parce que votre temps est précieux et doit être consacré à des choses plus importantes, comme procrastiner efficacement.

-
-
- - -
-

Thème de couleur

-

Choisissez votre camp : clair comme le jour ou sombre comme votre âme. Passez du mode Clair au mode Sombre en un clic et offrez à vos yeux le repos qu'ils méritent. Parce que même votre interface se doit d'avoir du style.

-
- {/*
- - -
*/} -
-
- - -

Dernières notes

-

Un coup d'œil et vous saurez tout. Avec l'aperçu rapide des dernières notes, regarder vos résultats en vif pendant l'intercours sera plus rapide que la formule 1 de Max Verstappen.

-
-
- - -

Score de Streak

-

Atteignez le nirvana académique avec le Score de streak. Surpassez vous, cumulez les bonnes notes et débloquez des badges ! N'hésitez pas à flex quand vous avez une meilleure streak que vos amis.

-
-
- - -

Contrôles à venir

-

Restez aux aguets avec l'aperçu des prochains contrôles. Anticipez les futurs contrôles et organisez vos révisions comme un pro. Enfin, en théorie… on ne peut pas vous garantir que vous ne procrastinerez pas quand même.

-
-
- - -

Sécurité et confidentialité

-

Votre sécurité, notre priorité, parce qu’il n’y a que vous et votre conscience qui devez connaître vos petits secrets académiques. EDP ne collecte AUCUNE information personnelle ou personnellement identifiable sur les utilisateurs du service. En tant que service non-affilié à Aplim, nous utilisons l'API d'EcoleDirecte pour que vous ayez accès à vos informations.

-
-
-
-
-
-
-

Un communauté passionnée et bienveillante

-
- -

Rejoignez notre serveur Discord !
Vous pourrez y rencontrer les développeurs et discuter avec les membres les plus investis d'Ecole Directe Plus !

-
-
-
-

Un projet développé par des élèves, pour les élèves

-
-

EDP est un projet open source distribué sous licence MIT, n'importe qui peut participer !
Nous partageons en toute transparence le code source d'EDP sur notre dépôt GitHub. Ainsi, n'importe qui peut contribuer au projet, rapporter des bugs, ou auditer le code à la recherche de failles. C'est une garantie de sécurité, de fiabilité et de résilience.

- -
-
-
- -

Prêt à basculer sur Ecole Directe Plus ?

-

Il vous suffit d'identifiants EcoleDirecte

- {isLoggedIn ? "Ouvrir l'app" : "Se connecter"} -
-
-
- -
    -
  • Connexion
  • -
  • Confidentialité
  • -
  • Conditions d'utilisation
  • -
  • Faire un retour
  • -
  • Tableau de bord
  • -
  • Notes
  • -
  • Cahier de texte
  • -
  • Emploi du temps
  • -
  • Messagerie
  • -
  • Paramètres
  • -
  • Compte
  • -
  • EDP Unblock
  • -
- -
-
); -} \ No newline at end of file From ce53e175725664327c76e4845eeda4575224efa7 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:18:21 +0200 Subject: [PATCH 03/31] Revert "Delete src/components/LandingPage/LandingPage.jsx" This reverts commit e9829fa9c28253efefff06459869d76bbdcb77c1. --- src/components/LandingPage/LandingPage.jsx | 274 +++++++++++++++++++++ 1 file changed, 274 insertions(+) create mode 100644 src/components/LandingPage/LandingPage.jsx diff --git a/src/components/LandingPage/LandingPage.jsx b/src/components/LandingPage/LandingPage.jsx new file mode 100644 index 0000000..8f811cc --- /dev/null +++ b/src/components/LandingPage/LandingPage.jsx @@ -0,0 +1,274 @@ +import { useRef, useEffect, useContext, useState } from "react"; +import { Link, useLocation, useNavigate } from "react-router-dom"; + +import OutlineEffectDiv from "../generic/CustomDivs/OutlineEffectDiv"; +import { AppContext } from "../../App" + +// graphics +import EdpuLogo from "../graphics/EdpuLogo"; +import InfoTypoIcon from "../graphics/InfoTypoIcon"; +import UpArrow from "../graphics/UpArrow"; +import EDPLogo from "../graphics/EDPLogo"; +import EDPLogoFullWidth from "../graphics/EDPLogoFullWidth"; +import DiscordFullLogo from "../graphics/DiscordFullLogo"; +import GitHubFullLogo from "../graphics/GitHubFullLogo"; +import SunIcon from "../graphics/SunIcon"; +import MoonIcon from "../graphics/MoonIcon"; +import HoverFollowDiv from "../generic/CustomDivs/HoverFollowDiv"; + +import "./LandingPage.css"; +import "./LandingPage2.css"; + +export default function LandingPage({ token, accountsList }) { + const { isMobileLayout, isTabletLayout, actualDisplayTheme, useUserSettings } = useContext(AppContext); + + const [isLoggedIn, setIsLoggedIn] = useState(token && accountsList.length > 0); // this one is different from the one in App.jsx + + const [isTop, setIsTop] = useState(true); + const [isScrollNAvigation, setIsScrollNavigation] = useState(false); + const homeSectionRef = useRef(null) + const communitySectionRef = useRef(null) + const openSourceSectionRef = useRef(null) + + const location = useLocation() + const navigate = useNavigate() + + const theme = useUserSettings("displayTheme") + const displayMode = useUserSettings("displayMode").get(); + + const changeTheme = () => { + theme.set(actualDisplayTheme === "light" ? "dark" : "light"); + }; + + useEffect(() => { + setIsLoggedIn(token && accountsList.length > 0); + }, [token, accountsList]) + + useEffect(() => { + const observer = new IntersectionObserver((intersections) => { + for (const intersection of intersections) { + if (intersection.isIntersecting) { + const elementChildren = intersection.target.children + const elements = [elementChildren[0], elementChildren[1].children[0], elementChildren[1].children[1]].flat(); + for (let i = 0; i <= elements.length; ++i) { + setTimeout(() => { + if (elements[i]) { + // elements[i].style.opacity = 1 + elements[i].classList.toggle("visible", true); + } + }, i * 200) + } + } + } + }, { + rootMargin: "0px 0px -250px 0px", + threshold: 0.1, + }) + + if (communitySectionRef.current && openSourceSectionRef.current) { + observer.observe(communitySectionRef.current) + observer.observe(openSourceSectionRef.current) + return () => { + if (communitySectionRef.current) observer.unobserve(communitySectionRef.current) + if (openSourceSectionRef.current) observer.unobserve(openSourceSectionRef.current) + } + } + }, []); + + useEffect(() => { + const handleScroll = () => { + setIsTop(window.scrollY === 0); + }; + window.addEventListener("scroll", handleScroll); + + return () => { + window.removeEventListener("scroll", handleScroll); + }; + }, []); + + useEffect(() => { + if (!location.hash) { + navigate("#home", { replace: true }); + } + const section = document.getElementById(location.hash.slice(1)) + if (section) { + section.scrollIntoView({ block: (location.hash === "#home" ? "start" : "center") }) + } + }, [location.hash]); + + + useEffect(() => { + const handleScroll = () => { + const parallaxItems = document.querySelectorAll(".parallax-item"); + let scrollPosition = window.scrollY; + + parallaxItems.forEach(item => { + let speed = item.getAttribute("data-speed"); + let yPos = -(scrollPosition * speed) - 100; + item.style.transform = `translateY(${yPos}px)`; + }); + } + + document.addEventListener("scroll", handleScroll); + + return () => { + document.removeEventListener("scroll", handleScroll); + } + + }, []) + + return (
+ {!isMobileLayout && } +
+ +
Service open source non-affilié à Aplim
+
+

Découvrez Ecole Directe Plus

+

EDP offre une expérience unique avec une interface moderne et intuitive, enrichie de fonctionnalités exclusives, le tout de façon gratuite, libre et open-source.

+ {isLoggedIn ? "Ouvrir l'app" : "Se connecter"} +
+
+ Capture d'écran du site +
+
+
+ {(displayMode !== "performance") && <> + {/*
+ + + +
*/} +
+
+ + + +
+
+ + + +
+ {/*
+ + + +
*/} + } +
+

Une multitude de
fonctionnalités inédites

+
+ + +

Points forts

+

Découvrez vos talents cachés grâce à un aperçu rapide de vos points forts. Parce que vous méritez de savoir à quel point vous êtes incroyable, nous mettons en lumière les matières dans lesquelles vous excellez.

+
+
+ + +

Calcul automatique et instantané des moyennes

+

Fini les calculs laborieux à la main. EDP fait tout le boulot pour vous. Parce que votre temps est précieux et doit être consacré à des choses plus importantes, comme procrastiner efficacement.

+
+
+ + +
+

Thème de couleur

+

Choisissez votre camp : clair comme le jour ou sombre comme votre âme. Passez du mode Clair au mode Sombre en un clic et offrez à vos yeux le repos qu'ils méritent. Parce que même votre interface se doit d'avoir du style.

+
+ {/*
+ + +
*/} +
+
+ + +

Dernières notes

+

Un coup d'œil et vous saurez tout. Avec l'aperçu rapide des dernières notes, regarder vos résultats en vif pendant l'intercours sera plus rapide que la formule 1 de Max Verstappen.

+
+
+ + +

Score de Streak

+

Atteignez le nirvana académique avec le Score de streak. Surpassez vous, cumulez les bonnes notes et débloquez des badges ! N'hésitez pas à flex quand vous avez une meilleure streak que vos amis.

+
+
+ + +

Contrôles à venir

+

Restez aux aguets avec l'aperçu des prochains contrôles. Anticipez les futurs contrôles et organisez vos révisions comme un pro. Enfin, en théorie… on ne peut pas vous garantir que vous ne procrastinerez pas quand même.

+
+
+ + +

Sécurité et confidentialité

+

Votre sécurité, notre priorité, parce qu’il n’y a que vous et votre conscience qui devez connaître vos petits secrets académiques. EDP ne collecte AUCUNE information personnelle ou personnellement identifiable sur les utilisateurs du service. En tant que service non-affilié à Aplim, nous utilisons l'API d'EcoleDirecte pour que vous ayez accès à vos informations.

+
+
+
+
+
+
+

Un communauté passionnée et bienveillante

+
+ +

Rejoignez notre serveur Discord !
Vous pourrez y rencontrer les développeurs et discuter avec les membres les plus investis d'Ecole Directe Plus !

+
+
+
+

Un projet développé par des élèves, pour les élèves

+
+

EDP est un projet open source distribué sous licence MIT, n'importe qui peut participer !
Nous partageons en toute transparence le code source d'EDP sur notre dépôt GitHub. Ainsi, n'importe qui peut contribuer au projet, rapporter des bugs, ou auditer le code à la recherche de failles. C'est une garantie de sécurité, de fiabilité et de résilience.

+ +
+
+
+ +

Prêt à basculer sur Ecole Directe Plus ?

+

Il vous suffit d'identifiants EcoleDirecte

+ {isLoggedIn ? "Ouvrir l'app" : "Se connecter"} +
+
+
+ +
    +
  • Connexion
  • +
  • Confidentialité
  • +
  • Conditions d'utilisation
  • +
  • Faire un retour
  • +
  • Tableau de bord
  • +
  • Notes
  • +
  • Cahier de texte
  • +
  • Emploi du temps
  • +
  • Messagerie
  • +
  • Paramètres
  • +
  • Compte
  • +
  • EDP Unblock
  • +
+ +
+
); +} \ No newline at end of file From a1d1a92ceb1a4ef47bc066c03606fae7c66d8e43 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:22:33 +0200 Subject: [PATCH 04/31] ready to merge --- src/components/LandingPage/LandingPage.css | 16 ++-- src/components/LandingPage/LandingPage.jsx | 11 +-- src/components/LandingPage/LandingPage2.css | 85 ++++++++++++++++----- 3 files changed, 74 insertions(+), 38 deletions(-) diff --git a/src/components/LandingPage/LandingPage.css b/src/components/LandingPage/LandingPage.css index 6e62bd4..7b28970 100644 --- a/src/components/LandingPage/LandingPage.css +++ b/src/components/LandingPage/LandingPage.css @@ -36,11 +36,11 @@ transition: .2s ease; } -#nav-bar .edpu-logo > path { +#nav-bar .edpu-logo>path { fill: rgba(var(--text-color-alt), .7); } -a[href="/edp-unblock"]:hover .edpu-logo > path { +a[href="/edp-unblock"]:hover .edpu-logo>path { fill: rgba(var(--text-color-main-reverse), 0.7) !important; } @@ -56,23 +56,19 @@ a[href="/edp-unblock"]:hover .edpu-logo > path { justify-content: center; } -.landing-page :is( - .nav-links a.selected, +.landing-page :is(.nav-links a.selected, .nav-links a:hover, .nav-login:hover, - .change-theme:hover -) { + .change-theme:hover) { background-color: rgba(var(--text-color-alt), .8); color: rgba(var(--text-color-main-reverse), 0.8); } -.landing-page :is( - .nav-logo, +.landing-page :is(.nav-logo, .nav-login, .change-theme, .nav-links, - .go-to-top -) { + .go-to-top) { background-color: rgb(var(--background-color-2), .7); backdrop-filter: blur(4px); } diff --git a/src/components/LandingPage/LandingPage.jsx b/src/components/LandingPage/LandingPage.jsx index 8f811cc..2187db4 100644 --- a/src/components/LandingPage/LandingPage.jsx +++ b/src/components/LandingPage/LandingPage.jsx @@ -64,7 +64,7 @@ export default function LandingPage({ token, accountsList }) { rootMargin: "0px 0px -250px 0px", threshold: 0.1, }) - + if (communitySectionRef.current && openSourceSectionRef.current) { observer.observe(communitySectionRef.current) observer.observe(openSourceSectionRef.current) @@ -104,7 +104,7 @@ export default function LandingPage({ token, accountsList }) { parallaxItems.forEach(item => { let speed = item.getAttribute("data-speed"); - let yPos = -(scrollPosition * speed) - 100; + let yPos = -(scrollPosition * speed); item.style.transform = `translateY(${yPos}px)`; }); } @@ -152,11 +152,6 @@ export default function LandingPage({ token, accountsList }) {
*/} -
@@ -166,7 +161,7 @@ export default function LandingPage({ token, accountsList }) { -
+ {/*
diff --git a/src/components/LandingPage/LandingPage2.css b/src/components/LandingPage/LandingPage2.css index 2e20f61..0673d7c 100644 --- a/src/components/LandingPage/LandingPage2.css +++ b/src/components/LandingPage/LandingPage2.css @@ -1,5 +1,3 @@ - - html:has(.landing-page) { overflow-x: hidden; scroll-behavior: smooth; @@ -66,10 +64,12 @@ html:has(.landing-page) { flex-flow: row nowrap; gap: 8px; } + .landing-page .affiliation-disclaimer svg { height: 12px; transform: scale(1.6); } + .landing-page .affiliation-disclaimer svg path { stroke: rgb(var(--text-color-alt)); } @@ -91,9 +91,11 @@ html:has(.landing-page) { .landing-page h1 { font-size: var(--font-size-36); } + .landing-page .heading-emphasis { color: rgb(var(--text-color-alt)); } + #home p { color: rgb(var(--text-color-alt)); margin: 0 auto; @@ -112,6 +114,7 @@ html:has(.landing-page) { outline: none; overflow: hidden; } + .landing-page .login-call-to-action::after { content: "-->"; display: inline-block; @@ -128,6 +131,7 @@ html:has(.landing-page) { color: rgb(var(--text-color-main-reverse)); box-shadow: 0 0 20px rgb(var(--text-color-main), .3); } + .landing-page .login-call-to-action:is(:hover, :focus-visible)::after { content: "-->"; opacity: 1; @@ -148,18 +152,22 @@ html:has(.landing-page) { position: relative; transition: transform .3s ease; } + .landing-page .fade-out-image:has(.mobile) { width: min(350px, calc(100% - 40px)); } + .landing-page .fade-out-image:has(.tablet) { width: min(450px, calc(100% - 40px)); } + .landing-page .fade-out-image img { width: 100%; display: block; border: 1px solid rgba(var(--text-color-alt), .2); border-radius: 10px; } + .landing-page .fade-out-image::after { content: ""; background: linear-gradient(180deg, transparent, rgb(var(--background-color-0)) 90%, rgb(var(--background-color-0))); @@ -217,9 +225,11 @@ html:has(.landing-page) { #bento .bento-card h4 { margin-bottom: 10px; } + #bento .bento-card p { color: rgb(var(--text-color-alt)); } + #bento .bento-card:hover p { color: rgba(var(--text-color-main), .9); } @@ -228,13 +238,33 @@ html:has(.landing-page) { background-color: rgba(var(--background-color-0), .95); } -.div1 { grid-area: 1 / 1 / 2 / 2; } -.div2 { grid-area: 1 / 2 / 3 / 3; } -.div3 { grid-area: 2 / 1 / 4 / 2; } -.div4 { grid-area: 3 / 2 / 4 / 3; } -.div5 { grid-area: 4 / 1 / 5 / 2; } -.div6 { grid-area: 5 / 1 / 6 / 2; } -.div7 { grid-area: 4 / 2 / 6 / 3; } +.div1 { + grid-area: 1 / 1 / 2 / 2; +} + +.div2 { + grid-area: 1 / 2 / 3 / 3; +} + +.div3 { + grid-area: 2 / 1 / 4 / 2; +} + +.div4 { + grid-area: 3 / 2 / 4 / 3; +} + +.div5 { + grid-area: 4 / 1 / 5 / 2; +} + +.div6 { + grid-area: 5 / 1 / 6 / 2; +} + +.div7 { + grid-area: 4 / 2 / 6 / 3; +} #bento .div3 .inner-container { height: 100%; @@ -311,11 +341,11 @@ html:has(.landing-page) { scale: -1 1; } -#bento .div3 .theme-buttons button:first-child svg path{ +#bento .div3 .theme-buttons button:first-child svg path { stroke: black; } -#bento .div3 .theme-buttons button:last-child svg path{ +#bento .div3 .theme-buttons button:last-child svg path { stroke: white; } @@ -324,14 +354,18 @@ html:has(.landing-page) { /* -------------------------------------------------------------------------- */ .parallax-item { - position: relative; + position: absolute; } + .parallax-item.blob1 { left: -80px; + top: min(130vh, 1500px); width: 200px; } + .parallax-item.blob2 { - right: -300px; + right: -70px; + top: min(130vh, 1500px); width: 250px; } @@ -341,6 +375,7 @@ html:has(.landing-page) { filter: blur(50px); animation: blob-rotate linear 10s infinite; } + .blob path { fill: rgb(var(--text-color-alt)) } @@ -349,6 +384,7 @@ html:has(.landing-page) { from { rotate: 0deg; } + to { rotate: 359deg; } @@ -382,7 +418,7 @@ html:has(.landing-page) { text-decoration-color: rgba(var(--text-color-main), 1); } -.floating-section > h2 { +.floating-section>h2 { padding-inline: 10%; text-align: center; opacity: 0; @@ -390,7 +426,7 @@ html:has(.landing-page) { transition: opacity 2s, transform 1s; } -.floating-section > div { +.floating-section>div { width: 50%; display: flex; flex-flow: row wrap; @@ -399,7 +435,7 @@ html:has(.landing-page) { gap: 50px; } -.floating-section > div > :is(p, a) { +.floating-section>div> :is(p, a) { opacity: 0; transform: translateY(-50px); transition: opacity 2s, transform 1s; @@ -411,16 +447,18 @@ html:has(.landing-page) { color: rgb(var(--text-color-alt)); } -.floating-section > div > a { +.floating-section>div>a { width: 250px; display: flex; align-items: center; justify-content: center; transition: opacity 2s, transform 2s, filter .2s; } -.floating-section > div > a:is(:hover, :focus-visible) { + +.floating-section>div>a:is(:hover, :focus-visible) { filter: drop-shadow(0 0 15px rgba(var(--text-color-main), .3)) } + .floating-section .github-logo { width: 180px; } @@ -448,12 +486,15 @@ html:has(.landing-page) { display: flex; flex-flow: column nowrap; } + .last-call-to-action h3 { font-size: var(--font-size-24); } + .last-call-to-action p { color: rgb(var(--text-color-alt)); } + .last-call-to-action a { width: max-content; margin: 0 auto; @@ -508,12 +549,15 @@ html:has(.landing-page) { color: rgb(var(--text-color-alt)); transition: .1s; } + .landing-page ul.sitemap a:is(:hover, :focus-visible) { color: rgb(var(--text-color-main)); } + .landing-page ul.sitemap a:active { opacity: .8; } + .landing-page ul.sitemap a.disabled { pointer-events: none; opacity: .5; @@ -523,6 +567,7 @@ html:has(.landing-page) { .landing-page footer { flex-flow: column nowrap; } + .landing-page .footer-logo { flex: auto; } @@ -541,8 +586,8 @@ html:has(.landing-page) { flex-direction: column; align-items: center; } - - #bento .bento-grid > div { + + #bento .bento-grid>div { max-width: 400px; } } \ No newline at end of file From 3c9d0c440e240d36b16fb473a88e288e768bff98 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Wed, 9 Oct 2024 07:22:50 +0200 Subject: [PATCH 05/31] =?UTF-8?q?Added=20the=20documents=20section=20?= =?UTF-8?q?=F0=9F=A5=B3.=20Fixed=20page=20small=20scroll=20when=20an=20ele?= =?UTF-8?q?ment=20height=20was=20increasing.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added the documents section 🥳. Fixed page small scroll when an element height was increasing. --- src/App.jsx | 59 +++++++- src/components/app/Account/Account.css | 79 ++++++++++ src/components/app/Account/Account.jsx | 202 ++++++++++++++++++++++--- src/components/app/Header/Header.css | 69 +++++++-- 4 files changed, 374 insertions(+), 35 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 8ee729b..4a886ab 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1937,6 +1937,63 @@ export default function App({ edpFetch }) { .catch(error => console.error('Erreur lors du téléchargement du fichier:', error)) } + async function fetchAdministrativeDocuments(selectedYear, controller = (new AbortController())) { + abortControllers.current.push(controller); + return edpFetch( + getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[activeAccount].accountType === "E" ? "eleves": "famille"}Documents.awp?archive=${selectedYear}&verbe=get&v=${apiVersion}`, true), + { + method: "POST", + headers: { + "x-token": tokenState, + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: 'data={}', + signal: controller.signal, + referrerPolicy: "no-referrer", + }, + "json" + ) + .then((response) => { + let code = response.code; + if (code === 200) { + + const formatDocument = (documents) => + documents.map((e) => { + const [year, month, day] = e.date.split('-'); + const formattedDate = `${day}-${month}-${year}`; + return new File(e.id, e.type, `${e.libelle}.pdf`, undefined, { date: formattedDate }); + }); + + const administrativeDocuments = formatDocument(response.data.administratifs); + const notesDocuments = formatDocument(response.data.notes); + const vieScolaireDocuments = formatDocument(response.data.viescolaire); + const entrepriseDocuments = formatDocument(response.data.entreprises); + const facturesDocuments = formatDocument(response.data.factures); + // const insReinsDocuments = formatDocument(response.data.inscriptionsReinscriptions); + + + const responseDocuments = { + administratifs: administrativeDocuments, + notes: notesDocuments, + viescolaire: vieScolaireDocuments, + entreprises: entrepriseDocuments, + factures: facturesDocuments, + // inscriptionsReinscriptions: insReinsDocuments + } + + changeUserData("administrativeDocuments", responseDocuments); + } else if (code === 520 || code === 525) { + console.log("INVALID TOKEN: LOGIN REQUIRED"); + requireLogin(); + } + setTokenState((old) => (response?.token || old)); + }) + .finally(() => { + abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); + }); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // End Of Fetch Functions // @@ -2169,7 +2226,7 @@ export default function App({ edpFetch }) { path: "account", }, { - element: , + element: , path: ":userId/account" }, { diff --git a/src/components/app/Account/Account.css b/src/components/app/Account/Account.css index 94acc92..a6c41e2 100644 --- a/src/components/app/Account/Account.css +++ b/src/components/app/Account/Account.css @@ -68,6 +68,7 @@ body:has(#account) { #documents.frame { display: flex; flex-flow: column nowrap; + overflow: scroll; } .coming-soon { height: 100%; @@ -170,4 +171,82 @@ body:has(#account) { 11% { transform: translateY(0); } +} + +.file-component { + z-index: 0 !important; + margin: 5px; + background-color: transparent; + border: none; + height: 70px; +} + +.file-component .file-icon { + width: 50px +} + +.document-category h3 { + display: flex; + align-items: center; + margin: 0; + /* To remove any default margins from the h3 */ + var(--font-size-20); + /* Optional: adjust based on your design */ +} + +.document-category h3::after { + content: ''; + flex-grow: 1; + height: 1px; + margin-left: 10px; + /* Space between title and the line */ + background-color: #4a48bd; + /* Customize color as needed */ + border: none; +} + +.year-selector { + width: 160px; +} + +.frame-heading-container { + display: flex; + flex: auto 200px; + justify-content: center; + align-items: center; + margin-bottom: 20px; +} + +.frame-heading-documents { + margin: 0 auto; + padding-left: 160px; +} + +@media only screen and (max-width: 1150px) { + .frame-heading-documents { + padding-left: 0; + } +} + +.file-box { + display: flex; + align-items: center; +} + +.file-date { + margin-left: auto; + margin-right: 30px; + font-size: var(--font-size-16); + font-weight: 500; +} +.no-available-documents { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + width: 100%; +} + +.document-container { + height: 100%; } \ No newline at end of file diff --git a/src/components/app/Account/Account.jsx b/src/components/app/Account/Account.jsx index 64c9f03..0832bac 100644 --- a/src/components/app/Account/Account.jsx +++ b/src/components/app/Account/Account.jsx @@ -1,22 +1,56 @@ - -import { useRef, useEffect, useContext } from "react"; +import { useRef, useEffect, useContext, useState } from "react"; import { AppContext } from "../../../App"; import HolographicDiv from "../../generic/CustomDivs/HolographicDiv"; import Button from "../../generic/UserInputs/Button"; +import DropDownMenu from "../../generic/UserInputs/DropDownMenu"; import { getProxiedURL } from "../../../utils/requests"; +import FileComponent from "../../generic/FileComponent"; import "./Account.css"; -export default function Account({ schoolLife, fetchSchoolLife, sortSchoolLife, isLoggedIn, activeAccount }) { +export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrativeDocuments, sortSchoolLife, isLoggedIn, activeAccount }) { const { accountsListState, useUserData, useUserSettings } = useContext(AppContext) const settings = useUserSettings(); const userData = useUserData(); + const moduletype = accountsListState[activeAccount].accountType === "E" ? "DOCUMENTS_ELEVE" : "DOCUMENTS"; + const module = accountsListState[activeAccount].modules.find(module => module.code === moduletype); + const availableYearsArray = module.params.AnneeArchive.split(","); + const lastYear = availableYearsArray[availableYearsArray.length - 1]; + const [startYear, endYear] = lastYear.split('-').map(Number); + const nextYear = `${endYear}-${endYear + 1}`; + availableYearsArray.push(nextYear); + const profilePictureRefs = useRef([]); + //fetch documents on page load + useEffect(() => { + if (isLoggedIn) { + const controller = new AbortController(); + const fetchDocuments = async () => { + try { + await fetchAdministrativeDocuments('', controller); + let data = userData.get("administrativeDocuments"); + if (data) { + setDocuments(data); + } else { + setDocuments({ factures: [], notes: [], viescolaire: [], administratifs: [], entreprises: [] }); + } + console.log("Documents fetched for year:", selectedYear, data); + } catch (error) { + console.error("Error fetching documents:", error); + } + }; + fetchDocuments(); + return () => { + controller.abort(); + }; + } + }, [isLoggedIn]); + useEffect(() => { document.title = "Compte • Ecole Directe Plus"; }, []); @@ -37,7 +71,7 @@ export default function Account({ schoolLife, fetchSchoolLife, sortSchoolLife, i const controller = new AbortController(); if (isLoggedIn) { if (schoolLife.length < 1 || schoolLife[activeAccount] === undefined) { - console.log("fetchSchoolLife") + console.log("fetchSchoolLife"); fetchSchoolLife(controller); } else { console.log("schoolLife:", schoolLife); @@ -46,11 +80,45 @@ export default function Account({ schoolLife, fetchSchoolLife, sortSchoolLife, i } return () => { - // console.log("controller.abort") controller.abort(); } }, [schoolLife, isLoggedIn, activeAccount]); + const [selectedYear, setSelectedYear] = useState(availableYearsArray[availableYearsArray.length - 1]); + const [documents, setDocuments] = useState({ factures: [], notes: [], viescolaire: [], administratifs: [], entreprises: [] }); + + // handle year change of dropdown + function handleYearChange(year) { + setSelectedYear(year); + console.log("Selected year:", year); + } + + // fetch documents on page load and year change + useEffect(() => { + if (isLoggedIn && selectedYear) { + const controller = new AbortController(); + const fetchDocuments = async () => { + try { + let selectedYearFetch = selectedYear === availableYearsArray[availableYearsArray.length - 1] ? '' : selectedYear; + await fetchAdministrativeDocuments(selectedYearFetch, controller); + let data = userData.get("administrativeDocuments"); + if (data) { + setDocuments(data); + } else { + setDocuments({ factures: [], notes: [], viescolaire: [], administratifs: [], entreprises: [] }); + } + console.log("Documents fetched for year:", selectedYear, data); + } catch (error) { + console.error("Error fetching documents:", error); + } + }; + fetchDocuments(); + return () => { + controller.abort(); + }; + } + }, [selectedYear, isLoggedIn]); + return (
@@ -66,13 +134,13 @@ export default function Account({ schoolLife, fetchSchoolLife, sortSchoolLife, i
Dernière connexion : Email : {accountsListState[activeAccount].email} {accountsListState[activeAccount].phoneNumber && @@ -85,28 +153,122 @@ export default function Account({ schoolLife, fetchSchoolLife, sortSchoolLife, i
-

Documents

-
- En cours de développement (bientôt disponible) -
+ {module.enable ? ( + <> +
+

Documents

+ year)} + selected={selectedYear} + onChange={handleYearChange} + className="year-selector" + />
+
+ {documents?.administratifs?.length === 0 && + documents?.notes?.length === 0 && + documents?.viescolaire?.length === 0 && + documents?.entreprises?.length === 0 && + documents?.factures?.length === 0 + // && documents?.inscriptionsReinscriptions?.length === 0 + ? ( + Aucun document disponible. + ) : ( + <> + {/* {module.params.DocumentsInscriptionsReinscriptionsActif === "1" && documents?.inscriptionsReinscriptions?.length > 0 && ( +
+

Inscriptions & Réinscriptions

+ {documents.inscriptionsReinscriptions.map(file => ( +
+ +

{file.specialParams.date}

+
+ ))} +
+ )} */} + {module.params.DocumentsFactureActif === "1" && documents?.factures?.length > 0 && ( +
+

Factures

+ {documents.factures.map(file => ( +
+ +

{file.specialParams.date}

+
+ ))} +
+ )} + {module.params.DocumentsAdministratifActif === "1" && documents?.administratifs?.length > 0 && ( +
+

Documents Administratifs

+ {documents.administratifs.map(file => ( +
+ +

{file.specialParams.date}

+
+ ))} +
+ )} + {module.params.DocumentsNotesActif === "1" && documents?.notes?.length > 0 && ( +
+

Notes

+ {documents.notes.map(file => ( +
+ +

{file.specialParams.date}

+
+ ))} +
+ )} + {module.params.DocumentsVSActif === "1" && documents?.viescolaire?.length > 0 && ( +
+

Vie Scolaire

+ {documents.viescolaire.map(file => ( +
+ +

{file.specialParams.date}

+
+ ))} +
+ )} + {module.params.DocumentsEntrepriseActif === "1" && documents?.entreprises?.length > 0 && ( +
+

Documents Entreprise

+ {documents.entreprises.map(file => ( +
+ +

{file.specialParams.date}

+
+ ))} +
+ )} + + )} +
+ + ) : ( +
+ Le module de documents n'est pas accessible. +
+ )}

Comportement

Retards - {userData.get("sortedSchoolLife")?.delays.length ?? <>...} + {userData.get("sortedSchoolLife")?.delays.length ?? <>...}
Absences - {userData.get("sortedSchoolLife")?.absences.length ?? <>...} + {userData.get("sortedSchoolLife")?.absences.length ?? <>...}
Sanctions - {userData.get("sortedSchoolLife")?.sanctions.length ?? <>...} + {userData.get("sortedSchoolLife")?.sanctions.length ?? <>...}
) -} +} \ No newline at end of file diff --git a/src/components/app/Header/Header.css b/src/components/app/Header/Header.css index f6ce531..cbe2dba 100644 --- a/src/components/app/Header/Header.css +++ b/src/components/app/Header/Header.css @@ -1,4 +1,3 @@ - /* - - - header - - - */ #app { @@ -47,13 +46,15 @@ flex-grow: 0.2; */ flex-grow: 0.25; width: 100px; - + /* background-color: red; */ } + .header-logo-container a { outline: none; position: relative; } + .header-logo-container #version-tag { width: max-content; position: absolute; @@ -67,7 +68,7 @@ border-radius: 7px; box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); pointer-events: none; - + } .header-logo-container #header-logo { @@ -75,9 +76,11 @@ width: auto; transition: 0.2s; } + .header-logo-container #header-logo:hover { filter: drop-shadow(0 0 20px rgba(var(--text-color-main), 0.2)); } + .header-logo-container #header-logo:active { filter: drop-shadow(0 0 20px rgba(var(--text-color-main), 0.4)); } @@ -105,11 +108,25 @@ height: inherit; } -li#dashboard.header-button-container { order: 1; } -li#grades.header-button-container { order: 2; } -li#homeworks.header-button-container { order: 3; } -li#timetable.header-button-container { order: 4; } -li#messaging.header-button-container { order: 5; } +li#dashboard.header-button-container { + order: 1; +} + +li#grades.header-button-container { + order: 2; +} + +li#homeworks.header-button-container { + order: 3; +} + +li#timetable.header-button-container { + order: 4; +} + +li#messaging.header-button-container { + order: 5; +} /* - - - account-selection - - - */ @@ -120,6 +137,7 @@ li#messaging.header-button-container { order: 5; } /* width: 400px; */ /* padding: 5px; */ } + .header-menu .account-selection #account-selector { width: 100%; width: 400px; @@ -131,7 +149,7 @@ li#messaging.header-button-container { order: 5; } main.content { height: 100%; - overflow: auto; + overflow: visible; scroll-behavior: smooth; /* overscroll-behavior: contain; */ width: 100%; @@ -148,7 +166,7 @@ main.content { @media only screen and (max-width: 869px) { .header-container { order: 1; - } + } .header-menu { border-radius: 20px 20px 0 0; @@ -167,10 +185,12 @@ main.content { padding: 30px clamp(15px, 3.5vw, 30px); padding-bottom: 0; } + main.content #account-selector { max-height: 80px; padding: 0; } + main.content #account-selector #options-wrapper { background-color: rgb(var(--background-color-1)); box-shadow: var(--box-shadow-window); @@ -188,20 +208,21 @@ main.content { } @media only screen and (max-width: 450px) { - + .standalone .header-menu { padding-bottom: 25px; } - + .header-container:not(.standalone) { max-height: 75px; } - - + + .header-button .icon-container svg { height: 45px } + .header-button .notifications { left: 30px; } @@ -212,3 +233,23 @@ main.content { border-radius: 0 0 20px 20px; } } + +.content:has(#account) { + overflow: scroll; +} + +.content:has(#messaging) { + overflow: scroll; +} + +.content:has(#homeworks) { + overflow: scroll; +} + +.content:has(#dashboard) { + overflow: scroll; +} + +.content:has(#grades) { + overflow: scroll; +} \ No newline at end of file From 03c5f3a56cbbc37b75fb721ce6a330a3775dd9e2 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sun, 13 Oct 2024 19:21:49 +0200 Subject: [PATCH 06/31] Added rank in a subject Added rank in a subject --- src/App.jsx | 1 + src/components/app/Grades/Information.jsx | 4 ++++ src/data/grades.json | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 16ad50d..0856d5f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1024,6 +1024,7 @@ export default function App({ edpFetch }) { enabledFeatures.moyenneMin = settings.moyenneMin; enabledFeatures.moyenneMax = settings.moyenneMax; enabledFeatures.coefficient = settings.coefficientNote; + enabledFeatures.rank = settings.moyenneRang; // add the average of all subjects a special type of chart for (const period in periods) { diff --git a/src/components/app/Grades/Information.jsx b/src/components/app/Grades/Information.jsx index c1c385b..073cc94 100644 --- a/src/components/app/Grades/Information.jsx +++ b/src/components/app/Grades/Information.jsx @@ -243,6 +243,10 @@ export default function Information({ sortedGrades, activeAccount, selectedPerio
Max
{selectedElement.maxAverage.toString().replace(".", ",")}{isNaN(selectedElement.maxAverage) ? null : /20}
} + {grades.get("gradesEnabledFeatures")?.rank &&
+
Rang
+
{selectedElement.rank}
+
}

coefficient : {selectedElement.coef}


diff --git a/src/data/grades.json b/src/data/grades.json index 5dd6bee..034a1a6 100644 --- a/src/data/grades.json +++ b/src/data/grades.json @@ -1 +1 @@ -{"code": 200, "token": "296d5603-35b2-4a3c-b34e-3510500346d8", "host": "HTTP46", "data": {"foStat": "22121810019", "periodes": [{"idPeriode": "A001", "codePeriode": "A001", "periode": "1er Trimestre", "annuel": false, "dateDebut": "2022-09-01", "dateFin": "2022-12-02", "examenBlanc": false, "cloture": true, "dateConseil": "2022-12-08", "heureConseil": "16:30", "heureFinConseil": "17:30", "salleConseil": "207", "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "moyenneGenerale": "0", "moyenneClasse": "12", "moyenneMin": "2", "moyenneMax": "13", "nomPP": "M. OHL P.", "appreciationPP": "Un bon trimestre de la part d'Saumon mais les r\u00e9sultats dans les mati\u00e8res litt\u00e9raires sont parfois fragiles. Soyez plus rigoureux \u00e0 l'\u00e9crit afin de progresser dans certaines mati\u00e8res.", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "moyenne": "13.44", "moyenneClasse": "14.98", "moyenneMin": "11.59", "moyenneMax": "18.11", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "moyenne": "10,4", "moyenneClasse": "13,84", "moyenneMin": "6,9", "moyenneMax": "19,1", "coef": 1, "effectif": 36, "rang": 33, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgZW5jb3JlIHRyb3AganVzdGVzIG1haXMgU2F1bW9uX2JydWzDqSB2YSBwcm9ncmVzc2VyIHMnaWwgYXBwbGlxdWUgYmllbiBsZXMgbcOpdGhvZGVzLiBQYXJ0aWNpcGV6IGVuIGNvdXJzLiA=", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "moyenne": "11,89", "moyenneClasse": "13,57", "moyenneMin": "9", "moyenneMax": "17,67", "coef": 1, "effectif": 36, "rang": 32, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgcGFyZm9pcyBmcmFnaWxlcyBxdWkgIHMnZXhwbGlxdWVudCBwYXIgdW4gbWFucXVlIGRlIHJpZ3VldXIgbG9ycyBkdSBwYXNzYWdlIMOgIGwnw6ljcml0Lg==", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "moyenne": "14", "moyenneClasse": "16", "moyenneMin": "13", "moyenneMax": "18", "coef": 1, "effectif": 36, "rang": 35, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["QXNzZXogYm9uIHRyaW1lc3RyZS4=", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "moyenne": "15,08", "moyenneClasse": "15,96", "moyenneMin": "6,17", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["VHLDqHMgYm9uIHRyaW1lc3RyZS4gU2F1bW9uX2JydWzDqSBhIGZvdXJuaSB1biB0cmF2YWlsIHLDqWd1bGllciBldCBzw6lyaWV1eC4gVW5lIHBsdXMgZ3JhbmRlIHBhcnRpY2lwYXRpb24gb3JhbGUgZXN0IG7DqWFubW9pbnMgYXR0ZW5kdWUgYXUgc2Vjb25kIHRyaW1lc3RyZS4=", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "moyenne": "11,05", "moyenneClasse": "13,88", "moyenneMin": "7,15", "moyenneMax": "18,46", "coef": 1, "effectif": 25, "rang": 14, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgZnJhZ2lsZXMgcG91ciBjZSBwcmVtaWVyIHRyaW1lc3RyZSBhdmVjIHRyw6hzIHBldSBkZSBwYXJ0aWNpcGF0aW9uLiBTYXVtb25fYnJ1bMOpIGRvaXQgZm91cm5pciB1biB0cmF2YWlsIHBlcnNvbm5lbCBwbHVzIHLDqWd1bGllciBldCBhcHByb2ZvbmRpLiA=", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "moyenne": "16,13", "moyenneClasse": "14,95", "moyenneMin": "11,91", "moyenneMax": "17,75", "coef": 1, "effectif": 36, "rang": 23, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["VW4gYm9uIHRyaW1lc3RyZS4gVHJhdmFpbCBzw6lyaWV1eC4g", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "moyenne": "15,5", "moyenneClasse": "16,67", "moyenneMin": "13", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["VW4gdHJhdmFpbCBzw6lyaWV1eCBldCByw6lndWxpZXIuIFRyw6hzIGJvbiB0cmltZXN0cmUu", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "moyenne": "15.62", "moyenneClasse": "14.35", "moyenneMin": "8.76", "moyenneMax": "18.92", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "moyenne": "16,73", "moyenneClasse": "14,97", "moyenneMin": "7,2", "moyenneMax": "19,66", "coef": 1, "effectif": 24, "rang": 12, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["VW4gdHJpbWVzdHJlIHRyw6hzIHNhdGlzZmFpc2FudC4gU2F1bW9uX2JydWzDqSBlc3QgdW4gw6lsw6h2ZSBzw6lyaWV1eCBxdWkgZG9pdCBwb3Vyc3VpdnJlIHNlcyBlZmZvcnRzLg==", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "moyenne": "11,82", "moyenneClasse": "12,48", "moyenneMin": "4,11", "moyenneMax": "17,32", "coef": 1, "effectif": 27, "rang": 16, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["RW5zZW1ibGUgbW95ZW4uIEFwcHJvZm9uZGlzc2V6IHZvdHJlIHRyYXZhaWwgcGVyc29ubmVsIGFmaW4gZCdhbcOpbGlvcmVyIHZvcyByw6lzdWx0YXRzIGxlIHByb2NoYWluIHRyaW1lc3RyZS4=", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "moyenne": "18,3", "moyenneClasse": "12,48", "moyenneMin": "5,94", "moyenneMax": "20", "coef": 1, "effectif": 18, "rang": 12, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["VHLDqHMgYm9uIHRyaW1lc3RyZS4gVm91cyBtYcOudHJpc2V6IGxlcyBiYXNlcywgcG91cnN1aXZleiBzdXIgY2V0dGUgdm9pZS4=", ""]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "moyenne": "18.73", "moyenneClasse": "18.08", "moyenneMin": "16.26", "moyenneMax": "20", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "moyenne": "18,73", "moyenneClasse": "17,84", "moyenneMin": "16,15", "moyenneMax": "20", "coef": 1, "effectif": 29, "rang": 16, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["RXhjZWxsZW50IHRyaW1lc3RyZS4gTGUgdHJhdmFpbCBmb3VybmkgYSDDqXTDqSBzw6lyaWV1eCBldCByw6lndWxpZXIuIA==", ""]}], "disciplinesSimulation": []}}, {"idPeriode": "A001R001", "codePeriode": "A001R001", "periode": "Relev\u00e9 ", "annuel": false, "dateDebut": "2022-09-01", "dateFin": "2022-10-15", "examenBlanc": false, "cloture": true, "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "nomPP": "M. OHL P.", "appreciationPP": "", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "coef": 1, "effectif": 36, "rang": 19, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["", "", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "coef": 1, "effectif": 36, "rang": 25, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "coef": 1, "effectif": 0, "rang": 0, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "coef": 1, "effectif": 36, "rang": 33, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["", "", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "coef": 1, "effectif": 25, "rang": 24, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["", "", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "coef": 1, "effectif": 36, "rang": 19, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["", "", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "coef": 1, "effectif": 0, "rang": 0, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["", "", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "coef": 1, "effectif": 23, "rang": 17, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["", "", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "coef": 1, "effectif": 27, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["", "", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "coef": 1, "effectif": 18, "rang": 12, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["", "", ""]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "coef": 1, "effectif": 29, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["", "", ""]}], "disciplinesSimulation": []}}, {"idPeriode": "A002", "codePeriode": "A002", "periode": "2\u00e8me Trimestre", "annuel": false, "dateDebut": "2022-12-03", "dateFin": "2023-03-10", "examenBlanc": false, "cloture": true, "dateConseil": "2023-03-15", "heureConseil": "13:00", "heureFinConseil": "14:15", "salleConseil": "206", "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "moyenneGenerale": "4", "moyenneClasse": "11", "moyenneMin": "4", "moyenneMax": "11", "nomPP": "M. OHL P.", "appreciationPP": "En baisse dans plusieurs mati\u00e8res notamment litt\u00e9raires, Saumon va devoir se reprendre au plus vite, approfondir son travail personnel et \u00eatre plus rigoureux \u00e0 l'\u00e9crit.", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "moyenne": "13.57", "moyenneClasse": "15.14", "moyenneMin": "10.63", "moyenneMax": "18.79", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "moyenne": "10,88", "moyenneClasse": "13,11", "moyenneMin": "5,56", "moyenneMax": "18,63", "coef": 1, "effectif": 36, "rang": 35, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMganVzdGVzLCBkZXMgZGlmZmljdWx0w6lzIMOgIGwnw6ljcml0IG1haXMgU2F1bW9uX2JydWzDqSBzZSBtb250cmUgYXR0ZW50aWYgZW4gY291cnMuIFZvdXMgcG91dmV6IGZhaXJlIGJlYXVjb3VwIG1pZXV4LiA=", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "moyenne": "9,69", "moyenneClasse": "13,91", "moyenneMin": "5,31", "moyenneMax": "18,25", "coef": 1, "effectif": 36, "rang": 28, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgdHJvcCBmcmFnaWxlcywgU2F1bW9uX2JydWzDqSBkb2l0IHNlIHJlcHJlbmRyZSBhdSBwbHVzIHZpdGUsIGFwcHJvZm9uZGlyIHNvbiB0cmF2YWlsIHBlcnNvbm5lbCBhZmluIGRlIHByb2dyZXNzZXIu", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "moyenne": "15", "moyenneClasse": "14,4", "moyenneMin": "12", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 27, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["Qm9uIHRyaW1lc3RyZSwgdHJhdmFpbCBzw6lyaWV1eC4=", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "moyenne": "14,16", "moyenneClasse": "16,58", "moyenneMin": "12", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 33, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["", "", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "moyenne": "9,48", "moyenneClasse": "15,41", "moyenneMin": "6,92", "moyenneMax": "19,46", "coef": 1, "effectif": 25, "rang": 14, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["TGVzIHLDqXN1bHRhdHMgZW4gYmFpc3NlIGV0IGxlIHRyYXZhaWwgcGVyc29ubmVsIHJlc3RlIHRyw6hzIGlycsOpZ3VsaWVyLiBEZXMgdnJhaXMgZWZmb3J0cyBzb250IGF0dGVuZHVzIGVuIHRyb2lzacOobWUgcMOpcmlvZGUuIA==", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "moyenne": "17,78", "moyenneClasse": "15,16", "moyenneMin": "7", "moyenneMax": "19,89", "coef": 1, "effectif": 36, "rang": 24, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["Qydlc3QgdW4gZXhjZWxsZW50IHRyaW1lc3RyZSBwb3VyIFNhdW1vbl9icnVsw6ksIHNlcyByw6lzdWx0YXRzIG9udCBwcm9ncmVzc8OpLiBMZSBiaWxhbiBlc3QgdHLDqHMgcG9zaXRpZi4gSWwgZmF1ZHJhIHF1J2lsIGNvbnRpbnVlIGFpbnNpIGR1cmFudCBsZXMgZGVybmllcnMgbW9pcyBkZSBsJ2FubsOpZS4gTm91cyBsZSBmw6lsaWNpdG9ucy4g", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "moyenne": "18", "moyenneClasse": "18,73", "moyenneMin": "16", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 34, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["VW4gaW52ZXN0aXNzZW1lbnQgcsOpZ3VsaWVyLCBsZSBwcm9qZXQgcHJvcG9zw6kgY2UgdHJpbWVzdHJlIGVzdCBwYXJmYWl0ZW1lbnQgbWHDrnRyaXPDqS4gRG9tbWFnZSBxdWUgbGUgc3VpdmkgZGUgc8OpYW5jZXMgbmUgc29pdCBwYXMgY29tcGxldCwgbGVzIHLDqXN1bHRhdHMgc2VyYWllbnQgZW5jb3JlIG1laWxsZXVycy4=", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "moyenne": "15.57", "moyenneClasse": "14.94", "moyenneMin": "9.98", "moyenneMax": "18.93", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "moyenne": "16,33", "moyenneClasse": "16,43", "moyenneMin": "9,76", "moyenneMax": "19,96", "coef": 1, "effectif": 24, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgdHLDqHMgc2F0aXNmYWlzYW50cyBldCBkZXMgY2FwYWNpdMOpcyBkJ2FuYWx5c2UgZXQgZGUgcmFpc29ubmVtZW50cyBpbmTDqW5pYWJsZXMuIEF0dGVudGlvbiB0b3V0ZWZvaXMgYXV4IGJhdmFyZGFnZXMgZW4gY2xhc3NlIGV0IGF1IHBldSBkZSBzb2luIGFwcG9ydMOpcyBhdXggY29waWVzIGV0IGF1eCBjYWhpZXJzLg==", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "moyenne": "11,37", "moyenneClasse": "12,15", "moyenneMin": "4,81", "moyenneMax": "17,5", "coef": 1, "effectif": 27, "rang": 18, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["RW5zZW1ibGUgYXNzZXogc2F0aXNmYWlzYW50LiBEZXMgZWZmb3J0cyBzb250IMOgIHBvdXJzdWl2cmUgYWZpbiBkZSBjb25zb2xpZGVyIHZvcyBjb25uYWlzc2FuY2VzLiBMZXMgcsOpc3VsdGF0cyByZXN0ZW50IGVuY29yZSB0cm9wIGlycsOpZ3VsaWVycy4g", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "moyenne": "19", "moyenneClasse": "13,67", "moyenneMin": "4,75", "moyenneMax": "19,5", "coef": 1, "effectif": 18, "rang": 18, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["RXhjZWxsZW50IHRyaW1lc3RyZSwgZXhjZWxsZW50IG5pdmVhdS4gUG91cnN1aXZleiBhaW5zaS4=", ""]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "moyenne": "16.67", "moyenneClasse": "18.68", "moyenneMin": "16.5", "moyenneMax": "20", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "moyenne": "16,67", "moyenneClasse": "18,55", "moyenneMin": "16,17", "moyenneMax": "20", "coef": 1, "effectif": 29, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["VHLDqHMgYm9uIHRyYXZhaWwuIA==", ""]}], "disciplinesSimulation": []}}, {"idPeriode": "A003", "codePeriode": "A003", "periode": "3\u00e8me Trimestre", "annuel": false, "dateDebut": "2023-03-11", "dateFin": "2023-05-31", "examenBlanc": false, "cloture": true, "dateConseil": "2023-06-09", "heureConseil": "16:45", "salleConseil": "008 L", "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "moyenneGenerale": "3", "moyenneClasse": "13", "moyenneMin": "0", "moyenneMax": "11", "nomPP": "M. OHL P.", "appreciationPP": "Encore une l\u00e9g\u00e8re baisse ce trimestre. Ceci s'explique par une grande irr\u00e9gularit\u00e9 dans le travail personnel fourni et un manque de rigueur.Passage en classe de terminale.", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "moyenne": "12.84", "moyenneClasse": "14.82", "moyenneMin": "10.87", "moyenneMax": "17.89", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "moyenne": "9", "moyenneClasse": "12,48", "moyenneMin": "8,14", "moyenneMax": "19", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgaW5zdWZmaXNhbnRzLiBEZXMgZGlmZmljdWx0w6lzIMOgIGwnw6ljcml0IGV0IHBldSBkJ2ludmVzdGlzc2VtZW50IGVuIGNvdXJzLiBDJ2VzdCBkb21tYWdlLiA=", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "moyenne": "9,6", "moyenneClasse": "14,71", "moyenneMin": "9,6", "moyenneMax": "18,6", "coef": 1, "effectif": 36, "rang": 26, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["VW5lIGZyYWdpbGlzYXRpb24gZGVzIHLDqXN1bHRhdHMgcXVpIHMnZXN0IHBvdXJzdWl2aWUgdG91dCBhdSBsb25nIGRlIGwnYW5uw6llLiBJbCBmYXVkcmEgdHJvdXZlciBsYSBtb3RpdmF0aW9uIG7DqWNlc3NhaXJlIMOgIHZvdHJlIHLDqXVzc2l0ZSBjYXIgdm91cyBlbiBhdmV6IGxhIGNhcGFjaXTDqS4=", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "moyenne": "15", "moyenneClasse": "14,97", "moyenneMin": "12", "moyenneMax": "18,33", "coef": 1, "effectif": 36, "rang": 26, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["QXNzZXogYm9uIHRyYXZhaWwgdG91dCBhdSBsb25nIGRlIGwnYW5uw6llLg==", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "moyenne": "14,59", "moyenneClasse": "14,3", "moyenneMin": "7,17", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["w4lsw6h2ZSBzw6lyaWV1eCBldCBxdWkgYSBwYXJ0aWNpcMOpIHRvdXQgYXUgbG9uZyBkdSB0cmltZXN0cmUuIE5pdmVhdSBkZSBsYW5ndWUgc2F0aXNmYWlzYW50Lg==", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "moyenne": "13,67", "moyenneClasse": "16,29", "moyenneMin": "6,33", "moyenneMax": "18,67", "coef": 1, "effectif": 25, "rang": 19, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["VW4gdHJpbWVzdHJlIGFzc2V6IHNhdGlzZmFpc2FudCBhdmVjIHF1ZWxxdWVzIGlycsOpZ3VsYXJpdMOpcy4g", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "moyenne": "13,3", "moyenneClasse": "15,82", "moyenneMin": "12,3", "moyenneMax": "18,85", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["VW4gYXNzZXogYm9uIHRyaW1lc3RyZS4=", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "moyenne": "14,75", "moyenneClasse": "16,49", "moyenneMin": "13,25", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 32, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["RGUgYm9ucyByw6lzdWx0YXRzIGVuY29yZSBjZSB0cmltZXN0cmUuIFNhdW1vbl9icnVsw6kgZXN0IHPDqXJpZXV4IGV0IGludmVzdGkuIFVuIGJpbGFuIHRyaW1lc3RyaWVsIGV0IGFubnVlbCB0b3V0IMOgIGZhaXQgc2F0aXNmYWlzYW50cy4=", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "moyenne": "15.9", "moyenneClasse": "14.62", "moyenneMin": "9.59", "moyenneMax": "19.63", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "moyenne": "14,67", "moyenneClasse": "14,87", "moyenneMin": "9,69", "moyenneMax": "19,92", "coef": 1, "effectif": 24, "rang": 22, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgaXJyw6lndWxpZXJzIGV0IGVuIGJhaXNzZSBjZSB0cmltZXN0cmUgcXVpIHNvbnQgZHVzIMOgIHVuIG1hbnF1ZSBkZSB0cmF2YWlsIGV0IGRlIHJpZ3VldXIgISBTYXVtb25fYnJ1bMOpIGRvaXQgcydvYmxpZ2VyIMOgIMOpY3JpcmUgcHJvcHJlbWVudCwgbGlzaWJsZW1lbnQsIGV0IMOgIG9yZ2FuaXNlciBzYSBwZW5zw6llLiBJbCBmYXV0IHN1aXZyZSBsZXMgY29uc2VpbHMgZXQgbGVzIG3DqXRob2RlcyAh", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "moyenne": "13,23", "moyenneClasse": "13,5", "moyenneMin": "5,87", "moyenneMax": "18,98", "coef": 1, "effectif": 27, "rang": 23, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["RW4gcHJvZ3Jlc3Npb24gY2UgdHJpbWVzdHJlLiBTYXVtb25fYnJ1bMOpIGEgZmFpdCBkZXMgZWZmb3J0cyBwb3VyIHN0cnVjdHVyZXIgc2VzIHLDqXBvbnNlcyAgZXQgc2VzIGFuYWx5c2VzLiAgUG91cnN1aXZleiB2b3MgZWZmb3J0cyBsJ2FubsOpZSBwcm9jaGFpbmUh", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "moyenne": "19,8", "moyenneClasse": "14,06", "moyenneMin": "7,4", "moyenneMax": "20", "coef": 1, "effectif": 18, "rang": 16, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["RXhjZWxsZW50IHRyYXZhaWwsIGV4Y2VsbGVudCBuaXZlYXUuIEbDqWxpY2l0YXRpb25zLg==", "TCfDqWNhcnQgZGUgbml2ZWF1IHMnZXN0IGNyZXVzw6kgZW50cmUgdW4gZ3JvdXBlIGRlIHTDqnRlIHBlcmZvcm1hbnQgZXQgdHJhdmFpbGxldXIgZXQgdW4gZ3JvdXBlIHF1aSBuJ2EgcGFzIHN1IHMnaW52ZXN0aXIgc3VmZmlzYW1tZW50Lg=="]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "moyenne": "16", "moyenneClasse": "17.81", "moyenneMin": "15.5", "moyenneMax": "20", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "moyenne": "16", "moyenneClasse": "17,52", "moyenneMin": "14", "moyenneMax": "20", "coef": 1, "effectif": 29, "rang": 23, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["VHJhdmFpbCBzw6lyaWV1eC4gQm9ubmUgYWlzYW5jZSDDoCBsJ29yYWwu", ""]}], "disciplinesSimulation": []}}, {"idPeriode": "A999Z", "codePeriode": "A999Z", "periode": "Ann\u00e9e", "annuel": true, "dateDebut": "2022-09-01", "dateFin": "2023-05-31", "examenBlanc": false, "cloture": true, "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "nomPP": "M. OHL P.", "appreciationPP": "", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "coef": 1, "effectif": 36, "rang": 31, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["", "", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "coef": 1, "effectif": 36, "rang": 22, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "coef": 1, "effectif": 36, "rang": 18, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "coef": 1, "effectif": 36, "rang": 33, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["", "", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "coef": 1, "effectif": 25, "rang": 13, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["", "", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "coef": 1, "effectif": 36, "rang": 29, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["", "", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "coef": 1, "effectif": 36, "rang": 36, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["", "", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "coef": 1, "effectif": 24, "rang": 21, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["", "", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "coef": 1, "effectif": 27, "rang": 18, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["", "", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "coef": 1, "effectif": 18, "rang": 14, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["", "", ""]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "coef": 1, "effectif": 29, "rang": 23, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["", "", ""]}, {"id": 6006, "codeMatiere": "DUAL", "codeSousMatiere": "", "discipline": "BAC Americain", "coef": 1, "effectif": 0, "rang": 0, "groupeMatiere": false, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 43, "nom": "Mme DURVILLE S."}], "appreciations": ["", "", ""]}, {"id": 5936, "codeMatiere": "VICLA", "codeSousMatiere": "", "discipline": "VIE DE CLASSE", "coef": 1, "effectif": 0, "rang": 0, "groupeMatiere": false, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}], "disciplinesSimulation": []}}], "notes": [{"id": 20972639, "devoir": "Oral Creation of a star", "codePeriode": "A001", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "243060097249095001041049050150056055001173133196.jpeg", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2022-09-14", "dateSaisie": "2022-10-16", "valeurisee": false, "moyenneClasse": "14.88", "minClasse": "13.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20971630, "devoir": "Test Forme canonique", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "100184252179029069244253137197081235071130002118.pdf", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-09-16", "dateSaisie": "2022-09-20", "valeurisee": false, "moyenneClasse": "16.50", "minClasse": "3.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20971631, "devoir": "DM", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "089189012018068203160075093015158055238195153243.pdf", "coef": "0.1", "noteSur": "20", "valeur": "19,5", "nonSignificatif": false, "date": "2022-09-16", "dateSaisie": "2022-09-20", "valeurisee": false, "moyenneClasse": "14.67", "minClasse": "6.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20971762, "devoir": "test binaire", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2022-09-22", "dateSaisie": "2022-09-22", "valeurisee": false, "moyenneClasse": "15.00", "minClasse": "10.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973915, "devoir": "EE: was bedeutet Heimat f\u00fcr dich ", "codePeriode": "A001", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2022-09-25", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "15.00", "minClasse": "10.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20972577, "devoir": "Verbes irr\u00e9guliers", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "192254110227222253090189047120184255084092234073.pdf", "uncCorrige": "008070131203109202001110141229037117074243021092.pdf", "coef": "1", "noteSur": "20", "valeur": "19,5", "nonSignificatif": false, "date": "2022-09-28", "dateSaisie": "2022-10-14", "valeurisee": false, "moyenneClasse": "19.38", "minClasse": "14.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972640, "devoir": "Letter to a friend (Note de groupe)", "codePeriode": "A001", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-09-29", "dateSaisie": "2022-10-16", "valeurisee": false, "moyenneClasse": "18.66", "minClasse": "17.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972007, "devoir": "Test Python + Binaire", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "13", "valeur": "10", "nonSignificatif": false, "date": "2022-09-29", "dateSaisie": "2022-09-29", "valeurisee": false, "moyenneClasse": "7.72", "minClasse": "3.00", "maxClasse": "13.00", "elementsProgramme": []}, {"id": 20972069, "devoir": "DS 2nd degr\u00e9", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "167095004021165011159171235091189133107149086041.pdf", "coef": "2", "noteSur": "20", "valeur": "12,5", "nonSignificatif": false, "date": "2022-09-30", "dateSaisie": "2022-10-05", "valeurisee": false, "moyenneClasse": "13.38", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972112, "devoir": "Cours 1791", "codePeriode": "A001", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "8,5", "nonSignificatif": false, "date": "2022-10-03", "dateSaisie": "2022-10-03", "valeurisee": true, "moyenneClasse": "10.89", "minClasse": "4.50", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20972143, "devoir": "Contr\u00f4le lecture", "codePeriode": "A001", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "17,5", "nonSignificatif": false, "date": "2022-10-04", "dateSaisie": "2022-10-04", "valeurisee": false, "moyenneClasse": "18.49", "minClasse": "14.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972150, "devoir": "Automatismes ", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.1", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2022-10-04", "dateSaisie": "2022-10-04", "valeurisee": false, "moyenneClasse": "15.12", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972331, "devoir": "DM", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "110251217171026186165133186021167141034124223147.pdf", "coef": "0.1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-10-04", "dateSaisie": "2022-10-07", "valeurisee": false, "moyenneClasse": "13.70", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972144, "devoir": "Contr\u00f4le connaissances ", "codePeriode": "A001", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "7,5", "nonSignificatif": false, "date": "2022-10-04", "dateSaisie": "2022-10-04", "valeurisee": true, "moyenneClasse": "12.26", "minClasse": "5.50", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20972638, "devoir": "Zephaniah and OBE", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "104036164218178116052239156072127151033177068199.jpeg", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-10-06", "dateSaisie": "2022-10-16", "valeurisee": false, "moyenneClasse": "15.99", "minClasse": "0.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972579, "devoir": "Verbes irr\u00e9guliers", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "155011236094133200217067087176225195030170212159.pdf", "uncCorrige": "008070131203109202001110141229037117074243021092.pdf", "coef": "1", "noteSur": "20", "valeur": "15,5", "nonSignificatif": false, "date": "2022-10-06", "dateSaisie": "2022-10-14", "valeurisee": false, "moyenneClasse": "18.47", "minClasse": "7.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972568, "devoir": "\u00e9chelles d'une roche ", "codePeriode": "A001", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "5", "valeur": "5", "nonSignificatif": false, "date": "2022-10-07", "dateSaisie": "2022-10-15", "valeurisee": false, "moyenneClasse": "4.20", "minClasse": "2.50", "maxClasse": "5.00", "elementsProgramme": []}, {"id": 20972372, "devoir": "Commentaire 179", "codePeriode": "A001", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2022-10-10", "dateSaisie": "2022-10-10", "valeurisee": false, "moyenneClasse": "14.75", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972393, "devoir": "tableaux Python", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.3", "noteSur": "5", "valeur": "5", "nonSignificatif": false, "date": "2022-10-10", "dateSaisie": "2022-10-10", "valeurisee": false, "moyenneClasse": "1.94", "minClasse": "0.00", "maxClasse": "5.00", "elementsProgramme": []}, {"id": 20972460, "devoir": "Test CH1", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2022-10-11", "dateSaisie": "2022-10-11", "valeurisee": false, "moyenneClasse": "14.87", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972461, "devoir": "Test-CH2", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-10-11", "dateSaisie": "2022-10-11", "valeurisee": false, "moyenneClasse": "17.92", "minClasse": "14.25", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972462, "devoir": "DS-CH1-CH2", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "12,25", "nonSignificatif": false, "date": "2022-10-11", "dateSaisie": "2022-10-11", "valeurisee": false, "moyenneClasse": "12.12", "minClasse": "0.75", "maxClasse": "18.50", "elementsProgramme": []}, {"id": 20972581, "devoir": "Verbes irr\u00e9guliers", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "008017066120147216012182155088161248175201079047.pdf", "uncCorrige": "008070131203109202001110141229037117074243021092.pdf", "coef": "1", "noteSur": "20", "valeur": "19,25", "nonSignificatif": false, "date": "2022-10-12", "dateSaisie": "2022-10-14", "valeurisee": false, "moyenneClasse": "18.51", "minClasse": "8.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972515, "devoir": "Listes Pythons", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.6", "noteSur": "10", "valeur": "10", "nonSignificatif": false, "date": "2022-10-12", "dateSaisie": "2022-10-12", "valeurisee": false, "moyenneClasse": "7.27", "minClasse": "0.00", "maxClasse": "10.00", "elementsProgramme": []}, {"id": 20972749, "devoir": "The Commonwealth ", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "054112058081058102103127088184169196016239170241.pdf", "uncCorrige": "054112058081058102103127088184169196016239170241.pdf", "coef": "2", "noteSur": "20", "valeur": "15,75", "nonSignificatif": false, "date": "2022-10-14", "dateSaisie": "2022-10-20", "valeurisee": false, "moyenneClasse": "14.29", "minClasse": "3.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972670, "devoir": "\u00e9val comp\u00e9tences basket ball", "codePeriode": "A001", "codeMatiere": "EPS", "libelleMatiere": "ED.PHYSIQUE & SPORT.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15,5", "nonSignificatif": false, "date": "2022-10-17", "dateSaisie": "2022-10-17", "valeurisee": false, "moyenneClasse": "16.67", "minClasse": "13.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972891, "devoir": "Test Wortschatz Heimat ", "codePeriode": "A001", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "3,75", "nonSignificatif": false, "date": "2022-10-21", "dateSaisie": "2022-10-21", "valeurisee": true, "moyenneClasse": "13.19", "minClasse": "3.25", "maxClasse": "19.75", "elementsProgramme": []}, {"id": 20974139, "devoir": "Test PC", "codePeriode": "A001", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1.5", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-10-21", "dateSaisie": "2022-12-02", "valeurisee": false, "moyenneClasse": "18.28", "minClasse": "14.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973477, "devoir": "Contr\u00f4le de fin de s\u00e9quence (1)", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "228090049198107178142106025017086252122171038233.pdf", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2022-10-21", "dateSaisie": "2022-11-18", "valeurisee": false, "moyenneClasse": "13.35", "minClasse": "1.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972911, "devoir": "Commentaire ", "codePeriode": "A001", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "7", "nonSignificatif": false, "date": "2022-10-22", "dateSaisie": "2022-10-22", "valeurisee": true, "moyenneClasse": "11.28", "minClasse": "0.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20972960, "devoir": "Carte villes", "codePeriode": "A001", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2022-10-27", "dateSaisie": "2022-10-27", "valeurisee": false, "moyenneClasse": "15.97", "minClasse": "9.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20973427, "devoir": "DS Nombre d\u00e9riv\u00e9", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "233243119066175127155050077227221193182110255184.pdf", "coef": "2", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-11-10", "dateSaisie": "2022-11-17", "valeurisee": false, "moyenneClasse": "16.02", "minClasse": "6.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972878, "devoir": "DS Suites", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "177096027084165133168107132015212126146220220209.pdf", "coef": "2", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2022-11-11", "dateSaisie": "2022-10-22", "valeurisee": false, "moyenneClasse": "15.05", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973306, "devoir": "Oral avis de lecture ", "codePeriode": "A001", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2022-11-12", "dateSaisie": "2022-11-12", "valeurisee": false, "moyenneClasse": "15.89", "minClasse": "13.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20974140, "devoir": "Cellule et cristaux", "codePeriode": "A001", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "12,25", "nonSignificatif": false, "date": "2022-11-18", "dateSaisie": "2022-12-02", "valeurisee": false, "moyenneClasse": "12.12", "minClasse": "6.50", "maxClasse": "16.00", "elementsProgramme": []}, {"id": 20973579, "devoir": "Travaux pratiques", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-11-19", "dateSaisie": "2022-11-21", "valeurisee": false, "moyenneClasse": "10.56", "minClasse": "1.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974116, "devoir": "DM Nombre d\u00e9riv\u00e9", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "227025093126098169093191059185165140122231064011.pdf", "coef": "0.1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2022-11-22", "dateSaisie": "2022-11-30", "valeurisee": false, "moyenneClasse": "16.13", "minClasse": "10.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20973838, "devoir": "TP2-3-6", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "9", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": true, "moyenneClasse": "14.38", "minClasse": "9.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973849, "devoir": "Graphic organizer", "codePeriode": "A001", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "17.67", "minClasse": "12.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973876, "devoir": "Letter to a friend (Note individuelle)", "codePeriode": "A001", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "18.66", "minClasse": "16.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973833, "devoir": "TP4", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "15.43", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973843, "devoir": "Test", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "11,5", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "13.95", "minClasse": "3.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973835, "devoir": "TP7", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "14.75", "minClasse": "10.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20973949, "devoir": "Elections", "codePeriode": "A001", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-11-24", "dateSaisie": "2022-11-24", "valeurisee": false, "moyenneClasse": "16.00", "minClasse": "13.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20972892, "devoir": "EO en cours ", "codePeriode": "A001", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Interrogation Orale", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2022-11-25", "dateSaisie": "2022-10-21", "valeurisee": false, "moyenneClasse": "14.96", "minClasse": "8.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20974057, "devoir": "CE: ein neues Leben", "codePeriode": "A001", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "9,5", "nonSignificatif": false, "date": "2022-11-25", "dateSaisie": "2022-11-25", "valeurisee": true, "moyenneClasse": "10.26", "minClasse": "4.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20974070, "devoir": "Ds 1830", "codePeriode": "A001", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2022-11-27", "dateSaisie": "2022-11-27", "valeurisee": false, "moyenneClasse": "13.06", "minClasse": "5.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20974161, "devoir": "DS CH2-CH3", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "5,25", "nonSignificatif": false, "date": "2022-12-02", "dateSaisie": "2022-12-02", "valeurisee": true, "moyenneClasse": "6.96", "minClasse": "0.25", "maxClasse": "15.00", "elementsProgramme": []}, {"id": 20974712, "devoir": "Oraux ligne 2 doc c manuel p19 et les charact\u00e9ristiques des biopics", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "16,5", "nonSignificatif": false, "date": "2022-12-07", "dateSaisie": "2023-01-05", "valeurisee": false, "moyenneClasse": "16.74", "minClasse": "12.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974272, "devoir": "Traitement d'image", "codePeriode": "A002", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2022-12-08", "dateSaisie": "2022-12-08", "valeurisee": false, "moyenneClasse": "15.28", "minClasse": "5.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974462, "devoir": "Verbes irr\u00e9guliers 4", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "12,5", "nonSignificatif": false, "date": "2022-12-08", "dateSaisie": "2022-12-14", "valeurisee": false, "moyenneClasse": "17.56", "minClasse": "7.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974993, "devoir": "Activit\u00e9 1", "codePeriode": "A002", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "5", "valeur": "4", "nonSignificatif": false, "date": "2022-12-09", "dateSaisie": "2023-01-13", "valeurisee": false, "moyenneClasse": "4.34", "minClasse": "4.00", "maxClasse": "5.00", "elementsProgramme": []}, {"id": 20974422, "devoir": "DS Probabilit\u00e9s conditionnelles", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "238096214184239213033087240072074068196253013059.pdf", "coef": "2", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2022-12-13", "dateSaisie": "2022-12-15", "valeurisee": false, "moyenneClasse": "17.85", "minClasse": "10.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974463, "devoir": "Description de limage du manuel p21.", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2022-12-14", "dateSaisie": "2022-12-24", "valeurisee": false, "moyenneClasse": "14.14", "minClasse": "5.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974583, "devoir": "Dissertation", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "9", "nonSignificatif": false, "date": "2022-12-23", "dateSaisie": "2022-12-23", "valeurisee": true, "moyenneClasse": "11.92", "minClasse": "0.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20974574, "devoir": "Reforme justice", "codePeriode": "A002", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2022-12-23", "dateSaisie": "2022-12-23", "valeurisee": false, "moyenneClasse": "14.31", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974569, "devoir": "Tableau", "codePeriode": "A002", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "11,5", "nonSignificatif": false, "date": "2022-12-23", "dateSaisie": "2022-12-23", "valeurisee": false, "moyenneClasse": "18.97", "minClasse": "9.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974570, "devoir": "Ds 1851", "codePeriode": "A002", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-12-23", "dateSaisie": "2022-12-23", "valeurisee": false, "moyenneClasse": "13.11", "minClasse": "0.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20974718, "devoir": "Expos\u00e9s Note Individuelle", "codePeriode": "A002", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-01-04", "dateSaisie": "2023-01-05", "valeurisee": false, "moyenneClasse": "18.69", "minClasse": "16.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974717, "devoir": "Expos\u00e9s Note de groupe", "codePeriode": "A002", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "17,5", "nonSignificatif": false, "date": "2023-01-04", "dateSaisie": "2023-01-05", "valeurisee": false, "moyenneClasse": "18.71", "minClasse": "17.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974713, "devoir": "Expos\u00e9s", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "18,5", "nonSignificatif": false, "date": "2023-01-04", "dateSaisie": "2023-01-04", "valeurisee": false, "moyenneClasse": "17.85", "minClasse": "13.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974812, "devoir": "TP9-10", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-01-06", "dateSaisie": "2023-01-06", "valeurisee": false, "moyenneClasse": "13.84", "minClasse": "9.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20974810, "devoir": "Test PH1-Ph2", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-01-06", "dateSaisie": "2023-01-06", "valeurisee": false, "moyenneClasse": "14.85", "minClasse": "7.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974811, "devoir": "DS-PH1-PH2", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "7", "nonSignificatif": false, "date": "2023-01-06", "dateSaisie": "2023-01-06", "valeurisee": true, "moyenneClasse": "10.87", "minClasse": "1.50", "maxClasse": "18.75", "elementsProgramme": []}, {"id": 20976627, "devoir": "vocabulaire", "codePeriode": "A002", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "25", "valeur": "14", "nonSignificatif": false, "date": "2023-01-06", "dateSaisie": "2023-03-02", "valeurisee": false, "moyenneClasse": "19.27", "minClasse": "4.75", "maxClasse": "24.75", "elementsProgramme": []}, {"id": 20974917, "devoir": "Audio the host", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-01-10", "dateSaisie": "2023-01-10", "valeurisee": false, "moyenneClasse": "16.36", "minClasse": "11.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974895, "devoir": "\u00e9val comp\u00e9tences musculation", "codePeriode": "A002", "codeMatiere": "EPS", "libelleMatiere": "ED.PHYSIQUE & SPORT.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-01-10", "dateSaisie": "2023-01-10", "valeurisee": false, "moyenneClasse": "18.73", "minClasse": "16.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974906, "devoir": "Automatismes ", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-01-10", "dateSaisie": "2023-01-10", "valeurisee": false, "moyenneClasse": "10.90", "minClasse": "3.50", "maxClasse": "18.50", "elementsProgramme": []}, {"id": 20976631, "devoir": "Verbes irreguliers 5 ", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "8,75", "nonSignificatif": false, "date": "2023-01-11", "dateSaisie": "2023-03-02", "valeurisee": true, "moyenneClasse": "17.56", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975028, "devoir": "DM Probabilit\u00e9s", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "114026142223102108195004067244231137027079168164.pdf", "coef": "0.1", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-01-12", "dateSaisie": "2023-01-18", "valeurisee": false, "moyenneClasse": "15.98", "minClasse": "4.50", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20976277, "devoir": "Methode datation Age", "codePeriode": "A002", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-01-13", "dateSaisie": "2023-02-24", "valeurisee": false, "moyenneClasse": "14.93", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975030, "devoir": "DS Trigonom\u00e9trie", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "186051153224094170020153170193220231250022243232.pdf", "coef": "2", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-01-13", "dateSaisie": "2023-01-18", "valeurisee": false, "moyenneClasse": "15.61", "minClasse": "5.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975052, "devoir": "HTML & CSS", "codePeriode": "A002", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-01-15", "dateSaisie": "2023-01-15", "valeurisee": false, "moyenneClasse": "14.47", "minClasse": "5.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975572, "devoir": "DS_PH3", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "9,75", "nonSignificatif": false, "date": "2023-01-26", "dateSaisie": "2023-01-26", "valeurisee": true, "moyenneClasse": "12.39", "minClasse": "1.75", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20975587, "devoir": "Bac blanc 1 ", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Examen Blanc", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2023-01-26", "dateSaisie": "2023-01-26", "valeurisee": false, "moyenneClasse": "11.54", "minClasse": "4.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20975621, "devoir": "Ds mondialisation ", "codePeriode": "A002", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "6", "nonSignificatif": false, "date": "2023-01-27", "dateSaisie": "2023-01-27", "valeurisee": true, "moyenneClasse": "13.31", "minClasse": "6.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975620, "devoir": "Carte France ", "codePeriode": "A002", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2023-01-27", "dateSaisie": "2023-01-27", "valeurisee": false, "moyenneClasse": "13.00", "minClasse": "3.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975627, "devoir": "DS 2nd degr\u00e9", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-01-27", "dateSaisie": "2023-01-30", "valeurisee": false, "moyenneClasse": "15.96", "minClasse": "7.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975919, "devoir": "Tri et Recherche", "codePeriode": "A002", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-02-07", "dateSaisie": "2023-02-07", "valeurisee": false, "moyenneClasse": "12.33", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975977, "devoir": "Test CH4_CH5", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-02-13", "dateSaisie": "2023-02-13", "valeurisee": false, "moyenneClasse": "10.52", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976023, "devoir": "versification", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "12,5", "nonSignificatif": false, "date": "2023-02-18", "dateSaisie": "2023-02-18", "valeurisee": false, "moyenneClasse": "14.76", "minClasse": "6.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976018, "devoir": "DS-CH4-CH5", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-02-18", "dateSaisie": "2023-02-18", "valeurisee": false, "moyenneClasse": "10.02", "minClasse": "0.75", "maxClasse": "16.25", "elementsProgramme": []}, {"id": 20976022, "devoir": "contr\u00f4le connaissances Baudelaire", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "8,5", "nonSignificatif": false, "date": "2023-02-18", "dateSaisie": "2023-02-18", "valeurisee": true, "moyenneClasse": "14.94", "minClasse": "7.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976073, "devoir": "TP11", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-02-20", "dateSaisie": "2023-02-20", "valeurisee": false, "moyenneClasse": "15.52", "minClasse": "11.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20976260, "devoir": "TPmolecules", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-02-23", "dateSaisie": "2023-02-23", "valeurisee": false, "moyenneClasse": "16.50", "minClasse": "14.00", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20976461, "devoir": "Evaluation chapitre 4", "codePeriode": "A002", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "109251021016160103239058204122173226003085174189.pdf", "coef": "2", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2023-02-24", "dateSaisie": "2023-03-01", "valeurisee": false, "moyenneClasse": "16.69", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976325, "devoir": "TP eurostat", "codePeriode": "A002", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-02-25", "dateSaisie": "2023-02-25", "valeurisee": false, "moyenneClasse": "12.41", "minClasse": "0.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976799, "devoir": "Die Geschichte von Siegfried", "codePeriode": "A002", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "7,75", "nonSignificatif": false, "date": "2023-02-26", "dateSaisie": "2023-03-10", "valeurisee": true, "moyenneClasse": "14.41", "minClasse": "5.25", "maxClasse": "19.75", "elementsProgramme": []}, {"id": 20976585, "devoir": "DS Suites Arithm\u00e9tiques", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "119110196071160176092048129119062050194242255103.pdf", "coef": "2", "noteSur": "20", "valeur": "12,5", "nonSignificatif": false, "date": "2023-02-28", "dateSaisie": "2023-03-04", "valeurisee": false, "moyenneClasse": "16.58", "minClasse": "10.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976695, "devoir": "Test Fonctions d\u00e9riv\u00e9es", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-03-03", "dateSaisie": "2023-03-04", "valeurisee": false, "moyenneClasse": "16.76", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976795, "devoir": "Science news", "codePeriode": "A002", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2023-03-10", "dateSaisie": "2023-03-10", "valeurisee": false, "moyenneClasse": "17.63", "minClasse": "14.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977134, "devoir": "\u00c9valuation comp\u00e9tences : step", "codePeriode": "A003", "codeMatiere": "EPS", "libelleMatiere": "ED.PHYSIQUE & SPORT.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16,5", "nonSignificatif": false, "date": "2023-03-13", "dateSaisie": "2023-03-22", "valeurisee": false, "moyenneClasse": "17.09", "minClasse": "13.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976933, "devoir": "DM 2nd degr\u00e9", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "167208163043085031195161072101192078080070087222.pdf", "coef": "0.25", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-03-14", "dateSaisie": "2023-03-16", "valeurisee": false, "moyenneClasse": "15.38", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976830, "devoir": "DM sur Ponge", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-03-15", "dateSaisie": "2023-03-15", "valeurisee": false, "moyenneClasse": "13.71", "minClasse": "7.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20976831, "devoir": "DS sur po\u00e9sie ", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "7", "nonSignificatif": false, "date": "2023-03-15", "dateSaisie": "2023-03-15", "valeurisee": true, "moyenneClasse": "10.88", "minClasse": "5.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20979055, "devoir": "Mein Held", "codePeriode": "A003", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-03-16", "dateSaisie": "2023-05-30", "valeurisee": false, "moyenneClasse": "16.84", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976962, "devoir": "Flux \u00e9nergie et matiere", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Travaux de Groupe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "10", "valeur": "5", "nonSignificatif": false, "date": "2023-03-17", "dateSaisie": "2023-03-17", "valeurisee": false, "moyenneClasse": "5.50", "minClasse": "2.00", "maxClasse": "7.50", "elementsProgramme": []}, {"id": 20977093, "devoir": "DS Fonctions d\u00e9riv\u00e9es et probabilit\u00e9s conditionnelles", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "063090100188235173075042026114115128251065003021.pdf", "coef": "2", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-03-17", "dateSaisie": "2023-03-21", "valeurisee": false, "moyenneClasse": "15.76", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977165, "devoir": "DS-PH4", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11,5", "nonSignificatif": false, "date": "2023-03-23", "dateSaisie": "2023-03-23", "valeurisee": false, "moyenneClasse": "13.33", "minClasse": "3.00", "maxClasse": "19.25", "elementsProgramme": []}, {"id": 20977229, "devoir": "Rayonnement solaire", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "19,5", "nonSignificatif": false, "date": "2023-03-24", "dateSaisie": "2023-03-25", "valeurisee": false, "moyenneClasse": "18.72", "minClasse": "11.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977246, "devoir": "Pygame", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-03-27", "dateSaisie": "2023-03-27", "valeurisee": false, "moyenneClasse": "16.78", "minClasse": "10.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977294, "devoir": "Oral blanc fran\u00e7ais", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Orale", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "9", "nonSignificatif": false, "date": "2023-03-28", "dateSaisie": "2023-03-28", "valeurisee": true, "moyenneClasse": "12.89", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977299, "devoir": "Automatismes", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.25", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-03-28", "dateSaisie": "2023-03-28", "valeurisee": false, "moyenneClasse": "11.33", "minClasse": "4.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20977441, "devoir": "Adressage IP", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-04-03", "dateSaisie": "2023-04-02", "valeurisee": false, "moyenneClasse": "11.56", "minClasse": "1.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977457, "devoir": "DM Suites Arithm\u00e9tiques", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "166083213025000101102033151183014172004149046112.pdf", "coef": "0.25", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-04-03", "dateSaisie": "2023-04-05", "valeurisee": false, "moyenneClasse": "17.10", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978096, "devoir": "Expression \u00e9crite", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-04-05", "dateSaisie": "2023-05-02", "valeurisee": false, "moyenneClasse": "13.05", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978095, "devoir": "comprehension de texte", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "15,5", "nonSignificatif": false, "date": "2023-04-05", "dateSaisie": "2023-05-02", "valeurisee": false, "moyenneClasse": "13.73", "minClasse": "5.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977538, "devoir": "Cours", "codePeriode": "A003", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "8,5", "nonSignificatif": false, "date": "2023-04-06", "dateSaisie": "2023-04-06", "valeurisee": true, "moyenneClasse": "16.33", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977540, "devoir": "Politique", "codePeriode": "A003", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2023-04-06", "dateSaisie": "2023-04-06", "valeurisee": false, "moyenneClasse": "15.19", "minClasse": "11.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977539, "devoir": "Doc ecole", "codePeriode": "A003", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-04-06", "dateSaisie": "2023-04-06", "valeurisee": false, "moyenneClasse": "13.50", "minClasse": "8.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20977630, "devoir": "Jeunes et politique", "codePeriode": "A003", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-04-07", "dateSaisie": "2023-04-07", "valeurisee": false, "moyenneClasse": "14.80", "minClasse": "10.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20978856, "devoir": "Combustibles fossiles", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "10", "valeur": "3,25", "nonSignificatif": false, "date": "2023-04-14", "dateSaisie": "2023-05-27", "valeurisee": true, "moyenneClasse": "5.69", "minClasse": "3.25", "maxClasse": "8.00", "elementsProgramme": []}, {"id": 20978335, "devoir": "Chapitre 9 photosynth\u00e8se ", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "13,75", "nonSignificatif": false, "date": "2023-04-14", "dateSaisie": "2023-05-09", "valeurisee": false, "moyenneClasse": "15.05", "minClasse": "8.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977719, "devoir": "DS PH5-CH6", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11,25", "nonSignificatif": false, "date": "2023-04-18", "dateSaisie": "2023-04-18", "valeurisee": false, "moyenneClasse": "13.06", "minClasse": "7.25", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20977737, "devoir": "TP_Etudes comp_organiques", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.25", "noteSur": "20", "valeur": "12,75", "nonSignificatif": false, "date": "2023-04-19", "dateSaisie": "2023-04-19", "valeurisee": false, "moyenneClasse": "13.32", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977736, "devoir": "TPcomp_organiques", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-04-19", "dateSaisie": "2023-04-19", "valeurisee": false, "moyenneClasse": "16.31", "minClasse": "13.00", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20977782, "devoir": "Audio pourquoi jai mang\u00e9 ", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-04-21", "dateSaisie": "2023-04-21", "valeurisee": false, "moyenneClasse": "16.03", "minClasse": "11.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978089, "devoir": "DS Produit scalaire", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "098138220182247216060153038229236197145227211035.pdf", "coef": "2", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-04-25", "dateSaisie": "2023-05-02", "valeurisee": false, "moyenneClasse": "13.32", "minClasse": "3.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978145, "devoir": "DS CH6-7-8", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11,25", "nonSignificatif": false, "date": "2023-05-03", "dateSaisie": "2023-05-03", "valeurisee": false, "moyenneClasse": "13.48", "minClasse": "2.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978255, "devoir": "DM Variable al\u00e9atoire", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "208148108053159255162122113211168242203133116098.pdf", "coef": "0.25", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-05-04", "dateSaisie": "2023-05-10", "valeurisee": false, "moyenneClasse": "18.52", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978278, "devoir": "Parcours de liste python", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-05-08", "dateSaisie": "2023-05-10", "valeurisee": false, "moyenneClasse": "12.61", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978256, "devoir": "DS Suites Arithm\u00e9tiques et G\u00e9om\u00e9triques", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "213187084251212017048205191197186133049101145165.pdf", "coef": "2", "noteSur": "20", "valeur": "17,5", "nonSignificatif": false, "date": "2023-05-09", "dateSaisie": "2023-05-13", "valeurisee": false, "moyenneClasse": "15.17", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978334, "devoir": "Doc tranchees", "codePeriode": "A003", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2023-05-09", "dateSaisie": "2023-05-09", "valeurisee": false, "moyenneClasse": "14.03", "minClasse": "9.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20978443, "devoir": "Fill in the blanks", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-05-11", "dateSaisie": "2023-05-12", "valeurisee": false, "moyenneClasse": "17.12", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978469, "devoir": "Parcours de liste 2", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-05-14", "dateSaisie": "2023-05-14", "valeurisee": false, "moyenneClasse": "15.83", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978728, "devoir": "COMPREHENSION TEXTE VOCAB.", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-05-17", "dateSaisie": "2023-05-23", "valeurisee": false, "moyenneClasse": "15.58", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978729, "devoir": "APPRENTISSAGES", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-05-17", "dateSaisie": "2023-05-23", "valeurisee": false, "moyenneClasse": "14.13", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978656, "devoir": "\u00e9valuation comp\u00e9tences badminton", "codePeriode": "A003", "codeMatiere": "EPS", "libelleMatiere": "ED.PHYSIQUE & SPORT.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-05-22", "dateSaisie": "2023-05-22", "valeurisee": false, "moyenneClasse": "15.76", "minClasse": "13.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978639, "devoir": "Fin devie", "codePeriode": "A003", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-05-22", "dateSaisie": "2023-05-22", "valeurisee": false, "moyenneClasse": "15.28", "minClasse": "13.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20978737, "devoir": "cours 1 GM", "codePeriode": "A003", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "5", "nonSignificatif": false, "date": "2023-05-24", "dateSaisie": "2023-05-24", "valeurisee": true, "moyenneClasse": "15.92", "minClasse": "5.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978785, "devoir": "participation", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-05-24", "dateSaisie": "2023-05-24", "valeurisee": false, "moyenneClasse": "16.17", "minClasse": "10.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20979053, "devoir": "EE der Wald", "codePeriode": "A003", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-30", "valeurisee": false, "moyenneClasse": "15.58", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978800, "devoir": "TD Stat CSV", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-26", "valeurisee": false, "moyenneClasse": "13.50", "minClasse": "0.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978868, "devoir": "Energy project", "codePeriode": "A003", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-25", "valeurisee": false, "moyenneClasse": "18.17", "minClasse": "16.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978844, "devoir": "Test ondes", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18,5", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-25", "valeurisee": false, "moyenneClasse": "14.88", "minClasse": "7.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979054, "devoir": "Expression orale", "codePeriode": "A003", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Interrogation Orale", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-30", "valeurisee": false, "moyenneClasse": "16.44", "minClasse": "5.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979144, "devoir": "projet exp\u00e9rimental et num\u00e9rique", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Travaux de Groupe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2023-05-26", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "16.75", "minClasse": "10.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978646, "devoir": "DS Application de la d\u00e9rivation", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "176096181124254024204152123122161058214133189221.pdf", "coef": "2", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-05-26", "dateSaisie": "2023-05-26", "valeurisee": false, "moyenneClasse": "14.95", "minClasse": "7.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978990, "devoir": "Bac blanc 2 ", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Examen Blanc", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "7", "nonSignificatif": false, "date": "2023-05-28", "dateSaisie": "2023-05-28", "valeurisee": true, "moyenneClasse": "10.40", "minClasse": "6.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20979124, "devoir": "DS PH6_PH8", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "11.44", "minClasse": "2.75", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20979182, "devoir": "expos\u00e9 scientific jobs and scientists", "codePeriode": "A003", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "16.86", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979125, "devoir": "TP1_lentilles", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "16.00", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979176, "devoir": "interro cours", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "10", "nonSignificatif": true, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "12.82", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979126, "devoir": "TP2_lentilles ", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "17.00", "minClasse": "12.00", "maxClasse": "19.00", "elementsProgramme": []}], "parametrage": {"couleurEval1": "#FF0000", "couleurEval2": "#FFC000", "couleurEval3": "#0070C0", "couleurEval4": "#00B050", "libelleEval1": "Tm9uIGF0dGVpbnRz", "libelleEval2": "UGFydGllbGxlbWVudCBhdHRlaW50cw==", "libelleEval3": "QXR0ZWludHM=", "libelleEval4": "RMOpcGFzc8Opcw==", "affichageMoyenne": true, "affichageMoyenneDevoir": true, "affichagePositionMatiere": false, "affichageNote": true, "affichageCompetence": false, "affichageEvaluationsComposantes": false, "affichageGraphiquesComposantes": true, "modeCalculGraphiquesComposantes": "eval", "affichageCompNum": false, "libelleEvalCompNum1": "Tm9uIGF0dGVpbnQ=", "libelleEvalCompNum2": "UGFydGllbGxlbWVudCBhdHRlaW50", "libelleEvalCompNum3": "QXR0ZWludA==", "affichageAppreciation": true, "appreciationsProf": true, "appreciationProfPrinc": true, "affichageMention": false, "affichageAppreciationCE": true, "affichageAppreciationVS": false, "affichageAppreciationCN": false, "affichageAppreciationClasse": false, "affichageAppreciationPeriodeCloturee": true, "moyenneUniquementPeriodeCloture": false, "moyennePeriodeReleve": false, "moyennePeriodeAnnuelle": false, "moyennePeriodeHorsP": false, "moyenneEleveDansNotes": true, "moyenneEleve": true, "moyenneEleveDansMoyenne": true, "moyenneGenerale": false, "moyenneCoefMatiere": true, "moyenneClasse": true, "moyenneMin": true, "moyenneMax": true, "moyenneRang": false, "moyenneSur": 20, "moyenneGraphique": true, "moyennesSimulation": false, "coefficientNote": true, "colonneCoefficientMatiere": true, "noteGrasSousMoyenne": true, "noteGrasAudessusMoyenne": false, "libelleDevoir": true, "dateDevoir": true, "typeDevoir": true, "noteUniquementPeriodeCloture": false, "notePeriodeReleve": false, "notePeriodeAnnuelle": false, "notePeriodeHorsP": false, "libellesAppreciations": ["Appr\u00e9ciation", "Appr\u00e9ciation classe mati\u00e8re"], "appreciationsParametrage": [{"code": "APP1", "id": 1, "nbMaxCaractere": 350, "libelle": "Appr\u00e9ciation"}, {"code": "APP3", "id": 3, "nbMaxCaractere": 200, "libelle": "Appr\u00e9ciation classe mati\u00e8re"}]}}} \ No newline at end of file +{"code": 200, "token": "296d5603-35b2-4a3c-b34e-3510500346d8", "host": "HTTP46", "data": {"foStat": "22121810019", "periodes": [{"idPeriode": "A001", "codePeriode": "A001", "periode": "1er Trimestre", "annuel": false, "dateDebut": "2022-09-01", "dateFin": "2022-12-02", "examenBlanc": false, "cloture": true, "dateConseil": "2022-12-08", "heureConseil": "16:30", "heureFinConseil": "17:30", "salleConseil": "207", "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "moyenneGenerale": "0", "moyenneClasse": "12", "moyenneMin": "2", "moyenneMax": "13", "nomPP": "M. OHL P.", "appreciationPP": "Un bon trimestre de la part d'Saumon mais les r\u00e9sultats dans les mati\u00e8res litt\u00e9raires sont parfois fragiles. Soyez plus rigoureux \u00e0 l'\u00e9crit afin de progresser dans certaines mati\u00e8res.", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "moyenne": "13.44", "moyenneClasse": "14.98", "moyenneMin": "11.59", "moyenneMax": "18.11", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "moyenne": "10,4", "moyenneClasse": "13,84", "moyenneMin": "6,9", "moyenneMax": "19,1", "coef": 1, "effectif": 36, "rang": 33, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgZW5jb3JlIHRyb3AganVzdGVzIG1haXMgU2F1bW9uX2JydWzDqSB2YSBwcm9ncmVzc2VyIHMnaWwgYXBwbGlxdWUgYmllbiBsZXMgbcOpdGhvZGVzLiBQYXJ0aWNpcGV6IGVuIGNvdXJzLiA=", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "moyenne": "11,89", "moyenneClasse": "13,57", "moyenneMin": "9", "moyenneMax": "17,67", "coef": 1, "effectif": 36, "rang": 32, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgcGFyZm9pcyBmcmFnaWxlcyBxdWkgIHMnZXhwbGlxdWVudCBwYXIgdW4gbWFucXVlIGRlIHJpZ3VldXIgbG9ycyBkdSBwYXNzYWdlIMOgIGwnw6ljcml0Lg==", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "moyenne": "14", "moyenneClasse": "16", "moyenneMin": "13", "moyenneMax": "18", "coef": 1, "effectif": 36, "rang": 35, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["QXNzZXogYm9uIHRyaW1lc3RyZS4=", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "moyenne": "15,08", "moyenneClasse": "15,96", "moyenneMin": "6,17", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["VHLDqHMgYm9uIHRyaW1lc3RyZS4gU2F1bW9uX2JydWzDqSBhIGZvdXJuaSB1biB0cmF2YWlsIHLDqWd1bGllciBldCBzw6lyaWV1eC4gVW5lIHBsdXMgZ3JhbmRlIHBhcnRpY2lwYXRpb24gb3JhbGUgZXN0IG7DqWFubW9pbnMgYXR0ZW5kdWUgYXUgc2Vjb25kIHRyaW1lc3RyZS4=", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "moyenne": "11,05", "moyenneClasse": "13,88", "moyenneMin": "7,15", "moyenneMax": "18,46", "coef": 1, "effectif": 25, "rang": 14, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgZnJhZ2lsZXMgcG91ciBjZSBwcmVtaWVyIHRyaW1lc3RyZSBhdmVjIHRyw6hzIHBldSBkZSBwYXJ0aWNpcGF0aW9uLiBTYXVtb25fYnJ1bMOpIGRvaXQgZm91cm5pciB1biB0cmF2YWlsIHBlcnNvbm5lbCBwbHVzIHLDqWd1bGllciBldCBhcHByb2ZvbmRpLiA=", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "moyenne": "16,13", "moyenneClasse": "14,95", "moyenneMin": "11,91", "moyenneMax": "17,75", "coef": 1, "effectif": 36, "rang": 23, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["VW4gYm9uIHRyaW1lc3RyZS4gVHJhdmFpbCBzw6lyaWV1eC4g", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "moyenne": "15,5", "moyenneClasse": "16,67", "moyenneMin": "13", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["VW4gdHJhdmFpbCBzw6lyaWV1eCBldCByw6lndWxpZXIuIFRyw6hzIGJvbiB0cmltZXN0cmUu", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "moyenne": "15.62", "moyenneClasse": "14.35", "moyenneMin": "8.76", "moyenneMax": "18.92", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "moyenne": "16,73", "moyenneClasse": "14,97", "moyenneMin": "7,2", "moyenneMax": "19,66", "coef": 1, "effectif": 24, "rang": 12, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["VW4gdHJpbWVzdHJlIHRyw6hzIHNhdGlzZmFpc2FudC4gU2F1bW9uX2JydWzDqSBlc3QgdW4gw6lsw6h2ZSBzw6lyaWV1eCBxdWkgZG9pdCBwb3Vyc3VpdnJlIHNlcyBlZmZvcnRzLg==", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "moyenne": "11,82", "moyenneClasse": "12,48", "moyenneMin": "4,11", "moyenneMax": "17,32", "coef": 1, "effectif": 27, "rang": 16, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["RW5zZW1ibGUgbW95ZW4uIEFwcHJvZm9uZGlzc2V6IHZvdHJlIHRyYXZhaWwgcGVyc29ubmVsIGFmaW4gZCdhbcOpbGlvcmVyIHZvcyByw6lzdWx0YXRzIGxlIHByb2NoYWluIHRyaW1lc3RyZS4=", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "moyenne": "18,3", "moyenneClasse": "12,48", "moyenneMin": "5,94", "moyenneMax": "20", "coef": 1, "effectif": 18, "rang": 12, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["VHLDqHMgYm9uIHRyaW1lc3RyZS4gVm91cyBtYcOudHJpc2V6IGxlcyBiYXNlcywgcG91cnN1aXZleiBzdXIgY2V0dGUgdm9pZS4=", ""]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "moyenne": "18.73", "moyenneClasse": "18.08", "moyenneMin": "16.26", "moyenneMax": "20", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "moyenne": "18,73", "moyenneClasse": "17,84", "moyenneMin": "16,15", "moyenneMax": "20", "coef": 1, "effectif": 29, "rang": 16, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["RXhjZWxsZW50IHRyaW1lc3RyZS4gTGUgdHJhdmFpbCBmb3VybmkgYSDDqXTDqSBzw6lyaWV1eCBldCByw6lndWxpZXIuIA==", ""]}], "disciplinesSimulation": []}}, {"idPeriode": "A001R001", "codePeriode": "A001R001", "periode": "Relev\u00e9 ", "annuel": false, "dateDebut": "2022-09-01", "dateFin": "2022-10-15", "examenBlanc": false, "cloture": true, "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "nomPP": "M. OHL P.", "appreciationPP": "", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "coef": 1, "effectif": 36, "rang": 19, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["", "", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "coef": 1, "effectif": 36, "rang": 25, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "coef": 1, "effectif": 0, "rang": 0, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "coef": 1, "effectif": 36, "rang": 33, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["", "", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "coef": 1, "effectif": 25, "rang": 24, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["", "", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "coef": 1, "effectif": 36, "rang": 19, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["", "", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "coef": 1, "effectif": 0, "rang": 0, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["", "", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "coef": 1, "effectif": 23, "rang": 17, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["", "", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "coef": 1, "effectif": 27, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["", "", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "coef": 1, "effectif": 18, "rang": 12, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["", "", ""]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "coef": 1, "effectif": 29, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["", "", ""]}], "disciplinesSimulation": []}}, {"idPeriode": "A002", "codePeriode": "A002", "periode": "2\u00e8me Trimestre", "annuel": false, "dateDebut": "2022-12-03", "dateFin": "2023-03-10", "examenBlanc": false, "cloture": true, "dateConseil": "2023-03-15", "heureConseil": "13:00", "heureFinConseil": "14:15", "salleConseil": "206", "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "moyenneGenerale": "4", "moyenneClasse": "11", "moyenneMin": "4", "moyenneMax": "11", "nomPP": "M. OHL P.", "appreciationPP": "En baisse dans plusieurs mati\u00e8res notamment litt\u00e9raires, Saumon va devoir se reprendre au plus vite, approfondir son travail personnel et \u00eatre plus rigoureux \u00e0 l'\u00e9crit.", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "moyenne": "13.57", "moyenneClasse": "15.14", "moyenneMin": "10.63", "moyenneMax": "18.79", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "moyenne": "10,88", "moyenneClasse": "13,11", "moyenneMin": "5,56", "moyenneMax": "18,63", "coef": 1, "effectif": 36, "rang": 35, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMganVzdGVzLCBkZXMgZGlmZmljdWx0w6lzIMOgIGwnw6ljcml0IG1haXMgU2F1bW9uX2JydWzDqSBzZSBtb250cmUgYXR0ZW50aWYgZW4gY291cnMuIFZvdXMgcG91dmV6IGZhaXJlIGJlYXVjb3VwIG1pZXV4LiA=", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "moyenne": "9,69", "moyenneClasse": "13,91", "moyenneMin": "5,31", "moyenneMax": "18,25", "coef": 1, "effectif": 36, "rang": 28, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgdHJvcCBmcmFnaWxlcywgU2F1bW9uX2JydWzDqSBkb2l0IHNlIHJlcHJlbmRyZSBhdSBwbHVzIHZpdGUsIGFwcHJvZm9uZGlyIHNvbiB0cmF2YWlsIHBlcnNvbm5lbCBhZmluIGRlIHByb2dyZXNzZXIu", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "moyenne": "15", "moyenneClasse": "14,4", "moyenneMin": "12", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 27, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["Qm9uIHRyaW1lc3RyZSwgdHJhdmFpbCBzw6lyaWV1eC4=", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "moyenne": "14,16", "moyenneClasse": "16,58", "moyenneMin": "12", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 33, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["", "", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "moyenne": "9,48", "moyenneClasse": "15,41", "moyenneMin": "6,92", "moyenneMax": "19,46", "coef": 1, "effectif": 25, "rang": 14, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["TGVzIHLDqXN1bHRhdHMgZW4gYmFpc3NlIGV0IGxlIHRyYXZhaWwgcGVyc29ubmVsIHJlc3RlIHRyw6hzIGlycsOpZ3VsaWVyLiBEZXMgdnJhaXMgZWZmb3J0cyBzb250IGF0dGVuZHVzIGVuIHRyb2lzacOobWUgcMOpcmlvZGUuIA==", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "moyenne": "17,78", "moyenneClasse": "15,16", "moyenneMin": "7", "moyenneMax": "19,89", "coef": 1, "effectif": 36, "rang": 24, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["Qydlc3QgdW4gZXhjZWxsZW50IHRyaW1lc3RyZSBwb3VyIFNhdW1vbl9icnVsw6ksIHNlcyByw6lzdWx0YXRzIG9udCBwcm9ncmVzc8OpLiBMZSBiaWxhbiBlc3QgdHLDqHMgcG9zaXRpZi4gSWwgZmF1ZHJhIHF1J2lsIGNvbnRpbnVlIGFpbnNpIGR1cmFudCBsZXMgZGVybmllcnMgbW9pcyBkZSBsJ2FubsOpZS4gTm91cyBsZSBmw6lsaWNpdG9ucy4g", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "moyenne": "18", "moyenneClasse": "18,73", "moyenneMin": "16", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 34, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["VW4gaW52ZXN0aXNzZW1lbnQgcsOpZ3VsaWVyLCBsZSBwcm9qZXQgcHJvcG9zw6kgY2UgdHJpbWVzdHJlIGVzdCBwYXJmYWl0ZW1lbnQgbWHDrnRyaXPDqS4gRG9tbWFnZSBxdWUgbGUgc3VpdmkgZGUgc8OpYW5jZXMgbmUgc29pdCBwYXMgY29tcGxldCwgbGVzIHLDqXN1bHRhdHMgc2VyYWllbnQgZW5jb3JlIG1laWxsZXVycy4=", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "moyenne": "15.57", "moyenneClasse": "14.94", "moyenneMin": "9.98", "moyenneMax": "18.93", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "moyenne": "16,33", "moyenneClasse": "16,43", "moyenneMin": "9,76", "moyenneMax": "19,96", "coef": 1, "effectif": 24, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgdHLDqHMgc2F0aXNmYWlzYW50cyBldCBkZXMgY2FwYWNpdMOpcyBkJ2FuYWx5c2UgZXQgZGUgcmFpc29ubmVtZW50cyBpbmTDqW5pYWJsZXMuIEF0dGVudGlvbiB0b3V0ZWZvaXMgYXV4IGJhdmFyZGFnZXMgZW4gY2xhc3NlIGV0IGF1IHBldSBkZSBzb2luIGFwcG9ydMOpcyBhdXggY29waWVzIGV0IGF1eCBjYWhpZXJzLg==", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "moyenne": "11,37", "moyenneClasse": "12,15", "moyenneMin": "4,81", "moyenneMax": "17,5", "coef": 1, "effectif": 27, "rang": 18, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["RW5zZW1ibGUgYXNzZXogc2F0aXNmYWlzYW50LiBEZXMgZWZmb3J0cyBzb250IMOgIHBvdXJzdWl2cmUgYWZpbiBkZSBjb25zb2xpZGVyIHZvcyBjb25uYWlzc2FuY2VzLiBMZXMgcsOpc3VsdGF0cyByZXN0ZW50IGVuY29yZSB0cm9wIGlycsOpZ3VsaWVycy4g", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "moyenne": "19", "moyenneClasse": "13,67", "moyenneMin": "4,75", "moyenneMax": "19,5", "coef": 1, "effectif": 18, "rang": 18, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["RXhjZWxsZW50IHRyaW1lc3RyZSwgZXhjZWxsZW50IG5pdmVhdS4gUG91cnN1aXZleiBhaW5zaS4=", ""]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "moyenne": "16.67", "moyenneClasse": "18.68", "moyenneMin": "16.5", "moyenneMax": "20", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "moyenne": "16,67", "moyenneClasse": "18,55", "moyenneMin": "16,17", "moyenneMax": "20", "coef": 1, "effectif": 29, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["VHLDqHMgYm9uIHRyYXZhaWwuIA==", ""]}], "disciplinesSimulation": []}}, {"idPeriode": "A003", "codePeriode": "A003", "periode": "3\u00e8me Trimestre", "annuel": false, "dateDebut": "2023-03-11", "dateFin": "2023-05-31", "examenBlanc": false, "cloture": true, "dateConseil": "2023-06-09", "heureConseil": "16:45", "salleConseil": "008 L", "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "moyenneGenerale": "3", "moyenneClasse": "13", "moyenneMin": "0", "moyenneMax": "11", "nomPP": "M. OHL P.", "appreciationPP": "Encore une l\u00e9g\u00e8re baisse ce trimestre. Ceci s'explique par une grande irr\u00e9gularit\u00e9 dans le travail personnel fourni et un manque de rigueur.Passage en classe de terminale.", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "moyenne": "12.84", "moyenneClasse": "14.82", "moyenneMin": "10.87", "moyenneMax": "17.89", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "moyenne": "9", "moyenneClasse": "12,48", "moyenneMin": "8,14", "moyenneMax": "19", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgaW5zdWZmaXNhbnRzLiBEZXMgZGlmZmljdWx0w6lzIMOgIGwnw6ljcml0IGV0IHBldSBkJ2ludmVzdGlzc2VtZW50IGVuIGNvdXJzLiBDJ2VzdCBkb21tYWdlLiA=", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "moyenne": "9,6", "moyenneClasse": "14,71", "moyenneMin": "9,6", "moyenneMax": "18,6", "coef": 1, "effectif": 36, "rang": 26, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["VW5lIGZyYWdpbGlzYXRpb24gZGVzIHLDqXN1bHRhdHMgcXVpIHMnZXN0IHBvdXJzdWl2aWUgdG91dCBhdSBsb25nIGRlIGwnYW5uw6llLiBJbCBmYXVkcmEgdHJvdXZlciBsYSBtb3RpdmF0aW9uIG7DqWNlc3NhaXJlIMOgIHZvdHJlIHLDqXVzc2l0ZSBjYXIgdm91cyBlbiBhdmV6IGxhIGNhcGFjaXTDqS4=", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "moyenne": "15", "moyenneClasse": "14,97", "moyenneMin": "12", "moyenneMax": "18,33", "coef": 1, "effectif": 36, "rang": 26, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["QXNzZXogYm9uIHRyYXZhaWwgdG91dCBhdSBsb25nIGRlIGwnYW5uw6llLg==", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "moyenne": "14,59", "moyenneClasse": "14,3", "moyenneMin": "7,17", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["w4lsw6h2ZSBzw6lyaWV1eCBldCBxdWkgYSBwYXJ0aWNpcMOpIHRvdXQgYXUgbG9uZyBkdSB0cmltZXN0cmUuIE5pdmVhdSBkZSBsYW5ndWUgc2F0aXNmYWlzYW50Lg==", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "moyenne": "13,67", "moyenneClasse": "16,29", "moyenneMin": "6,33", "moyenneMax": "18,67", "coef": 1, "effectif": 25, "rang": 19, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["VW4gdHJpbWVzdHJlIGFzc2V6IHNhdGlzZmFpc2FudCBhdmVjIHF1ZWxxdWVzIGlycsOpZ3VsYXJpdMOpcy4g", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "moyenne": "13,3", "moyenneClasse": "15,82", "moyenneMin": "12,3", "moyenneMax": "18,85", "coef": 1, "effectif": 36, "rang": 20, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["VW4gYXNzZXogYm9uIHRyaW1lc3RyZS4=", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "moyenne": "14,75", "moyenneClasse": "16,49", "moyenneMin": "13,25", "moyenneMax": "20", "coef": 1, "effectif": 36, "rang": 32, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["RGUgYm9ucyByw6lzdWx0YXRzIGVuY29yZSBjZSB0cmltZXN0cmUuIFNhdW1vbl9icnVsw6kgZXN0IHPDqXJpZXV4IGV0IGludmVzdGkuIFVuIGJpbGFuIHRyaW1lc3RyaWVsIGV0IGFubnVlbCB0b3V0IMOgIGZhaXQgc2F0aXNmYWlzYW50cy4=", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "moyenne": "15.9", "moyenneClasse": "14.62", "moyenneMin": "9.59", "moyenneMax": "19.63", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "moyenne": "14,67", "moyenneClasse": "14,87", "moyenneMin": "9,69", "moyenneMax": "19,92", "coef": 1, "effectif": 24, "rang": 22, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["RGVzIHLDqXN1bHRhdHMgaXJyw6lndWxpZXJzIGV0IGVuIGJhaXNzZSBjZSB0cmltZXN0cmUgcXVpIHNvbnQgZHVzIMOgIHVuIG1hbnF1ZSBkZSB0cmF2YWlsIGV0IGRlIHJpZ3VldXIgISBTYXVtb25fYnJ1bMOpIGRvaXQgcydvYmxpZ2VyIMOgIMOpY3JpcmUgcHJvcHJlbWVudCwgbGlzaWJsZW1lbnQsIGV0IMOgIG9yZ2FuaXNlciBzYSBwZW5zw6llLiBJbCBmYXV0IHN1aXZyZSBsZXMgY29uc2VpbHMgZXQgbGVzIG3DqXRob2RlcyAh", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "moyenne": "13,23", "moyenneClasse": "13,5", "moyenneMin": "5,87", "moyenneMax": "18,98", "coef": 1, "effectif": 27, "rang": 23, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["RW4gcHJvZ3Jlc3Npb24gY2UgdHJpbWVzdHJlLiBTYXVtb25fYnJ1bMOpIGEgZmFpdCBkZXMgZWZmb3J0cyBwb3VyIHN0cnVjdHVyZXIgc2VzIHLDqXBvbnNlcyAgZXQgc2VzIGFuYWx5c2VzLiAgUG91cnN1aXZleiB2b3MgZWZmb3J0cyBsJ2FubsOpZSBwcm9jaGFpbmUh", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "moyenne": "19,8", "moyenneClasse": "14,06", "moyenneMin": "7,4", "moyenneMax": "20", "coef": 1, "effectif": 18, "rang": 16, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["RXhjZWxsZW50IHRyYXZhaWwsIGV4Y2VsbGVudCBuaXZlYXUuIEbDqWxpY2l0YXRpb25zLg==", "TCfDqWNhcnQgZGUgbml2ZWF1IHMnZXN0IGNyZXVzw6kgZW50cmUgdW4gZ3JvdXBlIGRlIHTDqnRlIHBlcmZvcm1hbnQgZXQgdHJhdmFpbGxldXIgZXQgdW4gZ3JvdXBlIHF1aSBuJ2EgcGFzIHN1IHMnaW52ZXN0aXIgc3VmZmlzYW1tZW50Lg=="]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "moyenne": "16", "moyenneClasse": "17.81", "moyenneMin": "15.5", "moyenneMax": "20", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "moyenne": "16", "moyenneClasse": "17,52", "moyenneMin": "14", "moyenneMax": "20", "coef": 1, "effectif": 29, "rang": 23, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["VHJhdmFpbCBzw6lyaWV1eC4gQm9ubmUgYWlzYW5jZSDDoCBsJ29yYWwu", ""]}], "disciplinesSimulation": []}}, {"idPeriode": "A999Z", "codePeriode": "A999Z", "periode": "Ann\u00e9e", "annuel": true, "dateDebut": "2022-09-01", "dateFin": "2023-05-31", "examenBlanc": false, "cloture": true, "moyNbreJoursApresConseil": -1, "ensembleMatieres": {"dateCalcul": "2023-06-13 09:02", "nomPP": "M. OHL P.", "appreciationPP": "", "nomCE": "M. BON", "appreciationCE": "", "decisionDuConseil": "", "disciplines": [{"id": 16, "codeMatiere": "", "codeSousMatiere": "", "discipline": "TRONC COMMUN", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5489, "codeMatiere": "FRANC", "codeSousMatiere": "", "discipline": "FRANCAIS", "coef": 1, "effectif": 36, "rang": 31, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 120, "nom": "Mme MONTERRAT B."}], "appreciations": ["", "", ""]}, {"id": 5492, "codeMatiere": "HI-GE", "codeSousMatiere": "", "discipline": "HISTOIRE-GEOGRAPHIE", "coef": 1, "effectif": 36, "rang": 22, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}, {"id": 5483, "codeMatiere": "EMC", "codeSousMatiere": "", "discipline": "ENS. MORAL & CIVIQUE", "coef": 1, "effectif": 36, "rang": 18, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}, {"id": 5478, "codeMatiere": "AGL1", "codeSousMatiere": "", "discipline": "ANGLAIS LV1", "coef": 1, "effectif": 36, "rang": 33, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 118, "nom": "Mme FARRELLY J."}, {"id": 530, "nom": "Mme WANE A."}], "appreciations": ["", "", ""]}, {"id": 5480, "codeMatiere": "ALL2", "codeSousMatiere": "", "discipline": "ALLEMAND LV2", "coef": 1, "effectif": 25, "rang": 13, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 152, "nom": "Mme SZYMANSKA D."}], "appreciations": ["", "", ""]}, {"id": 5490, "codeMatiere": "G-SCI", "codeSousMatiere": "", "discipline": "ENSEIGN.SCIENTIFIQUE", "coef": 1, "effectif": 36, "rang": 29, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 551, "nom": "Mme JANIN A."}, {"id": 387, "nom": "Mme MEURET L."}, {"id": 81, "nom": "Mme BRET E."}], "appreciations": ["", "", ""]}, {"id": 5484, "codeMatiere": "EPS", "codeSousMatiere": "", "discipline": "ED.PHYSIQUE & SPORT.", "coef": 1, "effectif": 36, "rang": 36, "groupeMatiere": false, "idGroupeMatiere": 16, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 111, "nom": "M. BOURGEOIS N."}, {"id": 314, "nom": "Mme DUPONT J."}], "appreciations": ["", "", ""]}, {"id": 17, "codeMatiere": "", "codeSousMatiere": "", "discipline": "SPECIALIT\u00c9S", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5494, "codeMatiere": "MATHS", "codeSousMatiere": "", "discipline": "MATHEMATIQUES", "coef": 1, "effectif": 24, "rang": 21, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 169, "nom": "Mme GAUTHERON V."}], "appreciations": ["", "", ""]}, {"id": 5497, "codeMatiere": "PH-CH", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE", "coef": 1, "effectif": 27, "rang": 18, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["", "", ""]}, {"id": 5495, "codeMatiere": "NSINF", "codeSousMatiere": "", "discipline": "NUMERIQUE SC.INFORM.", "coef": 1, "effectif": 18, "rang": 14, "groupeMatiere": false, "idGroupeMatiere": 17, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 317, "nom": "M. JACQUET P."}], "appreciations": ["", "", ""]}, {"id": 15, "codeMatiere": "", "codeSousMatiere": "", "discipline": "OPTIONS", "coef": 0, "effectif": 0, "rang": 0, "groupeMatiere": true, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [], "appreciations": []}, {"id": 5496, "codeMatiere": "PCEUR", "codeSousMatiere": "", "discipline": "PHYSIQUE-CHIMIE EURO", "coef": 1, "effectif": 29, "rang": 23, "groupeMatiere": false, "idGroupeMatiere": 15, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 530, "nom": "Mme WANE A."}, {"id": 118, "nom": "Mme FARRELLY J."}, {"id": 282, "nom": "Mme BARRUCAND J."}], "appreciations": ["", "", ""]}, {"id": 6006, "codeMatiere": "DUAL", "codeSousMatiere": "", "discipline": "BAC Americain", "coef": 1, "effectif": 0, "rang": 0, "groupeMatiere": false, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 43, "nom": "Mme DURVILLE S."}], "appreciations": ["", "", ""]}, {"id": 5936, "codeMatiere": "VICLA", "codeSousMatiere": "", "discipline": "VIE DE CLASSE", "coef": 1, "effectif": 0, "rang": 0, "groupeMatiere": false, "idGroupeMatiere": 0, "option": 0, "sousMatiere": false, "saisieAppreciationSSMat": false, "professeurs": [{"id": 26, "nom": "M. OHL P."}], "appreciations": ["", "", ""]}], "disciplinesSimulation": []}}], "notes": [{"id": 20972639, "devoir": "Oral Creation of a star", "codePeriode": "A001", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "243060097249095001041049050150056055001173133196.jpeg", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2022-09-14", "dateSaisie": "2022-10-16", "valeurisee": false, "moyenneClasse": "14.88", "minClasse": "13.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20971630, "devoir": "Test Forme canonique", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "100184252179029069244253137197081235071130002118.pdf", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-09-16", "dateSaisie": "2022-09-20", "valeurisee": false, "moyenneClasse": "16.50", "minClasse": "3.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20971631, "devoir": "DM", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "089189012018068203160075093015158055238195153243.pdf", "coef": "0.1", "noteSur": "20", "valeur": "19,5", "nonSignificatif": false, "date": "2022-09-16", "dateSaisie": "2022-09-20", "valeurisee": false, "moyenneClasse": "14.67", "minClasse": "6.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20971762, "devoir": "test binaire", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2022-09-22", "dateSaisie": "2022-09-22", "valeurisee": false, "moyenneClasse": "15.00", "minClasse": "10.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973915, "devoir": "EE: was bedeutet Heimat f\u00fcr dich ", "codePeriode": "A001", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2022-09-25", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "15.00", "minClasse": "10.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20972577, "devoir": "Verbes irr\u00e9guliers", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "192254110227222253090189047120184255084092234073.pdf", "uncCorrige": "008070131203109202001110141229037117074243021092.pdf", "coef": "1", "noteSur": "20", "valeur": "19,5", "nonSignificatif": false, "date": "2022-09-28", "dateSaisie": "2022-10-14", "valeurisee": false, "moyenneClasse": "19.38", "minClasse": "14.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972640, "devoir": "Letter to a friend (Note de groupe)", "codePeriode": "A001", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-09-29", "dateSaisie": "2022-10-16", "valeurisee": false, "moyenneClasse": "18.66", "minClasse": "17.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972007, "devoir": "Test Python + Binaire", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "13", "valeur": "10", "nonSignificatif": false, "date": "2022-09-29", "dateSaisie": "2022-09-29", "valeurisee": false, "moyenneClasse": "7.72", "minClasse": "3.00", "maxClasse": "13.00", "elementsProgramme": []}, {"id": 20972069, "devoir": "DS 2nd degr\u00e9", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "167095004021165011159171235091189133107149086041.pdf", "coef": "2", "noteSur": "20", "valeur": "12,5", "nonSignificatif": false, "date": "2022-09-30", "dateSaisie": "2022-10-05", "valeurisee": false, "moyenneClasse": "13.38", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972112, "devoir": "Cours 1791", "codePeriode": "A001", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "8,5", "nonSignificatif": false, "date": "2022-10-03", "dateSaisie": "2022-10-03", "valeurisee": true, "moyenneClasse": "10.89", "minClasse": "4.50", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20972143, "devoir": "Contr\u00f4le lecture", "codePeriode": "A001", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "17,5", "nonSignificatif": false, "date": "2022-10-04", "dateSaisie": "2022-10-04", "valeurisee": false, "moyenneClasse": "18.49", "minClasse": "14.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972150, "devoir": "Automatismes ", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.1", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2022-10-04", "dateSaisie": "2022-10-04", "valeurisee": false, "moyenneClasse": "15.12", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972331, "devoir": "DM", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "110251217171026186165133186021167141034124223147.pdf", "coef": "0.1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-10-04", "dateSaisie": "2022-10-07", "valeurisee": false, "moyenneClasse": "13.70", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972144, "devoir": "Contr\u00f4le connaissances ", "codePeriode": "A001", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "7,5", "nonSignificatif": false, "date": "2022-10-04", "dateSaisie": "2022-10-04", "valeurisee": true, "moyenneClasse": "12.26", "minClasse": "5.50", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20972638, "devoir": "Zephaniah and OBE", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "104036164218178116052239156072127151033177068199.jpeg", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-10-06", "dateSaisie": "2022-10-16", "valeurisee": false, "moyenneClasse": "15.99", "minClasse": "0.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972579, "devoir": "Verbes irr\u00e9guliers", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "155011236094133200217067087176225195030170212159.pdf", "uncCorrige": "008070131203109202001110141229037117074243021092.pdf", "coef": "1", "noteSur": "20", "valeur": "15,5", "nonSignificatif": false, "date": "2022-10-06", "dateSaisie": "2022-10-14", "valeurisee": false, "moyenneClasse": "18.47", "minClasse": "7.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972568, "devoir": "\u00e9chelles d'une roche ", "codePeriode": "A001", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "5", "valeur": "5", "nonSignificatif": false, "date": "2022-10-07", "dateSaisie": "2022-10-15", "valeurisee": false, "moyenneClasse": "4.20", "minClasse": "2.50", "maxClasse": "5.00", "elementsProgramme": []}, {"id": 20972372, "devoir": "Commentaire 179", "codePeriode": "A001", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2022-10-10", "dateSaisie": "2022-10-10", "valeurisee": false, "moyenneClasse": "14.75", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972393, "devoir": "tableaux Python", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.3", "noteSur": "5", "valeur": "5", "nonSignificatif": false, "date": "2022-10-10", "dateSaisie": "2022-10-10", "valeurisee": false, "moyenneClasse": "1.94", "minClasse": "0.00", "maxClasse": "5.00", "elementsProgramme": []}, {"id": 20972460, "devoir": "Test CH1", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2022-10-11", "dateSaisie": "2022-10-11", "valeurisee": false, "moyenneClasse": "14.87", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972461, "devoir": "Test-CH2", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-10-11", "dateSaisie": "2022-10-11", "valeurisee": false, "moyenneClasse": "17.92", "minClasse": "14.25", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972462, "devoir": "DS-CH1-CH2", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "12,25", "nonSignificatif": false, "date": "2022-10-11", "dateSaisie": "2022-10-11", "valeurisee": false, "moyenneClasse": "12.12", "minClasse": "0.75", "maxClasse": "18.50", "elementsProgramme": []}, {"id": 20972581, "devoir": "Verbes irr\u00e9guliers", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "008017066120147216012182155088161248175201079047.pdf", "uncCorrige": "008070131203109202001110141229037117074243021092.pdf", "coef": "1", "noteSur": "20", "valeur": "19,25", "nonSignificatif": false, "date": "2022-10-12", "dateSaisie": "2022-10-14", "valeurisee": false, "moyenneClasse": "18.51", "minClasse": "8.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972515, "devoir": "Listes Pythons", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.6", "noteSur": "10", "valeur": "10", "nonSignificatif": false, "date": "2022-10-12", "dateSaisie": "2022-10-12", "valeurisee": false, "moyenneClasse": "7.27", "minClasse": "0.00", "maxClasse": "10.00", "elementsProgramme": []}, {"id": 20972749, "devoir": "The Commonwealth ", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "054112058081058102103127088184169196016239170241.pdf", "uncCorrige": "054112058081058102103127088184169196016239170241.pdf", "coef": "2", "noteSur": "20", "valeur": "15,75", "nonSignificatif": false, "date": "2022-10-14", "dateSaisie": "2022-10-20", "valeurisee": false, "moyenneClasse": "14.29", "minClasse": "3.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972670, "devoir": "\u00e9val comp\u00e9tences basket ball", "codePeriode": "A001", "codeMatiere": "EPS", "libelleMatiere": "ED.PHYSIQUE & SPORT.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15,5", "nonSignificatif": false, "date": "2022-10-17", "dateSaisie": "2022-10-17", "valeurisee": false, "moyenneClasse": "16.67", "minClasse": "13.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972891, "devoir": "Test Wortschatz Heimat ", "codePeriode": "A001", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "3,75", "nonSignificatif": false, "date": "2022-10-21", "dateSaisie": "2022-10-21", "valeurisee": true, "moyenneClasse": "13.19", "minClasse": "3.25", "maxClasse": "19.75", "elementsProgramme": []}, {"id": 20974139, "devoir": "Test PC", "codePeriode": "A001", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1.5", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-10-21", "dateSaisie": "2022-12-02", "valeurisee": false, "moyenneClasse": "18.28", "minClasse": "14.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973477, "devoir": "Contr\u00f4le de fin de s\u00e9quence (1)", "codePeriode": "A001", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "228090049198107178142106025017086252122171038233.pdf", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2022-10-21", "dateSaisie": "2022-11-18", "valeurisee": false, "moyenneClasse": "13.35", "minClasse": "1.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972911, "devoir": "Commentaire ", "codePeriode": "A001", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "7", "nonSignificatif": false, "date": "2022-10-22", "dateSaisie": "2022-10-22", "valeurisee": true, "moyenneClasse": "11.28", "minClasse": "0.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20972960, "devoir": "Carte villes", "codePeriode": "A001", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2022-10-27", "dateSaisie": "2022-10-27", "valeurisee": false, "moyenneClasse": "15.97", "minClasse": "9.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20973427, "devoir": "DS Nombre d\u00e9riv\u00e9", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "233243119066175127155050077227221193182110255184.pdf", "coef": "2", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-11-10", "dateSaisie": "2022-11-17", "valeurisee": false, "moyenneClasse": "16.02", "minClasse": "6.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20972878, "devoir": "DS Suites", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "177096027084165133168107132015212126146220220209.pdf", "coef": "2", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2022-11-11", "dateSaisie": "2022-10-22", "valeurisee": false, "moyenneClasse": "15.05", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973306, "devoir": "Oral avis de lecture ", "codePeriode": "A001", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2022-11-12", "dateSaisie": "2022-11-12", "valeurisee": false, "moyenneClasse": "15.89", "minClasse": "13.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20974140, "devoir": "Cellule et cristaux", "codePeriode": "A001", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "12,25", "nonSignificatif": false, "date": "2022-11-18", "dateSaisie": "2022-12-02", "valeurisee": false, "moyenneClasse": "12.12", "minClasse": "6.50", "maxClasse": "16.00", "elementsProgramme": []}, {"id": 20973579, "devoir": "Travaux pratiques", "codePeriode": "A001", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-11-19", "dateSaisie": "2022-11-21", "valeurisee": false, "moyenneClasse": "10.56", "minClasse": "1.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974116, "devoir": "DM Nombre d\u00e9riv\u00e9", "codePeriode": "A001", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "227025093126098169093191059185165140122231064011.pdf", "coef": "0.1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2022-11-22", "dateSaisie": "2022-11-30", "valeurisee": false, "moyenneClasse": "16.13", "minClasse": "10.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20973838, "devoir": "TP2-3-6", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "9", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": true, "moyenneClasse": "14.38", "minClasse": "9.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973849, "devoir": "Graphic organizer", "codePeriode": "A001", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "17.67", "minClasse": "12.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973876, "devoir": "Letter to a friend (Note individuelle)", "codePeriode": "A001", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "18.66", "minClasse": "16.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973833, "devoir": "TP4", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "15.43", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973843, "devoir": "Test", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "11,5", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "13.95", "minClasse": "3.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20973835, "devoir": "TP7", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-11-23", "dateSaisie": "2022-11-23", "valeurisee": false, "moyenneClasse": "14.75", "minClasse": "10.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20973949, "devoir": "Elections", "codePeriode": "A001", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-11-24", "dateSaisie": "2022-11-24", "valeurisee": false, "moyenneClasse": "16.00", "minClasse": "13.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20972892, "devoir": "EO en cours ", "codePeriode": "A001", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Interrogation Orale", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2022-11-25", "dateSaisie": "2022-10-21", "valeurisee": false, "moyenneClasse": "14.96", "minClasse": "8.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20974057, "devoir": "CE: ein neues Leben", "codePeriode": "A001", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "9,5", "nonSignificatif": false, "date": "2022-11-25", "dateSaisie": "2022-11-25", "valeurisee": true, "moyenneClasse": "10.26", "minClasse": "4.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20974070, "devoir": "Ds 1830", "codePeriode": "A001", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2022-11-27", "dateSaisie": "2022-11-27", "valeurisee": false, "moyenneClasse": "13.06", "minClasse": "5.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20974161, "devoir": "DS CH2-CH3", "codePeriode": "A001", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "5,25", "nonSignificatif": false, "date": "2022-12-02", "dateSaisie": "2022-12-02", "valeurisee": true, "moyenneClasse": "6.96", "minClasse": "0.25", "maxClasse": "15.00", "elementsProgramme": []}, {"id": 20974712, "devoir": "Oraux ligne 2 doc c manuel p19 et les charact\u00e9ristiques des biopics", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "16,5", "nonSignificatif": false, "date": "2022-12-07", "dateSaisie": "2023-01-05", "valeurisee": false, "moyenneClasse": "16.74", "minClasse": "12.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974272, "devoir": "Traitement d'image", "codePeriode": "A002", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2022-12-08", "dateSaisie": "2022-12-08", "valeurisee": false, "moyenneClasse": "15.28", "minClasse": "5.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974462, "devoir": "Verbes irr\u00e9guliers 4", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "12,5", "nonSignificatif": false, "date": "2022-12-08", "dateSaisie": "2022-12-14", "valeurisee": false, "moyenneClasse": "17.56", "minClasse": "7.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974993, "devoir": "Activit\u00e9 1", "codePeriode": "A002", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "5", "valeur": "4", "nonSignificatif": false, "date": "2022-12-09", "dateSaisie": "2023-01-13", "valeurisee": false, "moyenneClasse": "4.34", "minClasse": "4.00", "maxClasse": "5.00", "elementsProgramme": []}, {"id": 20974422, "devoir": "DS Probabilit\u00e9s conditionnelles", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "238096214184239213033087240072074068196253013059.pdf", "coef": "2", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2022-12-13", "dateSaisie": "2022-12-15", "valeurisee": false, "moyenneClasse": "17.85", "minClasse": "10.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974463, "devoir": "Description de limage du manuel p21.", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2022-12-14", "dateSaisie": "2022-12-24", "valeurisee": false, "moyenneClasse": "14.14", "minClasse": "5.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974583, "devoir": "Dissertation", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "9", "nonSignificatif": false, "date": "2022-12-23", "dateSaisie": "2022-12-23", "valeurisee": true, "moyenneClasse": "11.92", "minClasse": "0.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20974574, "devoir": "Reforme justice", "codePeriode": "A002", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2022-12-23", "dateSaisie": "2022-12-23", "valeurisee": false, "moyenneClasse": "14.31", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974569, "devoir": "Tableau", "codePeriode": "A002", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "11,5", "nonSignificatif": false, "date": "2022-12-23", "dateSaisie": "2022-12-23", "valeurisee": false, "moyenneClasse": "18.97", "minClasse": "9.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974570, "devoir": "Ds 1851", "codePeriode": "A002", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2022-12-23", "dateSaisie": "2022-12-23", "valeurisee": false, "moyenneClasse": "13.11", "minClasse": "0.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20974718, "devoir": "Expos\u00e9s Note Individuelle", "codePeriode": "A002", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-01-04", "dateSaisie": "2023-01-05", "valeurisee": false, "moyenneClasse": "18.69", "minClasse": "16.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974717, "devoir": "Expos\u00e9s Note de groupe", "codePeriode": "A002", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "17,5", "nonSignificatif": false, "date": "2023-01-04", "dateSaisie": "2023-01-05", "valeurisee": false, "moyenneClasse": "18.71", "minClasse": "17.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974713, "devoir": "Expos\u00e9s", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "18,5", "nonSignificatif": false, "date": "2023-01-04", "dateSaisie": "2023-01-04", "valeurisee": false, "moyenneClasse": "17.85", "minClasse": "13.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974812, "devoir": "TP9-10", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-01-06", "dateSaisie": "2023-01-06", "valeurisee": false, "moyenneClasse": "13.84", "minClasse": "9.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20974810, "devoir": "Test PH1-Ph2", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-01-06", "dateSaisie": "2023-01-06", "valeurisee": false, "moyenneClasse": "14.85", "minClasse": "7.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974811, "devoir": "DS-PH1-PH2", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "7", "nonSignificatif": false, "date": "2023-01-06", "dateSaisie": "2023-01-06", "valeurisee": true, "moyenneClasse": "10.87", "minClasse": "1.50", "maxClasse": "18.75", "elementsProgramme": []}, {"id": 20976627, "devoir": "vocabulaire", "codePeriode": "A002", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "25", "valeur": "14", "nonSignificatif": false, "date": "2023-01-06", "dateSaisie": "2023-03-02", "valeurisee": false, "moyenneClasse": "19.27", "minClasse": "4.75", "maxClasse": "24.75", "elementsProgramme": []}, {"id": 20974917, "devoir": "Audio the host", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-01-10", "dateSaisie": "2023-01-10", "valeurisee": false, "moyenneClasse": "16.36", "minClasse": "11.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974895, "devoir": "\u00e9val comp\u00e9tences musculation", "codePeriode": "A002", "codeMatiere": "EPS", "libelleMatiere": "ED.PHYSIQUE & SPORT.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-01-10", "dateSaisie": "2023-01-10", "valeurisee": false, "moyenneClasse": "18.73", "minClasse": "16.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20974906, "devoir": "Automatismes ", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-01-10", "dateSaisie": "2023-01-10", "valeurisee": false, "moyenneClasse": "10.90", "minClasse": "3.50", "maxClasse": "18.50", "elementsProgramme": []}, {"id": 20976631, "devoir": "Verbes irreguliers 5 ", "codePeriode": "A002", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "8,75", "nonSignificatif": false, "date": "2023-01-11", "dateSaisie": "2023-03-02", "valeurisee": true, "moyenneClasse": "17.56", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975028, "devoir": "DM Probabilit\u00e9s", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "114026142223102108195004067244231137027079168164.pdf", "coef": "0.1", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-01-12", "dateSaisie": "2023-01-18", "valeurisee": false, "moyenneClasse": "15.98", "minClasse": "4.50", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20976277, "devoir": "Methode datation Age", "codePeriode": "A002", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-01-13", "dateSaisie": "2023-02-24", "valeurisee": false, "moyenneClasse": "14.93", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975030, "devoir": "DS Trigonom\u00e9trie", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "186051153224094170020153170193220231250022243232.pdf", "coef": "2", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-01-13", "dateSaisie": "2023-01-18", "valeurisee": false, "moyenneClasse": "15.61", "minClasse": "5.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975052, "devoir": "HTML & CSS", "codePeriode": "A002", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-01-15", "dateSaisie": "2023-01-15", "valeurisee": false, "moyenneClasse": "14.47", "minClasse": "5.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975572, "devoir": "DS_PH3", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "9,75", "nonSignificatif": false, "date": "2023-01-26", "dateSaisie": "2023-01-26", "valeurisee": true, "moyenneClasse": "12.39", "minClasse": "1.75", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20975587, "devoir": "Bac blanc 1 ", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Examen Blanc", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2023-01-26", "dateSaisie": "2023-01-26", "valeurisee": false, "moyenneClasse": "11.54", "minClasse": "4.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20975621, "devoir": "Ds mondialisation ", "codePeriode": "A002", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "6", "nonSignificatif": false, "date": "2023-01-27", "dateSaisie": "2023-01-27", "valeurisee": true, "moyenneClasse": "13.31", "minClasse": "6.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975620, "devoir": "Carte France ", "codePeriode": "A002", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2023-01-27", "dateSaisie": "2023-01-27", "valeurisee": false, "moyenneClasse": "13.00", "minClasse": "3.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975627, "devoir": "DS 2nd degr\u00e9", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-01-27", "dateSaisie": "2023-01-30", "valeurisee": false, "moyenneClasse": "15.96", "minClasse": "7.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975919, "devoir": "Tri et Recherche", "codePeriode": "A002", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-02-07", "dateSaisie": "2023-02-07", "valeurisee": false, "moyenneClasse": "12.33", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20975977, "devoir": "Test CH4_CH5", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-02-13", "dateSaisie": "2023-02-13", "valeurisee": false, "moyenneClasse": "10.52", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976023, "devoir": "versification", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "12,5", "nonSignificatif": false, "date": "2023-02-18", "dateSaisie": "2023-02-18", "valeurisee": false, "moyenneClasse": "14.76", "minClasse": "6.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976018, "devoir": "DS-CH4-CH5", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-02-18", "dateSaisie": "2023-02-18", "valeurisee": false, "moyenneClasse": "10.02", "minClasse": "0.75", "maxClasse": "16.25", "elementsProgramme": []}, {"id": 20976022, "devoir": "contr\u00f4le connaissances Baudelaire", "codePeriode": "A002", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "8,5", "nonSignificatif": false, "date": "2023-02-18", "dateSaisie": "2023-02-18", "valeurisee": true, "moyenneClasse": "14.94", "minClasse": "7.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976073, "devoir": "TP11", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-02-20", "dateSaisie": "2023-02-20", "valeurisee": false, "moyenneClasse": "15.52", "minClasse": "11.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20976260, "devoir": "TPmolecules", "codePeriode": "A002", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-02-23", "dateSaisie": "2023-02-23", "valeurisee": false, "moyenneClasse": "16.50", "minClasse": "14.00", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20976461, "devoir": "Evaluation chapitre 4", "codePeriode": "A002", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "109251021016160103239058204122173226003085174189.pdf", "coef": "2", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2023-02-24", "dateSaisie": "2023-03-01", "valeurisee": false, "moyenneClasse": "16.69", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976325, "devoir": "TP eurostat", "codePeriode": "A002", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-02-25", "dateSaisie": "2023-02-25", "valeurisee": false, "moyenneClasse": "12.41", "minClasse": "0.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976799, "devoir": "Die Geschichte von Siegfried", "codePeriode": "A002", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "7,75", "nonSignificatif": false, "date": "2023-02-26", "dateSaisie": "2023-03-10", "valeurisee": true, "moyenneClasse": "14.41", "minClasse": "5.25", "maxClasse": "19.75", "elementsProgramme": []}, {"id": 20976585, "devoir": "DS Suites Arithm\u00e9tiques", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "119110196071160176092048129119062050194242255103.pdf", "coef": "2", "noteSur": "20", "valeur": "12,5", "nonSignificatif": false, "date": "2023-02-28", "dateSaisie": "2023-03-04", "valeurisee": false, "moyenneClasse": "16.58", "minClasse": "10.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976695, "devoir": "Test Fonctions d\u00e9riv\u00e9es", "codePeriode": "A002", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-03-03", "dateSaisie": "2023-03-04", "valeurisee": false, "moyenneClasse": "16.76", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976795, "devoir": "Science news", "codePeriode": "A002", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2023-03-10", "dateSaisie": "2023-03-10", "valeurisee": false, "moyenneClasse": "17.63", "minClasse": "14.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977134, "devoir": "\u00c9valuation comp\u00e9tences : step", "codePeriode": "A003", "codeMatiere": "EPS", "libelleMatiere": "ED.PHYSIQUE & SPORT.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16,5", "nonSignificatif": false, "date": "2023-03-13", "dateSaisie": "2023-03-22", "valeurisee": false, "moyenneClasse": "17.09", "minClasse": "13.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976933, "devoir": "DM 2nd degr\u00e9", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "167208163043085031195161072101192078080070087222.pdf", "coef": "0.25", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-03-14", "dateSaisie": "2023-03-16", "valeurisee": false, "moyenneClasse": "15.38", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976830, "devoir": "DM sur Ponge", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-03-15", "dateSaisie": "2023-03-15", "valeurisee": false, "moyenneClasse": "13.71", "minClasse": "7.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20976831, "devoir": "DS sur po\u00e9sie ", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "7", "nonSignificatif": false, "date": "2023-03-15", "dateSaisie": "2023-03-15", "valeurisee": true, "moyenneClasse": "10.88", "minClasse": "5.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20979055, "devoir": "Mein Held", "codePeriode": "A003", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-03-16", "dateSaisie": "2023-05-30", "valeurisee": false, "moyenneClasse": "16.84", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20976962, "devoir": "Flux \u00e9nergie et matiere", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Travaux de Groupe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "10", "valeur": "5", "nonSignificatif": false, "date": "2023-03-17", "dateSaisie": "2023-03-17", "valeurisee": false, "moyenneClasse": "5.50", "minClasse": "2.00", "maxClasse": "7.50", "elementsProgramme": []}, {"id": 20977093, "devoir": "DS Fonctions d\u00e9riv\u00e9es et probabilit\u00e9s conditionnelles", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "063090100188235173075042026114115128251065003021.pdf", "coef": "2", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-03-17", "dateSaisie": "2023-03-21", "valeurisee": false, "moyenneClasse": "15.76", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977165, "devoir": "DS-PH4", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11,5", "nonSignificatif": false, "date": "2023-03-23", "dateSaisie": "2023-03-23", "valeurisee": false, "moyenneClasse": "13.33", "minClasse": "3.00", "maxClasse": "19.25", "elementsProgramme": []}, {"id": 20977229, "devoir": "Rayonnement solaire", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "19,5", "nonSignificatif": false, "date": "2023-03-24", "dateSaisie": "2023-03-25", "valeurisee": false, "moyenneClasse": "18.72", "minClasse": "11.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977246, "devoir": "Pygame", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-03-27", "dateSaisie": "2023-03-27", "valeurisee": false, "moyenneClasse": "16.78", "minClasse": "10.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977294, "devoir": "Oral blanc fran\u00e7ais", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Interrogation Orale", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "9", "nonSignificatif": false, "date": "2023-03-28", "dateSaisie": "2023-03-28", "valeurisee": true, "moyenneClasse": "12.89", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977299, "devoir": "Automatismes", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.25", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-03-28", "dateSaisie": "2023-03-28", "valeurisee": false, "moyenneClasse": "11.33", "minClasse": "4.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20977441, "devoir": "Adressage IP", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-04-03", "dateSaisie": "2023-04-02", "valeurisee": false, "moyenneClasse": "11.56", "minClasse": "1.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977457, "devoir": "DM Suites Arithm\u00e9tiques", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "166083213025000101102033151183014172004149046112.pdf", "coef": "0.25", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-04-03", "dateSaisie": "2023-04-05", "valeurisee": false, "moyenneClasse": "17.10", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978096, "devoir": "Expression \u00e9crite", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-04-05", "dateSaisie": "2023-05-02", "valeurisee": false, "moyenneClasse": "13.05", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978095, "devoir": "comprehension de texte", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "15,5", "nonSignificatif": false, "date": "2023-04-05", "dateSaisie": "2023-05-02", "valeurisee": false, "moyenneClasse": "13.73", "minClasse": "5.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977538, "devoir": "Cours", "codePeriode": "A003", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "8,5", "nonSignificatif": false, "date": "2023-04-06", "dateSaisie": "2023-04-06", "valeurisee": true, "moyenneClasse": "16.33", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977540, "devoir": "Politique", "codePeriode": "A003", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2023-04-06", "dateSaisie": "2023-04-06", "valeurisee": false, "moyenneClasse": "15.19", "minClasse": "11.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977539, "devoir": "Doc ecole", "codePeriode": "A003", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "12", "nonSignificatif": false, "date": "2023-04-06", "dateSaisie": "2023-04-06", "valeurisee": false, "moyenneClasse": "13.50", "minClasse": "8.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20977630, "devoir": "Jeunes et politique", "codePeriode": "A003", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-04-07", "dateSaisie": "2023-04-07", "valeurisee": false, "moyenneClasse": "14.80", "minClasse": "10.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20978856, "devoir": "Combustibles fossiles", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "10", "valeur": "3,25", "nonSignificatif": false, "date": "2023-04-14", "dateSaisie": "2023-05-27", "valeurisee": true, "moyenneClasse": "5.69", "minClasse": "3.25", "maxClasse": "8.00", "elementsProgramme": []}, {"id": 20978335, "devoir": "Chapitre 9 photosynth\u00e8se ", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "13,75", "nonSignificatif": false, "date": "2023-04-14", "dateSaisie": "2023-05-09", "valeurisee": false, "moyenneClasse": "15.05", "minClasse": "8.75", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977719, "devoir": "DS PH5-CH6", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11,25", "nonSignificatif": false, "date": "2023-04-18", "dateSaisie": "2023-04-18", "valeurisee": false, "moyenneClasse": "13.06", "minClasse": "7.25", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20977737, "devoir": "TP_Etudes comp_organiques", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.25", "noteSur": "20", "valeur": "12,75", "nonSignificatif": false, "date": "2023-04-19", "dateSaisie": "2023-04-19", "valeurisee": false, "moyenneClasse": "13.32", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20977736, "devoir": "TPcomp_organiques", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-04-19", "dateSaisie": "2023-04-19", "valeurisee": false, "moyenneClasse": "16.31", "minClasse": "13.00", "maxClasse": "19.50", "elementsProgramme": []}, {"id": 20977782, "devoir": "Audio pourquoi jai mang\u00e9 ", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-04-21", "dateSaisie": "2023-04-21", "valeurisee": false, "moyenneClasse": "16.03", "minClasse": "11.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978089, "devoir": "DS Produit scalaire", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "098138220182247216060153038229236197145227211035.pdf", "coef": "2", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-04-25", "dateSaisie": "2023-05-02", "valeurisee": false, "moyenneClasse": "13.32", "minClasse": "3.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978145, "devoir": "DS CH6-7-8", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "11,25", "nonSignificatif": false, "date": "2023-05-03", "dateSaisie": "2023-05-03", "valeurisee": false, "moyenneClasse": "13.48", "minClasse": "2.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978255, "devoir": "DM Variable al\u00e9atoire", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "208148108053159255162122113211168242203133116098.pdf", "coef": "0.25", "noteSur": "20", "valeur": "19", "nonSignificatif": false, "date": "2023-05-04", "dateSaisie": "2023-05-10", "valeurisee": false, "moyenneClasse": "18.52", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978278, "devoir": "Parcours de liste python", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Test", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-05-08", "dateSaisie": "2023-05-10", "valeurisee": false, "moyenneClasse": "12.61", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978256, "devoir": "DS Suites Arithm\u00e9tiques et G\u00e9om\u00e9triques", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "213187084251212017048205191197186133049101145165.pdf", "coef": "2", "noteSur": "20", "valeur": "17,5", "nonSignificatif": false, "date": "2023-05-09", "dateSaisie": "2023-05-13", "valeurisee": false, "moyenneClasse": "15.17", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978334, "devoir": "Doc tranchees", "codePeriode": "A003", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "11", "nonSignificatif": false, "date": "2023-05-09", "dateSaisie": "2023-05-09", "valeurisee": false, "moyenneClasse": "14.03", "minClasse": "9.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20978443, "devoir": "Fill in the blanks", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-05-11", "dateSaisie": "2023-05-12", "valeurisee": false, "moyenneClasse": "17.12", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978469, "devoir": "Parcours de liste 2", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-05-14", "dateSaisie": "2023-05-14", "valeurisee": false, "moyenneClasse": "15.83", "minClasse": "8.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978728, "devoir": "COMPREHENSION TEXTE VOCAB.", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-05-17", "dateSaisie": "2023-05-23", "valeurisee": false, "moyenneClasse": "15.58", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978729, "devoir": "APPRENTISSAGES", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-05-17", "dateSaisie": "2023-05-23", "valeurisee": false, "moyenneClasse": "14.13", "minClasse": "8.50", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978656, "devoir": "\u00e9valuation comp\u00e9tences badminton", "codePeriode": "A003", "codeMatiere": "EPS", "libelleMatiere": "ED.PHYSIQUE & SPORT.", "codeSousMatiere": "", "typeDevoir": "Contr\u00f4le", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "13", "nonSignificatif": false, "date": "2023-05-22", "dateSaisie": "2023-05-22", "valeurisee": false, "moyenneClasse": "15.76", "minClasse": "13.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978639, "devoir": "Fin devie", "codePeriode": "A003", "codeMatiere": "EMC", "libelleMatiere": "ENS. MORAL & CIVIQUE", "codeSousMatiere": "", "typeDevoir": "Devoir Maison", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-05-22", "dateSaisie": "2023-05-22", "valeurisee": false, "moyenneClasse": "15.28", "minClasse": "13.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20978737, "devoir": "cours 1 GM", "codePeriode": "A003", "codeMatiere": "HI-GE", "libelleMatiere": "HISTOIRE-GEOGRAPHIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "5", "nonSignificatif": false, "date": "2023-05-24", "dateSaisie": "2023-05-24", "valeurisee": true, "moyenneClasse": "15.92", "minClasse": "5.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978785, "devoir": "participation", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-05-24", "dateSaisie": "2023-05-24", "valeurisee": false, "moyenneClasse": "16.17", "minClasse": "10.00", "maxClasse": "18.00", "elementsProgramme": []}, {"id": 20979053, "devoir": "EE der Wald", "codePeriode": "A003", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-30", "valeurisee": false, "moyenneClasse": "15.58", "minClasse": "2.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978800, "devoir": "TD Stat CSV", "codePeriode": "A003", "codeMatiere": "NSINF", "libelleMatiere": "NUMERIQUE SC.INFORM.", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "20", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-26", "valeurisee": false, "moyenneClasse": "13.50", "minClasse": "0.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978868, "devoir": "Energy project", "codePeriode": "A003", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-25", "valeurisee": false, "moyenneClasse": "18.17", "minClasse": "16.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978844, "devoir": "Test ondes", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Interrogation Ecrite", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "18,5", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-25", "valeurisee": false, "moyenneClasse": "14.88", "minClasse": "7.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979054, "devoir": "Expression orale", "codePeriode": "A003", "codeMatiere": "ALL2", "libelleMatiere": "ALLEMAND LV2", "codeSousMatiere": "", "typeDevoir": "Interrogation Orale", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "16", "nonSignificatif": false, "date": "2023-05-25", "dateSaisie": "2023-05-30", "valeurisee": false, "moyenneClasse": "16.44", "minClasse": "5.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979144, "devoir": "projet exp\u00e9rimental et num\u00e9rique", "codePeriode": "A003", "codeMatiere": "G-SCI", "libelleMatiere": "ENSEIGN.SCIENTIFIQUE", "codeSousMatiere": "", "typeDevoir": "Travaux de Groupe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "10", "nonSignificatif": false, "date": "2023-05-26", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "16.75", "minClasse": "10.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978646, "devoir": "DS Application de la d\u00e9rivation", "codePeriode": "A003", "codeMatiere": "MATHS", "libelleMatiere": "MATHEMATIQUES", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "176096181124254024204152123122161058214133189221.pdf", "coef": "2", "noteSur": "20", "valeur": "15", "nonSignificatif": false, "date": "2023-05-26", "dateSaisie": "2023-05-26", "valeurisee": false, "moyenneClasse": "14.95", "minClasse": "7.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20978990, "devoir": "Bac blanc 2 ", "codePeriode": "A003", "codeMatiere": "FRANC", "libelleMatiere": "FRANCAIS", "codeSousMatiere": "", "typeDevoir": "Examen Blanc", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "3", "noteSur": "20", "valeur": "7", "nonSignificatif": false, "date": "2023-05-28", "dateSaisie": "2023-05-28", "valeurisee": true, "moyenneClasse": "10.40", "minClasse": "6.00", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20979124, "devoir": "DS PH6_PH8", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Devoir Surveill\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "2", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "11.44", "minClasse": "2.75", "maxClasse": "19.00", "elementsProgramme": []}, {"id": 20979182, "devoir": "expos\u00e9 scientific jobs and scientists", "codePeriode": "A003", "codeMatiere": "PCEUR", "libelleMatiere": "PHYSIQUE-CHIMIE EURO", "codeSousMatiere": "", "typeDevoir": "Expos\u00e9", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "14", "nonSignificatif": false, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "16.86", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979125, "devoir": "TP1_lentilles", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "17", "nonSignificatif": false, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "16.00", "minClasse": "12.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979176, "devoir": "interro cours", "codePeriode": "A003", "codeMatiere": "AGL1", "libelleMatiere": "ANGLAIS LV1", "codeSousMatiere": "", "typeDevoir": "", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "1", "noteSur": "20", "valeur": "10", "nonSignificatif": true, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "12.82", "minClasse": "4.00", "maxClasse": "20.00", "elementsProgramme": []}, {"id": 20979126, "devoir": "TP2_lentilles ", "codePeriode": "A003", "codeMatiere": "PH-CH", "libelleMatiere": "PHYSIQUE-CHIMIE", "codeSousMatiere": "", "typeDevoir": "Trav. Prat. Classe", "enLettre": false, "commentaire": "", "uncSujet": "", "uncCorrige": "", "coef": "0.5", "noteSur": "20", "valeur": "18", "nonSignificatif": false, "date": "2023-05-31", "dateSaisie": "2023-05-31", "valeurisee": false, "moyenneClasse": "17.00", "minClasse": "12.00", "maxClasse": "19.00", "elementsProgramme": []}], "parametrage": {"couleurEval1": "#FF0000", "couleurEval2": "#FFC000", "couleurEval3": "#0070C0", "couleurEval4": "#00B050", "libelleEval1": "Tm9uIGF0dGVpbnRz", "libelleEval2": "UGFydGllbGxlbWVudCBhdHRlaW50cw==", "libelleEval3": "QXR0ZWludHM=", "libelleEval4": "RMOpcGFzc8Opcw==", "affichageMoyenne": true, "affichageMoyenneDevoir": true, "affichagePositionMatiere": false, "affichageNote": true, "affichageCompetence": false, "affichageEvaluationsComposantes": false, "affichageGraphiquesComposantes": true, "modeCalculGraphiquesComposantes": "eval", "affichageCompNum": false, "libelleEvalCompNum1": "Tm9uIGF0dGVpbnQ=", "libelleEvalCompNum2": "UGFydGllbGxlbWVudCBhdHRlaW50", "libelleEvalCompNum3": "QXR0ZWludA==", "affichageAppreciation": true, "appreciationsProf": true, "appreciationProfPrinc": true, "affichageMention": false, "affichageAppreciationCE": true, "affichageAppreciationVS": false, "affichageAppreciationCN": false, "affichageAppreciationClasse": false, "affichageAppreciationPeriodeCloturee": true, "moyenneUniquementPeriodeCloture": false, "moyennePeriodeReleve": false, "moyennePeriodeAnnuelle": false, "moyennePeriodeHorsP": false, "moyenneEleveDansNotes": true, "moyenneEleve": true, "moyenneEleveDansMoyenne": true, "moyenneGenerale": false, "moyenneCoefMatiere": true, "moyenneClasse": true, "moyenneMin": true, "moyenneMax": true, "moyenneRang": true, "moyenneSur": 20, "moyenneGraphique": true, "moyennesSimulation": false, "coefficientNote": true, "colonneCoefficientMatiere": true, "noteGrasSousMoyenne": true, "noteGrasAudessusMoyenne": false, "libelleDevoir": true, "dateDevoir": true, "typeDevoir": true, "noteUniquementPeriodeCloture": false, "notePeriodeReleve": false, "notePeriodeAnnuelle": false, "notePeriodeHorsP": false, "libellesAppreciations": ["Appr\u00e9ciation", "Appr\u00e9ciation classe mati\u00e8re"], "appreciationsParametrage": [{"code": "APP1", "id": 1, "nbMaxCaractere": 350, "libelle": "Appr\u00e9ciation"}, {"code": "APP3", "id": 3, "nbMaxCaractere": 200, "libelle": "Appr\u00e9ciation classe mati\u00e8re"}]}}} \ No newline at end of file From da04380638dfc632cbfc8d8062c9b0e43ff24621 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sun, 13 Oct 2024 20:00:38 +0200 Subject: [PATCH 07/31] fixed min/max displayed in chart when there it it not enabled --- src/components/app/Grades/Charts.jsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/app/Grades/Charts.jsx b/src/components/app/Grades/Charts.jsx index 5afc74c..86a4eed 100644 --- a/src/components/app/Grades/Charts.jsx +++ b/src/components/app/Grades/Charts.jsx @@ -54,6 +54,10 @@ export default function Charts({ selectedPeriod }) { /** * return the appropriate dataset according to the chartType */ + const grades = useUserData(); + const minMaxEnabled = grades.get("gradesEnabledFeatures")?.moyenneMin && grades.get("gradesEnabledFeatures")?.moyenneMax ? true : false; + console.log(minMaxEnabled); + switch (chartType) { case 0: @@ -140,6 +144,7 @@ export default function Charts({ selectedPeriod }) { chartData.current = { labels: Array.from({ length: subjectsComparativeInformation[selectedPeriod].length }, (_, i) => subjectsComparativeInformation[selectedPeriod][i].subjectFullname), datasets: [ + ...(minMaxEnabled ? [ { type: "bar", label: "Moyennes min et max de classe", @@ -151,7 +156,9 @@ export default function Charts({ selectedPeriod }) { // yAxisID: "y" borderSkipped: false, order: 2 - }, + }, + ] : [] + ), { type: "line", label: "Moyenne élève", From e76419f38e5e5173142297b0be537f48cbe1ab67 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Mon, 21 Oct 2024 00:03:15 +0200 Subject: [PATCH 08/31] Added a lot of functionnalities to the messages, added the ability to toggle window drag, added the vertical scroll to the scrollShadeddiv Added a lot of functionnalities to the messages like: - better folder support (even special folders) - folder managment support (create, delete, rename folders) - messages managment support (print, move archive and more) - some other tweaks i forgot added the ability to toggle window drag, added the vertical scroll to the scrollShadeddiv --- src/App.jsx | 386 ++++++++++++++++-- src/components/app/Messaging/Inbox.jsx | 21 +- .../app/Messaging/MessageReader.css | 73 ++++ .../app/Messaging/MessageReader.jsx | 122 +++++- src/components/app/Messaging/Messaging.css | 160 +++++++- src/components/app/Messaging/Messaging.jsx | 254 ++++++++++-- .../generic/CustomDivs/ScrollShadedDiv.css | 88 ++-- .../generic/CustomDivs/ScrollShadedDiv.jsx | 102 ++++- src/components/generic/Window.jsx | 60 +-- src/components/graphics/ArchiveIcon.jsx | 9 + src/components/graphics/DeleteIcon.jsx | 9 + src/components/graphics/DraftIcon.jsx | 9 + src/components/graphics/EditIcon.jsx | 9 + src/components/graphics/InboxIcon.jsx | 9 + src/components/graphics/NewFolderIcon.jsx | 9 + src/components/graphics/PrintIcon.jsx | 9 + src/components/graphics/RenameIcon.jsx | 10 + src/components/graphics/SendIcon.jsx | 9 + src/components/graphics/graphics.css | 4 + 19 files changed, 1196 insertions(+), 156 deletions(-) create mode 100644 src/components/graphics/ArchiveIcon.jsx create mode 100644 src/components/graphics/DeleteIcon.jsx create mode 100644 src/components/graphics/DraftIcon.jsx create mode 100644 src/components/graphics/EditIcon.jsx create mode 100644 src/components/graphics/InboxIcon.jsx create mode 100644 src/components/graphics/NewFolderIcon.jsx create mode 100644 src/components/graphics/PrintIcon.jsx create mode 100644 src/components/graphics/RenameIcon.jsx create mode 100644 src/components/graphics/SendIcon.jsx diff --git a/src/App.jsx b/src/App.jsx index 0856d5f..88f139f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -906,7 +906,7 @@ export default function App({ edpFetch }) { const subjectAverage = periods[periodCode].subjects[subjectCode].average; const oldGeneralAverage = isNaN(periods[periodCode].generalAverage) ? 10 : periods[periodCode].generalAverage; const average = calcAverage(subjectDatas[periodCode][subjectCode]); - const classAverage = calcClassAverage(subjectDatas[periodCode][subjectCode]); + const classAverage = calcClassAverage(subjectDatas[periodCode][subjectCode]); // streak management newGrade.upTheStreak = (!isNaN(newGrade.value) && newGrade.isSignificant && (nbSubjectGrades > 0 ? subjectAverage : oldGeneralAverage) <= average); @@ -944,7 +944,7 @@ export default function App({ edpFetch }) { generalAverageHistory[periodCode].generalAverages.push(generalAverage); generalAverageHistory[periodCode].dates.push(newGrade.date); periods[periodCode].generalAverage = generalAverage; - + const classGeneralAverage = calcClassGeneralAverage(periods[periodCode]); classGeneralAverageHistory[periodCode].classGeneralAverages.push(classGeneralAverage); classGeneralAverageHistory[periodCode].dates.push(newGrade.date); @@ -1147,14 +1147,16 @@ export default function App({ edpFetch }) { } - function sortMessageFolders(messages, origin=0) { + function sortMessageFolders(messages, origin = 0) { const oldMessageFolders = useUserData("messageFolders").get(); - let sortedMessageFolders = messages.classeurs.filter((folder) => (oldMessageFolders === undefined || !oldMessageFolders.some((oldFolder) => oldFolder.id === folder.id))).map((folder) => { return { - id: folder.id, - name: folder.libelle, - fetchInitiated: false, - fetched: origin === folder.id - }}); + let sortedMessageFolders = messages.classeurs.filter((folder) => (oldMessageFolders === undefined || !oldMessageFolders.some((oldFolder) => oldFolder.id === folder.id))).map((folder) => { + return { + id: folder.id, + name: folder.libelle, + fetchInitiated: false, + fetched: origin === folder.id + } + }); if (oldMessageFolders === undefined) { sortedMessageFolders.unshift({ id: 0, @@ -1163,26 +1165,110 @@ export default function App({ edpFetch }) { fetched: origin === 0 }) } else { - sortedMessageFolders.unshift(oldMessageFolders.map((folder) => {folder.id === origin && (folder.fetched = true); return folder})); + sortedMessageFolders.unshift(oldMessageFolders.map((folder) => { folder.id === origin && (folder.fetched = true); return folder })); sortedMessageFolders = sortedMessageFolders.flat(); } + // Add hardcoded folders + if (!sortedMessageFolders.some((folder) => folder.id === -1)) { + sortedMessageFolders.push({ + id: -1, + name: "Envoyés", + fetchInitiated: false, + fetched: origin === -1 + }) + } + if (!sortedMessageFolders.some((folder) => folder.id === -2)) { + sortedMessageFolders.push({ + id: -2, + name: "Archivés", + fetchInitiated: false, + fetched: origin === -2 + }) + } + if (!sortedMessageFolders.some((folder) => folder.id === -3)) { + sortedMessageFolders.push({ + id: -3, + name: "Créer un dossier", + // This is a virtual folder (it doesn't exist at all, it's just a button to create a new folder so it doesn't need to be fetched) + fetchInitiated: true, + fetched: true + }) + } + if (!sortedMessageFolders.some((folder) => folder.id === -4)) { + sortedMessageFolders.push({ + id: -4, + name: "Brouillons", + fetchInitiated: false, + fetched: origin === -4 + }) + } return sortedMessageFolders; } - function sortMessages(messages) { - const sortedMessages = messages.messages.received.map((message) => { return { - date: message.date, - files: structuredClone(message.files)?.map((file) => new File(file.id, file.type, file.libelle)), - from: message.from, - id: message.id, - folderId: message.idClasseur, - read: message.read, - subject: message.subject, - content: null, - // ... - }}); + function sortMessages(messages, type) { + let sortedMessages = []; + // This handles the special folders (sent, received, archived) by adressign them an unused folderId + if (type === "received") { + sortedMessages = messages.messages.received.map((message) => { + return { + date: message.date, + files: structuredClone(message.files)?.map((file) => new File(file.id, file.type, file.libelle)), + from: message.from, + id: message.id, + folderId: message.idClasseur, + read: message.read, + subject: message.subject, + content: null, + // ... + } + }); + } else if (type === "sent") { + sortedMessages = messages.messages.sent.map((message) => { + return { + date: message.date, + files: structuredClone(message.files)?.map((file) => new File(file.id, file.type, file.libelle)), + from: message.from, + id: message.id, + folderId: -1, + read: message.read, + subject: message.subject, + content: null, + // ... + } + }); + } + else if (type === "archived") { + sortedMessages = messages.messages.archived.map((message) => { + return { + date: message.date, + files: structuredClone(message.files)?.map((file) => new File(file.id, file.type, file.libelle)), + from: message.from, + id: message.id, + folderId: -2, + read: message.read, + subject: message.subject, + content: null, + // ... + } + }); + } + else if (type === "drafts") { + sortedMessages = messages.messages.draft.map((message) => { + return { + date: message.date, + files: structuredClone(message.files)?.map((file) => new File(file.id, file.type, file.libelle)), + from: message.from, + id: message.id, + folderId: -4, + read: message.read, + subject: message.subject, + content: null, + // ... + } + }); + } return sortedMessages; } @@ -1705,7 +1791,8 @@ export default function App({ edpFetch }) { } - async function fetchMessages(folderId=0, controller = (new AbortController())) { + async function fetchMessages(folderId = 0, controller = (new AbortController())) { + const oldMessageFolders = useUserData("messageFolders").get(); if (oldMessageFolders && oldMessageFolders?.length > 0) { if (oldMessageFolders.find((item) => item.id === folderId)?.fetchInitiated) { @@ -1715,14 +1802,27 @@ export default function App({ edpFetch }) { useUserData("messageFolders").set(oldMessageFolders) } } - + abortControllers.current.push(controller); const userId = activeAccount; const data = { anneeMessages: getUserSettingValue("isSchoolYearEnabled") ? getUserSettingValue("schoolYear").join("-") : getCurrentSchoolYear().join("-"), } + // handle special folders (this is done that way because special folders are not considered as folders by EcoleDirecte but need to be fetched differently) + let specialFolderType = "received"; + if (folderId === -1) { + specialFolderType = "sent"; + // set the folderId to 0 to avoid errors + folderId = 0; + } else if (folderId === -2) { + specialFolderType = "archived"; + folderId = 0; + } else if (folderId === -4) { + specialFolderType = "drafts"; + folderId = 0; + } edpFetch( - getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?force=false&typeRecuperation=received&idClasseur=${folderId}&orderBy=date&order=desc&query=&onlyRead=&page=0&itemsPerPage=100&getAll=0&verbe=get&v=${apiVersion}`, true), + getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?force=false&typeRecuperation=${specialFolderType}&idClasseur=${folderId}&orderBy=date&order=desc&query=&onlyRead=&page=0&itemsPerPage=100&getAll=0&verbe=get&v=${apiVersion}`, true), { method: "POST", headers: { @@ -1746,7 +1846,17 @@ export default function App({ edpFetch }) { if (oldSortedMessages === undefined) { oldSortedMessages = []; } - oldSortedMessages.push(sortMessages(response.data)); + + // we've added the specialFolderType to the function to handle the special folders (to handle different data path for special folders and special folderId) + oldSortedMessages.push(sortMessages(response.data, specialFolderType)); + if (specialFolderType === "sent") { + // set the folderId back to -1 to than handle the special folders + folderId = -1; + } else if (specialFolderType === "archived") { + folderId = -2; + } else if (specialFolderType === "drafts") { + folderId = -4; + } changeUserData("sortedMessages", oldSortedMessages.flat()); changeUserData("messageFolders", sortMessageFolders(response.data, folderId)); } else if (code === 520 || code === 525) { @@ -1981,8 +2091,8 @@ export default function App({ edpFetch }) { async function fetchAdministrativeDocuments(selectedYear, controller = (new AbortController())) { abortControllers.current.push(controller); - return edpFetch( - getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[activeAccount].accountType === "E" ? "eleves": "famille"}Documents.awp?archive=${selectedYear}&verbe=get&v=${apiVersion}`, true), + return edpFetch( + getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[activeAccount].accountType === "E" ? "eleves" : "famille"}Documents.awp?archive=${selectedYear}&verbe=get&v=${apiVersion}`, true), { method: "POST", headers: { @@ -2013,7 +2123,7 @@ export default function App({ edpFetch }) { const facturesDocuments = formatDocument(response.data.factures); // const insReinsDocuments = formatDocument(response.data.inscriptionsReinscriptions); - + const responseDocuments = { administratifs: administrativeDocuments, notes: notesDocuments, @@ -2035,6 +2145,220 @@ export default function App({ edpFetch }) { }); } + async function renameFolder(id, name) { + const oldMessageFolders = useUserData("messageFolders").get(); + return edpFetch( + `https://api.ecoledirecte.com/v3/messagerie/classeur/${id}.awp?verbe=put&v=${apiVersion}`, + { + method: "POST", + headers: { + "x-token": tokenState + }, + body: `data=${JSON.stringify({ id, type: "classeur", icon: "fa-folder", order: 1, libelle: name, expired: Date.now() + 3600000 })}`, + referrerPolicy: "no-referrer", + }, + "json" + ).then(response => { + if (response.code === 200) { + // the updated folder should be edited in order no modify the libelle of the correct folder + const updatedFolders = oldMessageFolders.map(folder => { + if (folder.id === id) { + return { ...folder, name }; + } + return folder; + }); + console.log(updatedFolders); + useUserData("messageFolders").set(updatedFolders); + } + }); + } + + async function deleteFolder(id) { + const oldMessageFolders = useUserData("messageFolders").get(); + return edpFetch( + `https://api.ecoledirecte.com/v3/messagerie/classeur/${id}.awp?verbe=delete&v=${apiVersion}`, + { + method: "POST", + headers: { + "x-token": tokenState + }, + body: "data={}", + referrerPolicy: "no-referrer", + }, + "json" + ).then(response => { + if (response.code === 200) { + // delete the folder from the list of folders + const updatedFolders = oldMessageFolders.filter(folder => folder.id !== id); + useUserData("messageFolders").set(updatedFolders); + } + }); + } + + async function deleteFolder(id, controller = new AbortController()) { + const oldMessageFolders = useUserData("messageFolders").get(); + abortControllers.current.push(controller); + return edpFetch( + `https://api.ecoledirecte.com/v3/messagerie/classeur/${id}.awp?verbe=delete&v=${apiVersion}`, + { + method: "POST", + headers: { + "x-token": tokenState + }, + body: "data={}", + signal: controller.signal, + referrerPolicy: "no-referrer", + }, + "json" + ).then(response => { + if (response.code === 200) { + // delete the folder from the list of folders + const updatedFolders = oldMessageFolders.filter(folder => folder.id !== id); + useUserData("messageFolders").set(updatedFolders); + return true; + } + }).finally(() => { + abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); + }); + } + async function createFolder(name, controller = new AbortController()) { + const oldMessageFolders = useUserData("messageFolders").get(); + abortControllers.current.push(controller); + return edpFetch( + `https://api.ecoledirecte.com/v3/messagerie/classeurs.awp?verbe=post&v=${apiVersion}`, + { + method: "POST", + headers: { + "x-token": tokenState + }, + body: `data=${JSON.stringify({ libelle: name })}`, + signal: controller.signal, + referrerPolicy: "no-referrer", + }, + "json" + ).then(response => { + if (response.code === 200) { + const newFolder = { + id: response.data.id, + name: response.data.libelle, + fetchInitiated: false, + fetched: false + }; + const updatedFolders = [...oldMessageFolders, newFolder]; + useUserData("messageFolders").set(updatedFolders); + return response.data.id; + } + }).finally(() => { + abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); + }); + } + + async function archiveMessage(id, controller = new AbortController()) { + abortControllers.current.push(controller); + return edpFetch( + `https://api.ecoledirecte.com/v3/eleves/${accountsListState[activeAccount].id}/messages.awp?verbe=put&v=${apiVersion}`, + { + method: "POST", + headers: { + "x-token": tokenState + }, + body: `data=${encodeURIComponent(JSON.stringify({ action: "archiver", ids: [id], anneeMessages: getUserSettingValue("isSchoolYearEnabled") ? getUserSettingValue("schoolYear").join("-") : getCurrentSchoolYear().join("-") }))}`, + signal: controller.signal, + referrerPolicy: "no-referrer", + }, + "json" + ).then(response => { + if (response.code === 200) { + //move the message to the -3 folder + const oldSortedMessages = useUserData("sortedMessages").get(); + const updatedMessages = oldSortedMessages.map(message => { + if (message.id === id) { + return { ...message, folderId: -2 }; + } + return message; + }); + updatedMessages.sort((a, b) => new Date(b.date) - new Date(a.date)); + changeUserData("sortedMessages", updatedMessages); + console.log(updatedMessages); + console.log("Message archivé avec succès"); + return true; + } + }).finally(() => { + abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); + }); + } + + async function unarchiveMessage(id, controller = new AbortController()) { + abortControllers.current.push(controller); + return edpFetch( + `https://api.ecoledirecte.com/v3/eleves/${accountsListState[activeAccount].id}/messages.awp?verbe=put&v=${apiVersion}`, + { + method: "POST", + headers: { + "x-token": tokenState + }, + body: `data=${encodeURIComponent(JSON.stringify({ action: "desarchiver", ids: [id], anneeMessages: getUserSettingValue("isSchoolYearEnabled") ? getUserSettingValue("schoolYear").join("-") : getCurrentSchoolYear().join("-") }))}`, + signal: controller.signal, + referrerPolicy: "no-referrer", + }, + "json" + ).then(response => { + if (response.code === 200) { + // move the message to the 0 folder + + const oldSortedMessages = useUserData("sortedMessages").get(); + const updatedMessages = oldSortedMessages.map(message => { + if (message.id === id) { + return { ...message, folderId: 0 }; + } + return message; + }); + // re-sort the messages by date + updatedMessages.sort((a, b) => new Date(b.date) - new Date(a.date)); + changeUserData("sortedMessages", updatedMessages); + console.log(updatedMessages); + console.log("Message désarchivé avec succès"); + return true; + } + }).finally(() => { + abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); + }); + } + + async function moveMessage(id, folderId, controller = new AbortController()) { + abortControllers.current.push(controller); + return edpFetch( + `https://api.ecoledirecte.com/v3/eleves/${accountsListState[activeAccount].id}/messages.awp?verbe=put&v=${apiVersion}`, + { + method: "POST", + headers: { + "x-token": tokenState + }, + body: `data=${JSON.stringify({ action: "deplacer", idClasseur: folderId, ids: [`${id}:-1`] })}`, + signal: controller.signal, + referrerPolicy: "no-referrer", + }, + "json" + ).then(response => { + if (response.code === 200) { + // move the message to the specified folder + const oldSortedMessages = useUserData("sortedMessages").get(); + const updatedMessages = oldSortedMessages.map(message => { + if (message.id === id) { + return { ...message, folderId }; + } + return message; + }); + updatedMessages.sort((a, b) => new Date(b.date) - new Date(a.date)); + changeUserData("sortedMessages", updatedMessages); + console.log(updatedMessages); + console.log("Message déplacé avec succès"); + return true; + } + }).finally(() => { + abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); + }); + } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // @@ -2268,7 +2592,7 @@ export default function App({ edpFetch }) { path: "account", }, { - element: , + element: , path: ":userId/account" }, { @@ -2320,7 +2644,7 @@ export default function App({ edpFetch }) { path: "messaging" }, { - element: , + element: , path: ":userId/messaging" }, ], diff --git a/src/components/app/Messaging/Inbox.jsx b/src/components/app/Messaging/Inbox.jsx index 87e1e02..fa5d608 100644 --- a/src/components/app/Messaging/Inbox.jsx +++ b/src/components/app/Messaging/Inbox.jsx @@ -15,9 +15,10 @@ export default function Inbox({ selectedMessage, setSelectedMessage, selectedFol const { useUserData, actualDisplayTheme, useUserSettings } = useContext(AppContext); const settings = useUserSettings(); const [search, setSearch] = useState(""); - const messages = useUserData("sortedMessages"); - const messageFolders = useUserData("messageFolders"); + const [messages, setMessages] = useState([]); + + const messageFolders = useUserData("messageFolders"); const contentLoadersRandomValues = useRef({ authorWidth: Array.from({ length: 13 }, (_) => Math.round(Math.random() * 100) + 100), subjectWidth: Array.from({ length: 13 }, (_) => Math.floor(Math.random() * 150) + 150), dateWidth: Array.from({ length: 13 }, (_) => Math.floor(Math.random() * 50) + 50), containsFiles: Array.from({ length: 13 }, (_) => (Math.random() > .6)) }) // behavior @@ -42,7 +43,7 @@ export default function Inbox({ selectedMessage, setSelectedMessage, selectedFol } // mark as unread locally and kick the content so as to trigger a refetch the next reading (as the "mark as read" feature is trigger when fetching the message) - const oldMsg = messages.get(); + const oldMsg = messages; const msgIdx = oldMsg.findIndex((item) => item.id === msg.id); oldMsg[msgIdx].read = false; oldMsg[msgIdx].content = null; @@ -71,15 +72,21 @@ export default function Inbox({ selectedMessage, setSelectedMessage, selectedFol return false; } + useEffect(() => { + const newMessages = useUserData("sortedMessages").get(); + setMessages(newMessages); + }, [useUserData("sortedMessages")]); + + // JSX return (
- {messages.get() !== undefined && (messageFolders.get() !== undefined && messageFolders.get()?.find((folder) => folder.id === selectedFolder)?.fetched) - ? (messages.get().filter((message) => message.folderId === selectedFolder).length > 0 + {messages !== undefined && (messageFolders.get() !== undefined && messageFolders.get()?.find((folder) => folder.id === selectedFolder)?.fetched) + ? (messages.filter((message) => message.folderId === selectedFolder).length > 0 ?
    - {messages.get().filter((message) => message.folderId === selectedFolder).filter(filterResearch).map((message, index) =>
  • handleClick(message)} onKeyDown={(event) => handleKeyDown(event, message)} key={message.id} role="button" tabIndex={0}> + {messages.filter((message) => message.folderId === selectedFolder).filter(filterResearch).map((message, index) =>
  • handleClick(message)} onKeyDown={(event) => handleKeyDown(event, message)} key={message.id} role="button" tabIndex={0}>

    {settings.get("isStreamerModeEnabled") ? message.from.name.split(" ")[0] + " " + "-".repeat(message.from.name.length) : message.from.name} {message.files?.length > 0 && }

    {message.subject}

    {(new Date(message.date)).toLocaleDateString("fr-FR", { @@ -91,7 +98,7 @@ export default function Inbox({ selectedMessage, setSelectedMessage, selectedFol

  • )}
- : (messages.get().length > 0 + : (messages.length > 0 ?

Ce dossier est vide. Peut-être qu'il attend juste un miracle... ou un clic

:

Vous n'avez reçu aucun message. Tendez l'oreille et profitez de cet instant de silence

) ) diff --git a/src/components/app/Messaging/MessageReader.css b/src/components/app/Messaging/MessageReader.css index 1ce627d..6e6137f 100644 --- a/src/components/app/Messaging/MessageReader.css +++ b/src/components/app/Messaging/MessageReader.css @@ -151,3 +151,76 @@ transform: translate(-50%, -50%); text-align: center; } + +.email-footer { + display: flex; +} + +.attachments-container { + display: flex; + overflow-x: auto; + white-space: nowrap; + flex-grow: 1; +} + +.attachments-container li { + list-style-type: none; + min-width: fit-content; + margin-right: 10px; +} + +.actions-container { + width: 240px; + /* Fixed width for the action buttons */ + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + padding-right: 10px; + padding-left: 10px; + gap: 5px; + /* Stack buttons vertically */ +} + +.action-button { + width: 40px; + height: 40px; + background: rgb(var(--background-color-1)); + padding: 5px; + border: none; + border-radius: 10px; + cursor: pointer; + transition: .2s; +} + +.action-button:is(:hover, :focus-visible) { + background: rgba(var(--background-color-3), 1); + transition: .2s; +} +.action-button path { + stroke: rgb(var(--text-color-alt)); +} + +.scroll-footer-div { + width: -moz-available; + /* Add for other brothers */ +} + +.no-attatchemnts-messages p { + color: rgb(var(--text-color-alt)); + padding-left: 15px; +} + +.no-attatchemnts-messages { + display: flex; + justify-content: center; + align-items: center; +} + +.cannot-click { + pointer-events: none; +} + +.not-allowed { + cursor: not-allowed !important; +} \ No newline at end of file diff --git a/src/components/app/Messaging/MessageReader.jsx b/src/components/app/Messaging/MessageReader.jsx index e5e2481..7f942c2 100644 --- a/src/components/app/Messaging/MessageReader.jsx +++ b/src/components/app/Messaging/MessageReader.jsx @@ -1,4 +1,5 @@ import { useState, useEffect, useContext } from "react"; +import { useNavigate, useLocation, Navigate, Link } from "react-router-dom"; import ContentLoader from "react-content-loader"; import { AppContext } from "../../../App"; @@ -8,15 +9,32 @@ import FileComponent from "../../generic/FileComponent"; import { capitalizeFirstLetter } from "../../../utils/utils"; import ScrollShadedDiv from "../../generic/CustomDivs/ScrollShadedDiv"; import DownloadIcon from "../../graphics/DownloadIcon"; +import PrintIcon from "../../graphics/PrintIcon"; +import FolderIcon from "../../graphics/FolderIcon"; +import ArchiveIcon from "../../graphics/ArchiveIcon"; +import InboxIcon from "../../graphics/InboxIcon"; +import MarkAsUnread from "../../graphics/MarkAsUnread"; +import SendIcon from "../../graphics/SendIcon"; +import DraftIcon from "../../graphics/DraftIcon"; +import { Tooltip, TooltipContent, TooltipTrigger } from "../../generic/PopUps/Tooltip"; -export default function MessageReader({ selectedMessage }) { +export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnread, setSelectedMessage, archiveMessage, unarchiveMessage, moveMessage }) { + // States + const location = useLocation(); const { useUserData, actualDisplayTheme, useUserSettings } = useContext(AppContext); const settings = useUserSettings(); const messages = useUserData("sortedMessages").get(); + const messagesUnread = useUserData("sortedMessages"); const message = messages ? messages.find((item) => item.id === selectedMessage) : null; const [spoiler, setSpoiler] = useState(settings.get("isStreamerModeEnabled")); + const [folders, setFolders] = useState(useUserData("messageFolders").get()); + + useEffect(() => { + // Update the local state with the latest data + setFolders(useUserData("messageFolders").get()); + }, [useUserData("messageFolders").get()]); // behavior useEffect(() => { @@ -25,7 +43,28 @@ export default function MessageReader({ selectedMessage }) { } }, [selectedMessage]) + const handleMarkAsUnread = (event, msg) => { + event.preventDefault(); + event.stopPropagation(); + const controller = new AbortController(); + fetchMessageMarkAsUnread([msg.id], controller); + + if (msg.id === selectedMessage) { + setSelectedMessage(null); + } + + // mark as unread locally and kick the content so as to trigger a refetch the next reading (as the "mark as read" feature is trigger when fetching the message) + const oldMsg = messagesUnread.get() + const msgIdx = oldMsg.findIndex((item) => item.id === msg.id); + oldMsg[msgIdx].read = false; + oldMsg[msgIdx].content = null; + messagesUnread.set(oldMsg); + // update the messages glo + } + // JSX + const parsedHashFolder = parseInt(location.hash.slice(1, location.hash.lastIndexOf('-'))); + return (
{selectedMessage !== null && messages && messages.length > 0 @@ -76,17 +115,78 @@ export default function MessageReader({ selectedMessage }) { } - {message && (message?.files?.length > 0 - ? <> -
-
-
    - {message.files.map((file) =>
  • )} -
-
- - : null)} +
+
+ +
    + {message && message.files && message.files.length > 0 + ? message.files.map((file) =>
  • ) + :
  • Aucun fichier joint

  • } +
+
+
+ Imprimer + + +

Changer De Dossier

+
    + {folders + .sort((a, b) => { + const order = [0, -1, -2, -4]; + const indexA = order.indexOf(a.id); + const indexB = order.indexOf(b.id); + if (indexA === -1 && indexB === -1) return 0; + if (indexA === -1) return 1; + if (indexB === -1) return -1; + return indexA - indexB; + }) + .filter((folder) => folder.id !== -3 && folder.id !== -2 && folder.id !== -1 && folder.id !== -4) + .map((folder) => ( +
  • + +
  • + ))} +
+
+
+ {parsedHashFolder === -2 ? ( + Désarchiver + ) : ( + Archiver + )} + Marquer comme non lu +
+
:

Sélectionnez un message dans votre boîte de réception pour le visualiser ici

} diff --git a/src/components/app/Messaging/Messaging.css b/src/components/app/Messaging/Messaging.css index 79d3ce3..975ad18 100644 --- a/src/components/app/Messaging/Messaging.css +++ b/src/components/app/Messaging/Messaging.css @@ -51,7 +51,7 @@ h3:has(~ .folders-container) { } .folders-container .folder-button { - padding: 15px; + padding: 10px; background-color: rgba(var(--background-color-0), .4); width: 100%; text-align: left; @@ -61,6 +61,9 @@ h3:has(~ .folders-container) { cursor: pointer; font-size: var(--font-size-16); transition: .1s; + display: flex; + align-items: center; + gap: 10px; } .folders-container .folder-button:is(:hover, :focus-visible) { @@ -73,3 +76,158 @@ h3:has(~ .folders-container) { max-height: 500px; } } + +.folder-icon-tooltip { + height: 40px; + width: 40px; +} + +.edit-folder-tooltip { + position: absolute; + top: 50%; + right: 5px; + transform: translateY(-50%); + height: 40px; + width: 40px; + border-radius: 10px; + cursor: pointer; + transition: .1s; +} + +.edit-folder-tooltip div { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 100%; +} + +.edit-folder-tooltip:has([data-state="open"]) { + background-color: rgb(var(--text-color-main), .15); +} + +.edit-folder-tooltip .edit-folder-icon { + height: 33px; + transition: .1s; +} + +.edit-folder-tooltip .edit-folder-icon path { + stroke: rgba(var(--text-color-alt), .7); + transition: .1s; +} + +.edit-folder-tooltip:has([data-state="open"]) .edit-folder-icon path { + stroke: rgb(var(--text-color-main)); +} + +.edit-folder-button { + padding: 10px; + background-color: rgba(var(--background-color-0), .4); + width: 100%; + text-align: left; + border: none; + border-radius: 6px; + outline: none; + cursor: pointer; + font-size: var(--font-size-16); + transition: .1s; + display: flex; + align-items: center; + gap: 10px; +} + +.edit-folder-button:is(:hover, :focus-visible) { + background-color: rgba(var(--background-color-0), .6); +} + +.edit-folder-container { + list-style-type: none; + /* padding: 15px; */ + display: flex; + flex-flow: column nowrap; + gap: 10px; +} + +h3:has(~ .edit-folder-container) { + margin-bottom: 10px; +} + +@media only screen and (max-width: 869px) { + .window.inbox-window { + /* min-height: 160px; */ + max-height: 500px; + } +} + +.edit-folder-icon-tooltip { + height: 40px; + width: 40px; +} + +.delete:is(:hover) { + background-color: #ff0000; + transition: .3s; +} + +.delete:is(:hover) path { + stroke: #ffffff; + transition: .3s; +} + +#MessagesTitle:is(:hover){ + background-color: rgba(var(--text-color-main),.15); + transition: .3s; + cursor: text; +} + +#MessagesTitle { + padding: 10px; + border-radius: 10px; + transition: .3s; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: fit-content; +} + +.MessagesTitle-container { + transition: .3s; + width: calc(100% - 100px); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: flex; + align-items: center; + justify-content: center; +} + +.prevent-highlight { + cursor: grab !important; + background-color: transparent !important; +} + +.create-folder { + background-color: rgba(var(--background-color-0), .9) !important; +} + +.edit-folder-name-input { + transform: scale(.85); + width: 100%; +} + +.edit-folder-name-input .text-input { + text-align: center; + padding: 10px !important; +} + +.edit-folder-name-container { + width: calc(100% - 80px); +} + +.selected-folder { + background-color: rgba(var(--background-color-3), 0.6) !important; +} + +.no-questionmark { + cursor: default; +} \ No newline at end of file diff --git a/src/components/app/Messaging/Messaging.jsx b/src/components/app/Messaging/Messaging.jsx index 717f042..c16116c 100644 --- a/src/components/app/Messaging/Messaging.jsx +++ b/src/components/app/Messaging/Messaging.jsx @@ -1,4 +1,3 @@ - import { useState, useRef, useEffect, useContext } from "react"; import { useNavigate, useLocation, Navigate, Link } from "react-router-dom"; @@ -17,22 +16,42 @@ import Inbox from "./Inbox"; import MessageReader from "./MessageReader"; import { Tooltip, TooltipContent, TooltipTrigger } from "../../generic/PopUps/Tooltip"; import FolderIcon from "../../graphics/FolderIcon"; +import InboxIcon from "../../graphics/InboxIcon"; +import SendIcon from "../../graphics/SendIcon"; +import ArchiveIcon from "../../graphics/ArchiveIcon"; +import EditIcon from "../../graphics/EditIcon"; +import DeleteIcon from "../../graphics/DeleteIcon"; +import RenameIcon from "../../graphics/RenameIcon"; +import NewFolderIcon from "../../graphics/NewFolderIcon"; +import DraftIcon from "../../graphics/DraftIcon"; import { capitalizeFirstLetter } from "../../../utils/utils"; +import TextInput from "../../generic/UserInputs/TextInput"; +import { el } from "date-fns/locale"; +import { set } from "date-fns"; -export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fetchMessageContent, fetchMessageMarkAsUnread }) { +export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fetchMessageContent, fetchMessageMarkAsUnread, renameFolder, deleteFolder, createFolder, archiveMessage, unarchiveMessage, moveMessage }) { // States const navigate = useNavigate(); const location = useLocation(); - + const { useUserData } = useContext(AppContext); - // const [selectedMessage, setSelectedMessage] = useState(isNaN(parseInt(location.hash.slice(1))) ? null : parseInt(location.hash.slice(1))); const [selectedMessage, setSelectedMessage] = useState(null); const [selectedFolder, setSelectedFolder] = useState(0); const oldSelectedMessage = useRef(selectedMessage); const messages = useUserData("sortedMessages"); - const messageFolders = useUserData("messageFolders"); + const [folders, setFolders] = useState(useUserData("messageFolders").get()); + useEffect(() => { + // Update the local state with the latest data + setFolders(useUserData("messageFolders").get()); + }, [useUserData("messageFolders").get()]); + + + + + const [isEditingFolder, setIsEditingFolder] = useState(false); + const [newFolderName, setNewFolderName] = useState(''); // behavior useEffect(() => { @@ -42,7 +61,7 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe useEffect(() => { const controller = new AbortController(); if (isLoggedIn) { - if (messageFolders.get() === undefined || !messageFolders.get().find((folder) => folder.id === selectedFolder)?.fetchInitiated) { + if (folders === undefined || !folders.find((folder) => folder.id === selectedFolder)?.fetchInitiated) { fetchMessages(selectedFolder, controller); } } @@ -50,7 +69,7 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe return () => { controller.abort(); } - }, [isLoggedIn, activeAccount, selectedFolder, messages.get(), messageFolders.get()]); + }, [isLoggedIn, activeAccount, selectedFolder, messages.get(), folders]); useEffect(() => { if (messages.get() === undefined) { @@ -62,9 +81,10 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe const controller = new AbortController(); if (selectedMessage !== null) { fetchMessageContent(selectedMessage, controller); - const parsedHash = parseInt(location.hash.slice(1)); - if (parsedHash !== selectedMessage) { - const newHash = "#" + selectedMessage; + const parsedHashMessage = parseInt(location.hash.slice(location.hash.lastIndexOf('-') + 1)); + const parsedHashFolder = parseInt(location.hash.slice(1, location.hash.lastIndexOf('-'))); + if (parsedHashMessage !== selectedMessage || parsedHashFolder !== selectedFolder) { + const newHash = "#" + selectedFolder + '-' + selectedMessage; navigate(newHash); } } else { @@ -85,15 +105,27 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe if (["#patch-notes", "#policy", "#feedback"].includes(location.hash)) { return; } - const parsedHash = parseInt(location.hash.slice(1)); - if (!isNaN(parsedHash) && parsedHash !== selectedMessage) { + const parsedHashMessage = parseInt(location.hash.slice(location.hash.lastIndexOf('-') + 1)); + const parsedHashFolder = parseInt(location.hash.slice(1, location.hash.lastIndexOf('-'))); + console.log("useEffect ~ parsedHashMessage", parsedHashMessage) + + if (!isNaN(parsedHashMessage) && parsedHashMessage !== selectedMessage) { if (messages.get()) { - const doesMessageExist = messages.get()?.findIndex((item) => item.id === parsedHash) !== -1; + const doesMessageExist = messages.get()?.findIndex((item) => item.id === parsedHashMessage) !== -1; console.log("useEffect ~ doesMessageExist:", doesMessageExist) if (doesMessageExist) { - setSelectedMessage(parsedHash); + setSelectedFolder(parsedHashFolder); + setSelectedMessage(parsedHashMessage); } else { - navigate("#"); + setSelectedFolder(parsedHashFolder); + // now we need to fetch the message for the selected folder + const controller = new AbortController(); + fetchMessages(parsedHashFolder, controller); + + // now we need to select the message after fetching the messages + setTimeout(() => { + setSelectedMessage(parsedHashMessage); + }, 0); } } } @@ -103,29 +135,205 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe oldSelectedMessage.current = selectedMessage; }, [selectedMessage]); + useEffect(() => { + if (!isEditingFolder) { + const currentFolder = folders?.find((item) => item.id === selectedFolder); + if (currentFolder) { + console.log("currentFolder", currentFolder); + setNewFolderName(currentFolder.name); + } + } + }, [selectedFolder, folders, isEditingFolder]); + + + + const handleRenameSave = async () => { + if (newFolderName.trim() !== '') { + if (selectedFolder === -3) { + const controller = new AbortController(); + let newFolder = await createFolder(newFolderName, controller); + setTimeout(() => setSelectedFolder(newFolder), 0); + // refresh the folder list and title + + } else { + renameFolder(selectedFolder, newFolderName); // Call the rename function with folder ID and new name + } + setIsEditingFolder(false); // Exit editing mode + } + }; + + const handleRenameCancel = () => { + setIsEditingFolder(false); + setNewFolderName(folders?.find((item) => item.id === selectedFolder)?.name || ''); + if (selectedFolder === -3) { + setSelectedFolder(0); + } + }; + + // cancel editiing on click outside of the input + useEffect(() => { + const handleClickOutside = (event) => { + if (isEditingFolder && !event.target.closest('.edit-folder-name-container')) { + handleRenameCancel(); + } + }; + + if (isEditingFolder) { + document.addEventListener('mousedown', handleClickOutside); + } else { + document.removeEventListener('mousedown', handleClickOutside); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [isEditingFolder]); + + + // cancel editing on escape key + useEffect(() => { + const handleKeyDown = (event) => { + if (event.key === 'Escape') { + handleRenameCancel(); + } + }; + + if (isEditingFolder) { + document.addEventListener('keydown', handleKeyDown); + } else { + document.removeEventListener('keydown', handleKeyDown); + } + + return () => { + document.removeEventListener('keydown', handleKeyDown); + }; + }, [isEditingFolder]); + + // validate editing on enter key + useEffect(() => { + const handleKeyDown = (event) => { + if (event.key === 'Enter') { + handleRenameSave(); + } + }; + + if (isEditingFolder) { + document.addEventListener('keydown', handleKeyDown); + } else { + document.removeEventListener('keydown', handleKeyDown); + } + + return () => { + document.removeEventListener('keydown', handleKeyDown); + }; + }, [isEditingFolder, newFolderName]); + + // changing folder should exit editing mode + useEffect(() => { + setIsEditingFolder(false); + }, [selectedFolder]); + // JSX return (
- + - {messageFolders.get() !== undefined && messageFolders.get().length > 1 + {folders !== undefined && folders.length > 1 ? event.stopPropagation()}> - +

Dossiers

    - {messageFolders.get().map((folder) =>
  • )} + {folders + .sort((a, b) => { + const order = [0, -1, -2, -4]; + const indexA = order.indexOf(a.id); + const indexB = order.indexOf(b.id); + if (indexA === -1 && indexB === -1) return 0; + if (indexA === -1) return 1; + if (indexB === -1) return -1; + return indexA - indexB; + }) + .filter((folder) => folder.id !== -3) + .map((folder) => ( +
  • + +
  • + ))} +
  • + +
  • +
+
+
+ : null + } + + {selectedFolder !== 0 && selectedFolder !== -1 && selectedFolder !== -2 && selectedFolder !== -4 + ? event.stopPropagation()}> + + +

Modifier le dossier

+
    +
  • + +
  • +
  • + +
: null } -

{capitalizeFirstLetter(messageFolders.get()?.find((item) => item.id === selectedFolder)?.name ?? "Boîte de réception")}

+ + {isEditingFolder ? ( +
+ setNewFolderName(e.target.value)} + className="edit-folder-name-input" + autoFocus + onFocus={(e) => e.target.select()} + /> +
+ ) : ( +
+

{ if (selectedFolder !== 0 && selectedFolder !== -1 && selectedFolder !== -2 && selectedFolder !== -4) { setIsEditingFolder(true) } }} className={selectedFolder === 0 || selectedFolder === -1 || selectedFolder === -2 || selectedFolder === -4 ? "prevent-highlight" : ""}> + {selectedFolder !== -3 + ? capitalizeFirstLetter(folders?.find((item) => item.id === selectedFolder)?.name ?? "Boîte de réception") + : "Créer un dossier" + } +

+
+ )}
- +
@@ -133,11 +341,11 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe

Message

- +
- ) + ); } \ No newline at end of file diff --git a/src/components/generic/CustomDivs/ScrollShadedDiv.css b/src/components/generic/CustomDivs/ScrollShadedDiv.css index 6e6de9a..9ec6a55 100644 --- a/src/components/generic/CustomDivs/ScrollShadedDiv.css +++ b/src/components/generic/CustomDivs/ScrollShadedDiv.css @@ -1,58 +1,76 @@ +/* ScrollShadedDiv.css */ .scroll-shaded-div { - max-height: 100%; - overflow: hidden; position: relative; + overflow: hidden; } -.scroll-shaded-div .content { +.content { overflow: auto; - max-height: inherit; -} - -.scroll-shaded-div :is(.content:focus, .content:focus-within) { - outline: none; + height: 100%; + /* Adjust as needed */ + width: 100%; + /* Adjust as needed */ + position: relative; } +/* Top and bottom shadows */ .top-shadow, .bottom-shadow { position: absolute; left: 0; - width: 100%; - height: 30px; - transition: 0.25s; - opacity: 0; + right: 0; + height: 20px; + /* Adjust height of the shadow */ pointer-events: none; + opacity: 0; + transition: opacity 0.3s; } .top-shadow { top: 0; - background: radial-gradient( - ellipse 65% 100% at 50% 0, - rgba(0, 0, 0, var(--alpha-shadow-color-scroll-shaded-div)), - rgba(0, 0, 0, 0) - ); + background: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent); } -/* .top-shadow { - top: 0; - background: linear-gradient(to bottom, rgba(0, 0, 0, var(--alpha-shadow-color-scroll-shaded-div)), rgba(0, 0, 0, 0)); -} - */ -/* .bottom-shadow { +.bottom-shadow { bottom: 0; - background: radial-gradient( - farthest-side at 50% 100%, - rgba(0, 0, 0, var(--alpha-shadow-color-scroll-shaded-div)), - rgba(0, 0, 0, 0) - ); -} */ + background: linear-gradient(to top, rgba(0, 0, 0, 0.2), transparent); +} -.bottom-shadow { +/* Left and right shadows */ +.left-shadow, +.right-shadow { + position: absolute; + top: 0; bottom: 0; - background: radial-gradient( - ellipse 75% 100% at 50% 100%, - rgba(0, 0, 0, var(--alpha-shadow-color-scroll-shaded-div)), - rgba(0, 0, 0, 0) - ); + width: 20px; + /* Adjust width of the shadow */ + pointer-events: none; + opacity: 0; + transition: opacity 0.3s; +} + +.left-shadow { + left: 0; + background: linear-gradient(to right, rgba(0, 0, 0, 0.2), transparent); +} + +.right-shadow { + right: 0; + background: linear-gradient(to left, rgba(0, 0, 0, 0.2), transparent); +} + +/* Optional: If you have any custom styles for the content */ +.scroll-shaded-div .content::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +.scroll-shaded-div .content::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0.2); + border-radius: 4px; +} + +.scroll-shaded-div .content::-webkit-scrollbar-track { + background: transparent; } \ No newline at end of file diff --git a/src/components/generic/CustomDivs/ScrollShadedDiv.jsx b/src/components/generic/CustomDivs/ScrollShadedDiv.jsx index 7a29398..ae199e6 100644 --- a/src/components/generic/CustomDivs/ScrollShadedDiv.jsx +++ b/src/components/generic/CustomDivs/ScrollShadedDiv.jsx @@ -1,17 +1,25 @@ - -import { useState, useRef, useEffect } from "react"; +import { useRef, useEffect } from "react"; import "./ScrollShadedDiv.css"; -export default function ScrollShadedDiv({ id, className = "", children, onScroll, setRef, ...props }) { - +export default function ScrollShadedDiv({ + id, + className = "", + children, + onScroll, + setRef, + enableSideShadows = false, + ...props +}) { // Refs const bufferRef = useRef(null); const contentDivRef = useRef(null); const topShadowRef = useRef(null); const bottomShadowRef = useRef(null); + const leftShadowRef = useRef(null); + const rightShadowRef = useRef(null); useEffect(() => { - // merge refs if multiple + // Merge refs if multiple contentDivRef.current = bufferRef.current; if (setRef !== undefined) { setRef(bufferRef); @@ -19,22 +27,35 @@ export default function ScrollShadedDiv({ id, className = "", children, onScroll }, [bufferRef.current]); useEffect(() => { - // pour supprimer les ombres sur les divs ou il y a pas de scroll + // Initialize shadows based on scroll position handleScroll(); - let contentHeight = contentDivRef.current.scrollHeight; - let divHeight = contentDivRef.current.offsetHeight; - let scrollTop = contentDivRef.current.scrollTop; - let scrollBottom = (contentHeight - divHeight) - scrollTop; - if (scrollTop > 0 || scrollBottom > 0) { + const contentHeight = contentDivRef.current.scrollHeight; + const divHeight = contentDivRef.current.offsetHeight; + const contentWidth = contentDivRef.current.scrollWidth; + const divWidth = contentDivRef.current.offsetWidth; + + const scrollTop = contentDivRef.current.scrollTop; + const scrollLeft = contentDivRef.current.scrollLeft; + const scrollBottom = contentHeight - divHeight - scrollTop; + const scrollRight = contentWidth - divWidth - scrollLeft; + + if ( + scrollTop > 0 || + scrollBottom > 0 || + scrollLeft > 0 || + scrollRight > 0 + ) { contentDivRef.current.tabIndex = 0; } - }, []) + }, []); function handleScroll() { - let contentHeight = contentDivRef.current.scrollHeight; - let divHeight = contentDivRef.current.offsetHeight; - let scrollTop = contentDivRef.current.scrollTop; - let scrollBottom = (contentHeight - divHeight) - scrollTop; + const contentHeight = contentDivRef.current.scrollHeight; + const divHeight = contentDivRef.current.offsetHeight; + const scrollTop = contentDivRef.current.scrollTop; + const scrollBottom = contentHeight - divHeight - scrollTop; + + // Vertical scroll handling if (contentHeight > divHeight) { if (scrollTop > 0) { topShadowRef.current.style.opacity = 1; @@ -55,15 +76,60 @@ export default function ScrollShadedDiv({ id, className = "", children, onScroll topShadowRef.current.style.opacity = 0; bottomShadowRef.current.style.opacity = 0; } + + // Horizontal scroll handling + if (enableSideShadows) { + const contentWidth = contentDivRef.current.scrollWidth; + const divWidth = contentDivRef.current.offsetWidth; + const scrollLeft = contentDivRef.current.scrollLeft; + const scrollRight = contentWidth - divWidth - scrollLeft; + + if (contentWidth > divWidth) { + if (scrollLeft > 0) { + leftShadowRef.current.style.opacity = 1; + leftShadowRef.current.style.transition = "0.3s"; + } else { + leftShadowRef.current.style.opacity = 0; + leftShadowRef.current.style.transition = "0.1s"; + } + + if (scrollRight > 0) { + rightShadowRef.current.style.opacity = 1; + rightShadowRef.current.style.transition = "0.3s"; + } else { + rightShadowRef.current.style.opacity = 0; + rightShadowRef.current.style.transition = "0.1s"; + } + } else { + leftShadowRef.current.style.opacity = 0; + rightShadowRef.current.style.opacity = 0; + } + } } return (
-
{ handleScroll(); if(onScroll) { onScroll(event) } }} {...props}> + {enableSideShadows && ( +
+ )} +
{ + handleScroll(); + if (onScroll) { + onScroll(event); + } + }} + {...props} + > {children}
+ {enableSideShadows && ( +
+ )}
- ) + ); } diff --git a/src/components/generic/Window.jsx b/src/components/generic/Window.jsx index b2417eb..11d8dd2 100644 --- a/src/components/generic/Window.jsx +++ b/src/components/generic/Window.jsx @@ -53,12 +53,17 @@ export function WindowsContainer({ children, name = "", className = "", id = "", const allowWindowsArrangement = useUserSettings("allowWindowsArrangement"); name = (isTabletLayout ? "tablet-" : "") + name; - const [windowsContainer, setWindowsContainer] = useState(useWindowsContainer({ animateWindows, allowWindowsManagement: allowWindowsArrangement.get() && allowWindowsManagement })); + const windowsContainer = useRef({ + animateWindows, + windows: [], + fullscreenInfo: [], + windowsLayouts: [], + moveableContainers: [] + }); const windowsContainerRef = useRef(null); const floatingPortalRef = useRef(null); const latestClick = useRef(null); - const isGrabbing = useRef(false); function getWindowArrangement() { @@ -66,15 +71,15 @@ export function WindowsContainer({ children, name = "", className = "", id = "", * This function returns the current windowArrangement */ const windowArrangement = []; - for (let window of windowsContainer.windows) { + for (let window of windowsContainer.current.windows) { windowArrangement.push({ name: window.current.name, order: window.current.style.order }); } - for (let windowLayout of windowsContainer.windowsLayouts) { + for (let windowLayout of windowsContainer.current.windowsLayouts) { windowArrangement.push({ name: windowLayout.current.name, order: windowLayout.current.style.order }); } - for (let moveableContainer of windowsContainer.moveableContainers) { + for (let moveableContainer of windowsContainer.current.moveableContainers) { windowArrangement.push({ name: moveableContainer.current.name, order: moveableContainer.current.style.order }); } @@ -91,21 +96,21 @@ export function WindowsContainer({ children, name = "", className = "", id = "", if (windowArrangement !== undefined && windowArrangement.length > 0) { for (let item of windowArrangement) { - for (let window of windowsContainer.windows) { + for (let window of windowsContainer.current.windows) { if (item.name === window.current.name) { window.current.style.order = item.order; break; } } - for (let windowLayout of windowsContainer.windowsLayouts) { + for (let windowLayout of windowsContainer.current.windowsLayouts) { if (item.name === windowLayout.current.name) { windowLayout.current.style.order = item.order; break; } } - for (let moveableContainer of windowsContainer.moveableContainers) { + for (let moveableContainer of windowsContainer.current.moveableContainers) { if (item.name === moveableContainer.current.name) { moveableContainer.current.style.order = item.order; break; @@ -428,19 +433,19 @@ export function WindowsContainer({ children, name = "", className = "", id = "", } let idx; - for (idx = 0; idx < windowsContainer.windows.length; idx++) { - if (windowsContainer.windows[idx].current === targetWindow) { + for (idx = 0; idx < windowsContainer.current.windows.length; idx++) { + if (windowsContainer.current.windows[idx].current === targetWindow) { break; } } - if (windowsContainer.fullscreenInfo[idx].allowFullscreen) { + if (windowsContainer.current.fullscreenInfo[idx].allowFullscreen) { let targetElement; - if (windowsContainer.fullscreenInfo[idx].fullscreenTargetName === "self") { + if (windowsContainer.current.fullscreenInfo[idx].fullscreenTargetName === "self") { targetElement = targetWindow; } else { - targetElement = document.getElementsByName(windowsContainer.fullscreenInfo[idx].fullscreenTargetName)[0]; + targetElement = document.getElementsByName(windowsContainer.current.fullscreenInfo[idx].fullscreenTargetName)[0]; } - // console.log("windowsContainer.fullscreenInfo[idx].fullscreenTargetName:", windowsContainer.fullscreenInfo[idx].fullscreenTargetName) + // console.log("windowsContainer.current.fullscreenInfo[idx].fullscreenTargetName:", windowsContainer.current.fullscreenInfo[idx].fullscreenTargetName) // console.log("targetElements:", targetElement) const handleFullscreenChange = () => { // prevent from selecting @@ -744,6 +749,7 @@ export function WindowsContainer({ children, name = "", className = "", id = "", document.addEventListener("touchend", handleMouseUp); } + useEffect(() => { // windows management function getWindowsHeader(windows) { @@ -756,17 +762,14 @@ export function WindowsContainer({ children, name = "", className = "", id = "", } } } - return headers; } const stopEventPropagation = (event) => { - // console.log("target:", event.target, "| propagation stopped") event.stopPropagation(); - } + }; - const headers = getWindowsHeader(windowsContainer.windows); - // console.log("headers:", headers); + const headers = getWindowsHeader(windowsContainer.current.windows); function cleanup() { for (let header of headers) { @@ -778,25 +781,22 @@ export function WindowsContainer({ children, name = "", className = "", id = "", } } } - // cleanup() for (let header of headers) { - if (windowsContainer.allowWindowsManagement) { + if (allowWindowsManagement) { header.addEventListener("mousedown", handleMouseDown); header.addEventListener("touchstart", handleMouseDown); for (let child of header.children) { - // will only happen when css property "pointer-events" is not set to "none" child.addEventListener("mousedown", stopEventPropagation); child.addEventListener("touchstart", stopEventPropagation); } } } - return () => { - cleanup() - } - }, [isTabletLayout]); + cleanup(); + }; + }, [isTabletLayout, allowWindowsManagement]); useEffect(() => { @@ -812,7 +812,7 @@ export function WindowsContainer({ children, name = "", className = "", id = "", } setWindowArrangement(windowArrangement); } else { - if (windowsContainer.allowWindowsManagement) { + if (windowsContainer.current.allowWindowsManagement) { console.error("windowsContainer has no \"name\" attribute but you have allowed window management: window rearrangements will not be saved"); } } @@ -922,13 +922,13 @@ export function WindowsContainer({ children, name = "", className = "", id = "", return ( -
- +
+ {children}
- ) + ); } export function WindowsLayout({ children, direction = "row", growthFactor = 1, ultimateContainer = false, className = "", ...props }) { diff --git a/src/components/graphics/ArchiveIcon.jsx b/src/components/graphics/ArchiveIcon.jsx new file mode 100644 index 0000000..ba155b1 --- /dev/null +++ b/src/components/graphics/ArchiveIcon.jsx @@ -0,0 +1,9 @@ + +import "./graphics.css" +export default function ArchiveIcon ({ className="", id="", alt, ...props }) { + return ( + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/DeleteIcon.jsx b/src/components/graphics/DeleteIcon.jsx new file mode 100644 index 0000000..7d92dc3 --- /dev/null +++ b/src/components/graphics/DeleteIcon.jsx @@ -0,0 +1,9 @@ + +import "./graphics.css" +export default function DeleteIcon ({ className="", id="", alt, ...props }) { + return ( + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/DraftIcon.jsx b/src/components/graphics/DraftIcon.jsx new file mode 100644 index 0000000..f0ae456 --- /dev/null +++ b/src/components/graphics/DraftIcon.jsx @@ -0,0 +1,9 @@ + +import "./graphics.css" +export default function DraftIcon ({ className="", id="", alt, ...props }) { + return ( + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/EditIcon.jsx b/src/components/graphics/EditIcon.jsx new file mode 100644 index 0000000..926c32f --- /dev/null +++ b/src/components/graphics/EditIcon.jsx @@ -0,0 +1,9 @@ + +import "./graphics.css" +export default function EditIcon ({ className="", id="", alt, ...props }) { + return ( + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/InboxIcon.jsx b/src/components/graphics/InboxIcon.jsx new file mode 100644 index 0000000..a294e7a --- /dev/null +++ b/src/components/graphics/InboxIcon.jsx @@ -0,0 +1,9 @@ + +import "./graphics.css" +export default function InboxIcon ({ className="", id="", alt, ...props }) { + return ( + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/NewFolderIcon.jsx b/src/components/graphics/NewFolderIcon.jsx new file mode 100644 index 0000000..6c54b25 --- /dev/null +++ b/src/components/graphics/NewFolderIcon.jsx @@ -0,0 +1,9 @@ + +import "./graphics.css" +export default function NewFolderIcon ({ className="", id="", alt, ...props }) { + return ( + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/PrintIcon.jsx b/src/components/graphics/PrintIcon.jsx new file mode 100644 index 0000000..b8a47a6 --- /dev/null +++ b/src/components/graphics/PrintIcon.jsx @@ -0,0 +1,9 @@ + +import "./graphics.css" +export default function PrintIcon ({ className="", id="", alt, ...props }) { + return ( + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/RenameIcon.jsx b/src/components/graphics/RenameIcon.jsx new file mode 100644 index 0000000..5a962fe --- /dev/null +++ b/src/components/graphics/RenameIcon.jsx @@ -0,0 +1,10 @@ + +import "./graphics.css" +export default function RenameIcon ({ className="", id="", alt, ...props }) { + return ( + + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/SendIcon.jsx b/src/components/graphics/SendIcon.jsx new file mode 100644 index 0000000..9c2f3ec --- /dev/null +++ b/src/components/graphics/SendIcon.jsx @@ -0,0 +1,9 @@ + +import "./graphics.css" +export default function SendIcon ({ className="", id="", alt, ...props }) { + return ( + + + + ) +} \ No newline at end of file diff --git a/src/components/graphics/graphics.css b/src/components/graphics/graphics.css index 695199e..10a268d 100644 --- a/src/components/graphics/graphics.css +++ b/src/components/graphics/graphics.css @@ -235,3 +235,7 @@ .fill-181829 { fill: #181829; } +.stroke-000000 { + stroke: #000000; +} + From 9f121b910120a827245f41f6e4edd944e96c72ce Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Mon, 21 Oct 2024 00:08:42 +0200 Subject: [PATCH 09/31] Update App.jsx --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 88f139f..a8093e0 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1822,7 +1822,7 @@ export default function App({ edpFetch }) { folderId = 0; } edpFetch( - getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?force=false&typeRecuperation=${specialFolderType}&idClasseur=${folderId}&orderBy=date&order=desc&query=&onlyRead=&page=0&itemsPerPage=100&getAll=0&verbe=get&v=${apiVersion}`, true), + getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?force=false&typeRecuperation=${specialFolderType}&idClasseur=${folderId}&orderBy=date&order=desc&query=&onlyRead=&getAll=1&verbe=get&v=${apiVersion}`, true), { method: "POST", headers: { From 9c150acdadcfaf4c41fc4cbba720cbcc6dcd12b5 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Mon, 21 Oct 2024 00:57:17 +0200 Subject: [PATCH 10/31] fixed bugs, added draft folder --- src/App.jsx | 53 +++++++++++++++++-- .../app/Messaging/MessageReader.jsx | 23 ++++++-- src/components/app/Messaging/Messaging.jsx | 4 +- 3 files changed, 70 insertions(+), 10 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index a8093e0..7ffadb0 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1254,7 +1254,7 @@ export default function App({ edpFetch }) { } }); } - else if (type === "drafts") { + else if (type === "draft") { sortedMessages = messages.messages.draft.map((message) => { return { date: message.date, @@ -1818,7 +1818,7 @@ export default function App({ edpFetch }) { specialFolderType = "archived"; folderId = 0; } else if (folderId === -4) { - specialFolderType = "drafts"; + specialFolderType = "draft"; folderId = 0; } edpFetch( @@ -1854,7 +1854,7 @@ export default function App({ edpFetch }) { folderId = -1; } else if (specialFolderType === "archived") { folderId = -2; - } else if (specialFolderType === "drafts") { + } else if (specialFolderType === "draft") { folderId = -4; } changeUserData("sortedMessages", oldSortedMessages.flat()); @@ -1888,8 +1888,11 @@ export default function App({ edpFetch }) { const data = { anneeMessages: getUserSettingValue("isSchoolYearEnabled") ? getUserSettingValue("schoolYear").join("-") : getCurrentSchoolYear().join("-"), } + + const mode = oldSortedMessages.find((item) => item.id === id).folderId === -1 || -4 ? "expediteur" : "destinataire"; + edpFetch( - getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages/${id}.awp?verbe=get&mode=destinataire&v=${apiVersion}`, true), + getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages/${id}.awp?verbe=get&mode=${mode}&v=${apiVersion}`, true), { method: "POST", headers: { @@ -2360,6 +2363,46 @@ export default function App({ edpFetch }) { }); } + async function deleteMessage(id, controller = new AbortController()) { + abortControllers.current.push(controller); + // the data is: + // data = { + // "action": "supprimer", + // "ids": [ + // 16199 + // ], + // "anneeMessages": "2024-2025", + // "idDossier": -5 + // } + const userId = activeAccount; + return edpFetch( + `https://api.ecoledirecte.com/v3/${accountsListState[activeAccount].accountType === "E" ? "eleves" : "famille"}/${accountsListState[userId].familyId}/messages.awp?verbe=delete&v=${apiVersion}`, + { + method: "POST", + headers: { + "x-token": tokenState + }, + body: `data=${JSON.stringify({ action: "supprimer", ids: [id], anneeMessages: getUserSettingValue("isSchoolYearEnabled") ? getUserSettingValue("schoolYear").join("-") : getCurrentSchoolYear().join("-"), idDossier: -5 })}`, + signal: controller.signal, + referrerPolicy: "no-referrer", + }, + "json" + ).then(response => { + if (response.code === 200) { + // delete the message from the list of messages + const oldSortedMessages = useUserData("sortedMessages").get(); + const updatedMessages = oldSortedMessages.filter(message => message.id !== id); + changeUserData("sortedMessages", updatedMessages); + console.log(updatedMessages); + console.log("Message supprimé avec succès"); + return true; + } + }).finally(() => { + abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); + }); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // End Of Fetch Functions // @@ -2644,7 +2687,7 @@ export default function App({ edpFetch }) { path: "messaging" }, { - element: , + element: , path: ":userId/messaging" }, ], diff --git a/src/components/app/Messaging/MessageReader.jsx b/src/components/app/Messaging/MessageReader.jsx index 7f942c2..3422305 100644 --- a/src/components/app/Messaging/MessageReader.jsx +++ b/src/components/app/Messaging/MessageReader.jsx @@ -17,9 +17,10 @@ import MarkAsUnread from "../../graphics/MarkAsUnread"; import SendIcon from "../../graphics/SendIcon"; import DraftIcon from "../../graphics/DraftIcon"; import { Tooltip, TooltipContent, TooltipTrigger } from "../../generic/PopUps/Tooltip"; +import DeleteIcon from "../../graphics/DeleteIcon"; -export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnread, setSelectedMessage, archiveMessage, unarchiveMessage, moveMessage }) { +export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnread, setSelectedMessage, archiveMessage, unarchiveMessage, moveMessage, deleteMessage }) { // States const location = useLocation(); @@ -137,6 +138,7 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea printWindow.print(); } }>Imprimer + {parsedHashFolder != -2 && parsedHashFolder != -1 && parsedHashFolder != -4 ? (

Changer De Dossier

@@ -168,7 +170,10 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea ))}
-
+ + ) : ( + null + )} {parsedHashFolder === -2 ? ( Désarchiver - ) : ( + ) : parsedHashFolder != -1 && parsedHashFolder != -4 ? ( Archiver + ) : ( + null + )} + { parsedHashFolder === -4 ? ( + Supprimer + ) : ( + null )} Marquer comme non lu
diff --git a/src/components/app/Messaging/Messaging.jsx b/src/components/app/Messaging/Messaging.jsx index c16116c..d45ad2f 100644 --- a/src/components/app/Messaging/Messaging.jsx +++ b/src/components/app/Messaging/Messaging.jsx @@ -30,7 +30,7 @@ import { el } from "date-fns/locale"; import { set } from "date-fns"; -export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fetchMessageContent, fetchMessageMarkAsUnread, renameFolder, deleteFolder, createFolder, archiveMessage, unarchiveMessage, moveMessage }) { +export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fetchMessageContent, fetchMessageMarkAsUnread, renameFolder, deleteFolder, createFolder, archiveMessage, unarchiveMessage, moveMessage, deleteMessage }) { // States const navigate = useNavigate(); const location = useLocation(); @@ -341,7 +341,7 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe

Message

- + From f3a71a82804295319fc080bb32c8ea8699cf03a8 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Mon, 21 Oct 2024 01:00:01 +0200 Subject: [PATCH 11/31] fixed bug --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 7ffadb0..bfcc0a9 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1889,7 +1889,7 @@ export default function App({ edpFetch }) { anneeMessages: getUserSettingValue("isSchoolYearEnabled") ? getUserSettingValue("schoolYear").join("-") : getCurrentSchoolYear().join("-"), } - const mode = oldSortedMessages.find((item) => item.id === id).folderId === -1 || -4 ? "expediteur" : "destinataire"; + const mode = (oldSortedMessages.find((item) => item.id === id).folderId === -1 || oldSortedMessages.find((item) => item.id === id).folderId === -4) ? "expediteur" : "destinataire"; edpFetch( getProxiedURL(`https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages/${id}.awp?verbe=get&mode=${mode}&v=${apiVersion}`, true), From cb8ad6d21b7d38ca4a71b7c2f1581847e6aae09e Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Mon, 21 Oct 2024 14:42:09 +0200 Subject: [PATCH 12/31] minor fixes --- src/components/app/Messaging/MessageReader.css | 11 +++++++---- src/components/app/Messaging/MessageReader.jsx | 12 ++++++------ src/components/generic/Window.css | 4 ++-- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/components/app/Messaging/MessageReader.css b/src/components/app/Messaging/MessageReader.css index 6e6137f..156cf2f 100644 --- a/src/components/app/Messaging/MessageReader.css +++ b/src/components/app/Messaging/MessageReader.css @@ -170,16 +170,12 @@ } .actions-container { - width: 240px; - /* Fixed width for the action buttons */ display: flex; flex-direction: row; align-items: center; justify-content: space-between; padding-right: 10px; padding-left: 10px; - gap: 5px; - /* Stack buttons vertically */ } .action-button { @@ -223,4 +219,11 @@ .not-allowed { cursor: not-allowed !important; +} + +.action-button-main { + margin: 5px; + width: 40px; + height: 40px; + min-width:auto; } \ No newline at end of file diff --git a/src/components/app/Messaging/MessageReader.jsx b/src/components/app/Messaging/MessageReader.jsx index 3422305..b5c07f3 100644 --- a/src/components/app/Messaging/MessageReader.jsx +++ b/src/components/app/Messaging/MessageReader.jsx @@ -127,7 +127,7 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea
- Imprimer {parsedHashFolder != -2 && parsedHashFolder != -1 && parsedHashFolder != -4 ? ( - +

Changer De Dossier

    @@ -175,14 +175,14 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea null )} {parsedHashFolder === -2 ? ( - Désarchiver ) : parsedHashFolder != -1 && parsedHashFolder != -4 ? ( - Marquer comme non lu + Marquer comme non lu
diff --git a/src/components/generic/Window.css b/src/components/generic/Window.css index a6e1b9c..db91fb7 100644 --- a/src/components/generic/Window.css +++ b/src/components/generic/Window.css @@ -36,9 +36,9 @@ flex-direction: column; } -.windows-layout *, .windows-layout { +/* .windows-layout *, .windows-layout { min-width: 0; -} +} */ .window { background-color: rgb(var(--background-color-2)); From 5e04203ef88bc2ffccf5b1d250178fb999966474 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:10:24 +0200 Subject: [PATCH 13/31] fixes --- src/components/app/Messaging/MessageReader.css | 8 ++++++++ src/components/app/Messaging/MessageReader.jsx | 2 ++ src/components/app/Messaging/Messaging.css | 1 - src/components/generic/UserInputs/TextInput.jsx | 3 ++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/app/Messaging/MessageReader.css b/src/components/app/Messaging/MessageReader.css index 156cf2f..2f4ff33 100644 --- a/src/components/app/Messaging/MessageReader.css +++ b/src/components/app/Messaging/MessageReader.css @@ -37,6 +37,7 @@ flex-flow: column nowrap; background-color: rgba(var(--background-color-2), 1); height: 100%; + border-radius: 15px; } #message-reader .message-content-container { @@ -103,6 +104,13 @@ overflow: auto; } + +@media (max-width: 869px) { + #message-reader .email-footer { + height: 130px; + } +} + #message-reader .attachments-container { list-style-type: none; height: 100%; diff --git a/src/components/app/Messaging/MessageReader.jsx b/src/components/app/Messaging/MessageReader.jsx index b5c07f3..9c45175 100644 --- a/src/components/app/Messaging/MessageReader.jsx +++ b/src/components/app/Messaging/MessageReader.jsx @@ -133,6 +133,8 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea const printWindow = window.open("", "_blank"); printWindow.document.write("Impression"); printWindow.document.write(document.querySelector(".message-content").innerHTML); + //remove the email footer + printWindow.document.querySelector(".email-footer").remove(); printWindow.document.write(""); printWindow.document.close(); printWindow.print(); diff --git a/src/components/app/Messaging/Messaging.css b/src/components/app/Messaging/Messaging.css index 975ad18..4276f96 100644 --- a/src/components/app/Messaging/Messaging.css +++ b/src/components/app/Messaging/Messaging.css @@ -192,7 +192,6 @@ h3:has(~ .edit-folder-container) { .MessagesTitle-container { transition: .3s; - width: calc(100% - 100px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; diff --git a/src/components/generic/UserInputs/TextInput.jsx b/src/components/generic/UserInputs/TextInput.jsx index 9f2f25c..fc016b2 100644 --- a/src/components/generic/UserInputs/TextInput.jsx +++ b/src/components/generic/UserInputs/TextInput.jsx @@ -4,7 +4,7 @@ import WarningMessage from "../Informative/WarningMessage"; import EyeVisible from "../../graphics/EyeVisible"; import EyeHidden from "../../graphics/EyeHidden"; -export default function TextInput({ textType, placeholder, value, onChange, disabled, isRequired, warningMessage, icon="", onWarning, className="", id="", ...props }) { +export default function TextInput({ textType, placeholder, value, onChange, disabled, isRequired, warningMessage, icon="", onWarning, className="", id="", keyHint, ...props }) { const [warningMessageState, setWarningMessageState] = useState(""); const [showPassword, setShowPassword] = useState(false); const allowedTextTypes = ["text", "password", "email", "search", "url"]; @@ -51,6 +51,7 @@ export default function TextInput({ textType, placeholder, value, onChange, disa disabled={disabled} required={isRequired} onInvalid={handleInvalid} + enterKeyHint={keyHint} {...props} /> {showPasswordIcon && value !== "" ? PasswordIcon : icon} From 0af866a4a69c3e15b751dc858f4765004e289339 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sat, 26 Oct 2024 18:42:32 +0200 Subject: [PATCH 14/31] handles enterkeyhint event for mobile BUT THE FETCH FAILS (See discord) --- src/components/app/Messaging/Messaging.jsx | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/components/app/Messaging/Messaging.jsx b/src/components/app/Messaging/Messaging.jsx index d45ad2f..34f321a 100644 --- a/src/components/app/Messaging/Messaging.jsx +++ b/src/components/app/Messaging/Messaging.jsx @@ -228,6 +228,26 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe }; }, [isEditingFolder, newFolderName]); + // validate editing on enterkeyhint mobile keyboard press event (code 13) + useEffect(() => { + // use code 13 for enter key hint + const handleKeyDown = (event) => { + if (event.keyCode === 13) { + handleRenameSave(); + } + }; + + if (isEditingFolder) { + document.addEventListener('keypress', handleKeyDown); + } else { + document.removeEventListener('keypress', handleKeyDown); + } + + return () => { + document.removeEventListener('keypress', handleKeyDown); + }; + }, [isEditingFolder, newFolderName]); + // changing folder should exit editing mode useEffect(() => { setIsEditingFolder(false); @@ -319,6 +339,7 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe className="edit-folder-name-input" autoFocus onFocus={(e) => e.target.select()} + enterKeyHint = "done" /> ) : ( From b5e6d03f32ae8f8b773f3335a9ace53bca9729f8 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sat, 26 Oct 2024 18:45:46 +0200 Subject: [PATCH 15/31] fix fetch --- src/utils/iframeRequest/iframeRequestLinker.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/utils/iframeRequest/iframeRequestLinker.js b/src/utils/iframeRequest/iframeRequestLinker.js index b2bbbaf..dda9b3c 100644 --- a/src/utils/iframeRequest/iframeRequestLinker.js +++ b/src/utils/iframeRequest/iframeRequestLinker.js @@ -29,8 +29,10 @@ export default class IframeRequestLinker { const fetchId = crypto.randomUUID(); this.solverList[fetchId] = solver; const fetchSignal = fetchParams.signal; - fetchSignal.onabort = () => { - this.#sendIframeAbort(fetchId); + if (fetchSignal) { + fetchSignal.onabort = () => { + this.#sendIframeAbort(fetchId); + } } delete fetchParams.signal; this.iframeWindow.postMessage({ action: "FETCH", values: { url, fetchParams, dataType, fetchId } }, "*"); From d950d8e125e23222e0f91a762d975a7508575ecc Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sat, 26 Oct 2024 19:24:21 +0200 Subject: [PATCH 16/31] fix --- src/App.jsx | 4 ++++ src/components/app/Messaging/Messaging.jsx | 24 ++-------------------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index bfcc0a9..22c8b57 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1849,6 +1849,10 @@ export default function App({ edpFetch }) { // we've added the specialFolderType to the function to handle the special folders (to handle different data path for special folders and special folderId) oldSortedMessages.push(sortMessages(response.data, specialFolderType)); + // if in oldSortedMessages there is multiple times the same message, we remove the duplicates + console.log(oldSortedMessages) + oldSortedMessages = oldSortedMessages.flat().filter((item, index, self) => self.findIndex((item2) => item2.id === item.id) === index); + console.log(oldSortedMessages) if (specialFolderType === "sent") { // set the folderId back to -1 to than handle the special folders folderId = -1; diff --git a/src/components/app/Messaging/Messaging.jsx b/src/components/app/Messaging/Messaging.jsx index 34f321a..651198c 100644 --- a/src/components/app/Messaging/Messaging.jsx +++ b/src/components/app/Messaging/Messaging.jsx @@ -209,30 +209,10 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe }; }, [isEditingFolder]); - // validate editing on enter key - useEffect(() => { - const handleKeyDown = (event) => { - if (event.key === 'Enter') { - handleRenameSave(); - } - }; - - if (isEditingFolder) { - document.addEventListener('keydown', handleKeyDown); - } else { - document.removeEventListener('keydown', handleKeyDown); - } - - return () => { - document.removeEventListener('keydown', handleKeyDown); - }; - }, [isEditingFolder, newFolderName]); - - // validate editing on enterkeyhint mobile keyboard press event (code 13) useEffect(() => { // use code 13 for enter key hint const handleKeyDown = (event) => { - if (event.keyCode === 13) { + if (event.keyCode === 13 || event.key === 'Enter') { handleRenameSave(); } }; @@ -309,7 +289,7 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe : null } - {selectedFolder !== 0 && selectedFolder !== -1 && selectedFolder !== -2 && selectedFolder !== -4 + {selectedFolder !== 0 && selectedFolder !== -1 && selectedFolder !== -2 && selectedFolder !== -4 && selectedFolder !== -3 ? event.stopPropagation()}> From 797df071bbabd2fdfbbb82769bd37749fc28f4be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Truite=20S=C3=A9ch=C3=A9e?= Date: Sun, 10 Nov 2024 01:39:27 +0100 Subject: [PATCH 17/31] Some revert and fixes --- src/App.css | 6 +- src/components/LandingPage/LandingPage.css | 16 ++-- src/components/LandingPage/LandingPage.jsx | 2 +- src/components/LandingPage/LandingPage2.css | 79 +++++-------------- src/components/app/Grades/Charts.jsx | 7 +- src/components/app/Header/Header.css | 51 ++---------- src/components/app/Messaging/Inbox.jsx | 2 +- .../app/Messaging/MessageReader.css | 5 +- .../generic/CustomDivs/ScrollShadedDiv.css | 15 ++-- src/components/generic/Window.css | 4 +- src/components/generic/Window.jsx | 4 +- src/components/graphics/graphics.css | 4 - src/utils/utils.js | 17 ---- 13 files changed, 57 insertions(+), 155 deletions(-) diff --git a/src/App.css b/src/App.css index 7c58e18..def19f3 100644 --- a/src/App.css +++ b/src/App.css @@ -121,7 +121,7 @@ --box-shadow-color-scrollbar-thumb: 108, 126, 133; --box-shadow-color-scrollbar-thumb-on-hover: 143, 141, 185; - --alpha-shadow-color-scroll-shaded-div: 0.5; + --alpha-shadow-color-scroll-shaded-div: 0.3; } :root.dark { @@ -190,7 +190,7 @@ --box-shadow-color-scrollbar-thumb: 118, 118, 162; --box-shadow-color-scrollbar-thumb-on-hover: 143, 141, 185; - --alpha-shadow-color-scroll-shaded-div: 0.5; + --alpha-shadow-color-scroll-shaded-div: 0.3; --color-very-good: 0, 255, 0; --color-very-good-background: 0, 255, 0, 0.1; @@ -266,7 +266,7 @@ --box-shadow-color-scrollbar-thumb: 136, 136, 184; --box-shadow-color-scrollbar-thumb-on-hover: 116, 116, 164; - --alpha-shadow-color-scroll-shaded-div: 0.3; + --alpha-shadow-color-scroll-shaded-div: 0.2; --color-very-good: 21, 87, 37; --color-very-good-background: 0, 255, 0, 0.2; diff --git a/src/components/LandingPage/LandingPage.css b/src/components/LandingPage/LandingPage.css index 7b28970..6e62bd4 100644 --- a/src/components/LandingPage/LandingPage.css +++ b/src/components/LandingPage/LandingPage.css @@ -36,11 +36,11 @@ transition: .2s ease; } -#nav-bar .edpu-logo>path { +#nav-bar .edpu-logo > path { fill: rgba(var(--text-color-alt), .7); } -a[href="/edp-unblock"]:hover .edpu-logo>path { +a[href="/edp-unblock"]:hover .edpu-logo > path { fill: rgba(var(--text-color-main-reverse), 0.7) !important; } @@ -56,19 +56,23 @@ a[href="/edp-unblock"]:hover .edpu-logo>path { justify-content: center; } -.landing-page :is(.nav-links a.selected, +.landing-page :is( + .nav-links a.selected, .nav-links a:hover, .nav-login:hover, - .change-theme:hover) { + .change-theme:hover +) { background-color: rgba(var(--text-color-alt), .8); color: rgba(var(--text-color-main-reverse), 0.8); } -.landing-page :is(.nav-logo, +.landing-page :is( + .nav-logo, .nav-login, .change-theme, .nav-links, - .go-to-top) { + .go-to-top +) { background-color: rgb(var(--background-color-2), .7); backdrop-filter: blur(4px); } diff --git a/src/components/LandingPage/LandingPage.jsx b/src/components/LandingPage/LandingPage.jsx index 170c0d9..45e76b6 100644 --- a/src/components/LandingPage/LandingPage.jsx +++ b/src/components/LandingPage/LandingPage.jsx @@ -64,7 +64,7 @@ export default function LandingPage({ token, accountsList }) { rootMargin: "0px 0px -250px 0px", threshold: 0.1, }) - + if (communitySectionRef.current && openSourceSectionRef.current) { observer.observe(communitySectionRef.current) observer.observe(openSourceSectionRef.current) diff --git a/src/components/LandingPage/LandingPage2.css b/src/components/LandingPage/LandingPage2.css index 0673d7c..23e4fd4 100644 --- a/src/components/LandingPage/LandingPage2.css +++ b/src/components/LandingPage/LandingPage2.css @@ -1,3 +1,5 @@ + + html:has(.landing-page) { overflow-x: hidden; scroll-behavior: smooth; @@ -64,12 +66,10 @@ html:has(.landing-page) { flex-flow: row nowrap; gap: 8px; } - .landing-page .affiliation-disclaimer svg { height: 12px; transform: scale(1.6); } - .landing-page .affiliation-disclaimer svg path { stroke: rgb(var(--text-color-alt)); } @@ -91,11 +91,9 @@ html:has(.landing-page) { .landing-page h1 { font-size: var(--font-size-36); } - .landing-page .heading-emphasis { color: rgb(var(--text-color-alt)); } - #home p { color: rgb(var(--text-color-alt)); margin: 0 auto; @@ -114,7 +112,6 @@ html:has(.landing-page) { outline: none; overflow: hidden; } - .landing-page .login-call-to-action::after { content: "-->"; display: inline-block; @@ -131,7 +128,6 @@ html:has(.landing-page) { color: rgb(var(--text-color-main-reverse)); box-shadow: 0 0 20px rgb(var(--text-color-main), .3); } - .landing-page .login-call-to-action:is(:hover, :focus-visible)::after { content: "-->"; opacity: 1; @@ -152,22 +148,18 @@ html:has(.landing-page) { position: relative; transition: transform .3s ease; } - .landing-page .fade-out-image:has(.mobile) { width: min(350px, calc(100% - 40px)); } - .landing-page .fade-out-image:has(.tablet) { width: min(450px, calc(100% - 40px)); } - .landing-page .fade-out-image img { width: 100%; display: block; border: 1px solid rgba(var(--text-color-alt), .2); border-radius: 10px; } - .landing-page .fade-out-image::after { content: ""; background: linear-gradient(180deg, transparent, rgb(var(--background-color-0)) 90%, rgb(var(--background-color-0))); @@ -225,11 +217,9 @@ html:has(.landing-page) { #bento .bento-card h4 { margin-bottom: 10px; } - #bento .bento-card p { color: rgb(var(--text-color-alt)); } - #bento .bento-card:hover p { color: rgba(var(--text-color-main), .9); } @@ -238,33 +228,13 @@ html:has(.landing-page) { background-color: rgba(var(--background-color-0), .95); } -.div1 { - grid-area: 1 / 1 / 2 / 2; -} - -.div2 { - grid-area: 1 / 2 / 3 / 3; -} - -.div3 { - grid-area: 2 / 1 / 4 / 2; -} - -.div4 { - grid-area: 3 / 2 / 4 / 3; -} - -.div5 { - grid-area: 4 / 1 / 5 / 2; -} - -.div6 { - grid-area: 5 / 1 / 6 / 2; -} - -.div7 { - grid-area: 4 / 2 / 6 / 3; -} +.div1 { grid-area: 1 / 1 / 2 / 2; } +.div2 { grid-area: 1 / 2 / 3 / 3; } +.div3 { grid-area: 2 / 1 / 4 / 2; } +.div4 { grid-area: 3 / 2 / 4 / 3; } +.div5 { grid-area: 4 / 1 / 5 / 2; } +.div6 { grid-area: 5 / 1 / 6 / 2; } +.div7 { grid-area: 4 / 2 / 6 / 3; } #bento .div3 .inner-container { height: 100%; @@ -341,11 +311,11 @@ html:has(.landing-page) { scale: -1 1; } -#bento .div3 .theme-buttons button:first-child svg path { +#bento .div3 .theme-buttons button:first-child svg path{ stroke: black; } -#bento .div3 .theme-buttons button:last-child svg path { +#bento .div3 .theme-buttons button:last-child svg path{ stroke: white; } @@ -356,13 +326,11 @@ html:has(.landing-page) { .parallax-item { position: absolute; } - .parallax-item.blob1 { left: -80px; top: min(130vh, 1500px); width: 200px; } - .parallax-item.blob2 { right: -70px; top: min(130vh, 1500px); @@ -375,7 +343,6 @@ html:has(.landing-page) { filter: blur(50px); animation: blob-rotate linear 10s infinite; } - .blob path { fill: rgb(var(--text-color-alt)) } @@ -384,7 +351,6 @@ html:has(.landing-page) { from { rotate: 0deg; } - to { rotate: 359deg; } @@ -418,7 +384,7 @@ html:has(.landing-page) { text-decoration-color: rgba(var(--text-color-main), 1); } -.floating-section>h2 { +.floating-section > h2 { padding-inline: 10%; text-align: center; opacity: 0; @@ -426,7 +392,7 @@ html:has(.landing-page) { transition: opacity 2s, transform 1s; } -.floating-section>div { +.floating-section > div { width: 50%; display: flex; flex-flow: row wrap; @@ -435,7 +401,7 @@ html:has(.landing-page) { gap: 50px; } -.floating-section>div> :is(p, a) { +.floating-section > div > :is(p, a) { opacity: 0; transform: translateY(-50px); transition: opacity 2s, transform 1s; @@ -447,18 +413,16 @@ html:has(.landing-page) { color: rgb(var(--text-color-alt)); } -.floating-section>div>a { +.floating-section > div > a { width: 250px; display: flex; align-items: center; justify-content: center; transition: opacity 2s, transform 2s, filter .2s; } - -.floating-section>div>a:is(:hover, :focus-visible) { +.floating-section > div > a:is(:hover, :focus-visible) { filter: drop-shadow(0 0 15px rgba(var(--text-color-main), .3)) } - .floating-section .github-logo { width: 180px; } @@ -486,15 +450,12 @@ html:has(.landing-page) { display: flex; flex-flow: column nowrap; } - .last-call-to-action h3 { font-size: var(--font-size-24); } - .last-call-to-action p { color: rgb(var(--text-color-alt)); } - .last-call-to-action a { width: max-content; margin: 0 auto; @@ -549,15 +510,12 @@ html:has(.landing-page) { color: rgb(var(--text-color-alt)); transition: .1s; } - .landing-page ul.sitemap a:is(:hover, :focus-visible) { color: rgb(var(--text-color-main)); } - .landing-page ul.sitemap a:active { opacity: .8; } - .landing-page ul.sitemap a.disabled { pointer-events: none; opacity: .5; @@ -567,7 +525,6 @@ html:has(.landing-page) { .landing-page footer { flex-flow: column nowrap; } - .landing-page .footer-logo { flex: auto; } @@ -586,8 +543,8 @@ html:has(.landing-page) { flex-direction: column; align-items: center; } - - #bento .bento-grid>div { + + #bento .bento-grid > div { max-width: 400px; } } \ No newline at end of file diff --git a/src/components/app/Grades/Charts.jsx b/src/components/app/Grades/Charts.jsx index 86a4eed..c25a118 100644 --- a/src/components/app/Grades/Charts.jsx +++ b/src/components/app/Grades/Charts.jsx @@ -54,9 +54,8 @@ export default function Charts({ selectedPeriod }) { /** * return the appropriate dataset according to the chartType */ - const grades = useUserData(); - const minMaxEnabled = grades.get("gradesEnabledFeatures")?.moyenneMin && grades.get("gradesEnabledFeatures")?.moyenneMax ? true : false; - console.log(minMaxEnabled); + const userData = useUserData(); + const minMaxEnabled = userData.get("gradesEnabledFeatures")?.moyenneMin && userData.get("gradesEnabledFeatures")?.moyenneMax; switch (chartType) { @@ -144,7 +143,7 @@ export default function Charts({ selectedPeriod }) { chartData.current = { labels: Array.from({ length: subjectsComparativeInformation[selectedPeriod].length }, (_, i) => subjectsComparativeInformation[selectedPeriod][i].subjectFullname), datasets: [ - ...(minMaxEnabled ? [ + ...(minMaxEnabled && false ? [ { type: "bar", label: "Moyennes min et max de classe", diff --git a/src/components/app/Header/Header.css b/src/components/app/Header/Header.css index cbe2dba..56d1c9b 100644 --- a/src/components/app/Header/Header.css +++ b/src/components/app/Header/Header.css @@ -46,7 +46,7 @@ flex-grow: 0.2; */ flex-grow: 0.25; width: 100px; - + /* background-color: red; */ } @@ -68,7 +68,6 @@ border-radius: 7px; box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); pointer-events: none; - } .header-logo-container #header-logo { @@ -108,25 +107,11 @@ height: inherit; } -li#dashboard.header-button-container { - order: 1; -} - -li#grades.header-button-container { - order: 2; -} - -li#homeworks.header-button-container { - order: 3; -} - -li#timetable.header-button-container { - order: 4; -} - -li#messaging.header-button-container { - order: 5; -} +li#dashboard.header-button-container { order: 1; } +li#grades.header-button-container { order: 2; } +li#homeworks.header-button-container { order: 3; } +li#timetable.header-button-container { order: 4; } +li#messaging.header-button-container { order: 5; } /* - - - account-selection - - - */ @@ -149,7 +134,7 @@ li#messaging.header-button-container { main.content { height: 100%; - overflow: visible; + overflow: auto; scroll-behavior: smooth; /* overscroll-behavior: contain; */ width: 100%; @@ -208,7 +193,6 @@ main.content { } @media only screen and (max-width: 450px) { - .standalone .header-menu { padding-bottom: 25px; } @@ -218,7 +202,6 @@ main.content { max-height: 75px; } - .header-button .icon-container svg { height: 45px } @@ -233,23 +216,3 @@ main.content { border-radius: 0 0 20px 20px; } } - -.content:has(#account) { - overflow: scroll; -} - -.content:has(#messaging) { - overflow: scroll; -} - -.content:has(#homeworks) { - overflow: scroll; -} - -.content:has(#dashboard) { - overflow: scroll; -} - -.content:has(#grades) { - overflow: scroll; -} \ No newline at end of file diff --git a/src/components/app/Messaging/Inbox.jsx b/src/components/app/Messaging/Inbox.jsx index fa5d608..279046c 100644 --- a/src/components/app/Messaging/Inbox.jsx +++ b/src/components/app/Messaging/Inbox.jsx @@ -75,7 +75,7 @@ export default function Inbox({ selectedMessage, setSelectedMessage, selectedFol useEffect(() => { const newMessages = useUserData("sortedMessages").get(); setMessages(newMessages); - }, [useUserData("sortedMessages")]); + }, [useUserData("sortedMessages").get()]); // JSX diff --git a/src/components/app/Messaging/MessageReader.css b/src/components/app/Messaging/MessageReader.css index 2f4ff33..6eeb930 100644 --- a/src/components/app/Messaging/MessageReader.css +++ b/src/components/app/Messaging/MessageReader.css @@ -101,7 +101,7 @@ #message-reader .email-footer { height: 100px; - overflow: auto; + overflow: hidden; } @@ -206,8 +206,7 @@ } .scroll-footer-div { - width: -moz-available; - /* Add for other brothers */ + flex: 1; } .no-attatchemnts-messages p { diff --git a/src/components/generic/CustomDivs/ScrollShadedDiv.css b/src/components/generic/CustomDivs/ScrollShadedDiv.css index 9ec6a55..6382f4d 100644 --- a/src/components/generic/CustomDivs/ScrollShadedDiv.css +++ b/src/components/generic/CustomDivs/ScrollShadedDiv.css @@ -1,16 +1,17 @@ /* ScrollShadedDiv.css */ .scroll-shaded-div { - position: relative; + max-height: 100%; overflow: hidden; + position: relative; } -.content { +.scroll-shaded-div .content { overflow: auto; + /* Adjust as needed */ height: 100%; /* Adjust as needed */ width: 100%; - /* Adjust as needed */ position: relative; } @@ -29,12 +30,12 @@ .top-shadow { top: 0; - background: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent); + background: linear-gradient(to bottom, rgba(0, 0, 0, var(--alpha-shadow-color-scroll-shaded-div)), transparent); } .bottom-shadow { bottom: 0; - background: linear-gradient(to top, rgba(0, 0, 0, 0.2), transparent); + background: linear-gradient(to top, rgba(0, 0, 0, var(--alpha-shadow-color-scroll-shaded-div)), transparent); } /* Left and right shadows */ @@ -52,12 +53,12 @@ .left-shadow { left: 0; - background: linear-gradient(to right, rgba(0, 0, 0, 0.2), transparent); + background: linear-gradient(to right, rgba(0, 0, 0, var(--alpha-shadow-color-scroll-shaded-div)), transparent); } .right-shadow { right: 0; - background: linear-gradient(to left, rgba(0, 0, 0, 0.2), transparent); + background: linear-gradient(to left, rgba(0, 0, 0, var(--alpha-shadow-color-scroll-shaded-div)), transparent); } /* Optional: If you have any custom styles for the content */ diff --git a/src/components/generic/Window.css b/src/components/generic/Window.css index db91fb7..a6e1b9c 100644 --- a/src/components/generic/Window.css +++ b/src/components/generic/Window.css @@ -36,9 +36,9 @@ flex-direction: column; } -/* .windows-layout *, .windows-layout { +.windows-layout *, .windows-layout { min-width: 0; -} */ +} .window { background-color: rgb(var(--background-color-2)); diff --git a/src/components/generic/Window.jsx b/src/components/generic/Window.jsx index 11d8dd2..959a181 100644 --- a/src/components/generic/Window.jsx +++ b/src/components/generic/Window.jsx @@ -812,11 +812,11 @@ export function WindowsContainer({ children, name = "", className = "", id = "", } setWindowArrangement(windowArrangement); } else { - if (windowsContainer.current.allowWindowsManagement) { + if (allowWindowsManagement) { console.error("windowsContainer has no \"name\" attribute but you have allowed window management: window rearrangements will not be saved"); } } - }, [windowArrangementSetting.get(), activeAccount, isTabletLayout]); + }, [windowArrangementSetting.get(), activeAccount, isTabletLayout, allowWindowsManagement]); useEffect(() => { diff --git a/src/components/graphics/graphics.css b/src/components/graphics/graphics.css index 10a268d..695199e 100644 --- a/src/components/graphics/graphics.css +++ b/src/components/graphics/graphics.css @@ -235,7 +235,3 @@ .fill-181829 { fill: #181829; } -.stroke-000000 { - stroke: #000000; -} - diff --git a/src/utils/utils.js b/src/utils/utils.js index 9b8dd86..57f1795 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -30,23 +30,6 @@ export function createUserLists(accountNumber) { return list; } -export function getCurrentSchoolYear() { - /** - * return an array: - * 0: start year bound - * 1: end year bound - */ - let today = new Date(); - let year = today.getFullYear(); - let month = today.getMonth(); - - if (month >= 8) { - return [year, (year + 1)]; - } - - return [(year - 1), year]; -} - export function getISODate(date) { if (typeof date === "string") { date = new Date(date) From d0143e5c01e90115fa871a700b16428aa5cb369d Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sun, 10 Nov 2024 16:22:01 +0100 Subject: [PATCH 18/31] fix --- src/components/app/Account/Account.jsx | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/components/app/Account/Account.jsx b/src/components/app/Account/Account.jsx index 4397914..b46ec6f 100644 --- a/src/components/app/Account/Account.jsx +++ b/src/components/app/Account/Account.jsx @@ -18,7 +18,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati const moduletype = accountsListState[activeAccount].accountType === "E" ? "DOCUMENTS_ELEVE" : "DOCUMENTS"; const module = accountsListState[activeAccount].modules.find(module => module.code === moduletype); - const availableYearsArray = module.params.AnneeArchive.split(","); + const availableYearsArray = module.params.AnneeArchive ? module.params.AnneeArchive.split(",") : []; const lastYear = availableYearsArray[availableYearsArray.length - 1]; const [startYear, endYear] = lastYear.split('-').map(Number); const nextYear = `${endYear}-${endYear + 1}`; @@ -156,15 +156,20 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati {module.enable ? ( <>
-

Documents

- year)} - selected={selectedYear} - onChange={handleYearChange} - className="year-selector" - />
+

Documents

+ { availableYearsArray.length > 1 ? ( + year)} + selected={selectedYear} + onChange={handleYearChange} + className= + "year-selector" + /> + ) : null + } +
{documents?.administratifs?.length === 0 && documents?.notes?.length === 0 && From 19f6652489f351344e631d311e347f9fa141638f Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sun, 10 Nov 2024 16:31:15 +0100 Subject: [PATCH 19/31] fix --- src/components/app/Account/Account.css | 4 ++++ src/components/app/Account/Account.jsx | 7 +++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/app/Account/Account.css b/src/components/app/Account/Account.css index a6c41e2..1119bf4 100644 --- a/src/components/app/Account/Account.css +++ b/src/components/app/Account/Account.css @@ -249,4 +249,8 @@ body:has(#account) { .document-container { height: 100%; +} + +.single-year { + padding-left: 0 !important; } \ No newline at end of file diff --git a/src/components/app/Account/Account.jsx b/src/components/app/Account/Account.jsx index b46ec6f..2dab76f 100644 --- a/src/components/app/Account/Account.jsx +++ b/src/components/app/Account/Account.jsx @@ -19,7 +19,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati const moduletype = accountsListState[activeAccount].accountType === "E" ? "DOCUMENTS_ELEVE" : "DOCUMENTS"; const module = accountsListState[activeAccount].modules.find(module => module.code === moduletype); const availableYearsArray = module.params.AnneeArchive ? module.params.AnneeArchive.split(",") : []; - const lastYear = availableYearsArray[availableYearsArray.length - 1]; + const lastYear = availableYearsArray.length > 0 ? availableYearsArray[availableYearsArray.length - 1] : `${new Date().getFullYear() - 1}-${new Date().getFullYear()}`; const [startYear, endYear] = lastYear.split('-').map(Number); const nextYear = `${endYear}-${endYear + 1}`; availableYearsArray.push(nextYear); @@ -156,7 +156,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati {module.enable ? ( <>
-

Documents

+

Documents

{ availableYearsArray.length > 1 ? ( year)} selected={selectedYear} onChange={handleYearChange} - className= - "year-selector" + className="year-selector" /> ) : null } From e10fdd902a9447e132337f8e30a4049ae2cecc1b Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:11:54 +0100 Subject: [PATCH 20/31] fix --- src/App.jsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 22c8b57..ea1bdaf 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -2262,8 +2262,9 @@ export default function App({ edpFetch }) { async function archiveMessage(id, controller = new AbortController()) { abortControllers.current.push(controller); + const userId = activeAccount; return edpFetch( - `https://api.ecoledirecte.com/v3/eleves/${accountsListState[activeAccount].id}/messages.awp?verbe=put&v=${apiVersion}`, + `https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?verbe=put&v=${apiVersion}`, { method: "POST", headers: { @@ -2297,8 +2298,9 @@ export default function App({ edpFetch }) { async function unarchiveMessage(id, controller = new AbortController()) { abortControllers.current.push(controller); + const userId = activeAccount; return edpFetch( - `https://api.ecoledirecte.com/v3/eleves/${accountsListState[activeAccount].id}/messages.awp?verbe=put&v=${apiVersion}`, + `https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?verbe=put&v=${apiVersion}`, { method: "POST", headers: { @@ -2334,8 +2336,9 @@ export default function App({ edpFetch }) { async function moveMessage(id, folderId, controller = new AbortController()) { abortControllers.current.push(controller); + const userId = activeAccount; return edpFetch( - `https://api.ecoledirecte.com/v3/eleves/${accountsListState[activeAccount].id}/messages.awp?verbe=put&v=${apiVersion}`, + `https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?verbe=put&v=${apiVersion}`, { method: "POST", headers: { @@ -2380,7 +2383,7 @@ export default function App({ edpFetch }) { // } const userId = activeAccount; return edpFetch( - `https://api.ecoledirecte.com/v3/${accountsListState[activeAccount].accountType === "E" ? "eleves" : "famille"}/${accountsListState[userId].familyId}/messages.awp?verbe=delete&v=${apiVersion}`, + `https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?verbe=put&v=${apiVersion}`, { method: "POST", headers: { From 513dc0bef39621fbe3ef625ba38940f61f9b6528 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:31:55 +0100 Subject: [PATCH 21/31] handle delete folder with messages --- src/components/app/Messaging/Messaging.jsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/app/Messaging/Messaging.jsx b/src/components/app/Messaging/Messaging.jsx index 651198c..63ac48e 100644 --- a/src/components/app/Messaging/Messaging.jsx +++ b/src/components/app/Messaging/Messaging.jsx @@ -300,6 +300,13 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe
  • From fece5a6444fcc52c3656a2ee2054dd33520a7aeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Truite=20S=C3=A9ch=C3=A9e?= Date: Mon, 11 Nov 2024 06:02:44 +0100 Subject: [PATCH 23/31] Minor improvement, refactoring and bug fixes --- src/App.jsx | 64 ++++------- src/components/app/Account/Account.css | 7 +- src/components/app/Account/Account.jsx | 11 +- .../app/Messaging/MessageReader.css | 19 ++-- .../app/Messaging/MessageReader.jsx | 106 +++++++++--------- src/components/app/Messaging/Messaging.css | 11 +- src/components/app/Messaging/Messaging.jsx | 32 ++---- 7 files changed, 107 insertions(+), 143 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index ea1bdaf..abcaacb 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1188,7 +1188,7 @@ export default function App({ edpFetch }) { if (!sortedMessageFolders.some((folder) => folder.id === -3)) { sortedMessageFolders.push({ id: -3, - name: "Créer un dossier", + name: "Nouveau dossier", // This is a virtual folder (it doesn't exist at all, it's just a button to create a new folder so it doesn't need to be fetched) fetchInitiated: true, fetched: true @@ -2119,15 +2119,15 @@ export default function App({ edpFetch }) { const formatDocument = (documents) => documents.map((e) => { const [year, month, day] = e.date.split('-'); - const formattedDate = `${day}-${month}-${year}`; + const formattedDate = `${day}/${month}/${year}`; return new File(e.id, e.type, `${e.libelle}.pdf`, undefined, { date: formattedDate }); }); - const administrativeDocuments = formatDocument(response.data.administratifs); - const notesDocuments = formatDocument(response.data.notes); - const vieScolaireDocuments = formatDocument(response.data.viescolaire); - const entrepriseDocuments = formatDocument(response.data.entreprises); - const facturesDocuments = formatDocument(response.data.factures); + const administrativeDocuments = formatDocument(response.data?.administratifs ?? []); + const notesDocuments = formatDocument(response.data?.notes ?? []); + const vieScolaireDocuments = formatDocument(response.data?.viescolaire ?? []); + const entrepriseDocuments = formatDocument(response.data?.entreprises ?? []); + const facturesDocuments = formatDocument(response.data?.factures ?? []); // const insReinsDocuments = formatDocument(response.data.inscriptionsReinscriptions); @@ -2152,8 +2152,8 @@ export default function App({ edpFetch }) { }); } - async function renameFolder(id, name) { - const oldMessageFolders = useUserData("messageFolders").get(); + async function renameFolder(id, name, controller = (new AbortController())) { + abortControllers.current.push(controller); return edpFetch( `https://api.ecoledirecte.com/v3/messagerie/classeur/${id}.awp?verbe=put&v=${apiVersion}`, { @@ -2167,6 +2167,7 @@ export default function App({ edpFetch }) { "json" ).then(response => { if (response.code === 200) { + const oldMessageFolders = useUserData("messageFolders").get(); // the updated folder should be edited in order no modify the libelle of the correct folder const updatedFolders = oldMessageFolders.map(folder => { if (folder.id === id) { @@ -2174,36 +2175,15 @@ export default function App({ edpFetch }) { } return folder; }); - console.log(updatedFolders); - useUserData("messageFolders").set(updatedFolders); - } - }); - } - - async function deleteFolder(id) { - const oldMessageFolders = useUserData("messageFolders").get(); - return edpFetch( - `https://api.ecoledirecte.com/v3/messagerie/classeur/${id}.awp?verbe=delete&v=${apiVersion}`, - { - method: "POST", - headers: { - "x-token": tokenState - }, - body: "data={}", - referrerPolicy: "no-referrer", - }, - "json" - ).then(response => { - if (response.code === 200) { - // delete the folder from the list of folders - const updatedFolders = oldMessageFolders.filter(folder => folder.id !== id); useUserData("messageFolders").set(updatedFolders); } + // TODO: handle errors + }).finally(() => { + abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); }); } async function deleteFolder(id, controller = new AbortController()) { - const oldMessageFolders = useUserData("messageFolders").get(); abortControllers.current.push(controller); return edpFetch( `https://api.ecoledirecte.com/v3/messagerie/classeur/${id}.awp?verbe=delete&v=${apiVersion}`, @@ -2219,17 +2199,19 @@ export default function App({ edpFetch }) { "json" ).then(response => { if (response.code === 200) { + const oldMessageFolders = useUserData("messageFolders").get(); // delete the folder from the list of folders const updatedFolders = oldMessageFolders.filter(folder => folder.id !== id); useUserData("messageFolders").set(updatedFolders); return true; } + // TODO: handle errors (ex: "Dossier non vide") }).finally(() => { abortControllers.current.splice(abortControllers.current.indexOf(controller), 1); }); } + async function createFolder(name, controller = new AbortController()) { - const oldMessageFolders = useUserData("messageFolders").get(); abortControllers.current.push(controller); return edpFetch( `https://api.ecoledirecte.com/v3/messagerie/classeurs.awp?verbe=post&v=${apiVersion}`, @@ -2245,6 +2227,7 @@ export default function App({ edpFetch }) { "json" ).then(response => { if (response.code === 200) { + const oldMessageFolders = useUserData("messageFolders").get(); const newFolder = { id: response.data.id, name: response.data.libelle, @@ -2262,9 +2245,8 @@ export default function App({ edpFetch }) { async function archiveMessage(id, controller = new AbortController()) { abortControllers.current.push(controller); - const userId = activeAccount; return edpFetch( - `https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?verbe=put&v=${apiVersion}`, + `https://api.ecoledirecte.com/v3/${accountsListState[activeAccount].accountType === "E" ? "eleves/" + accountsListState[activeAccount].id : "familles/" + accountsListState[activeAccount].familyId}/messages.awp?verbe=put&v=${apiVersion}`, { method: "POST", headers: { @@ -2298,9 +2280,8 @@ export default function App({ edpFetch }) { async function unarchiveMessage(id, controller = new AbortController()) { abortControllers.current.push(controller); - const userId = activeAccount; return edpFetch( - `https://api.ecoledirecte.com/v3/${accountsListState[userId].accountType === "E" ? "eleves/" + accountsListState[userId].id : "familles/" + accountsListState[userId].familyId}/messages.awp?verbe=put&v=${apiVersion}`, + `https://api.ecoledirecte.com/v3/${accountsListState[activeAccount].accountType === "E" ? "eleves/" + accountsListState[activeAccount].id : "familles/" + accountsListState[activeAccount].familyId}/messages.awp?verbe=put&v=${apiVersion}`, { method: "POST", headers: { @@ -2314,7 +2295,6 @@ export default function App({ edpFetch }) { ).then(response => { if (response.code === 200) { // move the message to the 0 folder - const oldSortedMessages = useUserData("sortedMessages").get(); const updatedMessages = oldSortedMessages.map(message => { if (message.id === id) { @@ -2334,7 +2314,7 @@ export default function App({ edpFetch }) { }); } - async function moveMessage(id, folderId, controller = new AbortController()) { + async function moveMessage(ids, folderId, controller = new AbortController()) { abortControllers.current.push(controller); const userId = activeAccount; return edpFetch( @@ -2344,7 +2324,7 @@ export default function App({ edpFetch }) { headers: { "x-token": tokenState }, - body: `data=${JSON.stringify({ action: "deplacer", idClasseur: folderId, ids: [`${id}:-1`] })}`, + body: `data=${JSON.stringify({ action: "deplacer", idClasseur: folderId, ids: ids.map((id) => `${id}:-1`) })}`, signal: controller.signal, referrerPolicy: "no-referrer", }, @@ -2354,7 +2334,7 @@ export default function App({ edpFetch }) { // move the message to the specified folder const oldSortedMessages = useUserData("sortedMessages").get(); const updatedMessages = oldSortedMessages.map(message => { - if (message.id === id) { + if (ids.includes(message.id)) { return { ...message, folderId }; } return message; diff --git a/src/components/app/Account/Account.css b/src/components/app/Account/Account.css index ab14436..729bc67 100644 --- a/src/components/app/Account/Account.css +++ b/src/components/app/Account/Account.css @@ -186,6 +186,7 @@ body:has(#account) { } .document-category h3 { + font-weight: var(--font-weight-semi-bold); display: flex; align-items: center; margin: 0; @@ -197,9 +198,9 @@ body:has(#account) { content: ''; flex-grow: 1; height: 1px; - margin-left: 10px; + margin-left: 15px; /* Space between title and the line */ - background-color: #4a48bd; + background-color: rgb(var(--border-color-0)); /* Customize color as needed */ border: none; } @@ -213,7 +214,7 @@ body:has(#account) { flex: auto 200px; justify-content: center; align-items: center; - margin-bottom: 20px; + margin-bottom: 30px; } .frame-heading-documents { diff --git a/src/components/app/Account/Account.jsx b/src/components/app/Account/Account.jsx index 2dab76f..d9fa47f 100644 --- a/src/components/app/Account/Account.jsx +++ b/src/components/app/Account/Account.jsx @@ -178,6 +178,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati // && documents?.inscriptionsReinscriptions?.length === 0 ? ( Aucun document disponible. + // TODO: add content-loader ) : ( <> {/* {module.params.DocumentsInscriptionsReinscriptionsActif === "1" && documents?.inscriptionsReinscriptions?.length > 0 && ( @@ -191,7 +192,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati ))}
    )} */} - {module.params.DocumentsFactureActif === "1" && documents?.factures?.length > 0 && ( + {module?.params?.DocumentsFactureActif === "1" && documents?.factures?.length > 0 && (

    Factures

    {documents.factures.map(file => ( @@ -202,7 +203,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati ))}
    )} - {module.params.DocumentsAdministratifActif === "1" && documents?.administratifs?.length > 0 && ( + {module?.params?.DocumentsAdministratifActif === "1" && documents?.administratifs?.length > 0 && (

    Documents Administratifs

    {documents.administratifs.map(file => ( @@ -213,7 +214,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati ))}
    )} - {module.params.DocumentsNotesActif === "1" && documents?.notes?.length > 0 && ( + {module?.params?.DocumentsNotesActif === "1" && documents?.notes?.length > 0 && (

    Notes

    {documents.notes.map(file => ( @@ -224,7 +225,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati ))}
    )} - {module.params.DocumentsVSActif === "1" && documents?.viescolaire?.length > 0 && ( + {module?.params?.DocumentsVSActif === "1" && documents?.viescolaire?.length > 0 && (

    Vie Scolaire

    {documents.viescolaire.map(file => ( @@ -235,7 +236,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati ))}
    )} - {module.params.DocumentsEntrepriseActif === "1" && documents?.entreprises?.length > 0 && ( + {module?.params?.DocumentsEntrepriseActif === "1" && documents?.entreprises?.length > 0 && (

    Documents Entreprise

    {documents.entreprises.map(file => ( diff --git a/src/components/app/Messaging/MessageReader.css b/src/components/app/Messaging/MessageReader.css index 6eeb930..a8657e3 100644 --- a/src/components/app/Messaging/MessageReader.css +++ b/src/components/app/Messaging/MessageReader.css @@ -102,6 +102,7 @@ #message-reader .email-footer { height: 100px; overflow: hidden; + display: flex; } @@ -118,7 +119,10 @@ padding: 15px; display: flex; flex-flow: row nowrap; + flex: 1; gap: 15px; + overflow-x: auto; + white-space: nowrap; } #message-reader .attachments-container .attachment { @@ -160,16 +164,7 @@ text-align: center; } -.email-footer { - display: flex; -} -.attachments-container { - display: flex; - overflow-x: auto; - white-space: nowrap; - flex-grow: 1; -} .attachments-container li { list-style-type: none; @@ -189,16 +184,16 @@ .action-button { width: 40px; height: 40px; - background: rgb(var(--background-color-1)); padding: 5px; - border: none; + background-color: transparent; + border: 1px solid rgba(var(--text-color-alt), .5); border-radius: 10px; cursor: pointer; transition: .2s; } .action-button:is(:hover, :focus-visible) { - background: rgba(var(--background-color-3), 1); + background: rgb(var(--background-color-3)); transition: .2s; } .action-button path { diff --git a/src/components/app/Messaging/MessageReader.jsx b/src/components/app/Messaging/MessageReader.jsx index 9c45175..225dcd1 100644 --- a/src/components/app/Messaging/MessageReader.jsx +++ b/src/components/app/Messaging/MessageReader.jsx @@ -16,18 +16,17 @@ import InboxIcon from "../../graphics/InboxIcon"; import MarkAsUnread from "../../graphics/MarkAsUnread"; import SendIcon from "../../graphics/SendIcon"; import DraftIcon from "../../graphics/DraftIcon"; -import { Tooltip, TooltipContent, TooltipTrigger } from "../../generic/PopUps/Tooltip"; import DeleteIcon from "../../graphics/DeleteIcon"; +import { Tooltip, TooltipContent, TooltipTrigger } from "../../generic/PopUps/Tooltip"; export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnread, setSelectedMessage, archiveMessage, unarchiveMessage, moveMessage, deleteMessage }) { - + // States - const location = useLocation(); + const location = useLocation(); const { useUserData, actualDisplayTheme, useUserSettings } = useContext(AppContext); const settings = useUserSettings(); const messages = useUserData("sortedMessages").get(); - const messagesUnread = useUserData("sortedMessages"); const message = messages ? messages.find((item) => item.id === selectedMessage) : null; const [spoiler, setSpoiler] = useState(settings.get("isStreamerModeEnabled")); const [folders, setFolders] = useState(useUserData("messageFolders").get()); @@ -55,12 +54,12 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea } // mark as unread locally and kick the content so as to trigger a refetch the next reading (as the "mark as read" feature is trigger when fetching the message) + const messagesUnread = useUserData("sortedMessages"); const oldMsg = messagesUnread.get() const msgIdx = oldMsg.findIndex((item) => item.id === msg.id); oldMsg[msgIdx].read = false; oldMsg[msgIdx].content = null; messagesUnread.set(oldMsg); - // update the messages glo } // JSX @@ -119,9 +118,9 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea
    -
      - {message && message.files && message.files.length > 0 - ? message.files.map((file) =>
    • ) +
        + {message && message.files && message.files.length > 0 + ? message.files.map((file) =>
      • ) :
      • Aucun fichier joint

      • }
      @@ -132,49 +131,50 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea // only print the content of the rendered message const printWindow = window.open("", "_blank"); printWindow.document.write("Impression"); - printWindow.document.write(document.querySelector(".message-content").innerHTML); + printWindow.document.write(document.querySelector("#message-reader .message-content").innerHTML); //remove the email footer - printWindow.document.querySelector(".email-footer").remove(); + printWindow.document.querySelector("#message-reader .email-footer").remove(); printWindow.document.write(""); printWindow.document.close(); printWindow.print(); } }>Imprimer - {parsedHashFolder != -2 && parsedHashFolder != -1 && parsedHashFolder != -4 ? ( + {parsedHashFolder != -2 && parsedHashFolder != -1 && parsedHashFolder != -4 ? ( - -

      Changer De Dossier

      -
        - {folders - .sort((a, b) => { - const order = [0, -1, -2, -4]; - const indexA = order.indexOf(a.id); - const indexB = order.indexOf(b.id); - if (indexA === -1 && indexB === -1) return 0; - if (indexA === -1) return 1; - if (indexB === -1) return -1; - return indexA - indexB; - }) - .filter((folder) => folder.id !== -3 && folder.id !== -2 && folder.id !== -1 && folder.id !== -4) - .map((folder) => ( -
      • - -
      • - ))} -
      -
      + +

      Changer De Dossier

      +
        + {folders + .filter((folder) => folder.id !== -3 && folder.id !== -2 && folder.id !== -1 && folder.id !== -4) + .sort((a, b) => { + const order = [0, -1, -2, -4]; + const indexA = order.indexOf(a.id); + const indexB = order.indexOf(b.id); + if (indexA === -1 && indexB === -1) return 0; + if (indexA === -1) return 1; + if (indexB === -1) return -1; + return indexA - indexB; + }) + .map((folder) => ( +
      • + +
      • + ))} +
      +
      ) : ( - null + null )} {parsedHashFolder === -2 ? ( Désarchiver ) : parsedHashFolder != -1 && parsedHashFolder != -4 ? ( - Archiver ) : ( null )} - { parsedHashFolder === -4 ? ( + {parsedHashFolder === -4 ? ( Supprimer + deleteMessage(message.id); + setSelectedMessage(null); + } + }>Supprimer ) : ( - null + null )} Marquer comme non lu
    diff --git a/src/components/app/Messaging/Messaging.css b/src/components/app/Messaging/Messaging.css index 4276f96..9cc26c4 100644 --- a/src/components/app/Messaging/Messaging.css +++ b/src/components/app/Messaging/Messaging.css @@ -78,8 +78,7 @@ h3:has(~ .folders-container) { } .folder-icon-tooltip { - height: 40px; - width: 40px; + height: 30px; } .edit-folder-tooltip { @@ -100,6 +99,7 @@ h3:has(~ .folders-container) { justify-content: center; height: 100%; width: 100%; + padding: 6px; } .edit-folder-tooltip:has([data-state="open"]) { @@ -160,17 +160,16 @@ h3:has(~ .edit-folder-container) { } .edit-folder-icon-tooltip { - height: 40px; - width: 40px; + height: 30px; } .delete:is(:hover) { - background-color: #ff0000; + background-color: rgba(var(--background-color-error), 0.4); transition: .3s; } .delete:is(:hover) path { - stroke: #ffffff; + stroke: #fff; transition: .3s; } diff --git a/src/components/app/Messaging/Messaging.jsx b/src/components/app/Messaging/Messaging.jsx index 1983d68..5f3f720 100644 --- a/src/components/app/Messaging/Messaging.jsx +++ b/src/components/app/Messaging/Messaging.jsx @@ -26,8 +26,6 @@ import NewFolderIcon from "../../graphics/NewFolderIcon"; import DraftIcon from "../../graphics/DraftIcon"; import { capitalizeFirstLetter } from "../../../utils/utils"; import TextInput from "../../generic/UserInputs/TextInput"; -import { el } from "date-fns/locale"; -import { set } from "date-fns"; export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fetchMessageContent, fetchMessageMarkAsUnread, renameFolder, deleteFolder, createFolder, archiveMessage, unarchiveMessage, moveMessage, deleteMessage }) { @@ -107,12 +105,10 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe } const parsedHashMessage = parseInt(location.hash.slice(location.hash.lastIndexOf('-') + 1)); const parsedHashFolder = parseInt(location.hash.slice(1, location.hash.lastIndexOf('-'))); - console.log("useEffect ~ parsedHashMessage", parsedHashMessage) - if (!isNaN(parsedHashMessage) && parsedHashMessage !== selectedMessage) { + if (!isNaN(parsedHashMessage) && !isNaN(parsedHashFolder) && parsedHashMessage !== selectedMessage) { if (messages.get()) { const doesMessageExist = messages.get()?.findIndex((item) => item.id === parsedHashMessage) !== -1; - console.log("useEffect ~ doesMessageExist:", doesMessageExist) if (doesMessageExist) { setSelectedFolder(parsedHashFolder); setSelectedMessage(parsedHashMessage); @@ -139,7 +135,6 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe if (!isEditingFolder) { const currentFolder = folders?.find((item) => item.id === selectedFolder); if (currentFolder) { - console.log("currentFolder", currentFolder); setNewFolderName(currentFolder.name); } } @@ -154,11 +149,10 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe let newFolder = await createFolder(newFolderName, controller); setTimeout(() => setSelectedFolder(newFolder), 0); // refresh the folder list and title - } else { - renameFolder(selectedFolder, newFolderName); // Call the rename function with folder ID and new name + await renameFolder(selectedFolder, newFolderName); // Call the rename function with folder ID and new name } - setIsEditingFolder(false); // Exit editing mode + setTimeout(() => setIsEditingFolder(false), 0); // Exit editing mode } }; @@ -247,6 +241,7 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe

    Dossiers

      {folders + .filter((folder) => folder.id !== -3) .sort((a, b) => { const order = [0, -1, -2, -4]; const indexA = order.indexOf(a.id); @@ -256,14 +251,13 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe if (indexB === -1) return -1; return indexA - indexB; }) - .filter((folder) => folder.id !== -3) .map((folder) => (
    • + } className="folder-button create-folder">Créer un dossier
    @@ -302,16 +296,10 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe From 43c8c99b26f5ce59e08c9a46418f5c6ee7f68aa1 Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Mon, 11 Nov 2024 12:46:10 +0100 Subject: [PATCH 24/31] lot of fixes before merge --- src/components/app/Account/Account.css | 6 + src/components/app/Account/Account.jsx | 234 ++++++++++-------- src/components/app/Grades/Charts.jsx | 2 +- src/components/app/Grades/Grade.jsx | 17 +- src/components/app/Messaging/Inbox.jsx | 4 +- .../app/Messaging/MessageReader.jsx | 2 - src/components/app/Messaging/Messaging.jsx | 15 +- 7 files changed, 168 insertions(+), 112 deletions(-) diff --git a/src/components/app/Account/Account.css b/src/components/app/Account/Account.css index 729bc67..9b74a3a 100644 --- a/src/components/app/Account/Account.css +++ b/src/components/app/Account/Account.css @@ -233,6 +233,12 @@ body:has(#account) { align-items: center; } +.file-box-loader { + display: grid; + grid-template-columns: 3.5fr .5fr; + gap: 10px; +} + .file-date { margin-left: auto; margin-right: 30px; diff --git a/src/components/app/Account/Account.jsx b/src/components/app/Account/Account.jsx index d9fa47f..88b15f7 100644 --- a/src/components/app/Account/Account.jsx +++ b/src/components/app/Account/Account.jsx @@ -6,19 +6,21 @@ import Button from "../../generic/UserInputs/Button"; import DropDownMenu from "../../generic/UserInputs/DropDownMenu"; import { getProxiedURL } from "../../../utils/requests"; import FileComponent from "../../generic/FileComponent"; +import ContentLoader from "react-content-loader"; import "./Account.css"; +import { is } from "date-fns/locale"; export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrativeDocuments, sortSchoolLife, isLoggedIn, activeAccount }) { - const { accountsListState, useUserData, useUserSettings } = useContext(AppContext) + const { actualDisplayTheme, accountsListState, useUserData, useUserSettings } = useContext(AppContext) const settings = useUserSettings(); const userData = useUserData(); const moduletype = accountsListState[activeAccount].accountType === "E" ? "DOCUMENTS_ELEVE" : "DOCUMENTS"; - const module = accountsListState[activeAccount].modules.find(module => module.code === moduletype); - const availableYearsArray = module.params.AnneeArchive ? module.params.AnneeArchive.split(",") : []; + const module = (accountsListState[activeAccount].modules || []).find(module => module.code === moduletype); + const availableYearsArray = module?.params?.AnneeArchive ? module.params.AnneeArchive.split(",") : []; const lastYear = availableYearsArray.length > 0 ? availableYearsArray[availableYearsArray.length - 1] : `${new Date().getFullYear() - 1}-${new Date().getFullYear()}`; const [startYear, endYear] = lastYear.split('-').map(Number); const nextYear = `${endYear}-${endYear + 1}`; @@ -26,30 +28,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati const profilePictureRefs = useRef([]); - //fetch documents on page load - useEffect(() => { - if (isLoggedIn) { - const controller = new AbortController(); - const fetchDocuments = async () => { - try { - await fetchAdministrativeDocuments('', controller); - let data = userData.get("administrativeDocuments"); - if (data) { - setDocuments(data); - } else { - setDocuments({ factures: [], notes: [], viescolaire: [], administratifs: [], entreprises: [] }); - } - console.log("Documents fetched for year:", selectedYear, data); - } catch (error) { - console.error("Error fetching documents:", error); - } - }; - fetchDocuments(); - return () => { - controller.abort(); - }; - } - }, [isLoggedIn]); + const [isLoadingDocuments, setIsLoadingDocuments] = useState(true);; useEffect(() => { document.title = "Compte • Ecole Directe Plus"; @@ -84,7 +63,7 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati } }, [schoolLife, isLoggedIn, activeAccount]); - const [selectedYear, setSelectedYear] = useState(availableYearsArray[availableYearsArray.length - 1]); + const [selectedYear, setSelectedYear] = useState(settings.get("isSchoolYearEnabled") ? settings.get("schoolYear").join("-") : availableYearsArray[availableYearsArray.length - 1]); const [documents, setDocuments] = useState({ factures: [], notes: [], viescolaire: [], administratifs: [], entreprises: [] }); // handle year change of dropdown @@ -95,10 +74,12 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati // fetch documents on page load and year change useEffect(() => { + setIsLoadingDocuments(true); if (isLoggedIn && selectedYear) { const controller = new AbortController(); const fetchDocuments = async () => { try { + setIsLoadingDocuments(true); let selectedYearFetch = selectedYear === availableYearsArray[availableYearsArray.length - 1] ? '' : selectedYear; await fetchAdministrativeDocuments(selectedYearFetch, controller); let data = userData.get("administrativeDocuments"); @@ -110,8 +91,12 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati console.log("Documents fetched for year:", selectedYear, data); } catch (error) { console.error("Error fetching documents:", error); + } finally { + if (!controller.signal.aborted) { + setIsLoadingDocuments(false); + } } - }; + }; fetchDocuments(); return () => { controller.abort(); @@ -153,35 +138,81 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati
    - {module.enable ? ( + {module?.enable ? ( <>

    Documents

    - { availableYearsArray.length > 1 ? ( + {availableYearsArray.length > 1 ? ( year)} - selected={selectedYear} - onChange={handleYearChange} - className="year-selector" + name="year-selector" + options={availableYearsArray} + displayedOptions={availableYearsArray.map(year => year)} + selected={selectedYear} + onChange={handleYearChange} + className="year-selector" /> ) : null }
    - {documents?.administratifs?.length === 0 && - documents?.notes?.length === 0 && - documents?.viescolaire?.length === 0 && - documents?.entreprises?.length === 0 && - documents?.factures?.length === 0 - // && documents?.inscriptionsReinscriptions?.length === 0 - ? ( - Aucun document disponible. - // TODO: add content-loader - ) : ( - <> - {/* {module.params.DocumentsInscriptionsReinscriptionsActif === "1" && documents?.inscriptionsReinscriptions?.length > 0 && ( + {isLoadingDocuments ? ( +
    +
    + {Array.from({ length: 5 }).map((_, index) => ( +
    +

    + + + +

    + {Array.from({ length: Math.floor(Math.random() * 10 + 1) }, (_, index) => ( +
    + + + +

    + +

    +
    + ))} +
    + ))} +
    +
    + ) : + documents?.administratifs?.length === 0 && + documents?.notes?.length === 0 && + documents?.viescolaire?.length === 0 && + documents?.entreprises?.length === 0 && + documents?.factures?.length === 0 + // && documents?.inscriptionsReinscriptions?.length === 0 + ? ( + Aucun document disponible. + // TODO: add content-loader + ) : ( + <> + {/* {module.params.DocumentsInscriptionsReinscriptionsActif === "1" && documents?.inscriptionsReinscriptions?.length > 0 && (

    Inscriptions & Réinscriptions

    {documents.inscriptionsReinscriptions.map(file => ( @@ -192,68 +223,69 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati ))}
    )} */} - {module?.params?.DocumentsFactureActif === "1" && documents?.factures?.length > 0 && ( -
    -

    Factures

    - {documents.factures.map(file => ( -
    - -

    {file.specialParams.date}

    + + {module?.params?.DocumentsFactureActif === "1" && documents?.factures?.length > 0 && ( +
    +

    Factures

    + {documents.factures.map(file => ( +
    + +

    {file.specialParams.date}

    +
    + ))}
    - ))} -
    - )} - {module?.params?.DocumentsAdministratifActif === "1" && documents?.administratifs?.length > 0 && ( -
    -

    Documents Administratifs

    - {documents.administratifs.map(file => ( -
    - -

    {file.specialParams.date}

    + )} + {module?.params?.DocumentsAdministratifActif === "1" && documents?.administratifs?.length > 0 && ( +
    +

    Documents Administratifs

    + {documents.administratifs.map(file => ( +
    + +

    {file.specialParams.date}

    +
    + ))}
    - ))} -
    - )} - {module?.params?.DocumentsNotesActif === "1" && documents?.notes?.length > 0 && ( -
    -

    Notes

    - {documents.notes.map(file => ( -
    - -

    {file.specialParams.date}

    + )} + {module?.params?.DocumentsNotesActif === "1" && documents?.notes?.length > 0 && ( +
    +

    Notes

    + {documents.notes.map(file => ( +
    + +

    {file.specialParams.date}

    +
    + ))}
    - ))} -
    - )} - {module?.params?.DocumentsVSActif === "1" && documents?.viescolaire?.length > 0 && ( -
    -

    Vie Scolaire

    - {documents.viescolaire.map(file => ( -
    - -

    {file.specialParams.date}

    + )} + {module?.params?.DocumentsVSActif === "1" && documents?.viescolaire?.length > 0 && ( +
    +

    Vie Scolaire

    + {documents.viescolaire.map(file => ( +
    + +

    {file.specialParams.date}

    +
    + ))}
    - ))} -
    - )} - {module?.params?.DocumentsEntrepriseActif === "1" && documents?.entreprises?.length > 0 && ( -
    -

    Documents Entreprise

    - {documents.entreprises.map(file => ( -
    - -

    {file.specialParams.date}

    + )} + {module?.params?.DocumentsEntrepriseActif === "1" && documents?.entreprises?.length > 0 && ( +
    +

    Documents Entreprise

    + {documents.entreprises.map(file => ( +
    + +

    {file.specialParams.date}

    +
    + ))}
    - ))} -
    + )} + )} - - )}
    ) : (
    - Le module de documents n'est pas accessible. + Le module de documents n'est pas accessible.
    )}
    diff --git a/src/components/app/Grades/Charts.jsx b/src/components/app/Grades/Charts.jsx index c25a118..b47e42a 100644 --- a/src/components/app/Grades/Charts.jsx +++ b/src/components/app/Grades/Charts.jsx @@ -143,7 +143,7 @@ export default function Charts({ selectedPeriod }) { chartData.current = { labels: Array.from({ length: subjectsComparativeInformation[selectedPeriod].length }, (_, i) => subjectsComparativeInformation[selectedPeriod][i].subjectFullname), datasets: [ - ...(minMaxEnabled && false ? [ + ...(minMaxEnabled ? [ { type: "bar", label: "Moyennes min et max de classe", diff --git a/src/components/app/Grades/Grade.jsx b/src/components/app/Grades/Grade.jsx index 7e94bf4..ff6c8c0 100644 --- a/src/components/app/Grades/Grade.jsx +++ b/src/components/app/Grades/Grade.jsx @@ -14,7 +14,10 @@ export default function Grade({ grade, subject, className = "", ...props }) { const [selectedPeriod, setSelectedPeriod] = useState(userData.get("activePeriod")); const generalAverage = sortedGrades[selectedPeriod].generalAverage; - const subjectsSummedCoefs = getSummedCoef(sortedGrades[selectedPeriod].subjects); + const gradeCoef = grade.coef ?? 1; + let subjectCoef = grade?.subject?.coef ?? gradeCoef; + let subjectsSummedCoefs = getSummedCoef(sortedGrades[selectedPeriod].subjects); + function getSummedCoef(subjects) { let sum = 0; @@ -23,12 +26,20 @@ export default function Grade({ grade, subject, className = "", ...props }) { sum += subjects[key].coef; } } + // if all subjects have 0 as coef, we replace all coef by 1 + if (sum === 0) { + sum = Object.keys(subjects).length; + subjectCoef = 1; + } + return sum; } // Use subject coef if subject is provided, otherwise use grade's coef - const gradeCoef = grade.coef ?? 1; - const subjectCoef = grade?.subject?.coef ?? gradeCoef; + + // if all subjects have 0 as coef, we replace all coef by 1 to avoid division by 0 + + const gradeScore = (subjectCoef * (grade.value - generalAverage)) / ((subjectsSummedCoefs - subjectCoef) || 1); const coefficientEnabled = useUserData().get("gradesEnabledFeatures")?.coefficient; diff --git a/src/components/app/Messaging/Inbox.jsx b/src/components/app/Messaging/Inbox.jsx index 5bba942..3954428 100644 --- a/src/components/app/Messaging/Inbox.jsx +++ b/src/components/app/Messaging/Inbox.jsx @@ -64,7 +64,7 @@ export default function Inbox({ selectedMessage, setSelectedMessage, selectedFol try { // regexp = new RegExp(removeAccents(search.toLowerCase())); } catch { return -1 } - const filterBy = [message.subject, message.from.name, message.content?.content, message.files?.map((file) => file.name)].flat(); + const filterBy = [message.subject, message.from.nom, message.content?.content, message.files?.map((file) => file.name)].flat(); for (let filter of filterBy) { if (filter) { filter = removeAccents(filter.toLowerCase()); @@ -92,7 +92,7 @@ export default function Inbox({ selectedMessage, setSelectedMessage, selectedFol ?
      {messages.filter((message) => message.folderId === selectedFolder).filter(filterResearch).map((message, index) =>
    • handleClick(message)} onKeyDown={(event) => handleKeyDown(event, message)} key={message.id} role="button" tabIndex={0}> -

      {settings.get("isStreamerModeEnabled") ? message.from.name.split(" ")[0] + " " + "-".repeat(message.from.name.length) : message.from.name} {message.files?.length > 0 && }

      +

      {settings.get("isStreamerModeEnabled") ? (message.from.civilite + " " + message.from.prenom + " " + message.from.nom).split(" ")[0] + " " + "-".repeat((message.from.civilite + " " + message.from.prenom + " " + message.from.nom).length) : (message.from.civilite + " " + message.from.prenom + " " + message.from.nom)} {message.files?.length > 0 && }

      {message.subject}

      {(new Date(message.date)).toLocaleDateString("fr-FR", { month: "long", diff --git a/src/components/app/Messaging/MessageReader.jsx b/src/components/app/Messaging/MessageReader.jsx index 225dcd1..f03cce0 100644 --- a/src/components/app/Messaging/MessageReader.jsx +++ b/src/components/app/Messaging/MessageReader.jsx @@ -132,8 +132,6 @@ export default function MessageReader({ selectedMessage, fetchMessageMarkAsUnrea const printWindow = window.open("", "_blank"); printWindow.document.write("Impression"); printWindow.document.write(document.querySelector("#message-reader .message-content").innerHTML); - //remove the email footer - printWindow.document.querySelector("#message-reader .email-footer").remove(); printWindow.document.write(""); printWindow.document.close(); printWindow.print(); diff --git a/src/components/app/Messaging/Messaging.jsx b/src/components/app/Messaging/Messaging.jsx index 5f3f720..427ebdc 100644 --- a/src/components/app/Messaging/Messaging.jsx +++ b/src/components/app/Messaging/Messaging.jsx @@ -33,7 +33,7 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe const navigate = useNavigate(); const location = useLocation(); - const { useUserData } = useContext(AppContext); + const { accountsListState, useUserData } = useContext(AppContext); const [selectedMessage, setSelectedMessage] = useState(null); const [selectedFolder, setSelectedFolder] = useState(0); const oldSelectedMessage = useRef(selectedMessage); @@ -45,8 +45,15 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe }, [useUserData("messageFolders").get()]); - - + const module = accountsListState[activeAccount].modules?.find(module => module.code === "MESSAGERIE"); + let canSendMessages = (module?.params?.destAdmin ?? "1") === "1" || + (module?.params?.destEleve ?? "1") === "1" || + (module?.params?.destFamille ?? "1") === "1" || + (module?.params?.destProf ?? "1") === "1" || + (module?.params?.destEspTravail ?? "1") === "1"; + if (accountsListState[activeAccount].accountType !== "E") { + canSendMessages = true; + } const [isEditingFolder, setIsEditingFolder] = useState(false); const [newFolderName, setNewFolderName] = useState(''); @@ -242,6 +249,8 @@ export default function Messaging({ isLoggedIn, activeAccount, fetchMessages, fe

        {folders .filter((folder) => folder.id !== -3) + // if canSendMessages is false, we don't show the drafts folder and the sent folder + .filter((folder) => canSendMessages || folder.id !== -4) .sort((a, b) => { const order = [0, -1, -2, -4]; const indexA = order.indexOf(a.id); From 3489a102242671c4759a433788446df0a07c08bb Mon Sep 17 00:00:00 2001 From: Fefedu973 <80718477+Fefedu973@users.noreply.github.com> Date: Mon, 11 Nov 2024 13:56:04 +0100 Subject: [PATCH 25/31] documents error messages lifting --- src/components/app/Account/Account.css | 21 +++++- src/components/app/Account/Account.jsx | 96 ++++++++++++++------------ 2 files changed, 73 insertions(+), 44 deletions(-) diff --git a/src/components/app/Account/Account.css b/src/components/app/Account/Account.css index 9b74a3a..7f05bfe 100644 --- a/src/components/app/Account/Account.css +++ b/src/components/app/Account/Account.css @@ -65,11 +65,13 @@ body:has(#account) { display: flex; flex-flow: column nowrap; } + #documents.frame { display: flex; flex-flow: column nowrap; overflow: auto; } + .coming-soon { height: 100%; color: rgb(var(--text-color-alt)); @@ -82,6 +84,7 @@ body:has(#account) { border-radius: 8px; opacity: .5; } + #profile .coming-soon { margin-top: 30px; } @@ -152,7 +155,7 @@ body:has(#account) { grid-column: auto; grid-row: 3 / 4; } - + #account .frame .frame-heading { padding-block: 10px; } @@ -245,12 +248,16 @@ body:has(#account) { font-size: var(--font-size-16); font-weight: 500; } + .no-available-documents { display: flex; + flex-direction: column; justify-content: center; align-items: center; height: 100%; width: 100%; + gap: 15px; + color: rgb(var(--text-color)); } .document-container { @@ -259,4 +266,16 @@ body:has(#account) { .single-year { padding-left: 0 !important; +} + +.documents-container { + display: flex; + height: 100%; + flex-direction: column; +} + +.sleeping-logo { + width: 100px; + height: 100px; + margin: 0 auto; } \ No newline at end of file diff --git a/src/components/app/Account/Account.jsx b/src/components/app/Account/Account.jsx index 88b15f7..558b958 100644 --- a/src/components/app/Account/Account.jsx +++ b/src/components/app/Account/Account.jsx @@ -7,9 +7,10 @@ import DropDownMenu from "../../generic/UserInputs/DropDownMenu"; import { getProxiedURL } from "../../../utils/requests"; import FileComponent from "../../generic/FileComponent"; import ContentLoader from "react-content-loader"; +import CanardmanSleeping from "../../graphics/CanardmanSleeping"; +import ConfusedCanardman from "../../graphics/ConfusedCanardman"; import "./Account.css"; -import { is } from "date-fns/locale"; export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrativeDocuments, sortSchoolLife, isLoggedIn, activeAccount }) { const { actualDisplayTheme, accountsListState, useUserData, useUserSettings } = useContext(AppContext) @@ -154,48 +155,53 @@ export default function Account({ schoolLife, fetchSchoolLife, fetchAdministrati ) : null }
    -
    +