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:
- Add Locale to the repeat. This allows me to reference it as a list
- Add a name to the DOB sate selector to calculate the age
- Calculate the age of each person using the satetimediff function (also, some date time parsing)
- Filter the list for people who are male and above the age of 21
- 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"])}