getodk / getodk/web-forms

Add intersects XPath function

Open
#572 1 comment 0 reactions 0 assignees View on GitHub
needs discussion needs tech design
Dominant language
TypeScript
Stars
38
Forks
22
PR merge metrics
No merged PRs in 30d

Description

### Description
Following the spec at https://forum.getodk.org/t/odk-xforms-spec-proposal-add-intersects-xpath-function-to-detect-geotrace-shape-intersections/57121

---

### Checklist
- **Does it need UI/UX design?**
- [ ] Yes. Describe the UI/UX requirements or attach a Figma link in the "Design" section.
- [x] No
- **Does it need API design?**
- [ ] Yes. Specify the endpoints, methods, or data structures needed.
- [x] No
- **Does it need design around state flow?**
- [ ] Yes. Outline the state flow requirements.
- [x] No
- **Does it need a test plan?**
- [ ] Yes. Add the test plan as a comment in this task or attach the document.
- [x] No
---

### User Stories
As a form designer
I want to write expressions based on whether segments in a line or polygon intersect
So that I can warn or block end users who try to capture self-intersecting geometries

---

### Additional Notes

This is not a Web Forms priority but wanted it track so we don't forget it! Once the work is complete in Collect it should be a fairly straightforward port.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the linked ODK XForms spec proposal and locating the TypeScript expression/XPath implementation in this web-forms repository. Implement the intersects function for line and polygon segment intersections, then verify its behavior against the proposal and the corresponding Collect functionality before considering the work complete.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend, web-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
43/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.