Challenge Overview
INTRODUCTION
This is the fifth in a series of iOS challenges to develop a mobile front end for submitting issues to a JIRA ticketing system. This challenge will focus on updating the JIRA REST API library project to include additional API calls, as well as configuring the app to display fields on multiple screens.
REQUIREMENTS
You’ll be updating Xcode projects for both the main app and the JIRA REST API library. Develop the main app while keeping in mind the final UI will need to be applied to these screens. Include the following screens and functionality in your submission.
JIRA Library Updates
Update the JIRA REST API library to include the calls to the following endpoints.
/rest/api/2/screens/{screenId}/tabs
This will return a list of tabs configured for the specified screen. Input parameters need to include screenId.
/rest/api/2/screens/{screenId}/tabs/{tabId}/fields
This will return a list of fields configured for the specified tab on the specified screen. Input parameters need to include screenId and tabId.
Multiple Field Screens
Currently the main app displays all fields for creating a new issue on a single screen. Update the app to support multiple screens with fields according to the results of the API calls described above by following the steps below. Navigation between screens should be handled by a "Next" button. If there are required fields on the current screen, do not allow the user to navigate to the next screen until they are completed.
Use the API library to do a search for issues with issuetype = Configuration. This will return an issue with a JSON string in the description field that contains the screenId value you’ll require in subsequent API calls. It will also include the id of the issue type to assign when posting a new issue. There are two projects set up in the JIRA instance - each one has a unique Configuration issue and screenId located here and here.
Create a separate screen to display fields based on the number of tabs retrieved from the /screens/{screenId}/tabs endpoint. For each of these screens, display the fields specified on each of the tabs as retrieved from the /screens/{screenId}/tabs{tabId}/fields endpoint. The field order returned from this call is the same order they should be placed on screen in the app.
You’ll need to match up the field ids to the fields retrieved from the /issue/createmeta call for configuring and displaying them on screen. Functionality for creating the fields was completed in previous challenges and is already included in the project.
SETUP
-- Use this form to add yourself to the Hercules Werbung team on Gitlab if you are not already a member
-- Once added to the team, fork the repository if you haven’t already and work off of the PW_05 branch
-- Add harrywynn and lazybaer as members of your forked repository with Reporter access
-- View the README in the repository for API access specifics and resources
Final Submission Guidelines
-- Updated Xcode 6.4 workspaces/projects with all screens and functionality as outlined above
-- Code must compile against iOS SDK 8.4 with a deployment target of iOS 8.0
-- Develop for iPhone size classes, with orientation locked to portrait, iPad is not currently in scope
-- Use storyboards for all views and navigation
-- All code should be written in Swift
-- Include unit test coverage for challenge functionality
-- Upload your source project as a zip
-- Include your Gitlab username and URL of your forked repository in your documentation
-- User with the winning submission will be required to do a merge request in Gitlab