# RelianceHMO Frontend Developer Assessment Grading ## Candidate Info: **Name**: Temitope Ayodele ## Final Score 13 / 120 ( 10.83% ) ## Score Breakdown |**Question** | **Expections** | **Score**| |----|------------------------------------------------------|---| | Q1 | Search works for query strings | 0 | | | Catch no result | 0 | | | Case sensitive | 0 | | | Works for arrays | 0 | | | | | | Q2 | Filter Works | 5 | | | Case insensitive | 0 | | | Reset when search is empty / provides a clear button | 0 | | | Updates UI on keypress (Reactive search) | 5 | | | Debounce on keypress | 0 | | | Show loader while filtering | 0 | | | | | | Q3 | Search Works | 0 | | | Debounce on keypress | 0 | | | Shows "no result" when search returns nothing. | 0 | | | Clear search when input is empty | 0 | | | Dropdown Items should be clickable | 0 | | | UI works appropriately | 0 | | | | | | Q4 | Successful Submission | 0 | | | Successful Image Upload | 0 | | | Render uploaded image in placeholder | 0 | | | Show loader while submitting | 0 | | | Update UI after submission | 0 | | | | | | Q5 | Maintain Layout on new route | 0 | | | Add onClick to dropdown and provider grid. | 3 | | | Style Page :D | 0 | --- ## Expectations / Comments: ### Task 1 : - Seems like you didn't understand the question properly. Your solution is supposed to search through the provided JSON, using the query string or "path" given, and return the value at the destination. So the first step is to split the path by its delimeter (i.e ".") and walk through each sub-path to see if a value is present. Here's one way this can be done: ``` const jsonGet = (obj, string) => { return string.split('.').reduce((t,k)=>{ return t[k] ? t[k] : ''; },obj) } ``` ### Task 2: - Lost points cause filter only works for absolute equality. Ideally it should've been case insensitive , and shouldn't use absolute equality i.e It should've used `string.contains()` or `string.indexOf()`. - Filter should've been debounced for performance reasons i.e a delay should've been observed before performing filter, instead of performing it on every keypress. ### Task 3: - Search should've been debounced for performance reasons i.e a delay should've been observed, to gather a considerable amount of input first, before performing search, instead of performing it on every keypress. This helps in reducing the amount of times a request is send to the server. - Lost points for not styling the dropdown appropriately. P.s styles were already available in App.scss. ### Task 4: - Lost points for not sizing the image after successul upload. - Lost points for not showing any submission indicator i.e a loading screen. Seems like you had plans to though. ### Task 5: - Lost points for not navigation to new route on clicking the autocomplete dropdown.