Challenge Overview
The goal of this challenge is to improve the Search UI and Functionality.
Challenge Requirements
-
Provided in challenge forums a JQuery Search Filtering Plugin. You will use it in the current search bar.
-
The plugin search bar look and feel should remain as currently displayed.
-
Remove the categories drop down list.
-
The plugin suggestion drop down styling should match the Myyna web application look and feel.
-
The tag should use the current Myyna web application colors.
-
-
When search bar get focused, then getKeyList function is invoked to get list of available keys, the key suggestions should be :
-
The key suggestion list should be :
-
Person
-
name
-
username
-
-
Pin
-
pin type
-
description
-
time
-
creator
-
-
Board
-
name
-
description
-
creator
-
time
-
-
Category
-
name
-
description
-
creator
-
time
-
-
PDS Type
-
LROC
-
PPI
-
-
PDS Metadata
-
List all metadata of both LROC and PPI.
-
-
-
keyword searching
-
User can type free text, when hit search it will become ‘search : <text>’, which indicate a keyword searching.
-
The keyword searching will use the Mongo text search feature.
-
-
-
Create a new backend route for key/value suggestions.
-
Create a new endpoint to get list of keys
-
It’s up to you to hardcode the key list suggestions in JS frontend or pass it from backend.
-
-
Create a new endpoint to get list of values of the selected key
-
The logic will be retrieving the available values from corresponding collection records from mongodb.
-
-
-
Update search.js backend logic as follow :
-
The search tags should be passed as key=value query strings.
-
Update the search backend logic to use the key/value query strings to construct the criteria for Collection.Find(). Each key will correspond to specific field/metadata in the database, if the key is keyword search “search={text}” then you will use $text for mongo searching.
-
It should include pagination parameters.
-
Pagination should be enforced, the page offset is 0 and page size should be 200 by default.
-
-
-
The page should not submit the page to perform searching, it should be ajax searching.
-
When user make a search in other pages (not in /search) the user should be taken to /search page then ajax call will be done to get json results. If user already in /search page we do ajax call right away.
-
-
The search result page will display same results with following notes :
-
Add new tab (people) that will render people matches the search.
-
���The widgets will use user photo as image, there will be follow button, icon for number of followers, and icon for number of pins made by user.
-
The tab will work like other tabs.
-
-
PDS tab will render both PPI and LROC pins results.
-
General Notes
-
Update readme with deployment and configuration information.
-
All UI changes should be responsive for tablet and mobile views.
-
Update data generator if needed.
-
data generator include the pds data generators as well.
-
Gitlab Access
-
We have cloned the Myyna github and placed it in gitlab, user the gitlab repository as basis for your work. https://gitlab.com/nasa-pds-storyboard/storyboard-frontend
-
You need to be logged in to view the repository.
-
The app requires nodejs 0.8.28, and mongo 2.6
-
Final Submission Guidelines
Deliverable
-
Patch file of changes.
-
Updated readme file with deployment and verification steps.
-
Text file for reviewers.