Skip to content

Commit 6e128ab

Browse files
latin-pandaspwoodcock
authored andcommittedMar 12, 2025
feat(getodk#249): Adds default geopoint question type (getodk#300)
- Introduces a demo form for geopoint question type: geopoint.xml. - Includes the new geopoint notes in the demo form 2-all-possible-notes.xml. - Implements new scenario tests for geopoint input in bind-types.test.ts. - Adds geopoint input and geopoint formatted value components to the Web Forms client. - Registers geopoint support in both the input node and note node. - Creates a geopoint codec for encoding/decoding geopoint data. - Introduces a "node options" concept for node attributes, integrated into the input control.
1 parent 9d1ae8f commit 6e128ab

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1615
-24
lines changed
 

‎.changeset/violet-chefs-dress.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'@getodk/xforms-engine': minor
3+
'@getodk/web-forms': minor
4+
'@getodk/scenario': minor
5+
'@getodk/common': patch
6+
---
7+
8+
- Support for geopoint questions with no appearance
9+
- Support for geopoint notes
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?xml version="1.0"?>
2+
<h:html xmlns="http://www.w3.org/2002/xforms" xmlns:h="http://www.w3.org/1999/xhtml"
3+
xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4+
xmlns:jr="http://openrosa.org/javarosa" xmlns:orx="http://openrosa.org/xforms"
5+
xmlns:odk="http://www.opendatakit.org/xforms">
6+
<h:head>
7+
<h:title>Geopoint</h:title>
8+
<model odk:xforms-version="1.0.0">
9+
<itext>
10+
<translation lang="English (en)">
11+
<text id="/data/intro:label">
12+
<value>The browser will display a permission prompt to allow or block location access. Click 'Allow' to enable location services. If dismissed, the prompt may not appear again unless permissions are reset in browser settings.</value>
13+
</text>
14+
<text id="/data/location_no_autosave:label">
15+
<value>Where are you filling out the survey?</value>
16+
</text>
17+
<text id="/data/location_with_big_threshold:label">
18+
<value>Where are you within the target area?</value>
19+
</text>
20+
<text id="/data/location_with_default_attributes:label">
21+
<value>Where are you within the default threshold area?</value>
22+
</text>
23+
<text id="/data/location_with_unacceptable_accuracy_only:label">
24+
<value>Try to provide a more specific location</value>
25+
</text>
26+
</translation>
27+
<translation lang="French (fr)">
28+
<text id="/data/intro:label">
29+
<value>Le navigateur affichera une demande d'autorisation pour permettre ou bloquer l'accès à la localisation. Cliquez sur 'Autoriser' pour activer les services de localisation. Si vous ignorez la demande, elle pourrait ne plus réapparaître, sauf si vous réinitialisez les autorisations dans les paramètres du navigateur.</value>
30+
</text>
31+
<text id="/data/location_no_autosave:label">
32+
<value>Où remplissez-vous le sondage?</value>
33+
</text>
34+
<text id="/data/location_with_big_threshold:label">
35+
<value>Où êtes-vous dans la zone cible?</value>
36+
</text>
37+
<text id="/data/location_with_default_attributes:label">
38+
<value>Où êtes-vous dans la zone de seuil par défaut?</value>
39+
</text>
40+
<text id="/data/location_with_unacceptable_accuracy_only:label">
41+
<value>Essayez de fournir un emplacement plus précis</value>
42+
</text>
43+
</translation>
44+
</itext>
45+
<instance>
46+
<data id="1_geopoint" version="2025020401">
47+
<intro/>
48+
<location_no_autosave/>
49+
<location_with_big_threshold/>
50+
<location_with_default_attributes/>
51+
<location_with_unacceptable_accuracy_only/>
52+
<meta>
53+
<instanceID/>
54+
</meta>
55+
</data>
56+
</instance>
57+
<bind nodeset="/data/intro" readonly="true()" type="string"/>
58+
<bind nodeset="/data/location_no_autosave" type="geopoint"/>
59+
<bind nodeset="/data/location_with_big_threshold" type="geopoint"/>
60+
<bind nodeset="/data/location_with_default_attributes" type="geopoint" required="true()"/>
61+
<bind nodeset="/data/location_with_unacceptable_accuracy_only" type="geopoint"/>
62+
<bind nodeset="/data/meta/instanceID" type="string" readonly="true()" jr:preload="uid"/>
63+
</model>
64+
</h:head>
65+
<h:body>
66+
<input ref="/data/intro">
67+
<label ref="jr:itext('/data/intro:label')"/>
68+
</input>
69+
<input accuracyThreshold="0" ref="/data/location_no_autosave">
70+
<label ref="jr:itext('/data/location_no_autosave:label')"/>
71+
<hint>(No autosave)</hint>
72+
</input>
73+
<input accuracyThreshold="100" unacceptableAccuracyThreshold="400" ref="/data/location_with_big_threshold">
74+
<label ref="jr:itext('/data/location_with_big_threshold:label')"/>
75+
<hint>(Acceptable accuracy: 100m, unacceptable: 500m)</hint>
76+
</input>
77+
<input ref="/data/location_with_default_attributes">
78+
<label ref="jr:itext('/data/location_with_default_attributes:label')"/>
79+
<hint>(Default acceptable accuracy: 5m, unacceptable: 100m)</hint>
80+
</input>
81+
<input unacceptableAccuracyThreshold="7" ref="/data/location_with_unacceptable_accuracy_only">
82+
<label ref="jr:itext('/data/location_with_unacceptable_accuracy_only:label')"/>
83+
<hint>(Unacceptable accuracy: 7m)</hint>
84+
</input>
85+
</h:body>
86+
</h:html>

0 commit comments

Comments
 (0)