Skip to content
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

Bazar : rendre identifiables les fiches visibles dans les boundaries de la carte #632

Closed
thom4parisot opened this issue Jan 29, 2021 · 3 comments

Comments

@thom4parisot
Copy link
Member

thom4parisot commented Jan 29, 2021

Type of issue (keep only one) / Type de demande (ne garder qu'une ligne)
New feature / Nouvelle fonctionnalité

Description

Quand des fiches Bazar sont affichées sur une carte, il n'y a aujourd'hui aucun moyen d'avoir accès aux points qui sont visibles.

Par exemple, sur la capture d'écran suivantes, il y a 101 items de retournés par Bazar, mais seuls les 2 affichés m'intéressent :

image

Suggestion(s) :

  • mettre à jour avec les valeurs de data-id_fiche (ex : <div id="bazar-list-1" class="bazar-list" data-visible-id_fiche="FoyerRuralPlaisance,EpicerieChezAlexandreStGervaisSurMare2" data-template="map-min.tpl.html">)
  • émettre un événement avec les données des fiches sur la liste concernée :
var map = new L.Map(\'osmmapform\', {
    scrollWheelZoom:'.$GLOBALS['wiki']->config['baz_wheel_zoom'].',
    zoomControl:'.$GLOBALS['wiki']->config['baz_show_nav'].'
});
+ 
+ function broadcastChange ({ map }) {
+  	return (event) => {
+  	  var mapPane = map.getPane('mapPane')
+	 	
+  	 	var bounds = map.getBounds()
+ 	 	var visibleMarkers = getMarkers().filter(marker => bounds.contains(marker.getLatLng())
+   	 $(mapPane).trigger('bazar:selected-items', visibleMarkers)
+	}
+ }
+
+ map.on('zoomend', broadcastChange({ map }))
+ map.on('moveend', broadcastChange({ map }))
var geocodedmarker;

Et dans un autre script :

$('.bazar-list .leaflet-map-pane).on('bazar:selected-items', (items) => console.log(items)
@mrflos
Copy link
Contributor

mrflos commented Jan 29, 2021

ok, intéressant, après je m'interroge sur le comportement de data-id_fiche dans le cas de cartes avec des centaines voire des milliers de point, aussi a quel point les clusters marchent avec cette proposition, et enfin, comment trigger ce changement en cas de filtrage avec les facettes.

@thom4parisot
Copy link
Member Author

Oui, carrément intéressant.

Visiblement, en HTML y'a pas eu de limites de longueurs d'attributs. Des personnes ont testé, et 10 millions de caractères/100Ko de JS dans un attribut passaient tranquille.

Côté JS, si la carte supporte plusieurs milliers de points en affichage, ça se gèrera en événement (surtout si ça apparaît à la fin d'un déplacement, et pas pendant).

Ça peut aussi se gérer avec une limite arbitraire (tel niveau de zoom minimum et/ou un nombre max d'éléments présents à l'écran).

@seballot
Copy link
Contributor

tu voudrais ça pour faire du custom code en fonction des fiches visibles?
Je pense que c'est un peu trop spécifique pour être implémenté. En plus on peut faire un workaround un peu moche avec un timer qui check toutes les secondes les points visibles

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants