Un projet est un ensemble d'efforts fournis de manière limitée dans le temps afin de produire un résultat
@@ -163,47 +146,47 @@
NB : En Tchèque, SMETI c'est la poussière (littéralement : "ce qui peut être balayé")
-
Explications
-
- L'objectif de cette page est de présenter des données sous forme de tableau.
- La page permet en outre :
-
-
De rappeler l'identité visuelle : logo, bannière
-
De naviguer dans l'application
-
D'accéder à une synthèse et à une explication des données
-
-
-
- Le header est une bannière qui fait 30% du viewport.
- Elle contient une image de background alignée à gauche et un texte aligné à droite.
-
-
- Lorsque le header sort de la partie visible de la page :
-
-
La barre de navigation devient "collée" au haut de page.
-
Le pied de tableau devient "collé" en bas de page
-
le logo apparaît à gauche de la barre de navigation.
-
-
-
Lorsque le tableau sort de la partie visible de la page, le footer et la zone d'explication peuvent occuper
- toute
- la page.
-
Provident pariatur fugit sint autem laudantium omnis. Dolores repudiandae voluptatem molestiae ratione placeat
- similique eaque. Aliquam sit ullam non non qui. Dicta molestiae neque repellendus dicta iure tempora. Et ipsam
- voluptatum nesciunt eligendi. Eos harum rerum vitae.
-
-
Focus sur la gestion des thèmes
-
- Voici comment s'opère la gestion des couleurs.
- Dans le default.css, la section CSS root contient des variables CSS.
- On a le triplet (R,G,B) de la couleur dominante et celui de la couleur de fond.
- Ces couleurs sont respectivement appelées "sombre" et "clair".
-
- Des variables sont ensuite définies pour décliner des dégradés de couleurs.
-
-
- Soit par ajout de transparence, ce sont les variables --nuance-{sombre|clair}-alpha-XX
-
- Soit par calul de dégradé
-
+
Explications
+
+ L'objectif de cette page est de présenter des données sous forme de tableau.
+ La page permet en outre :
+
+
De rappeler l'identité visuelle : logo, bannière
+
De naviguer dans l'application
+
D'accéder à une synthèse et à une explication des données
+
+
+
+ Le header est une bannière qui fait 30% du viewport.
+ Elle contient une image de background alignée à gauche et un texte aligné à droite.
+
+
+ Lorsque le header sort de la partie visible de la page :
+
+
La barre de navigation devient "collée" au haut de page.
+
Le pied de tableau devient "collé" en bas de page
+
le logo apparaît à gauche de la barre de navigation.
+
+
+
Lorsque le tableau sort de la partie visible de la page, le footer et la zone d'explication peuvent occuper
+ toute
+ la page.
+
Provident pariatur fugit sint autem laudantium omnis. Dolores repudiandae voluptatem molestiae ratione placeat
+ similique eaque. Aliquam sit ullam non non qui. Dicta molestiae neque repellendus dicta iure tempora. Et ipsam
+ voluptatum nesciunt eligendi. Eos harum rerum vitae.
+
+
Focus sur la gestion des thèmes
+
+ Voici comment s'opère la gestion des couleurs.
+ Dans le default.css, la section CSS root contient des variables CSS.
+ On a le triplet (R,G,B) de la couleur dominante et celui de la couleur de fond.
+ Ces couleurs sont respectivement appelées "sombre" et "clair".
- Enfin une batterie de fonctions javascript permettent de modifier à la volée les couleurs "sombre" et "clair".
-
+ Des variables sont ensuite définies pour décliner des dégradés de couleurs.
+
+
- Soit par ajout de transparence, ce sont les variables --nuance-{sombre|clair}-alpha-XX
+
- Soit par calul de dégradé
+
+
+ Enfin une batterie de fonctions javascript permettent de modifier à la volée les couleurs "sombre" et "clair".
+
\ No newline at end of file
diff --git a/frontend/src/scripts/UI/IntersectionObserver/footer.js b/frontend/src/scripts/UI/IntersectionObserver/footer.js
index 87f2330..df6e1d9 100644
--- a/frontend/src/scripts/UI/IntersectionObserver/footer.js
+++ b/frontend/src/scripts/UI/IntersectionObserver/footer.js
@@ -3,10 +3,10 @@ const handleFooterIntersection = function (entries) {
// Loop through all the observed elements
entries.forEach(entry => { // Check if the element is intersecting the viewport
if (entry.isIntersecting) {
- console.log("The footer is visible in the viewport");
+ msgConsole('IntersectionObserver','The footer is visible in the viewport');
if (typeof footerIsNowVisible === 'function') footerIsNowVisible(entry);
} else {
- console.log("The footer is invisible in the viewport");
+ msgConsole('IntersectionObserver','The footer is invisible in the viewport');
if (typeof footerIsNowInvisible === 'function') footerIsNowInvisible(entry);
}
});
diff --git a/frontend/src/scripts/UI/IntersectionObserver/header.js b/frontend/src/scripts/UI/IntersectionObserver/header.js
index 2e2ee73..5d56544 100644
--- a/frontend/src/scripts/UI/IntersectionObserver/header.js
+++ b/frontend/src/scripts/UI/IntersectionObserver/header.js
@@ -1,7 +1,13 @@
// Create a function that will handle any intersection between some elements and the viewport.
const handleHeaderIntersection = function (entries) {
entries.forEach(entry => {
- if (typeof headerIsVisible === 'function') headerIsNowVisible(entry.isIntersecting);
+ if (entry.isIntersecting) {
+ msgConsole('IntersectionObserver','The header is visible in the viewport');
+ if (typeof headerIsNowVisible === 'function') headerIsNowVisible(entry);
+ } else {
+ msgConsole('IntersectionObserver','The header is invisible in the viewport');
+ if (typeof headerIsNowInvisible === 'function') headerIsNowInvisible(entry);
+ }
});
}
diff --git a/frontend/src/scripts/UI/IntersectionObserver/synthesis.js b/frontend/src/scripts/UI/IntersectionObserver/synthesis.js
index a09c47b..a44d6de 100644
--- a/frontend/src/scripts/UI/IntersectionObserver/synthesis.js
+++ b/frontend/src/scripts/UI/IntersectionObserver/synthesis.js
@@ -3,10 +3,10 @@ const handleSynthesisIntersection = function (entries) {
entries.forEach(entry => {
// Check if the element is intersecting the viewport
if (entry.isIntersecting) {
- myLog("The synthesis is visible in the viewport");
+ msgConsole('IntersectionObserver',"The synthesis is visible in the viewport");
if (typeof synthesisTopIsNowVisible === 'function') synthesisIsNowVisible(entry);
} else {
- myLog("The synthesis is invisible in the viewport");
+ msgConsole('IntersectionObserver',"The synthesis is invisible in the viewport");
if (typeof synthesisTopIsNowInvisible === 'function') synthesisIsNowInvisible(entry);
}
});
diff --git a/frontend/src/scripts/UI/datagrid.js b/frontend/src/scripts/UI/datagrid.js
index efed85a..47d35cb 100644
--- a/frontend/src/scripts/UI/datagrid.js
+++ b/frontend/src/scripts/UI/datagrid.js
@@ -144,4 +144,5 @@ datagrid_hooks['random'] = function(){
let element = document.querySelector('#datagrid');
let nblignes = 25 + Math.floor(Math.random() * 475); // Nbre entre ntre 25 et 500
setDatagridRandomValues(element, nbCols, nblignes)
-};
\ No newline at end of file
+};
+
diff --git a/frontend/src/scripts/UI/modal.js b/frontend/src/scripts/UI/modal.js
index dadfa8f..df61edb 100644
--- a/frontend/src/scripts/UI/modal.js
+++ b/frontend/src/scripts/UI/modal.js
@@ -138,7 +138,7 @@ function modalSetFooter(valeur)
*/
function open_modal_hook(parametre)
{
- console.log("open_modal_hook pour "+parametre);
+ myLog("open_modal_hook pour "+parametre);
let hook = null;
let paramSplit = parametre.split(':');
paramSplit.forEach(element => {
@@ -147,7 +147,7 @@ function open_modal_hook(parametre)
hook = modal_hooks[elemSplit[1]];
}
});
- if ((hook===null)||(hook===undefined)) hook = modal_hooks['ITEM'];
+ if ((hook===null)||(hook===undefined)) hook = modal_hooks['random'];
return hook(parametre);
}
diff --git a/frontend/src/scripts/default.js b/frontend/src/scripts/default.js
index 0792179..c318d49 100644
--- a/frontend/src/scripts/default.js
+++ b/frontend/src/scripts/default.js
@@ -130,12 +130,15 @@
window.scrollTo(0, element.offsetHeight + 1);
}
- function headerIsVisible(flagVisible) {
- setLogoVisiblity(!flagVisible);
- if (!flagVisible) gotoTop();
+ function headerIsNowVisible(header) {
+ setLogoVisiblity(false);
}
- function synthesisTopIsNowVisible(entry) {
+ function headerIsNowInvisible(header) {
+ setLogoVisiblity(true);
+ }
+
+ function synthesisIsNowVisible(entry) {
setDatagridHeadSticky(false);
setDataGridFootSticky(false);
@@ -159,11 +162,13 @@
function initDatagrid()
{
+ let fonctionAffichageDataGrid = datagrid_hooks['random'];
datagridLoading();
+ fonctionAffichageDataGrid();
}
- function afficher_synthese(mode) {
+ function initSynthese(mode) {
let synthesis_body = document.querySelector('#synthesis_body');
if (synthesis_body) {
synthesis_body.innerHTML='';
@@ -175,7 +180,7 @@
}
}
- function afficher_footer(mode) {
+ function initFooter(mode) {
let footer_body = document.querySelector('footer');
if (footer_body) {
footer_body.innerHTML='';
@@ -188,46 +193,15 @@
}
function activeMenu(element) {
- datagridEmptyLines(50);
-
- activeMode(element.innerText);
-
- gotoTop();
+ activeMode(element.innerText);
}
-
- function modeToAffichage(mode)
- {
- let retour='taches';
- switch (mode) {
- case 'Releases':
- retour='releases';
- break;
- case 'Hollidays':
- retour='feries';
- break;
- case 'Rendez-Vous':
- retour='rdv';
- break;
- case 'Rendez-Vous':
- retour='rdv';
- break;
- case 'Items':
- retour='items';
- break;
- case 'Project':
- retour='prestations';
- break;
- default:
- case 'Tasks':
- retour='taches';
- break;
- }
- return retour;
- }
-
+
function activeMode(mode) {
- setFilAriane(['Home', mode]);
- initDatagrid();
+ setFilAriane(['Home']);
+ if (mode != 'Home') setFilAriane(['Home', mode]);
+ initDatagrid(mode);
+ initSynthese(mode);
+ initFooter(mode);
}
// UI
@@ -237,4 +211,4 @@
setContexteValeur('user', 'Anonymous');
// GO !
- activeMode('Menu1');
+ activeMode('Home');
diff --git a/frontend/src/scripts/tools/logs.js b/frontend/src/scripts/tools/logs.js
index 240a197..1997e4c 100644
--- a/frontend/src/scripts/tools/logs.js
+++ b/frontend/src/scripts/tools/logs.js
@@ -1,10 +1,19 @@
-var useLog=false;
-var useError=true;
+const msgLevel = ['log','error','alert'];
+
+function msgConsole(level, message) {
+ if (msgLevel.includes(level)) {
+ if ((level == 'error')||(level == 'alert')) console.error(message);
+ else console.log(message);
+ }
+}
function myLog(message) {
- if (useLog)
- console.log(message);
+ msgConsole('log',message);
}
function myError(message) {
- if (useError)
- console.error(message);
-}
\ No newline at end of file
+ msgConsole('error',message);
+}
+function myAlert(message) {
+ msgConsole('alert',message);
+}
+
+
diff --git a/frontend/src/tools/cscripts.sh b/frontend/src/tools/cscripts.sh
index 6cdc63d..3bc2939 100755
--- a/frontend/src/tools/cscripts.sh
+++ b/frontend/src/tools/cscripts.sh
@@ -6,7 +6,7 @@ export src=scripts
sources=""
sources="$sources tools/delai tools/logs tools/dates tools/postData"
# Commenter les Observer
-# sources="$sources UI/IntersectionObserver/header UI/IntersectionObserver/footer UI/IntersectionObserver/synthesis"
+sources="$sources UI/IntersectionObserver/header UI/IntersectionObserver/footer UI/IntersectionObserver/synthesis"
sources="$sources UI/CSS UI/modal UI/settings UI/datagrid UI/pomodoro"
sources="$sources UI/calendrier UI/planning"
sources="$sources filtres contexte parametres ariane"
--
2.26.2
From 87c98514deb442acab79d7076b07bd37e9cf9137 Mon Sep 17 00:00:00 2001
From: Thibaud
Date: Fri, 3 Jan 2025 08:36:29 +0100
Subject: [PATCH 4/6] 20250102
---
frontend/src/html/index.html | 97 +++++++++----------------------
frontend/src/scripts/default.js | 4 +-
frontend/src/styles/synthesis.css | 1 +
3 files changed, 29 insertions(+), 73 deletions(-)
diff --git a/frontend/src/html/index.html b/frontend/src/html/index.html
index 736a8e3..878db50 100644
--- a/frontend/src/html/index.html
+++ b/frontend/src/html/index.html
@@ -2,13 +2,14 @@
-
-
-
template TOPISTO
+
+
+
+
@@ -26,8 +27,11 @@