From a472e34bbef54b2a5e0f67fe9427a859473cae25 Mon Sep 17 00:00:00 2001 From: Denis Monnerat Date: Mon, 16 Mar 2026 14:22:17 +0100 Subject: [PATCH] todo riot, avec router --- R4.01_R4.A.10/td_tp/tp6/README.md | 5 +- .../td_tp/tp6/src/todo-riot/app.riot | 74 +++++++++++++++++++ .../td_tp/tp6/src/todo-riot/css/todo.css | 16 ++++ .../td_tp/tp6/src/todo-riot/htaccess | 8 ++ .../td_tp/tp6/src/todo-riot/index.html | 56 ++++++++++++++ .../td_tp/tp6/src/todo-riot/js/api.js | 45 +++++++++++ .../td_tp/tp6/src/todo-riot/todo-form.riot | 31 ++++++++ .../td_tp/tp6/src/todo-riot/todo-list.riot | 17 +++++ .../td_tp/tp6/src/todo-riot/todo-nav.riot | 12 +++ 9 files changed, 261 insertions(+), 3 deletions(-) create mode 100644 R4.01_R4.A.10/td_tp/tp6/src/todo-riot/app.riot create mode 100644 R4.01_R4.A.10/td_tp/tp6/src/todo-riot/css/todo.css create mode 100644 R4.01_R4.A.10/td_tp/tp6/src/todo-riot/htaccess create mode 100644 R4.01_R4.A.10/td_tp/tp6/src/todo-riot/index.html create mode 100644 R4.01_R4.A.10/td_tp/tp6/src/todo-riot/js/api.js create mode 100644 R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-form.riot create mode 100644 R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-list.riot create mode 100644 R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-nav.riot diff --git a/R4.01_R4.A.10/td_tp/tp6/README.md b/R4.01_R4.A.10/td_tp/tp6/README.md index 5ad2eba..947af58 100644 --- a/R4.01_R4.A.10/td_tp/tp6/README.md +++ b/R4.01_R4.A.10/td_tp/tp6/README.md @@ -105,6 +105,5 @@ Le modèle utilise PDO, en php. Il vous faudra créér une table avec les attrib 1. Complétez le fichier index.php 2. Testez votre api à la ligne de commandes en utilisant `curl`. 3. Connectez votre application todolist avec l'api. - -Écrivez un module "abstrait" en javascript pour l'interaction -avec l'api. Ce module devra pouvoir être changer pour utiliser firebase **sans que l'application cliente ne change**. +4. Connectez votre api à l'application [todo](./src/todo-riot). Il faut + complétez le fichier api.js. Prenez soin de modifier le fichier `htaccess`. diff --git a/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/app.riot b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/app.riot new file mode 100644 index 0000000..4910834 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/app.riot @@ -0,0 +1,74 @@ + + + + +

To Do List

+ + + + !todo.done).length} /> + + + +
+
+ +
diff --git a/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/css/todo.css b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/css/todo.css new file mode 100644 index 0000000..3eb40e5 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/css/todo.css @@ -0,0 +1,16 @@ +p.todo { +display : flex; +justify-content : space-between; +} + +.done { + text-decoration: line-through; + color: #ccc; +} +.is-active { + color : #8EB901; +} +.delete { + background-color :#9B2318; +} + diff --git a/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/htaccess b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/htaccess new file mode 100644 index 0000000..f7e41ee --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/htaccess @@ -0,0 +1,8 @@ + +RewriteEngine On +RewriteBase /~denis/web_2024/tp5/todo-riot/ # votre url +RewriteRule ^index\.html$ - [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule . index.html [L] + diff --git a/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/index.html b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/index.html new file mode 100644 index 0000000..987dcf2 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/index.html @@ -0,0 +1,56 @@ + + + + + Riot todo + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/js/api.js b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/js/api.js new file mode 100644 index 0000000..7adb203 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/js/api.js @@ -0,0 +1,45 @@ +export default function makeDataService(){ + let url = 'http://localhost/~denis/web_2024/tp5/api_php/todo/' + let service = { + getTodos : getTodos, + addTodo : addTodo, + removeTodo : removeTodo, + toggleTodo : toggleTodo, + }; + + async function getTodos() + { + let res = await fetch(url,{ + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + } + }) + ; + let json = await res.json(); + return json.results; + + + } + async function addTodo(todo) + { + const response = await fetch(url, { + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + method: "POST", + body: JSON.stringify(todo) + }); + } + async function removeTodo(todo) + { + // TODO + } + async function toggleTodo(todo) + { + // TODO + } + + return service; +} diff --git a/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-form.riot b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-form.riot new file mode 100644 index 0000000..a7d65bb --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-form.riot @@ -0,0 +1,31 @@ + +
+
+ + +
+
+ +
diff --git a/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-list.riot b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-list.riot new file mode 100644 index 0000000..f7e6eee --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-list.riot @@ -0,0 +1,17 @@ + + + diff --git a/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-nav.riot b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-nav.riot new file mode 100644 index 0000000..a310ab3 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp6/src/todo-riot/todo-nav.riot @@ -0,0 +1,12 @@ + + +