From 1c7d7f636afa815a3db736408a0f91db79936285 Mon Sep 17 00:00:00 2001 From: Denis Monnerat Date: Mon, 9 Mar 2026 14:55:40 +0100 Subject: [PATCH] ajout exo tp5 --- R4.01_R4.A.10/td_tp/tp5/README.md | 16 +++++ R4.01_R4.A.10/td_tp/tp5/img/radar.png | Bin 0 -> 28374 bytes R4.01_R4.A.10/td_tp/tp5/src/ex2/README.md | 18 +++++ R4.01_R4.A.10/td_tp/tp5/src/ex2/app.riot | 62 ++++++++++++++++++ .../tp5/src/ex2/components/polygraph.riot | 31 +++++++++ .../td_tp/tp5/src/ex2/components/text.riot | 25 +++++++ R4.01_R4.A.10/td_tp/tp5/src/ex2/helper.js | 13 ++++ R4.01_R4.A.10/td_tp/tp5/src/ex2/index.html | 42 ++++++++++++ R4.01_R4.A.10/td_tp/tp5/src/ex2/style.css | 46 +++++++++++++ 9 files changed, 253 insertions(+) create mode 100644 R4.01_R4.A.10/td_tp/tp5/img/radar.png create mode 100644 R4.01_R4.A.10/td_tp/tp5/src/ex2/README.md create mode 100644 R4.01_R4.A.10/td_tp/tp5/src/ex2/app.riot create mode 100644 R4.01_R4.A.10/td_tp/tp5/src/ex2/components/polygraph.riot create mode 100644 R4.01_R4.A.10/td_tp/tp5/src/ex2/components/text.riot create mode 100644 R4.01_R4.A.10/td_tp/tp5/src/ex2/helper.js create mode 100644 R4.01_R4.A.10/td_tp/tp5/src/ex2/index.html create mode 100644 R4.01_R4.A.10/td_tp/tp5/src/ex2/style.css diff --git a/R4.01_R4.A.10/td_tp/tp5/README.md b/R4.01_R4.A.10/td_tp/tp5/README.md index 46aadb2..851ed9e 100644 --- a/R4.01_R4.A.10/td_tp/tp5/README.md +++ b/R4.01_R4.A.10/td_tp/tp5/README.md @@ -21,3 +21,19 @@ Le but est de comprendre le code pour prendre en main Riot.js - Ajoutez le nombre de tâches restantes. - Modifiez le code pour que les tâches soient stockées localement (utilisez l'objet `localStorage`). +#### Ex2 +Voici un [exemple](./src/ex2) d'application (radar chart) écrite avec riot.js. +
+ +
+ +- Complétez les méthodes `add` et `remove`. +- Créez un nouveau composant `slider.riot`, qui vous utiliserez dans app.riot + +#### Ex3 +L'api DummyJSON permet de manipuler des données fictives. Ecrire, avec riotjs, une application qui permet : + +- de récuperer depuis l'url `https://dummyjson.com/products` une liste de produits +- pour chaque produit, afficher le titre, prix et image. +- ajouter un filtre `prix < 100`, et un bouton `voir détails`. + diff --git a/R4.01_R4.A.10/td_tp/tp5/img/radar.png b/R4.01_R4.A.10/td_tp/tp5/img/radar.png new file mode 100644 index 0000000000000000000000000000000000000000..89d94a568a06fd966a0bdcf68686d974f97e7de3 GIT binary patch literal 28374 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 +

{ props.title }

+
+ + + + + + + + +
+
+ + + { stat.value } + +
+ + +
+ + +
+
+
+ + + diff --git a/R4.01_R4.A.10/td_tp/tp5/src/ex2/components/polygraph.riot b/R4.01_R4.A.10/td_tp/tp5/src/ex2/components/polygraph.riot new file mode 100644 index 0000000..bba4315 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp5/src/ex2/components/polygraph.riot @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/R4.01_R4.A.10/td_tp/tp5/src/ex2/components/text.riot b/R4.01_R4.A.10/td_tp/tp5/src/ex2/components/text.riot new file mode 100644 index 0000000..3a5ddcf --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp5/src/ex2/components/text.riot @@ -0,0 +1,25 @@ + +{ props.stat.label } + + + diff --git a/R4.01_R4.A.10/td_tp/tp5/src/ex2/helper.js b/R4.01_R4.A.10/td_tp/tp5/src/ex2/helper.js new file mode 100644 index 0000000..6c6667f --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp5/src/ex2/helper.js @@ -0,0 +1,13 @@ +const valueToPoint = (value, index, total) => { + const x = 0 + const y = -value * 1.6 + const angle = Math.PI * 2 / total * index + const cos = Math.cos(angle) + const sin = Math.sin(angle) + const tx = x * cos - y * sin + 200 + const ty = x * sin + y * cos + 200 + return { + x: tx, + y: ty + } +} diff --git a/R4.01_R4.A.10/td_tp/tp5/src/ex2/index.html b/R4.01_R4.A.10/td_tp/tp5/src/ex2/index.html new file mode 100644 index 0000000..e8ae784 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp5/src/ex2/index.html @@ -0,0 +1,42 @@ + + + + + + Riot.js Radar Chart + + + + + + + + + + + + + + + + + diff --git a/R4.01_R4.A.10/td_tp/tp5/src/ex2/style.css b/R4.01_R4.A.10/td_tp/tp5/src/ex2/style.css new file mode 100644 index 0000000..c5aeb37 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp5/src/ex2/style.css @@ -0,0 +1,46 @@ +body { + font-family: Helvetica Neue, Arial, sans-serif; +} +#radar{ + display : flex; +} + +svg { + width:400px; + height:400px; +} +polygon { + fill: #ED1646; + opacity: .75; +} + +circle { + fill: transparent; + stroke: #999; +} + +text { + font-family: Futura, Helvetica Neue, Arial, sans-serif; + font-size: 10px; + fill: #666; +} + +label { + display: inline-block; + margin-left: 10px; + width: 20px; +} + +#raw { +/* position: absolute; + top: 0; + left: 300px;*/ +} + +#add { + margin-top: 1em; +} + +.remove { + margin: 0 4px; +}