Redesign map page and add lat/lon/needs_commons URL parameters
- Redesign pin_detail.html to match detail page style: place name heading, result card, button group, collapsible API response, element cards with left-border highlight, collapsible SPARQL query - Redesign map.html: compact header, styled prompt, shared CSS for element cards and tag keys, loading state on XHR - Add lat/lon URL params to /map: map centres on coords and auto-loads pin - Add needs_commons checkbox to map page: toggles needs_commons=false in URL and re-fetches the current pin when changed - Return geojson in /pin/ JSON response so map can render the polygon layer - Pass needs_commons through to /pin/ route and detail page link Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
cd9d8779d3
commit
76437d5240
3 changed files with 204 additions and 68 deletions
12
lookup.py
12
lookup.py
|
|
@ -2,6 +2,7 @@
|
|||
"""Reverse geocode: convert lat/lon to Wikidata item & Wikimedia Commons category."""
|
||||
|
||||
import inspect
|
||||
import json
|
||||
import random
|
||||
import re
|
||||
import socket
|
||||
|
|
@ -535,7 +536,8 @@ def reports() -> str:
|
|||
@app.route("/pin/<lat>/<lon>")
|
||||
def pin_detail(lat: str, lon: str) -> Response:
|
||||
"""Details for map pin location."""
|
||||
reply = lat_lon_to_wikidata(float(lat), float(lon))
|
||||
needs_commons = request.args.get("needs_commons", "true").lower() != "false"
|
||||
reply = lat_lon_to_wikidata(float(lat), float(lon), needs_commons)
|
||||
element = reply["result"].pop("element", None)
|
||||
geojson = reply["result"].pop("geojson", None)
|
||||
|
||||
|
|
@ -548,18 +550,22 @@ def pin_detail(lat: str, lon: str) -> Response:
|
|||
str=str,
|
||||
element_id=element,
|
||||
geojson=geojson,
|
||||
needs_commons=needs_commons,
|
||||
css=css,
|
||||
**reply,
|
||||
)
|
||||
|
||||
return jsonify(html=html)
|
||||
geojson_data = json.loads(geojson) if geojson else None
|
||||
return jsonify(html=html, geojson=geojson_data)
|
||||
|
||||
|
||||
@app.route("/map")
|
||||
def map_page() -> str:
|
||||
"""Map page."""
|
||||
css = HtmlFormatter().get_style_defs(".highlight")
|
||||
return render_template("map.html", css=css)
|
||||
lat = request.args.get("lat", type=float)
|
||||
lon = request.args.get("lon", type=float)
|
||||
return render_template("map.html", css=css, init_lat=lat, init_lon=lon)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue