Giter Club home page Giter Club logo

weather-vortex-client's Introduction

Weather Vortex Client

Client for Weather Vortex Project.

Branch Status Link
main Deploy to Github Pages Weather Vortex Client

Table of Contents

How To

Project setup

After clone this project, run this command to install all necessary dependencies:

npm i

Compiles and hot-reloads for development

This command enable hot-reloads!

After have modified a source file, save any change and wait for reloading. You'll see your changes in your browser without reloading the page.

npm run serve

Test project

To run unit tests, use this command:

npm run test:unit

Compiles and minifies for production

npm run build

Lints and fixes files

npm run lint

Containerization

To build your container: sudo docker build -t antonioparolisi/wv-client .

To run your container: sudo docker run -it -p 8080:80 antonioparolisi/wv-client

Customize configuration

See Configuration Reference.

weather-vortex-client's People

Contributors

daniele-tentoni avatar igor-lirussi avatar sissanassir avatar

Watchers

 avatar

Forkers

sissanassir

weather-vortex-client's Issues

VUE_APP_SERVER_URL valore errato

VUE_APP_SERVER_URL valore errato

Nella giornata di Martedì 31 Agosto è stata rilevata questa anomalia su Github Pages, nella pagina Registrazioni: quando si premeva sul pulsante Register non veniva chiamato l'indirizzo del server giusto, che restituiva quindi un errore 404:
image

Indagine

Sui log del server compariva subito chiaro che la risorsa richiesta fosse //api/register, quindi non abbiamo indagato oltre.

Soluzione

Modificare il valore della variabile d'ambiente VUE_APP_SERVER_URL all'indirizzo del server senza la / finale.

In questo modo tutte le future chiamate al server dovranno come iniziale sempre / e poi la risorsa richiesta. In questo caso: {server}/api/register.

Si propone come unica modifica quindi di permettere che il deploy del client possa avvenire anche manualmente per triggherare questi aggiornamenti di variabili.

Altro

Questa issue servirà anche ai posteri per risolvere casi simili. In quel caso riferirsi a questa issue.

Refactoring auth routes

Come comunicato in questa issue dopo aver modificato le routes sul server bisogna cambiare quelle anche qui sul client, specialmente nelle seguenti pagine:

  • Login
  • Register
  • Private profile
  • Public profile
  • Edit profile
  • Logout

Se mancano delle route modificarle comunque ed aggiungerle sotto nei commenti

Deploy to github-pages

Create a workflow on push on main branch that deploy a new version to github pages environment and notify on telegram of that.

Creare Pagina 404

Occorre creare la pagina di servizio 404 che gestisca tutte le richieste che non rientrano tra quelle configurate. Può essere divertente inserirci un messaggio divertente appunto.

Non si riesce a fare un rating ai feedbacks

Non siamo riusciti su Github Pages a dare un feedback ad un provider perché non riesce a capire quale rating diamo al provider. Viene mostrato il messaggio di errore di vue-alert.

Abbiamo visto che non viene generato il cookie di autenticazione che deve essere salvato quando viene effettuato il login.

Recupero Stazioni Utente

Data la nuova route GET /stations/user/:id , mostrare nella tabella le stations create dall'utente loggato.
Aggiornare la tabella affinchè permetta di cancellare le stations, se nel profilo privato (l'utente è loggato)

Geolocation position acquiring

Geolocation position acquiring

Given the new Quick Weather Forecast:
image
we can implement the functionality that ask to device's sensors to retrieve the geolocation position and return to our app.

The flow

  1. User click on icon and the app ask him/her if he/she wants to give permissions to get current geolocation position
  2. If user respond yes, we get the current position and perform the weather forecast request
  3. If user respond no, we cannot get the current position and return a visual error alert

Questions

  1. When we retrieve the current position of the user, we perform the request asap or put the current location in the textfield, so user can edit it?
  2. At the current state, users can only forecast for literal location, no latitude and longitude requests are permitted. This feature has to be implemented in a future step of the project.

Indagare problemi interfaccia mobile pagina Previsioni

Abbiamo rilevato problemi nell'uso da dispositivo mobile della pagina della forecasts. Principalmente i problemi sono due:

  • 1. Abbiamo richiesto le previsioni per la città di Cesena. Da desktop ci mostra 3 cards dentro allo slider. Da mobile, lo slider è troppo stretto rispetto alla larghezza dello schermo, sia a destra che a sinistra. Le cards sarebbe meglio che siano centrate rispetto allo slider e che le frecce non occupino tutto quello spazio
    photo_2021-09-14_12-02-52
  • 2. Le cards non possiedono tutte la stessa dimensione e il loro contenuto non viene correttamente dimensionato. Sembra che come valore di larghezza venga preso solamente il valore di larghezza del titolo della card.
    photo_2021-09-14_12-04-39
  • 3. anche nella pagina feedbacks lato mobile c'è un problema analogo a quello descritto nel punto 1
    Cattura
    Guarda anche l' altra issue relativa: #73

Problemi di consistenza delle date e orari in 3 Days Forecast

Il range slider presente nella pagina Forecast nella sezione 3 days deve mostrare gli orari delle prossime previsioni richieste. Deve mostrare dei salti di 3h in 3h, ma adesso è sfasata sia la label di ogni step dello slider (adesso ad esempio riporta degli orari sfasati di 2 ore rispetto alla data corretta della misurazione)
photo_2021-09-14_12-16-17

Inoltre la label sottostante allo slider riporta l'ora della previsione che abbiamo ottenuto dal server, che è indietro di due, ma questo è un problema del server e non dobbiamo cambiarlo.

Usare Avatar Component

Vuetify mette a disposizione il componente Avatar per visualizzare solamente le iniziali di una stringa. Lo potremmo utilizzare per mostrare l'icona dell'utente in alto a destra quando si autentica. Quando non si trova autenticato, allora possiamo semplicemente mostrare l'icona come adesso.

Sarebbe bello se avessimo tempo anche tramite le Api di Gravatar mostrare la relativa immagine utente impostata su quel servizio.

Impedimento al raggiungimento della schermata di Login

Comportamento riscontrato

Dopo aver effettuato l'autenticazione di un utente, abbiamo navigato per il sito prima di aprire la schermata dell'account. Come risultato di quest'ultima operazione, siamo stati rediretti verso la schermata 404, invece di essere stati portati alla schermata account.

Il cookie di autenticazione è ancora presente. Tornati alla pagina home come suggerito dalla schermata 404 non siamo più stati autenticati e ci è ricomparso il link alla schermata di login. Al ritorno alla schermata di Login, non siamo più riusciti ad effettuare il login perché risultiamo essere ancora collegati e il token sul database non è stato rimosso.

Comportamento atteso

Ci si aspetterebbe di poter navigare fino alla pagina account se siamo autenticati, mantenendo il cookie di autenticazione in memoria fino a quando non si effettua il logout. Inoltre, quando il login fallisce, se sono presenti eventualmente dei cookie di autenticazione, essi devono essere eliminati.

Compiti assegnati

  • Capire quale sia l'impedimento al raggiungimento della pagina Account
  • Eliminare cookie di autenticazione quando la chiamata login fallisce

Pulsanti visualizza password tabbabili

Comportamento atteso

Mentre sto digitando la password o la conferma della password, posso premere il pulsante Tab per passare a digitare il campo successivo, rispettivamente la conferma della password o la spunta.

Comportamento riscontrato

Premendo il tasto Tab, viene selezionato invece rispettivamente il pulsante di visualizza password e di visualizza di conferma della password.

Discussione

Secondo questo è un comportamento controintuitivo. Da un campo mi aspetto di essere portato al successivo, come dovrebbe essere lato mobile.

❗ Lato mobile non è ancora stato provato questo comportamento, bisogna fare un'indagine il prima possibile.

Link alla registrazione

Nella pagina di Login manca un link alla pagina di registrazione, che magari dica Se non sei registrato, clicca qui o una roba simile.

Geolocalizzazione in Forecast page non implementata

Il pulsante nella pagina forecasts che dovrebbe chiedere la posizione all'utente e inserirla nella textbox non funziona, mostra ancora il messaggio usato prima della sua implementazione nella home page. Bisogna implementarlo in modo che abbia lo stesso comportamento che ha nell'altra pagina. Se non si possiede ancora l'autorizzazione dell'utente ad usare la geolocalizzazione, allora bisogna chiedergliela.

Creare Footer

Occorre creare il Footer delle pagine come componente e metterlo all'interno della pagina principale per renderlo presente in tutte le pagine. Deve contenere il nome del progetto, l'anno di aggiornamento del sito e un link alla licenza sul repository. Se avete altre informazioni che vi vengono in mente che debbano esserci scritte commentate pure sotto questa issue.

Recupero Feedback dell'utente

Data la nuova route GET /feedbacks/user/:id , mostrare nella tabella i feedbacks lasciati dall'utente loggato.
Aggiornare la tabella affinchè permetta di cancellare i feedback, se nel profilo privato (l'utente è loggato)
e poi basta

Profilo pubblico

Fai in modo che cliccando nelle reviews sui nomi e cognomi dei vari utenti che hanno lasciato la review (pagina feedback) si viene dirottati al profilo pubblico. Pagina profilo pubblico dove si mostrino le informazioni che devono essere mostrate

Client not Responsive

Expected behaviour

Le card, nella visualizzazione mobile, dovrebbero andare una sotto l'altra, occupando tutta la larghezza dello schermo.

Comportamento Riscontrato

Le card rimangono una di fianco all'altra, restringendosi in maniera improponibile

Screen Shot 2021-08-17 at 11 30 06

form contact us in About

quando clicco su send magari mettere un alert che il messaggio è stato inviato.
Oltre a cui c'è anche l'implementazione sul server

Unità di misura schede forecasts

Bisogna nella card della previsione mettere le unità di misura per ogni valore rilasciato dai provider, standardizzando quelli che differiscono tra i vari servizi (ma questa è una roba lato server).

Aggiungere DockerFile

Aggiungere Dockerfile

  • Aggiungere il Dockerfile
  • Aggiornare il file README.md

Aggiungere il Dockerfile

Nel Dockerfile devono essere descritti i passaggi per effettuare il deploy del client. Non dovrebbe essere necessario eseguire altri comandi oltre al npm install.

Aggiornare il file README

Nel README.md bisogna elencare i comandi necessari per effettuare una corretta build e run del container. Non scrivere comandi a caso, ma correttamente strutturati come negli altri progetti.

Autenticazione cose da fare

nel modello la email è unique, quindi lato server è errore se registri un account con una email già esistente. vedere come fare a visualizzarlo nel client, c'è un modo di visualizzare l'errore lato server come questo nel client con vueValidate. Stessa cosa anche per l'avviso dell'email confermata, se un utente è confermato o no viene visualizzato nel server, come farlo vedere nel client? Oppure richiami gli errori del server e li visualizzi lato client

  • vogliamo fare anche aggiornamento dati utente e cancellazione utente?
  • TODO: collegamento conferma email
  • mi è venuta in mente la possibilità di fare la forgot password

Pulire cookie se login fallisce

Come avrete sicuramente riscontrato, nel caso in cui ci logghiamo con un utente e successivamente puliamo il database, rimane in memoria un cookie auth sporco, che non trova nessun riscontro nel database. Se poi proviamo ad aprire l'app, giustamente prova ad effettuare il login che fallisce e ritorna i soliti messaggi di errore. Bisogna fare in modo che se il token è scaduto (la chiamata a loggedIn fallisce) bisogna cancellare il token scaduto dalla memoria e non mostrare alcun messaggio di errore secondo me, così da forzare l'utente a tentare un nuovo login.

Non esegue nuova richiesta forecast nella stessa modalità

Nella pagina Forecast, se cambio città di previsione ma mantengo la stessa modalità (now o 3 days) non esegue la richiesta di previsioni e non ricarica la pagina. Se invece richiedo l'altra modalità, allora la richiesta viene effettuata.

Potrebbe essere un problema di navigazione del vue-router. Potrebbe essere necessario forzare un ricaricamento di tutta la pagina.

Aggiungere Aggregazione Previsioni Meteo

Le previsioni meteo vanno aggregate mano a mano che arrivano al client.
Allo scatenarsi dell'evento this.socket.on("result", (result) => { , scaturito ad ogni risultato ricevuto dal server, la card che contiene l'aggregazione dei risultato va aggiornata.

Come aggiornare

  1. Salvare una lista di condizioni meteo (cloud, sunny, .. ) e mostrare quella più frequente
  2. Per il resto, fare la media, salvandosi un contatore di previsioni ottenute e la somma dei valori, per poi dividere.

Rinominare Toyota in Forecast page

Occorre rinominare la scritta nel bottone Toyota in Forecast page in In 2 days. Aggiungere anche un tooltip per ogni bottone in modo che venga mostrato un aiuto e si evitino altri fraintendimenti. I testi possono essere Today, Tomorrow e Day after tomorrow.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.