Demonstration 2a: Feature-Bearbeitung
Diese Demonstration erweitert die Plugin-Komponente in qfield_vegetation_monitoring/demo2_selection. Wir haben dem Projekt eine neue GeoPackage-Ebene namens „entries" hinzugefügt. Sie hat keine Geometrie und enthält eine völlig generische Liste von Attributen, zusammen mit einem Zeitstempel-Attribut, einem Primärschlüssel und einem Fremdschlüssel zur Plots-Ebene – dies ist die plotId, die vom pointHandler im Hauptmodul gesendet wird. Die Plugin-Komponente enthält nun ein sehr einfaches Eintragsauswahlmenü, eine Schaltfläche für neue Einträge, ein einfaches Formular und eine Speicherschaltfläche. Wir werden dieses einfache Formular nutzen, um grundlegende Feature-Bearbeitungsoperationen zu demonstrieren.
Dieses Formular und die Entries-Ebene sind nicht Teil des endgültigen Plugins. Dies ist ein Umweg zu Demonstrationszwecken. Es wird Ihnen helfen, den komplizierteren Code in den restlichen Demonstrationen zu verstehen. Dies ist auch die letzte Demonstration, die im Workshop behandelt wird. Die verbleibenden Demo-Projekte stehen Ihnen für eine spätere Lektüre zur Verfügung.
Was wir lernen werden
- Wie man eine Model-View-Controller-Architektur in QML implementiert (und warum es sich lohnt)
- Wie man einen Repeater verwendet, um UI-Elemente dynamisch aus einem Modell zu erstellen
- Wie man eine Zeile über die QField-Schnittstelle hinzufügt
- Wie man eine Zeile über die QField-Schnittstelle aktualisiert
- Wie man eine Zeile über die QField-Schnittstelle löscht
Was macht es?
- Wenn der Benutzer auf die Leinwand klickt, wird die Plugin-Komponente mit der plotId geladen.
- Wenn eine plotId empfangen wird, überprüft der Controller der Plugin-Komponente, ob ein Eintrag in der entries-Ebene mit einem Fremdschlüssel existiert, der mit der plotId übereinstimmt. Diese werden in das Auswahlmenü geladen.
- Wenn der Benutzer einen Eintrag auswählt, wird das Formular mit den Werten des Eintrags gefüllt.
- Wenn der Benutzer auf Neueintrag klickt, fügt der Controller eine neue, leere Eintragszeile zur entries-Ebene hinzu.
- Es wird eine UUID für den Primärschlüssel f_uid festgelegt
- Das aktuelle Datum wird für das log_date-Attribut festgelegt
- Die plotId wird für das plot_id-Attribut als Fremdschlüssel für die plot-Ebene festgelegt.
- Ein Standardname wird festgelegt, damit der Eintrag im Auswahlmenü identifizierbar ist.
- Nachdem der Eintrag hinzugefügt wurde, wird eine Aktualisierung des Auswahlmenüs und des Formulars ausgelöst.
- Wenn der Benutzer einen Wert aktualisiert, wird die Aktualisierung im Feature-Container des Controllers gespeichert.
- Wenn der Benutzer auf die Speichern-Schaltfläche klickt, speichert der Controller die Änderungen in der entries-Ebene.
Einrichtung
- Erstellen Sie ein neues Projektverzeichnis: ${ROOT}/qfield_project_demo_2a
- Kopieren Sie das gesamte Demo-Verzeichnis ${ROOT}/qfield_vegetation_monitoring/demo2a_crud nach ${ROOT}/qfield_project_demo_2a
- Öffnen Sie das Projekt in QGIS, wenn Sie die Struktur des entries-Layers sehen möchten. Dieser ist im Projekt als Layer ohne Geometrie enthalten.
- Führen Sie QField von der Befehlszeile aus, um das Projekt direkt als lokales Projekt zu öffnen.
"C:\Program Files\QField\usr\bin\qfield.exe" ${ROOT}\qfield_vegetation_monitoring\demo2a_crud\demo2a_crud.qgs