Skip to content

Commit 299df04

Browse files
authored
Vite / Vue 3 script setup / Pinia migration (#28)
* migrating to vite and vue latest version * script setup component migration * fix lint * updating deps * replacing vuex by pinia 🍍 * api refacto
1 parent 6ec3278 commit 299df04

21 files changed

+1553
-24488
lines changed

.eslintrc.json

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"root": true,
3+
"extends": [
4+
"plugin:vue/vue3-essential",
5+
"eslint:recommended"
6+
],
7+
"parserOptions": {
8+
"ecmaVersion": 2022
9+
}
10+
}

README.md

+14-14
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@ npm run serve
1212

1313
- Framework: [Vue](https://v3.vuejs.org/guide)
1414
- Router: [Vue Router](https://router.vuejs.org/)
15-
- State management: [Vuex](https://vuex.vuejs.org/)
15+
- State management: [Pinia](https://pinia.vuejs.org/)
1616
- Weather data: [7timer](http://www.7timer.info/)
17-
- Build tools: [Vue CLI](https://cli.vuejs.org/guide/)
17+
- Build tools: [Vite](https://vitejs.dev/)
1818
- CSS: [Bulma](https://bulma.io/documentation/)
1919

2020
### Customize configuration
2121

22-
See [Configuration Reference](https://cli.vuejs.org/config/).
22+
See [Configuration Reference](https://vitejs.dev/config/).
2323

2424
## Step 1 : Afficher la météo du jour pour Grenoble
2525

2626
- Sur la page d’une ville : récupérer et afficher la météo du jour
27-
- La page d’une ville correspond au composant [`City`](src/views/City.vue)
28-
- Utiliser le [service d’API](src/api/weather.api.js) pour récupérer la météo en function des coordonnées GPS de Grenoble lorsque le composant est créé (https://vuejs.org/v2/guide/instance.html#Instance-Lifecycle-Hooks)
29-
- Binder les données de la météo du jour avec le template (https://vuejs.org/v2/guide/instance.html#Data-and-Methods)
27+
- La page d’une ville correspond au composant [`CityView`](src/views/CityView.vue)
28+
- Utiliser le [service d’API](src/api/weather.api.js) pour récupérer la météo en function des coordonnées GPS de Grenoble lorsque le composant est créé (https://vuejs.org/guide/essentials/lifecycle)
29+
- Binder les données de la météo du jour avec le template (https://vuejs.org/guide/essentials/reactivity-fundamentals)
3030

3131
## Step 2 : Afficher la météo du jour pour toutes les villes Zenika
3232

33-
- Pour le moment on affiche uniquement la première ville de la liste dans le composant [`Home`](src/views/Home.vue), itérer sur la liste pour toutes les afficher (https://vuejs.org/v2/guide/list.html)
34-
- Le paramètre de la route `/city` est mappé sur les props du composant que l’on peut récupérer avec `this.cityName`
35-
- Utiliser les getters `Vuex` pour récupérer les coordonnées de la ville : `[latitude, longitude]` (https://vuex.vuejs.org/guide/getters.html)
33+
- Pour le moment on affiche uniquement la première ville de la liste dans le composant [`HomeView`](src/views/HomeView.vue), itérer sur la liste pour toutes les afficher (https://vuejs.org/guide/essentials/list)
34+
- Le paramètre de la route `/city` est mappé sur les props du composant que l’on peut récupérer avec `props.cityName`
35+
- Utiliser les getters du store `Pinia` pour récupérer les coordonnées de la ville : `[latitude, longitude]` (https://pinia.vuejs.org/core-concepts/getters)
3636
- Appeler le service d'API avec les coordonnées de la ville
3737
- Afficher la ville sur la carte et la météo du jour
3838

@@ -44,21 +44,21 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
4444
## Step 4 : Avoir la possibilité de passer en Fahrenheit
4545

4646
- Ajouter des radios boutons, checkbox ou n’importe quoi d’autre pour choisir l’unité à afficher
47-
- Créer une méthode VueJS pour retourner les degrees dans la bonne unité (https://vuejs.org/v2/api/#methods)
47+
- Créer un `Composable` VueJS pour retourner les degrees dans la bonne unité (https://vuejs.org/guide/reusability/composables)
4848
- Appliquer la fonction de conversion `F = C * 9/5 + 32`
4949

5050
## Step 5 : Ajouter un page pour enregistrer une nouvelle ville
5151

5252
- Créer un nouveau composant dans le dossier `views`
5353
- Créer dans le router une route liée à ce composant
54-
- Modifier le store pour créer une action et une mutation pour ajouter la nouvelle ville à la liste existante (https://vuex.vuejs.org/guide/actions.html)
55-
- Créer un formulaire avec des inputs pour le nom de la vile, latitude et longitude
54+
- Modifier le store pour créer une action pour ajouter la nouvelle ville à la liste existante (https://pinia.vuejs.org/core-concepts/actions)
55+
- Créer un formulaire avec des inputs pour le nom de la ville, latitude et longitude
5656
- Mettre des protections sur les inputs (non vide, entre -180 et 180…)
5757
- Dispatcher l’action créée précédemment lors de l’envoi du formulaire valide
5858

59-
## Bonus : Afficher la météo détaillée d'un ville
59+
## Bonus : Afficher la météo détaillée d'une ville
6060

61-
- Une seconde API sur `7timer` permet d'obtenir une météo plus détaillée avec une prévision toute les 3 heures (http://www.7timer.info/bin/civil.php?lon=0&lat=0&unit=metric&output=json)
61+
- Une seconde API sur `7timer` permet d'obtenir une météo plus détaillée avec une prévision toutes les 3 heures (http://www.7timer.info/bin/civil.php?lon=0&lat=0&unit=metric&output=json)
6262
- Créer un nouveau point d'entrée sur le service d'api pour consommer ces données
6363
- Afficher le résultat de la météo détaillée sur la page de la ville
6464
- Ajouter un bouton pour afficher le mode simple ou le mode détaillé

babel.config.js

-5
This file was deleted.

index.html

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
7+
<link rel="icon" href="/favicon.ico">
8+
<title>Météo Zenika Vue3/Vite</title>
9+
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css"
10+
integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
11+
crossorigin="" />
12+
</head>
13+
<body>
14+
<noscript>
15+
<strong>We're sorry but Météo Zenika Vue3/Vite doesn't work properly without
16+
JavaScript enabled. Please enable it to continue.</strong>
17+
</noscript>
18+
<div id="app"></div>
19+
<script type="module" src="/src/main.js"></script>
20+
</body>
21+
</html>

0 commit comments

Comments
 (0)