{"action":"created","issue":{"url":"https://api.github.com/repos/cooperka/collect/issues/1","repository_url":"https://api.github.com/repos/cooperka/collect","labels_url":"https://api.github.com/repos/cooperka/collect/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/cooperka/collect/issues/1/comments","events_url":"https://api.github.com/repos/cooperka/collect/issues/1/events","html_url":"https://github.com/cooperka/collect/pull/1","id":380519876,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMwNjk4MzM4","number":1,"title":"\"Repeat group picker\" UI for FormHierarchy","user":{"login":"cooperka","id":2047062,"node_id":"MDQ6VXNlcjIwNDcwNjI=","avatar_url":"https://avatars2.githubusercontent.com/u/2047062?v=4","gravatar_id":"","url":"https://api.github.com/users/cooperka","html_url":"https://github.com/cooperka","followers_url":"https://api.github.com/users/cooperka/followers","following_url":"https://api.github.com/users/cooperka/following{/other_user}","gists_url":"https://api.github.com/users/cooperka/gists{/gist_id}","starred_url":"https://api.github.com/users/cooperka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cooperka/subscriptions","organizations_url":"https://api.github.com/users/cooperka/orgs","repos_url":"https://api.github.com/users/cooperka/repos","events_url":"https://api.github.com/users/cooperka/events{/privacy}","received_events_url":"https://api.github.com/users/cooperka/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2018-11-14T03:26:14Z","updated_at":"2018-11-19T15:43:06Z","closed_at":null,"author_association":"OWNER","pull_request":{"url":"https://api.github.com/repos/cooperka/collect/pulls/1","html_url":"https://github.com/cooperka/collect/pull/1","diff_url":"https://github.com/cooperka/collect/pull/1.diff","patch_url":"https://github.com/cooperka/collect/pull/1.patch"},"body":"Implements the core behavior described in https://github.com/opendatakit/roadmap/issues/19. The new buttons will be added in a separate upcoming PR.\r\n\r\nBased on branch https://github.com/opendatakit/collect/pull/2730.\r\n\r\n#### What has been done to verify that this works as intended?\r\n\r\nExtensive manual testing with:\r\n- [nested-repeats-complex](https://drive.google.com/open?id=1zOvDEZz6vwQr5IBT91k7MuDMZ-hJDats) (top-level \"friends\" and \"enemies\" groups; nested \"friends/pets\" group)\r\n- [nested-repeats-complex-jr](https://drive.google.com/open?id=1j6LPDAb9keqpinge-onLBtgrqBhEWdAy) (same as above, but \"enemies\" has no `jr-template` tag)\r\n\r\nNavigating in and out of nested repeat groups, adding children, editing names, using the back button, jumping back and forth between the FormEditor and FormHierarchy views.\r\n\r\n#### Why is this the best possible solution? Were any other approaches considered?\r\n\r\nWe considered overhauling `FormHierarchyActivity` to navigate using a more conventional \"back stack\" instead of using `refreshView`, but that requires all method calls to be stateless to avoid corrupting the state of earlier activities, which `FormController` currently doesn't support. This simpler solution works within the existing event-based form parsing framework.\r\n\r\n#### How does this change affect users? Describe intentional changes to behavior and behavior that could have accidentally been affected by code changes. In other words, what are the regression risks?\r\n\r\nThis changes the navigational UI so that instead of expanding a dropdown showing the children of a repeatable group, those children are shown on their own on an intermediary screen (sometimes referred to as the \"picker\"). This intermediary screen will be used in an upcoming PR to display an \"add\" button to add new items to the repeat group. Overall these changes aim to improve the speed and intuitiveness of navigation.\r\n\r\nThe behavior changes should be isolated to FormHierarchyActivity, but this activity interacts with the global state via FormController, so regressions can be avoided by ensuring that the state is not mutated in some new unexpected way.\r\n\r\n#### Do we need any specific form for testing your changes? If so, please attach one.\r\n\r\nLinked above.\r\n\r\n#### Does this change require updates to documentation? If so, please file an issue [here]( https://github.com/opendatakit/docs/issues/new) and include the link below.\r\n\r\nI was unable to find any existing documentation that needs to be changed (namely [here](https://docs.opendatakit.org/collect-filling-forms/#jumping-to-questions) which has screenshots of FormHierarchy but no expandable repeat groups).\r\n\r\n#### Before submitting this PR, please make sure you have:\r\n- [ ] run `./gradlew checkAll` and confirmed all checks still pass OR confirm CircleCI build passes and run `./gradlew connectedDebugAndroidTest` locally.\r\n- [ ] verified that any code or assets from external sources are properly credited in comments and/or in the [about file](https://github.com/opendatakit/collect/blob/master/collect_app/src/main/assets/open_source_licenses.html).\r\n- [ ] verified that any new UI elements use theme colors. [UI Components Style guidelines](https://github.com/opendatakit/collect/blob/master/CONTRIBUTING.md#ui-components-style-guidelines)\r\n"},"comment":{"url":"https://api.github.com/repos/cooperka/collect/issues/comments/439937472","html_url":"https://github.com/cooperka/collect/pull/1#issuecomment-439937472","issue_url":"https://api.github.com/repos/cooperka/collect/issues/1","id":439937472,"node_id":"MDEyOklzc3VlQ29tbWVudDQzOTkzNzQ3Mg==","user":{"login":"smoyth","id":702320,"node_id":"MDQ6VXNlcjcwMjMyMA==","avatar_url":"https://avatars1.githubusercontent.com/u/702320?v=4","gravatar_id":"","url":"https://api.github.com/users/smoyth","html_url":"https://github.com/smoyth","followers_url":"https://api.github.com/users/smoyth/followers","following_url":"https://api.github.com/users/smoyth/following{/other_user}","gists_url":"https://api.github.com/users/smoyth/gists{/gist_id}","starred_url":"https://api.github.com/users/smoyth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smoyth/subscriptions","organizations_url":"https://api.github.com/users/smoyth/orgs","repos_url":"https://api.github.com/users/smoyth/repos","events_url":"https://api.github.com/users/smoyth/events{/privacy}","received_events_url":"https://api.github.com/users/smoyth/received_events","type":"User","site_admin":false},"created_at":"2018-11-19T15:43:06Z","updated_at":"2018-11-19T15:43:06Z","author_association":"NONE","body":"Erm I remember now you already filled out all the manual testing stuff, so go for it!"}}
{"actor":{"display_login":"smoyth"}}