Challenge Overview
Welcome to the NASA Search Portal - Implement Charts and Tabs challenge.
Project Overview
NASA needs your help building an enterprise search portal. NASA & Topcoder have completed the design and frontend code for a search interface that is intuitive for beginner to advanced users which allows users to search against NASA intranet as well as public internet data sets.
As part of this project, we are integrating a new search engine (Solr Cloud) which will serve as a backend to the Enterprise Search User Interface and seek to expand the capabilities of the existing application.
Challenge Details
We already have developed the application that integrates the front end with the Solr indexing engine. All features have not been implemented yet and you can check out the existing Deployment Guide to determine which features currently exist.
As part of this challenge, we will implement charts to give the user an idea about the type of results returned and also allow the end user to filter the results based on the domain to which the search results belong to.
Domains
There are three possible domains here:
-
Internet
-
Public Info
-
NASA Intranet
Referencing the prototype, there will be 4 tabs shown in the results page. One for each of the domains and one showing All domains.
Depending on which tab is active, you need to show only those results which belong to the domain / tab selected. Also, depending on the tab selected, you need to update the “Search Results” count shown below the tab.
For the NASA Intranet tab, the user can further filter results by specifying the NASA Center and the Agency in which they are interested. You need to use the "subcollection" attribute present in the results to narrow down the results further.
You can refer to the "subcollection" attribute present in the results to determine which domain the result belongs to.
Most importantly, adhere to the pagination at the bottom of the page and ensure that the performance is not degraded on displaying the results when the user selects the different tabs and when the user selects the NASA center and Agency. This requirements is critical from a user experience perspective.
Charts
The existing application has been integrated with the Solr Indexing engine and you should be able to search the available data set.
After entering a search query, in the results page, the user is presented with a set of results that match the entered query.
In addition to these results, you will display a chart to the user indicating the number of results from each of the three domains mentioned earlier.
You are free to use any popular chart library to achieve this.
The Chart shown should be exactly like the one in the prototype. You need to use a Donut Chart and show the total number of results in the center of the donut. If the number exceeds the width of the donut hole, append a “+” character and make sure that the number does not exceed the width of the hole. For example, if the total results are 5,000,000 and if displaying this exceed the width of the donut hole, you can show 100,000+.
The chart is to be shown only when the “All” tab is selected by the user.
In addition to the chart display, you also need to display the chart legend at the bottom as can be seen in the prototype.
Points to Note
-
You are not building the prototype nor are you creating an application to integrate the Front End Prototype with the Solr Indexing engine. These have already been carried out and you can get the existing code from the links section below.
-
Make sure that the existing functionalities of the application are still working. You can check out the Deployment Guide’s Verification section to know more about the existing features.
-
Update the existing Deployment Guide by providing the Verification Steps for the Tabs and Charts features mentioned in this challenge. Kindly do not provide another Deployment Guide.
-
Your submission should be as modular as possible. It should be easy for NASA to use the features elsewhere in their application with minimal effort - Best is to create it as a plugin or library that can be reused. Develop the Charts inside a directive for example.
Links Provided
-
Front End Prototype - https://github.com/NASA-Tournament-Lab/Search-User-Interface
-
Front End Prototype (Hosted) - https://demo.topcoder.com/OPM/NSP/prototype/index.html
-
Application Integration Front end with Solr - https://github.com/NASA-Tournament-Lab/NTL-NASA-Search-Portal/tree/30051503-Charts/Source%20Code. Note that we have selected the branch for you (30051503-Charts). You will be working off this branch only. Create a fork of the application and checkout the selected branch. Post your github handle in the challenge forum to get access to the repository. You need to enhance this code base. See the Submission Guidelines below.
Third Party Code / Libraries
Open source code is encouraged. All third party code / libraries must be open source and you must include the license in your submission. The license must allow us to modify/re-package the code as necessary. If you have any questions regarding this, please post in the forums. Submissions that include third party code without the proper license information will be disqualified if the third party code is found to be unusable due to license restrictions.
Final Submission Guidelines
-
Create a fork of the existing application and work off the 30051503-Charts branch in YOUR fork.
-
Video is not required.
-
Make sure that you update the Verification section of the Deployment Guide with the new features created as part of this challenge. Do not create new Deployment Guides.
-
Submit the updated application as a zip file in the Submit and Review tool for this challenge.
-
The winning participant will be asked to create a Pull Request with their submission to the 30051503-Charts branch.