Our app is an internal portal for about 5,000 users with an Airtable backend. These users must complete training classes periodically.
There are five distinct groups of users. And several of the required training classes must be completed by more than one user group.
Right now, we have a complex Training page in the app with one list details block for each user group that shows their training requirements. We tried having a single block for all users, but it confused them by showing requirements that don’t apply.
We considered five different pages but can’t figure out how to seamlessly show the right training page to the right user group. Plus there is the problem of so much duplicated content because of the overlap in requirements.
This is a nightmare to maintain, essentially having five of everything with lots of duplication. Not to mention we completely blow up the Airtable API throttling.
Oh, and no custom code.
Any creative thoughts out there?
The easiest way would be having 5 list details block on one page. What you need to do is to apply the correct condition so that each user group will see the right block with the right content.
Just make sure they are connected to the right table.
Thanks, @Suzie, but I already have those five list details blocks on the training page. Let me explain a bit more.
The five list details blocks all look the same: they show check marks if a requirement has been met. The user then needs a way to get to the training they need to complete. It sure would be nice if Softr had a way to dynamically select which Airtable fields are shown in a list details block, but since they don’t, I have to have the five different blocks.
I considered action buttons in the list details blocks. No. Some user groups require up to seven possible trainings. It is possible to add seven action buttons, but Softr displays “…” for any buttons beyond two. That’s a design choice we will not make. I’ve heard you can display more with custom code, but our specifications prohibit that.
What about adding a single action button that goes to a page that shows all the classes? Then I’m right back to where I started, with loads of duplication.
I’d love to hear any other ideas you may have!
Some user groups require up to seven possible trainings
Do you have a total of seven trainings and your five user groups take the required number (that may be seven or less trainings), or do you have more than seven trainings (and some trainings are only for one user group etc.)?
Everyone (all five user groups) takes one core training. The other groups have various combinations of the other trainings, which looks like this:
- Group 1 - A
- Group 2 - A, B, optional C
- Group 3 - A, B, optional C, E, optional F
- Group 4 - A, D, E, optional F
- Group 5 - A, G
Part of this problem is figuring out the base design in Airtable, which I still working on. I may have to go with a training history table with one record for each user per training.
I wonder if you could solve this by having two list blocks per training?
Display of any block would be conditional on whether the group member needed to take the training.
The second condition, to determine which of the two blocks per required course the member would see, would be whether the member had completed the training yet or not.
If they had completed that specific training the displayed block would confirm this, however you want to indicate it (a green tick, or “completed” for example). This block would not display if they hadn’t taken the training yet, through your use of conditions based on data in Airtable.
If they had not taken one of their required trainings, the block that is displayed would confirm this to the member (“not taken” etc.) and there would be an active click-through (or single button) to take them to the relevant course.
Yes, you would have a total of 14 blocks to maintain but hopefully this is a tolerable amount. Designing two blocks initially (one of each for completed/not completed) and then duplicating them and updating the course title and the display logic for each is how I would approach this.
Do you already have four tables in Airtable?
These would be Groups, Members (linked to Groups), Courses, Group-Courses (linked to Groups, linked to Courses). The key table here is the Group Courses table. This sets up the many-to-many relationships between Groups and Courses.
@MarkSchofield We currently have a design much like this. But it is failing due to Airtable throttling of API calls (max 5 calls/second). Softr recommends no more than 5 dynamic blocks per page to avoid problems. Even static blocks with conditional visibility based on user groups count because an API call to Airtable is needed.
I think the solution will end up being multiple pages. Land on the training page and then go elsewhere to get into more details.