geotrekce / geotrek-rando-v3 Goto Github PK
View Code? Open in Web Editor NEWGeotrek public data website (version 3)
License: MIT License
Geotrek public data website (version 3)
License: MIT License
Si un texte "parking" est fourni, en plus de sa localisation.
Actuellement, on a seulement la commune de départ de la rando au dessus du titre
Ajouter d'abord le filtre dans l'API.
Filtre ajouté au niveau de l'API : https://geotrekdemo.ecrins-parcnational.fr/api/v2/touristiccontent/?near_touristiccontent=179
Problème identifié ici : https://gtr3.ecrins-parcnational.fr/trek/958306-Le-tour-du-Montbrison-(parcours-trail-n%C2%B013)
Erreur :
Unhandled Runtime Error
TypeError: description is null
Source
components/pages/details/components/DetailsCard/DetailsCard.tsx (90:9) @ DetailsCard
88 | <p className="text-Mobile-C1 desktop:text-H4 text-primary1 font-bold">{name}</p>
89 | </OptionalLink>
90 | {description !== undefined && description.length > 0 && (
| ^
91 | <div
92 | className="mt-1 desktop:mt-4
93 | flex flex-col desktop:flex-row desktop:items-end
Call Stack
renderReactElement
../../client/index.tsx (499:6)
Le soucis semble donc ici : https://github.com/GeotrekCE/Geotrek-rando-v3/blob/main/frontend/src/components/pages/details/components/DetailsCard/DetailsCard.tsx#L90
La console du navigateur indique :
TypeError: n is null
T DetailsCard.tsx:88
React 7
unstable_runWithPriority scheduler.production.min.js:18
React 6
be index.tsx:499
e index.tsx:394
f runtime.js:63
_invoke runtime.js:293
m runtime.js:118
Babel 4
NextJS 2
e index.tsx:380
f runtime.js:63
_invoke runtime.js:293
m runtime.js:118
Babel 10
fe NextJS
LwBP next.js:5
Webpack 6
react-dom.production.min.js:216:199
En effet en regardant les contenus, cette rando a un contenu touristique (Au file de l'onde - 1654) qui a une description, mais pas de chapeau (description_teaser) : https://geotrek-admin.ecrins-parcnational.fr/api/v2/touristiccontent/?near_trek=958306
Le chapeau est vide en FR, et NULL dans les autres langues : https://geotrek-admin.ecrins-parcnational.fr/api/v2/touristiccontent/1654/
C'est le chapeau qui est affiché dans les cartes de la rubrique A PROXIMITE.
Il faudrait permettre ce cas où le chapeau est vide ou null.
On n'a pas testé mais il faudrait vérifier en passant que si un POI n'a pas de description, le même soucis ne se produit pas.
Actuellement on ne les affiche que quand on clique sur le marqueur d'une rando sur la carte. Et souvent la tooltip masque en partie le tracé.
On pourrait afficher le tracé quand on survole une rando dans la liste de résultat en plus de mettre en avant son marqueur.
Mais il faudrait faire des appels API à la volée car on n'a pas encore les tracés de toutes les randos pour des raisons de performance.
D'une rando ou d'un contenu ou évènement touristique, ou site ou parcours outdoor
Ajouter filtres par ID_trek ou ID_touristic-content dans la route /trek
Filtres ajoutés :
Actuellement, on a 2 premiers "filtres" qui sont plutôt des sélecteurs de contenu, permettant de choisir les pratiques de rando et/ou les catégories de contenus touristiques à afficher.
Sur la même ligne (et même design) on a les filtres communs et permanents.
En dessous, selon le type de contenu sélectionné, on affiche éventuellement les filtres spécifiques à celle-ci.
Ces différents types de filtre mériteraient d'être plus clairs, éventuellement dissociés, pour améliorer le fonctionnement, la compréhension et l'ergonomie.
Actuellement chaque zone sensible à proximité d'une rando est affichée sur sa carte avec une couleur aléatoire parmi le thème de customisation.
Il faudrait privilégier une interaction liste>carte au survol d'une zone sensible dans la liste pour les identifier et les localiser.
Voir aussi le comportement en mobile, où on n'a plus la liste des zones sensibles accessible (voir #379)
Ajouter aussi les zones sensibles sur le contrôleur de couches.
Sur les fiches randos, mais aussi les fiches sur les fiches Outdoor (Sites et parcours)
Initialement le Header se rabattait automatiquement quand on descendait dans la page, pour gagner de la place. Il réapparaissait dès qu'on remontait un peu dans la page, pour rester accessible facilement.
Ce comportement a été mis de côté quand on a ajouté la carte, car le fait que la carte s'agrandisse et rétrécisse posait soucis.
A voir si il est souhaité remettre en place ce comportement en trouvant une solution pour la carte qui a une hauteur fixe.
Créer un widget intégrable dans un site tiers avec la fiche d'une rando ou la carte d'un groupe de rando avec leurs fiches.
Voir https://selleo.com/blog/how-to-create-embedded-react-widget
Quand une rando a un id_reservation
, intégrer le widget de réservation MY TRIP TAILOR dédié à l'itinérance.
Exemple : http://suivi-v3.montourenfrance.fr/partner/previsu-widget.aspx?project=parcdesecrins&partner=parcdesecrins&maplib=&routeid=ITI-65682-GEOT-921156&cle=ITI-65682-GEOT-921156&langue=fr
OK = http://suivi-v3.montourenfrance.fr/partner/previsu-widget.aspx?project=parcdesecrins&partner=parcdesecrins&maplib=&routeid=ITI-65682-GEOT-938574&cle=ITI-65682-GEOT-938574&langue=fr
Disponible en mode SPA : http://suivi-v3.montourenfrance.fr/partner/previsu-widget.aspx?project=parcdesecrins&partner=parcdesecrins&maplib=MapLeafletDevice&routeid=ITI-65682-GEOT-940370&cle=ITI-65682-GEOT-940370&langue=fr&FMode=spa
OK = http://suivi-v3.montourenfrance.fr/partner/previsu-widget.aspx?project=parcdesecrins&partner=parcdesecrins&maplib=&routeid=ITI-65682-GEOT-938574&cle=ITI-65682-GEOT-938574&langue=fr&FMode=spa
Un bouton RÉSERVER qui ouvre ce widget qui prend toute la page.
Ajouter un paramètre global pour activer ou non la réservation en ligne sur les randos.
Le contenu de la liste de résultat prend en compte les filtres, mais aussi la zone de la carte affichée.
Voir AirBnB, ou https://rando.ecrins-parcnational.fr
Avec une case à cocher pour activer ou non ce fonctionnement.
Et un paramètre pour définir si elle est cocher ou non par défaut ?
Quand on affiche une carte sur un appareil mobile, on pourrait tenter de localiser l'utilisateur pour afficher sa position sur la carte.
En ajoutant un bouton pour activer sa localisation, et peut-être le proposer par défaut quand l'utilisateur affiche une carte sur mobile.
Utiliser la method locate
native de Leaflet (https://leafletjs.com/reference-1.7.1.html#map-locate) ?
Voir aussi : https://leafletjs.com/examples/mobile/
Eventuellement en utilisant un plugin Leaflet comme https://github.com/domoritz/leaflet-locatecontrol ?
Disponible pour React-native : https://www.npmjs.com/package/react-leaflet-locate-control
Actuellement, on affiche uniquement les photos.
Mais on peut aussi avoir des audios (soundcloud ou local), des vidéos (embed youtube, dailymotion, vimeo...), des PDF...
Actuellement, à partir du niveau de zoom 15 de la page recherche, les clusters ne sont plus activés.
Ce niveau de zoom est défini ici : https://github.com/GeotrekCE/Geotrek-rando-v3/blob/main/frontend/src/components/Map/components/ClusterContainer/index.tsx#L18
Cependant quand on a des points exactement au même endroit, on a ajouté la fonction spiderfy
des clusters (#361) pour que le cluster soit éclaté et que chaque objet soit interrogeable.
Actuellement, si on a plusieurs points au même endroit, ils sont bien clusterisés, bien éclatés si on clique dessus, mais si on zoome au-delà du zoom 15, alors le cluster est désactivé et on ne voit et peut alors cliquer que sur un des points.
Il faudrait plutôt garder les clusters et le spider jusqu'au zoom maximum pour éviter cela.
En utilisant la valeur du paramètre du zoom max, ajouté récemment (#351) ?
Un paramètre pour le zoom max a été ajouté. A voir si un zoom min est pertinent ?
Actuellement, pour avoir des infos sur un objet affiché sur la carte de recherche, il faut cliquer dessus pour afficher une tooltip.
C'est fonctionnel en web et mobile.
Mais en web, on pourrait, en plus afficher une info sommaire au survol comme c'est le cas dans la V2 :
Dans la V2, au clic sur un objet, on a une tooltip avec plus d'infos :
A voir si on fait pareil dans les fiches détails, au niveau des POI, contenus touristiques...
A voir quand même si cela n'a pas pour conséquence que les utilisateurs ne cliquent pas sur les objets de la carte, l'action au survol laissant penser qu'il n'y a pas d'autre action disponible.
Plus globalement, il y a plusieurs tickets sur les interactions carte/liste et l'affichage des infos des objets de la carte (comme #379), à améliorer globalement.
Sur la carte mobile de la page détail, comme on n'a pas la liste des objets liés (POI, à proximité, étapes...), on peut les afficher sur la carte, mais pas savoir à quoi correspond chacun.
Ajouter une tooltip au clic sur un objet ?
Bonjour,
J'ai suivi la procédure d'installation, Tout à l'air ok, sauf lorsque je veux me connecter à la page internet, j'ai une error 502.
Ma conf nginx :
server {
location / {
proxy_pass http://localhost:9001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#listen 80;
#listen [::]:80;
listen 8001;
server_name xxx.xxx.xxx.xxx;
}
J'ai pris des ports différents car sur ce serveur de test le port 80 est déjà utilisé pour le Geotrek-admin.
Voici le résultat de /var/log/nginx/error.log
2021/03/03 14:20:08 [error] 32613#32613: *42971 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xxx.xxx.xx, server: xxx.xxx.xxx, request: "GET / HTTP/1.1", upstream: "http://[::1]:9001/", host: "xxxx.xxx.xxx:8001"
2021/03/03 14:20:08 [error] 32613#32613: *42971 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xxx.xxx.xxx, server: xxx.xxx.xxx., request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:9001/", host: "xxx.xxx.xxx:8001"
Cela vient sûrement de ma conf Nginx, si j'ai bien compris, on setup un port dans le proxy-pass qui va faire passerelle avec le port 80 du container, et plus bas je mets en place un port pour me connecter au site.
Depuis hier et aujourd'hui, quand je tente de build avec la v0.0.17 ou la v3.0.0, j'ai cette erreur.
J'ai tenté en faisant des modifications dans mon dossier config/ et/ou medias/, ça ne change rien au problème.
Idem après avoir fait du nettoyage comme le recommande la doc ici : https://github.com/GeotrekCE/Geotrek-rando-v3/blob/main/docs/installation.md#manage-docker-images-storage-on-disk
J'ai finis par recommencer dans un autre dossier et je retombe sur la même erreur.
Commande faite pour reproduire l'erreur :
mkdir Geotrek-rando-test
cd Geotrek-rando-test
git init .
git pull https://github.com/GeotrekCE/Geotrek-rando-v3-installer.git
#Copie des contenus exemples des fichiers du dossier config/
docker build -t geotrek-rando --build-arg VERSION=latest .
qui donne comme résultat :
`error Command failed with signal "SIGKILL".`
A voir si on met ce comportement pour tous, ou si on en fait un paramètre
Le chapeau (résumé) d'une rando permet d'en donner un aperçu en une phrase. Il est donc dommage de ne pas l'afficher dès la page de recherche.
Sur les cartes de la liste de résultat, il n'y a pas forcément la place, mais on pourrait les afficher sur la tooltip quand on clique sur une rando sur la carte.
A creuser.
Idem pour les contenus touristiques.
En plus des services et des treks.
Ajouter le sélecteur de contenus + les filtres spécifiques Outdoor qui peuvent varier d'une pratique outdoor à l'autre.
A penser : au niveau API et liste des thèmes, vérifier aussi les objets Outdoor publiés en plus des treks et contenus touristiques.
Ressources :
Ajouter un bouton EN SAVOIR PLUS au niveau de chaque carte de résultat ?
Geotrek-rando est utilisé par différentes structures dans des contextes et avec des contenus et des stratégies touristiques différentes.
Pour cela, chaque instance doit pouvoir être customisée pour correspondre à la charte graphique de la structure et à ses contenus.
Voir la documentation de Geotrek-rando v2 : https://github.com/GeotrekCE/Geotrek-rando/blob/master/docs/settings.md
La customisation doit être rapatriée à chaque mise à jour de Geotrek-rando.
Dans Geotrek-rando v2, la customisation est regroupée dans un dossier /custom
Quelques exemples de Geotrek-rando actuel pour voir différents territoires :
Certains utilisent plutôt une vidéo :
Objectif : quand on arrive sur une page de rando fille d'itinérance, je dois avoir la rando d'avant et la rando d'après accessibles dans le carrousel
Celle-ci a été revue entièrement récemment, voir GeotrekCE/Geotrek-admin#1740
Pour tester sur le serveur de DEMO : https://geotrekdemo.ecrins-parcnational.fr/api/v2/
Un Geotrek-admin peut alimenter plusieurs portails Geotrek-rando avec des contenus partiellement différents.
Pour chaque rando et contenu touristique, il est possible de définir un portail cible.
Un contenu peut alimenter plusieurs portails cibles.
Par exemple le Geotrek-admin du PNE alimente 6 portails Geotrek-rando avec des contenus en partie différent.
Il serait donc important de pouvoir ajouter un paramètre permettant de limiter les contenus récupérés en filtrant sur ce portail.
Si il est renseigné ce paramètre de limitation des contenus serait à appliquer à chaque fois que l'on interroge la route des treks
ou des touristicContents
.
Dans un second temps, il faudrait voir comment ajuster les valeurs de chaque filtre en fonction du portail.
Car en effet toutes les valeurs possibles pour chaque filtre, ne concernent pas tous les portails basés sur un même Geotrek-rando.
On pourrait faire cela au niveau de Geotrek-rando, en comparant les données aux valeurs des filtres renvoyant par la route de chaque filtre, mais ça serait lourd et peu performant.
A voir si on peut le faire au niveau de chaque route listant les valeurs d'un filtre, en les comparant au contenu du portail cible, si cela n'est pas trop lourd à réaliser. Car cela serait fait à chaque appel de la route d'une typologie (liste des valeurs d'un filtre).
Il faudrait alors ajouter la possibilité de filtre les valeurs d'une typologie par portail, comme c'est déjà le cas pour les routes des contenus (treks et touristicContents).
Le curseur (rond gris) est affiché sur la carte partout, à tous les niveaux de la fiche détail d'une rando.
Il faudra voir si il est possible d'avoir ce curseur sur la carte, uniquement quand on est positionné au niveau de la partie PROFIL ALTIMETRIQUE dans le bloc de contenu ?
Le bouton a été intégré dans le header, mais sans aucune fonctionnalité.
Fournir des règles de réécriture des pages depuis Geotrek-rando v2, notamment des pages de chaque rando et contenu touristique. En multilingue.
Geotrek-rando est utilisé par différentes structures dans des contextes et avec des contenus et des stratégies touristiques différentes.
Pour cela, chaque instance doit pouvoir être adaptée et configurée pour avec différents paramètres de configuration, en plus de la customisation.
Actuellement tous les paramètres ont une valeur par défaut, et il est possible de les surcoucher.
Voir la liste actuelle des paramètres de base, essentiels : https://github.com/GeotrekCE/Geotrek-rando/blob/master/docs/settings-custom-json.md
Et la liste actuelle de tous les paramètres surcouchables : https://github.com/GeotrekCE/Geotrek-rando/blob/master/docs/settings-custom-json-all-options.md
Actuellement ils sont uniquement affichés dans les infos de la fiche.
Interaction entre liste et carte ?
Les afficher seulement quand on arrive à leur niveau dans la fiche ?
Ou plutôt permettre d'afficher la couche de tous les lieux d'informations sur toutes les cartes, comme dans la V2 ?
Définition de l'architecture technique et mise en place des premiers éléments par @sraikimaxime :
=> J'ai livré un premier container sur github, je l'ai essayé de mon côté il est fonctionnel mais pour l'instant il ne fait que servir le code sur un port au choix.
On peut donc maintenance consulter et commenter les ADRs (https://github.com/GeotrekCE/Geotrek-rando-v3/tree/main/docs/adrs) et tester la documentation d'installation et de déploiement.
Permettre d'exclure des catégorie de CT ?
Il y a plusieurs problèmes de DevX qu'il serait juicieux de régler au prochain run:
oldGetSpacing
est deprecated et utilisait des multiples de 5 pour nos spacings
Il faut le remplacer par getSpacing
qui utilise maintenant des multiples de 4
Sur les pictos des infos techniques, mais aussi sur tous les pictos des catégories ou types d'objet, ainsi que sur les boutons d'action.
Bien identifier un composant global pour faire cela.
Avec un Geojson local ou distant.
Et ou un WMS pour un fond raster.
Affichable ou non sur la carte. Selecteur activable ou non
Les URL qui ne correspondent à aucun contenu renvoient une 404.
Exemple : https://gtr3.ecrins-parcnational.fr/trek
Faire un message plus clair et/ou une redirection ver la Home ?
Assez proche des contenus touristiques (services), mais avec quelques champs en plus (date début et fin, organisateur, horaires...)
Exemple : https://destination.cevennes-parcnational.fr/evenement-touristique/journee-thematique-land-art/
On les a zappé pour le moment, ils sont peut-être manquant de l'API, à vérifier.
Lorsque l'on suit les étapes suivantes, le retour à la page recherche via le bouton retour du navigateur n'est pas opérationnel.
Le comportement est le même avec un contenu touristique
Actuellement il y a un bouton TELECHARGER sur la barre fixe (avec accès au PDF), ainsi que des boutons de téléchargement plus complet sous la photo de la rando.
Ça fait en partie doublon et donc brouille la compréhension de la page.
Choisir où les mettre sans doublonner.
The offline behavior of the web application is handled by the progressive web app engine "service worker" cache. We provided limits to the service worker concerning the number of pages it had to store in cache (see cache.js file).
We observed that making a search operation was triggering several requests and therefore occupying a significant space on the cache (can sometimes reach up to 3MB), the natural limit imposed by apple for pwa cache is 50MB meaning we should have an acceptable behavior for the canonical use we anticipated.
Stil, this behavior is not scalable and if future developers start adding requests during other operations we could see the offline behavior starting to get flaky (randomly working).
Solutions that could secure this behavior would be:
Pas de bouton retour pour revenir à la rando parent dans une randonnée par étapes après avoir cliqué sur une étape.
Je créé cette issue pour noter qu'après analyse du site dans Pagespeed insights (version hébergée sur le web de spotlight), nous avons des optimisation de performance à faire.
Actuellement on ne peut utiliser que des randonnées dans les blocs de suggestion de la HOME
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.