Listing names from repeating sections

Hi

I have created a repeating snippet as follows:

{formtext: name=number; default=0}

{formtext: name=number; default=0}

{repeat: {=number}}
First Name: {formtext: name=first_name}
Last Name: {formtext: name=last_name}
Gender: {formmenu: Male; Female; Other; name=gender}
DOB: {formdate: DD MMMM YYYY}
{endrepeat}

How do I return just the first names of people who are male and over the age of 21??

Hi @michael1
See the snippet below.
What I've done:

  1. Add Locale to the repeat. This allows me to reference it as a list
  2. Add a name to the DOB sate selector to calculate the age
  3. Calculate the age of each person using the satetimediff function (also, some date time parsing)
  4. Filter the list for people who are male and above the age of 21
  5. Map the filtered list to only show the first name

Please let me know if you have any questions.

{formtext: name=number; default=0}
{repeat: {=number}; locals=person}
First Name: {formtext: name=first_name}
Last Name: {formtext: name=last_name}
Gender: {formmenu: Male; Female; Other; name=gender}
DOB: {formdate: DD MMMM YYYY;name=dob}
{age=datetimediff(datetimeparse(dob,"DD MMMM YYYY"), {time: YYYY-MM-DD}, "Y")}
{endrepeat}
{=map(filter(person, (x)->x["gender"]="Male" AND x["age"]>21), (x)->x["first_name"])}