CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [AIDE] Besoin d'un mentor

DébutPage précedente
1
Page suivantePage suivante
Jean-rennes-eau Jean-rennes-eau
MP
Niveau 8
01 juillet 2022 à 15:11:36

Bonjour à tous,

J'ai pris la décision de me reconvertir vers le web dev il y a quelques mois. Initialement je suis chef de projets informatiques, service delivery manager, etc... Sauf que je n'aime pas ce travail, je n'ai pas l'impression de créer de la valeur, j'en ai marre de passer ma vie en réunion, à envoyer des mails, bref...
Je vais pas aller plus loin sur mes motivations parce que je ne veux pas vous écrire un pavé indigeste.

Quoi qu'il en soit j'ai appris le HTML5, le CSS3, et je viens de finir un cours vidéo de 8 heures sur le JavaScript : là j'en suis à l'étape où j'essai de mettre en application tout ce que j'ai appris au travers de quelques projets.

Le soucis c'est que je me retrouve parfois bloqué, et même avec des recherches je ne comprend pas bien l'idée et ce que je fais. C'est actuellement mon cas, j'essai d'utiliser un fichier JSON (donc en local) pour afficher mes données dynamiquement sur ma page sous la forme d'un graphic chart en barre. J'ai trouvé la méthode fetch, mais je l'utilise très mal.

Du coup je suis à la recherche d'un mentor, qui pourra m'aider. L'idée ce serait de s'appeler sur discord (ou le service de votre choix), et de partager mon écran par exemple, qu'il m'explique ce que je fait de mal, pourquoi pas me donner des bonnes pratiques.

Je suis sûr que vous serez bienveillant les kheys, vous pouvez me MP, ou m'ajouter sur Discord directement si vous voulez !
Discord : Kamiyasho#6233
:)

Message édité le 01 juillet 2022 à 15:14:54 par Jean-rennes-eau
Magrozz Magrozz
MP
Niveau 7
01 juillet 2022 à 16:21:27

Montre ton code et dis nous l'erreur que tu as

Jean-rennes-eau Jean-rennes-eau
MP
Niveau 8
02 juillet 2022 à 16:30:11

Le 01 juillet 2022 à 16:21:27 :
Montre ton code et dis nous l'erreur que tu as

Ok voici mon code : https://codepen.io/jilaniyazidi/pen/LYdVLvq

J'ai aussi un fichier data.JSON mais malheureusement je ne peux pas le mettre sur codepen, donc je vous met son contenu ci-dessous :

[
{
"day": "mon",
"amount": 17.45
},
{
"day": "tue",
"amount": 34.91
},
{
"day": "wed",
"amount": 52.36
},
{
"day": "thu",
"amount": 31.07
},
{
"day": "fri",
"amount": 23.39
},
{
"day": "sat",
"amount": 43.28
},
{
"day": "sun",
"amount": 25.48
}
]

Voici le résultat actuel sur mon navigateur : https://www.noelshack.com/2022-26-6-1656772448-capture-d-ecran-2022-07-02-163346.png

Voici le résultat final que je dois afficher : https://www.noelshack.com/2022-26-6-1656772205-desktop-design.jpg

Message édité le 02 juillet 2022 à 16:34:35 par Jean-rennes-eau
Magrozz Magrozz
MP
Niveau 7
02 juillet 2022 à 17:21:40

Quel est ton problème du coup, vu que tu récupères bien les informations de ton JSON ?

Marav Marav
MP
Niveau 28
02 juillet 2022 à 18:38:17

Si j'ai bien compris tu veux afficher des graphiques à colonne selon les données que tu récupères via ton JSON.
Pour cela il va falloir que tu t'aides du CSS pour représenter la hauteur des colonnes sur ton graphique dynamiquement.

Il y a plusieurs solutions, admettons que ton graphique soit comme suit (0, 50), 50 étant le montant maximal.
( tu peux bien évidemment jouer avec ça et partir sur une base 100 mais je pense qu'à vu de nez c'est bien 50 que tu dois faire ).

Il te faut récupérer le pourcentage sur 50 d'un montant X ou Y sur ton JSON pour y appliquer ensuite via le CSS sa hauteur, même flex-basis pourrait faire l'affaire si tu travailles avec Flexbox.

Si je récapitule, 50 étant une height de 100%, 25% une height de 50%, 0 une height de 0 %.
Et je serais toi j'arrondirais le tout à l'entier supérieur en veillant à ne pas dépasser 50, ça fait moins brouillon après.

EDIT : j'ai vu que t'avais un montant à 52 et des poussières, donc naturellement passe à 60, j'ai lu trop vite.

Message édité le 02 juillet 2022 à 18:39:04 par Marav
Marav Marav
MP
Niveau 28
02 juillet 2022 à 18:43:44

Je n'ai pas précisé, pour l'implémentation de la logique au dessus, je suppose que tu le fais via le JS en manipulant le style CSS de tes éléments.
Le CSS " stand-alone " ne permet pas pour l'heure de faire cela, même en s'aidant des Custom Props.

Magrozz Magrozz
MP
Niveau 7
02 juillet 2022 à 19:10:57

Sinon Chart.js
https://www.chartjs.org/

Marav Marav
MP
Niveau 28
02 juillet 2022 à 20:02:58

Là pour le coup c'est un exercice pour s'entrainer, c'est un peu contreproductif d'utiliser une librairie sans savoir ce qui tourne sous le capot et la logique derrière.

Epervier62 Epervier62
MP
Niveau 6
02 juillet 2022 à 20:04:11

Essaye ça:
fetch(url) .then(function(res){ return res.json(); }) .then(function(data) { divChart.textContent = data; })

Jean-rennes-eau Jean-rennes-eau
MP
Niveau 8
02 juillet 2022 à 23:41:58

Hello tout le monde, je m'attendais vraiment pas à recevoir autant de réponse :)
Sur les conseils d'un khey (coucou si t'es encore là) j'ai laissé le JS de côté, et j'ai construit mon graphique en barres en CSS pur : https://www.noelshack.com/2022-26-6-1656797692-barchart-fullcss.png

Ensuite il m'a donné quelques pistes, et j'ai pensé à "injecter" la valeur "amont" de mon JSON dans la propriété CSS "height" de mes rectangles.
Pour ce faire, j'ai modifié mon JS comme suit :

const divChart = document.querySelector('#divChart');
const url = './data.json';
const rect1 = document.querySelector('#rect1');

//Import of my datas from my JSON file

fetch(url)
.then(function(res){
return res.json();
})
.then(function(data) {
console.log(data[0]['amount'])
rect1.style.height = data[0]["amount"] + 'px';
})

Voici mon résultat : https://www.noelshack.com/2022-26-6-1656797990-barchart-usingjson.png
D'après la réponse de Marav, je crois que je suis sur la bonne voie,
qu'en pensez-vous ?
C'est comme ça qu'on est sensé utiliser un JSON ?

En ce qui concerne les librairies, j'en ai encore jamais utilisé, et oui effectivement je préfère ne pas dépendre de ces-dernières, je préfère savoir me débrouiller sans et m'en reserver l'usage juste pour gagner du temps ou s'il y a des choses vraiment très spécifiques que je me sens capable de faire mais trop chronophage.

Jean-rennes-eau Jean-rennes-eau
MP
Niveau 8
02 juillet 2022 à 23:45:45

Le 02 juillet 2022 à 18:38:17 :
Si j'ai bien compris tu veux afficher des graphiques à colonne selon les données que tu récupères via ton JSON.
Pour cela il va falloir que tu t'aides du CSS pour représenter la hauteur des colonnes sur ton graphique dynamiquement.

Il y a plusieurs solutions, admettons que ton graphique soit comme suit (0, 50), 50 étant le montant maximal.
( tu peux bien évidemment jouer avec ça et partir sur une base 100 mais je pense qu'à vu de nez c'est bien 50 que tu dois faire ).

Il te faut récupérer le pourcentage sur 50 d'un montant X ou Y sur ton JSON pour y appliquer ensuite via le CSS sa hauteur, même flex-basis pourrait faire l'affaire si tu travailles avec Flexbox.

Si je récapitule, 50 étant une height de 100%, 25% une height de 50%, 0 une height de 0 %.
Et je serais toi j'arrondirais le tout à l'entier supérieur en veillant à ne pas dépasser 50, ça fait moins brouillon après.

EDIT : j'ai vu que t'avais un montant à 52 et des poussières, donc naturellement passe à 60, j'ai lu trop vite.

ton idée de pourcentage est très intéressante, je vais essayer de voir comment mettre ça en place !
d'autant plus que pour le coup avec ce que j'ai fait (= c'est à dire injecter la valeur numérique de "amount" et d'y concaténer "px" pour affecter une valeur à la propriété height, mes rectangles sont trop petit).
Sinon j'avais pensé à ajouter un coefficient multiplication pour chaque valeur, genre faire *2 ou *3 genre comme ça :

rect1.style.height = (data[0]["amount"] * 2) + 'px';

Jean-rennes-eau Jean-rennes-eau
MP
Niveau 8
03 juillet 2022 à 01:16:38

Le 02 juillet 2022 à 18:43:44 :
Je n'ai pas précisé, pour l'implémentation de la logique au dessus, je suppose que tu le fais via le JS en manipulant le style CSS de tes éléments.
Le CSS " stand-alone " ne permet pas pour l'heure de faire cela, même en s'aidant des Custom Props.

Oui je manipule le style CSS de mes éléments.
Je ne comprend pas ta dernière phrase, qu'est-ce que le CSS 'stand-alone' ne permet pas de faire à l'heure actuelle?
Pour le coup je viens d'essayer de définir la valeur max de mes "amont" de manière "intelligente", c'est-à-dire sans la définir manuellement, voilà ce que ça donne :

.then(function(data) {
        console.log(data[0]['amount'])
        divChart.style.maxHeight = Math.max(data);
        rect1.style.height = data[0]["amount"] + '%';
    })

Malheureusement je ne sais pas pourquoi mais lorsque je fait ça, mon rect1 disparait de mon graphique, on dirait qu'il n'aime pas que je lui concatène le pourcentage à la fin :(

Magrozz Magrozz
MP
Niveau 7
03 juillet 2022 à 04:05:59

Le 03 juillet 2022 à 01:16:38 :

Le 02 juillet 2022 à 18:43:44 :
Je n'ai pas précisé, pour l'implémentation de la logique au dessus, je suppose que tu le fais via le JS en manipulant le style CSS de tes éléments.
Le CSS " stand-alone " ne permet pas pour l'heure de faire cela, même en s'aidant des Custom Props.

Oui je manipule le style CSS de mes éléments.
Je ne comprend pas ta dernière phrase, qu'est-ce que le CSS 'stand-alone' ne permet pas de faire à l'heure actuelle?
Pour le coup je viens d'essayer de définir la valeur max de mes "amont" de manière "intelligente", c'est-à-dire sans la définir manuellement, voilà ce que ça donne :

.then(function(data) {
        console.log(data[0]['amount'])
        divChart.style.maxHeight = Math.max(data);
        rect1.style.height = data[0]["amount"] + '%';
    })

Malheureusement je ne sais pas pourquoi mais lorsque je fait ça, mon rect1 disparait de mon graphique, on dirait qu'il n'aime pas que je lui concatène le pourcentage à la fin :(

T'as regardé dans l'inspecteur sa valeur pour la propriété height ?
Et aussi, tu veux une pourcentage de X%, mais X% de combien ? L'élément parent a bien une taille déjà ?

Jean-rennes-eau Jean-rennes-eau
MP
Niveau 8
03 juillet 2022 à 15:09:59

Le 03 juillet 2022 à 04:05:59 :

Le 03 juillet 2022 à 01:16:38 :

Le 02 juillet 2022 à 18:43:44 :
Je n'ai pas précisé, pour l'implémentation de la logique au dessus, je suppose que tu le fais via le JS en manipulant le style CSS de tes éléments.
Le CSS " stand-alone " ne permet pas pour l'heure de faire cela, même en s'aidant des Custom Props.

Oui je manipule le style CSS de mes éléments.
Je ne comprend pas ta dernière phrase, qu'est-ce que le CSS 'stand-alone' ne permet pas de faire à l'heure actuelle?
Pour le coup je viens d'essayer de définir la valeur max de mes "amont" de manière "intelligente", c'est-à-dire sans la définir manuellement, voilà ce que ça donne :

.then(function(data) {
        console.log(data[0]['amount'])
        divChart.style.maxHeight = Math.max(data);
        rect1.style.height = data[0]["amount"] + '%';
    })

Malheureusement je ne sais pas pourquoi mais lorsque je fait ça, mon rect1 disparait de mon graphique, on dirait qu'il n'aime pas que je lui concatène le pourcentage à la fin :(

T'as regardé dans l'inspecteur sa valeur pour la propriété height ?
Et aussi, tu veux une pourcentage de X%, mais X% de combien ? L'élément parent a bien une taille déjà ?

Sa valeur pour la propriété height ? J'ai pas compris de quoi tu parles, du rectangle1 ou de mon container (="divChart")?
En fait sur mon CSS j'ai définit la taille de mon container comme suit :

#divChart{
    height: fit-content;
}

Et ensuite sur mon JS :

divChart.style.maxHeight = Math.max(data);

Là je lui dis d'assigné la plus grande valeur liée à la clé "amount" du tableau "data" dans le champs "maxi-height" du container divChart. Ainsi, le container ne pourra pas avoir une valeur supérieure à celle-ci
Donc pour moi là le 100% c'est la plus grande valeur donc 52 et des poussières comme tu me disais hier.

Jean-rennes-eau Jean-rennes-eau
MP
Niveau 8
03 juillet 2022 à 15:17:54

Le 03 juillet 2022 à 15:09:59 :

Le 03 juillet 2022 à 04:05:59 :

Le 03 juillet 2022 à 01:16:38 :

Le 02 juillet 2022 à 18:43:44 :
Je n'ai pas précisé, pour l'implémentation de la logique au dessus, je suppose que tu le fais via le JS en manipulant le style CSS de tes éléments.
Le CSS " stand-alone " ne permet pas pour l'heure de faire cela, même en s'aidant des Custom Props.

Oui je manipule le style CSS de mes éléments.
Je ne comprend pas ta dernière phrase, qu'est-ce que le CSS 'stand-alone' ne permet pas de faire à l'heure actuelle?
Pour le coup je viens d'essayer de définir la valeur max de mes "amont" de manière "intelligente", c'est-à-dire sans la définir manuellement, voilà ce que ça donne :

.then(function(data) {
        console.log(data[0]['amount'])
        divChart.style.maxHeight = Math.max(data);
        rect1.style.height = data[0]["amount"] + '%';
    })

Malheureusement je ne sais pas pourquoi mais lorsque je fait ça, mon rect1 disparait de mon graphique, on dirait qu'il n'aime pas que je lui concatène le pourcentage à la fin :(

T'as regardé dans l'inspecteur sa valeur pour la propriété height ?
Et aussi, tu veux une pourcentage de X%, mais X% de combien ? L'élément parent a bien une taille déjà ?

Sa valeur pour la propriété height ? J'ai pas compris de quoi tu parles, du rectangle1 ou de mon container (="divChart")?
En fait sur mon CSS j'ai définit la taille de mon container comme suit :

#divChart{
    height: fit-content;
}

Et ensuite sur mon JS :

divChart.style.maxHeight = Math.max(data);

Là je lui dis d'assigné la plus grande valeur liée à la clé "amount" du tableau "data" dans le champs "maxi-height" du container divChart. Ainsi, le container ne pourra pas avoir une valeur supérieure à celle-ci
Donc pour moi là le 100% c'est la plus grande valeur donc 52 et des poussières comme tu me disais hier.

Je viens de modifié ma ligne sur mon JS pour insister sur la valeur "amount", pour qu'il comprenne bien "parcours mon tableau et prend la plus grande valeur pour la clé amount"

ça donne ça :
divChart.style.maxHeight = Math.max(data["amount"]);

Ca me renvoit pas d'erreur dans la console, mais ça ne change rien non plus ensuite quand je met le "%" pour mon premier rectangle :(

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment