Skip to content

Commit

Permalink
add enketo docs and references
Browse files Browse the repository at this point in the history
  • Loading branch information
cooperka committed Jul 5, 2024
1 parent 2a69963 commit 3db9d67
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
2 changes: 2 additions & 0 deletions docs/development-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@ so ODK's #collect-code Slack channel can be a good place to get help with error

### Upgrading Enketo

See [here](lib/enketo-transformer-service/README.md) for a birds-eye overview of Enketo in NEMO.

Enketo uses jQuery under the hood, and it's important to keep library versions consistent so there aren't conflicts.
To upgrade our version of Enketo:
1. Check their [changelog](https://github.com/enketo/enketo-core/blob/master/CHANGELOG.md)
Expand Down
19 changes: 19 additions & 0 deletions lib/enketo-transformer-service/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Enketo transformer service for NEMO

## Bird's eye overview

resources:
- [enketo-core github](https://github.com/enketo/enketo/tree/main/packages/enketo-core)
- [enketo-transformer github](https://github.com/enketo/enketo/blob/main/packages/enketo-transformer)

architecture/flow:
- nemo talks to `lib/enketo-transformer-service/index.js` (separate node app that runs enketo-transformer) to convert our form XML into a JSON object we're able to send to enketo
- nemo renders a `<div id="enketo">` in `enketo_form.html.erb`
- nemo injects 2 variables into JS via a `<script>` tag:
- `window.ENKETO_MODEL_STR` is the form XML from enketo-transformer-service
- `window.ENKETO_INSTANCE_STR` is the optional response XML (when editing)
- enketo injects itself into `document.querySelector('#enketo form')` via jQuery in `packs/enketo.js`
- enketo loads the two variables set above and renders the form
- user types in info and hits submit
- enketo submits XML to nemo's existing ODK `/submission` (`responses#create`) route
- on edit, nemo saves the edited XML to `modified_odk_xml` attachment so as to preserve the original `odk_xml` as required by some orgs

0 comments on commit 3db9d67

Please sign in to comment.