Is this way of filtering possible?

Hi there,

After getting to know the UI Builder to create a UI and represen data (thanks to this great community) my next step is (complex) filtering.

In my app I have a list of items. Let’s say Activities. Each activity consists of a list of tasks.

What I want to achieve is the following

  • At the left of the screen I have a repeating group with all the activities. Each record has a show/hide icon. Default everything is shown.
  • in the other part of the screen I want the total set of tasks of al the Activities that are shown.
  • When I hide an Activity I also want to directly filter my task list by excluding the tasks of the hidden activity
  • When a activity is set to show again, I want the refresh the task list again by including all the tasks of that activity
  • This filtering functionality should be applicable to each distinct activity record.

I am thinking about using custom states for each activity (shown= true/fals). Then I want to search tasks where parent activity has stat shown is true

But I don’t know (if possible) how to make a custom state dynamically specific for each distinct activity record. And then how to filter it exactly.

Can someone give some hints or is there a example available that mimics this scenario?

Thanks!

Hi @FJP,

Lots of ways to do this.

One option:

On the left, you can have a repeating group of Activities. Hiding/showing an activity would update a yes/no field on the Activity (or it could update a list field on the User. i.e. “List of Hidden Activities”).

If your repeating group is is set to only display “shown” activities, then your tasks can now use that list as a filter. The repeating group of tasks would show a Search for Tasks where Activity is in Repeating Group Activities List of Activities. This is assuming you have an Activity field under the Task data type to link the records.

Another option:

When the page is loaded, set a custom state. This can be set to the page, name = “shown activities” type = Activity, List = checked. The value would be your full list of Activities (whether it’s a Search of Activities or some other list value).

Showing/hiding would update the custom state’s list. For example, to show, State value = state value :plus item current cell’s activity. To hide, State value = state value :minus item current cell’s activity

Again, the RG of tasks on the right would use the custom state for filtering. Source of the RG could be Search for Tasks where Activity is in Custom State value

Don’t do a separate custom state for each activity. You can’t do that dynamically, and you don’t need to. Just have a single list that gets updated as you show/hide each one. Or, if you want to have a flag for each activity, use a yes/no field on the Activity data type so that it’s a part of the record.

This option would allow the RG on the left to be a separate list from the custom state list if needed.

There are many things that could dictate how you go about it:

  • Data structure/relationship of Task and Activity (how you set up the types and fields)
  • The source of the lists: is it a general Search of your database, is it pulling from a list field in the database (e.g. User’s List of Activities), etc.
  • If you want the hidden/shown statuses to be temporary or permanent. Go with saving the status to database if you need it saved. Go with a custom state if it’s just for the current page session. There might be use cases where things overlap though.

Hope this helps!


Gaby at Coaching No Code Apps (formerly Coaching Bubble)

Courses & Products, Tutorials, Private Coaching, and High-level Development

Start Learning Today :mortar_board:

@romanmg thanks alot for your detailed reply. Very insightful.

Update: After reading your answer again, my question below is answered. I will try things out

I am afraid I can’t use the save to DB option. Because when 2 users are looking at this page, User A could interfere the view of User B and vice versa. Or am I wrong?

So I think I would go for the custom state list. Is this option user/session independent?

Hi @romanmg

Update: Nevermind question below. Fixed it. Will share my implementation later.

Filtering is working, but I have an issue with my data structure.

First I created activities (activity1 and activity2). Then I create a task (task1), using a drop down with created activities I can link task1 to an activity2. But when I look at the data of activity2, there is no data in the the property Tasks (which is a list of Tasks). How can I complete this link between both data elements?

Hi @FJP,

If your data structure is:

Activity

  • Activity Name
  • List of Tasks
  • Etc.

Task

  • Task Name
  • Activity
  • Etc.

Then you need a workflow to update both sides:

  1. Make a change to Activity > List of Tasks add Selected Task
  2. Make a change to Task > Activity = Selected Activity

This tutorial may help: https://www.youtube.com/watch?v=4BB4mZp_C3Q