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

LocationPicker für YForm, rex_form und Module #171

Open
wants to merge 29 commits into
base: main
Choose a base branch
from

Conversation

christophboecker
Copy link
Member

@christophboecker christophboecker commented Feb 9, 2025

Der PR erweitert Geolocation um die Koordinaten-Eingabe für

  • YForm-Formulare (class rex_yform_value_geolocation_geopicker extends rex_yform_value_abstract plus YFragment)
  • RexForm-Formulare (class PickerElement extends rex_form_element)
  • in Modulen (class PickerWidget extends rex_fragment).
  • In Metafeldern

Auf der PHP-Seite bildet die auf rex_fragmentaufsetzende Klasse PickerWidget die Schnittstelle zu den beiden Fragmenten geocoder.php und picker.php. PickerWidget stellt eine spezifischeres Interfase bezüglich der Getter/Setter bereit als es mit getVar/setVar möglich ist. Picker-Widget wird intern auch von YForm-Value und vom RexForm-Element benutzt.

JS-seitig wird auf der Karte ein spezifisches Tool bereitgestellt (locationMarker) und Cutsom-HTML für das Widget.

YForm-Value/RexForm-Element ermöglichen die Speicherung der Koordinate entweder im eigenen Feld oder in externen Feldern außerhalb des Values( je eines für Längengrad und Breitengrad.
Die Validierung (Wertebereich -90..90 bzw. -180..180) erfolgt durch das Value auch für die externen Felder. Optionale Prüfung auf "nicht leer" bzw. "required" ist ebenfalls möglich. Andere Validierungen sollten nicht eingebaut werden und sind m.E. auch unnötig.

Das YForm-Value bietet die Anzeige der Koordinaten in verschiedenen Formaten in der Liste als auch eine Umkreisuche. Externe Felder sollten in der Liste und der Suche ausgeblendet werden, denn die Anzeige/Suche übernimmt auch für die externen Felder rex_yform_value_geolocation_geopicker.

Die Koordinatensuche mit Adressdaten (Geo-Coding) erfolgt derzeit ausschließlich über Nominatiom. Als Schnittstelle zum Abruf der GeoCoder-Daten dient die Klasse GeoCoder. Sie simuliert derzeit analog zu Mapset bzw. Layer den Abruf aus einer Datenbank. => Alternative Geo-Coder kann man später einfach nachrüsten.

Proxy! Der eigentliche Datenabruf beim GeoCoder erfolgt vom Server aus. Der Client ruft die Daten vom Server ab, der Server beim Anbieter.

Offene Punkte:

  • Diverse Fehlermeldungen müssen noch ausformuliert und ggf. nach .lang übertragen werden. ✅
  • Exception-Klassen müssen noch überprüft, ggf. neue eingerichtet werden (z.B. für Entwickler-Fehler) ✅
  • Ohne Handbuch ist es schwierig. Das YForm-Value versteht man auch so ganz gut, aber der Rest wird schwierig. ✅
  • Verlagerung von Aufgaben aus dem Custom-HTML in das LocationMarker-Tool. ✅
  • Allgemein die Benamung und die Verzeichnisstruktur überprüfen bzw. rund feilen. ✅
  • Fehlermeldungen am Feld bzw. über dem Formular (Yform; bei RexForm gibt es die Unterscheidung nicht) ✅
  • Installationsscript anpassen ✅
  • Senden und Empfangen der GeoCoder-Anfrage im JS robuster gestalten ✅
  • Nach dem Validieren und bei einem festgestellten Fehler, sind tw. beide Eingabefelder leer. Prpfen und beheben ✅
  • LocationPicker in Metafeldern ✅
  • Finale Tests ✅

closes #170

@skerbis
Copy link
Member

skerbis commented Feb 11, 2025

WOW das sieht nice aus

@christophboecker
Copy link
Member Author

Hm, Metafeld wäre noch nice.

@skerbis
Copy link
Member

skerbis commented Feb 11, 2025

bei meinem Picker habe ich es ja einfach über die attribute gelöst, kein extra value

@christophboecker
Copy link
Member Author

grafik

@skerbis
Copy link
Member

skerbis commented Feb 11, 2025

jetzt braucht es yform_geo_osm nicht mehr

@christophboecker
Copy link
Member Author

christophboecker commented Feb 11, 2025

Das sehe ich anders .... yform_geo_osm ist deutlich schlanker. Bei Geolocation ist manches schon sehr "hinter der Kulissen"; nen ziemliches Dickschiff, bei dem auch ich mitunter kaum durchblicke

@christophboecker christophboecker changed the title WiP: LocationPicker für YForm, rex_form und Module LocationPicker für YForm, rex_form und Module Feb 16, 2025
@christophboecker
Copy link
Member Author

Das WiP habe ich aus dem Titel genommen. Der PR ist aus meiner Sicht final. Mehr mache ich erstmal nicht. Außer Fehler zu korrigieren, die nach hoffentlich intensiven Tests in nur geringen Zahl eintrudeln. have fun.

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

Successfully merging this pull request may close these issues.

Location-Picker / YForm-Value
2 participants