-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Cartographie] Mode light #2539
Conversation
d7f3c86
to
e4ff86f
Compare
3d565e0
to
ffb753e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Il y a des trucs sympas dans cette PR :).
J'ai une seule remarque générale à faire qui va t'embêter : je crois qu'appeler ce mode "Nav" est une erreur car c'est un terme très générique utilisé pour plein de choses déjà existantes dans la terminologie web. Un peu comme "Map" d'ailleurs.
Qui plus est "Navigation" n'a pas le même sens en anglais (à part en aviation). La correspondance serait plutôt "Sailing".
Je l'aurais plutôt appelé "Light" comme cela se fait souvent sur les apps populaires. Mais on peut aussi se permettre d'utiliser des noms de code internes comme "Carbon" ou "OnBoard", du moment qu'ils sont bien documentés. Ce ne sont que des exemples, il y a l'embarras du choix ^^.
@GetMapping("/find") | ||
@Operation(summary = "Get vessel information and positions") | ||
fun getVessel( | ||
@Parameter(description = "Vessel internal id") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je profite de cette PR pour deux mini-propositions de goût-visibilité : est-ce que ça vous irait à @thoomasbro, @claire2212 et toi de :
- sauter une ligne pour séparer visuellement les params dans les controllers et les déclaration de colonnes dans les modèles ?
- essayer, dans la mesure du raisonnable et possible, d'ordonner par ordre alphabétique les props en général (à l'exception de l'ID en premier) ?
Peut-être est-ce parce que je vieillis mais ça me demande un effort de concentration notable pour m'y retrouver dans ces blocs à chaque fois 🙊.
"prepare": "cd .. && ./frontend/node_modules/.bin/husky install ./frontend/config/husky", | ||
"start": "sh -ac '. ../infra/configurations/frontend/.env.local; react-scripts start'", | ||
"start": "sh -ac '. ../infra/configurations/frontend/.env.local; npm run bundle-sw && react-scripts start'", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Il faudrait le mettre dans dev
aussi ^^. Du coup l n'y a pas de watch dessus (via nodemon
par ex.) ? Mais ça n'a d'intérêt que si on change code concerné régulièrement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah yes bien vu.
Franchement ce code va être changé très très peu, je dirais que ça ne vaut pas le coup de le watch.
@@ -133,9 +127,7 @@ export function APIWorker() { | |||
return | |||
} | |||
|
|||
if (vesselSidebarTab === VesselSidebarTab.VOYAGES && selectedVesselIdentity) { | |||
dispatch(getVesselLogbook(selectedVesselIdentity, undefined, false)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Juste pour être sûr de comprendre : on ne charge plus les logs des navires (je sais que les VesselVoyage
regroupent plein d'infos) ? Ou ce tab disparaît en mode "navigation" ?
Je viens de voir que passant en fait par RTK maintenant tu les charges directement dans le composant.
const token = user?.access_token | ||
const monitorfishBaseQuery = retry( | ||
fetchBaseQuery({ | ||
// TODO Remove the /v1 from the baseUrl as it make harder to update APIs (vX are designed for that) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes ^^.
import { useGetVesselsLastPositionsApi } from '../hooks/useGetVesselsLastPositionsApi' | ||
import { showVesselsLastPosition } from '../useCases/showVesselsLastPosition' | ||
|
||
export function VesselLoader() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je profite de ce composant pour faire une remarque plus générale sur cette PR : il serait peut-être pas mal qu'on utilise les <Suspense />
et les dynamic components (RTK étant super pratique pour ça puisqu'on charge les données souvent directement dans le composant).
https://react.dev/reference/react/lazy#suspense-for-code-splitting
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je pense que ça peut être bien d'utiliser Suspense
dans les cas où:
- Un composant ou un arbre de DOM est lourd à charger
- On n'est pas sûr qu'il sera chargé
Dans ce composant l'arbre est tout petit (1 div) et on est sûr qu'il sera chargé, donc je pense que ça n'est pas utile.
Par contre, OK pour l'utiliser dans d'autres endroits ou c'est plus approprié!
@@ -18,7 +18,7 @@ export function useGetUserAuthorization(): UserAuthorization | undefined { | |||
* This is used to have backward compatibility with the Apache .htacess authentication (on `/` and `/ext`) while the authentication | |||
* is not yet activated, as the app is only protected by the entrypoint path. | |||
*/ | |||
const isExtPage = window.location.href.includes('/ext') | |||
const isExtPage = window.location.href.includes('/ext') || window.location.href.includes('/nav') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
window.location.pathname === '/nav'
(pareil pour /ext
) ?
}) | ||
|
||
if (registration.installing) { | ||
// eslint-disable-next-line no-console |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pour le coup, plutôt que des console logs ici, j'irai jusqu'au bout et en profiterais plutôt pour afficher des toast utilisateur qui permettent de suivre les différentes étapes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je ne suis pas vraiment pour perso, je ne vois pas ce que ça apporte à l'utilisateur : c'est un élément technique de l'application, à nous de "cacher" cette partie. Si on met à jour le SW, l'utilisateur n'a pas à le savoir, il doit juste aller sur l'application et que ça fonctionne
self.addEventListener('fetch', event => { | ||
event.respondWith( | ||
(async () => { | ||
const url = event.request.url.toString() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je me demande si tout est bien pris en compte : gestion des params, suppression des hashes ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Il y a tout ce qui est dans l'URL : https://developer.mozilla.org/en-US/docs/Web/API/Request/url
On n'a pas de hashes dans les URLs cachés
frontend/src/workers/utils.ts
Outdated
@@ -0,0 +1,25 @@ | |||
import { CARTOCDN_BASEMAP, MAPBOX_BASEMAP, OPENSTREETMAP_BASEMAP, REGULATIONS, SHOM_BASEMAP } from './constants' | |||
|
|||
export const getCacheKey = src => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
src
=> url
Je te rejoins pour un terme plus adéquat comme "Light", ça me parait bien ! Par contre "Navigation" c'est bien un synonyme de "Sail" sauf que "Sailing vessel" ça veut aussi dire bateau à voile, donc p-e plus ambigu. |
Kudos, SonarCloud Quality Gate passed! 0 Bugs No Coverage information |
pollingInterval
au lieu du composantAPIWorker
(deprecated)esbuild
pour bundlerserviceWorker.ts
danspublic/service-worker.js
Linked issues