Step 1
- Create a
users
variable and assign it an empty array literal. - Create a
displaySelectedUser
arrow function - Create a
letsCalculateBMI
arrow function - Create a
powerupTheUI
arrow function - Within the
startApp
function, invoke thepowerupTheUI
function, followed by thefetchAndDisplayUsers
function.
Step 2
In the powerupTheUI
function, and using only the DOM Selector API :
- Set
displaySelectedUser
as achange
event listener for the SELECT UI element. - Set
letsCalculateBMI
as theclick
event listener for the#oracle
BUTTON
Step 3
The fetchAndDisplayUsers
tries to call a displayUsers
function that does not exist. Lets fix that!
- Create a
displayUsers
arrow function just above thefetchAndDisplayUsers
function. It should take ausers
parameter - It should use the array
.forEach
function to iterate overusers
and populate the SELECT UI element with OPTION elements. Each OPTION should have its value set to theid
of a given user, while its display text should be set to the user’sname
- We can see a sample user in our app; a certain Charles Odili from Nigeria! Add a new user object (e.g representing yourself) to the
users
array infetchAndDisplayUsers
. Feel free to not use real data values, but ensure the id is different from that of the existing user.
Step 4
When we select the sample user from the list, nothing happens. Let’s fix that!
- Create a
getSelectedUser
arrow function abovedisplaySelectedUser
. It should take auserId
parameter and use the Array.find
function on theusers
collection to find and return the selected user object . Your.find
call should take an inline arrow function and de-structure its parameter to obtain theid
property.
Step 5
Recall that the
displaySelectedUser
function is called as an event handler. This means it will receive anevent
object when the DOM event is triggered.
- Update the
displaySelectedUser
function and de-structure the expectedevent
parameter to just thetarget
property. - Next,
displaySelectedUser
should callgetSelectedUser
with a certain property oftarget
that represents the selected value of the SELECT element from thechange
event. Feel free to do some Googling if you dont know the property in question. Finally, assign the result of your.getSelectedUser
call to auser
variable. - Next, use
Object.keys(..)
to get the collection of properties ofuser
. Assign it to aproperties
variable. - Iterate over
properties
with the array.forEach
function, and display the properties in the UI. *Hint: * a given property like Age has a corresponding SPAN element with adata-age-value
attribute. You can use ES6 template strings to build the query selector targeting the SPAN for that property, and then query the DOM with it. You also want to make sure you only update the UI if the DOM query was successful. Good luck!