Custom pages/layouts per user

I have a self-hosted instance of grist-core running and have multiple users accessing the same document. It would be nice if I could set up a page with certain widgets/cards/card layouts that access data from a table in the document, while at the same time allowing a second user to set up their own page with their own widgets/cards/card layouts that accesses the same data.

For example, when I am working on a project, I might want to look at the data in a different way than someone that is mostly inputting data into the system. Or even two people inputting data into the system might have different preferences about where widgets are positioned, which fields are visible in cards and where, etc.

It seems like the best way to achieve this right now is just to make 1 page per user (e.g., “User 1’s View”, “User 2’s View”).

All of the pages are visible to all of the other users, though, since they access the same data tables.

Is it possible to hide pages from certain users? So, for example, each user could see some specific shared pages for the data tables and their own user page(s) without seeing other user pages?

Thanks!

There is nothing easier, make a new page for the second user, set up widgets, and give access rights for this view only to the desired user.

That doesn’t work because access rules can only restrict access to data tables, not page views, and I need both users to be able to access the same data

1 Like

Since pages don’t show up for users if none of the data in the page is accessible to the user:

(Not ideal, I know)

  • For each column you want to appear in the second user’s page:
    • Add a duplicate column
    • Add trigger formulas in the original column and the new column to keep them synced with each other
    • Add column permissions in the table rules

Now you can show only the duplicate columns in the pages and so each create pages customized to each role.

So you’re saying to, for two users:

  1. Have two sets of columns in the same table (Columns A-E for the first user and Columns F-J for the second user)
  2. Add a trigger formula to each columns that copies from the other column (A->E, E->A, B->G, G->B, etc.).
  3. Create a first page that only shows Columns A-E
  4. Create a second page that only shows Columns F-J
  5. Create access rules that restrict Columns A-E to user 1
  6. Create access rules that restrict Columns F-J to user 2

Then, since user 2 cannot see any of the columns displayed in the first page, it won’t show up in the list?