kpi is the (frontend) server for KoboToolbox. It includes an API for users to access data and manage their forms, question library, sharing settings, create reports, and export data.
[ ] If you've added code that should be tested, add tests
[ ] If you've changed APIs, update (or create!) the documentation
[x] Ensure the tests pass
[x] Make sure that your code lints and that you've followed our coding style
[x] Write a title and, if necessary, a description of your work suitable for publishing in our release notes
[x] Mention any related issues in this repository (as #ISSUE) and in other repositories (as kobotoolbox/other#ISSUE)
[ ] Open an issue in the docs if there are UI/UX changes
Description
Fixes app crash in Single Submission modal for a particular mix of repeat groups, XLSForm pulldata function and matrix type question. Also now point data (for types geopoint, geotrace, and geoshape) will be displayed as compact table in Single Submission modal.
Notes
I wasn't able to find a reproduction for this unfortunately. There are some details in Notion task that can help understand this more. The crash was happening, because the code was expecting an object, and was accessing a prop (obj[prop]), but was getting a null instead. The code in which the bug happens is already in TypeScript, but unfortunately we had any in three places in SubmissionResponse, and thus the bug could happen.
I thought I've introduced a bug in rendering point data, but it turned out the UI was already broken for any response with more than 3 points. I've improved it by rendering point data as table :)
Checklist
Description
Fixes app crash in Single Submission modal for a particular mix of repeat groups, XLSForm pulldata function and matrix type question. Also now point data (for types
geopoint
,geotrace
, andgeoshape
) will be displayed as compact table in Single Submission modal.Notes
I wasn't able to find a reproduction for this unfortunately. There are some details in Notion task that can help understand this more. The crash was happening, because the code was expecting an object, and was accessing a prop (
obj[prop]
), but was getting anull
instead. The code in which the bug happens is already in TypeScript, but unfortunately we hadany
in three places inSubmissionResponse
, and thus the bug could happen.I thought I've introduced a bug in rendering point data, but it turned out the UI was already broken for any response with more than 3 points. I've improved it by rendering point data as table :)
Point data before (screenshot)
Point data after (screenshot)
Related issues
Related to #4942 as it touches the same area