folium icon indicating copy to clipboard operation
folium copied to clipboard

Geojsonpopup change when cell is empty

Open jrjdavidson opened this issue 1 year ago • 1 comments

Describe the bug Very small bug, but there has been a small change in how empty values are handled and updating to the latest folium has affected how popups are displayed. When creating a geojsonpopup using the fields keywords and a geodataframe, if a cell was empty the the content used to be empty. This allowed me to use simple css to hide row when empty:

    .leaflet-popup-pane tr:has(td:empty){
    display: none;
}

This behaviour was useful, as it was a simple way to add large amounts of data if present, but also simplify the output when no data available. Since updating, the empty cells now have the string 'null' inside, breaking the styling. See example image: image Related to #1858 ?

To Reproduce update to latest version of folium

m = Map()
gdf= gpd.read_file(geopackagePath, layer='groupedData')
data = gdf.drop('geometry', axis=1)
popup = folium.GeoJsonPopup(fields=data.columns.tolist(), labels=True, class_name="mystyle")
mapDataFrame= gdf.copy()
mapDataFrame['index'] = mapCopy.index
geojson = folium.GeoJson(data=mapDataFrame, popup=popup)
m.add_child(geojson)
[ Include a data sample or link to your data if necessary to run the code ]

Expected behavior Empty cell should be empty in the popup

Environment (please complete the following information):

  • Browser chrome, firefox
  • html files
  • Python version sys.version_info(major=3, minor=11, micro=9, releaselevel='final', serial=0)
  • folium version: 0.17.0
  • branca version:0.7.2

Possible solutions I haven't found a simple solution yet. I had a look at the source, but not sure where the actual change occurred.

jrjdavidson avatar Aug 27 '24 20:08 jrjdavidson

Thanks for the report! Just by reading it, it seems to make sense that that change affected it. I think the desired behavior is to not show "null" strings, but show an empty field instead. Someone should look into how we can do that. Ideally we do that close to the part where the data is displayed.

Conengmo avatar Sep 10 '24 07:09 Conengmo