Visibility condition not working - possible bug?

Hi there!

I have been experiencing an increasingly frustrating issue that I am convinced has to be a bug. If anyone has a solution for this, I would greatly appreciate it.

I have a Glide Pages app connected to an Airtable base, and I am trying to apply visibility conditions.

Here is a screenshot:

Screenshot 2022-11-14 193701

You will see I have applied two conditions. Either the name in the User Profile Name must match the Team Member Name assigned to a project, or their Role must be Director. This way, team members can view only their own projects while admins can view all projects.

The issue is this doesn’t work, and I just can’t figure out why. I have tried multiple types of conditions (Name to Name, Email to Email, etc.). The fields are plain text fields, not computed columns. I did try computed columns just for kicks, but that didn’t work either. In every case, the conditions either don’t work at all and every project is displayed for everyone, or nothing is displayed for everyone.

The most frustrating part about this is if I use filter data instead, then it works. But the exact same thing doesn’t work in visibility conditions. I would use filter data, but it isn’t an option in this scenario, as I wouldn’t be able to use the admin role (please see the beginning of this post).

Row owners are not able enabled anywhere - I have gone through every table column by column. With the state of the Glide and Airtable integration, having row owners would just honestly not be efficient. It would work fantastic for a single person, but not multiple people.

Here are a couple of examples to help explain my situation a little:

  • I only want freelancers to be able to view projects they are assigned to.
  • I only want freelancers to be able to view quotes they have submitted.

^ I fully realize in those two cases, the data would still be available but just hidden, with row owners disabled. But again, please, I don’t want to and can’t use row owners.

Thank you so much in advance.

Visibility settings on the List component will control if the entire component is visible or not. Depending on your conditions you will either see the entire unfiltered list or not see it.

Filter settings on the List component will control which list items inside of that list are visible. Filtering properly will reduce the number of items visible in that list.

The problem is that you are trying to filter your list for directors, but you aren’t filtering against any values in the list. I think you really need to have a template column in your table filled with ‘Director’. Then you can filter where the user profile role matches that template column value.

Hey Jeff! Thank you for responding so quickly.

I did try using a template column, I’ve honestly gone through probably every computed column at this point haha. My concern with using that is it requires applying a static value to the column.

I’m very concerned about using a static value for the role of Director, because if someone changes it down the line - whether by accident or on purpose - it would break everything. Or if the role, for whatever reason, needs to be changed - it would have to be manually changed across a dozen tables. That would be prone to user error and again, cause things to break.

So are you saying that a template column wouldn’t work??? It’s a static value applied to the the column configuration. You only have to change it once, and it applies to every row in the table. The only way someone else could change it is if they are editing the column in the glide data editor. I don’t understand how it could be a problem. Isn’t the Role in the user table also a static value that could be changed at any time?

Ah - sorry for the confusion.

Right now, I have a table which holds just my role names. Inside Airtable, I have a lookup field that essentially just copies what role each user has. Glide treats this lookup field from Airtable as a plain text field, which allows me to use that column for my roles in the user profiles.

So, the reason I am concerned about using a template column or other similar computed column is if someone for example changes the word Director to Admin in my roles table, then the role those users have would no longer match the static value I set in the computed column. Thereby breaking it.

Screenshot 2022-11-14 224406

How would a template column in the Project Quotes table be any more vulnerable than hardcoding the role in a filter? Either way, if Director changed to Admin, something would break.

image

I guess as an alternative, I would add an Admin flag in your Role table to mark which role is an admin role. Maybe a boolean column where only the Director/Admin have it marked as true. Then in your project table, create a template column and fill it with ‘true’. Then create a relation column that link that template ‘true’ value to the admin boolean flag in the role table. Then create a lookup column that returns the Role column value. It would work and would be a little more dynamic, but then I feel you would still have an issue if the wrong role got marked as an admin role. Seems like an unnecessary set of steps though.

Another thought would be to have a dummy admin user in the user table, create a relation from the project table specifically to that user in the user table using a template column with that user’s RowID or Email, then pull in that dummy user’s role with a lookup column. That way, it would be fully dynamic if the role names change.

3 Likes

Ah yes - I like the idea of having a dummy admin user and then having a lookup column pull the admin role.

Thank you so much, Jeff :slight_smile:

The name is Jeff, not Jess, but you are welcome.

Ah - I am SO sorry Jeff, I typed that too quickly while having multiple conversations at once. I’ve corrected it.

1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.