Dynamically show and hide columns

Trying to have groups of executives “rank” projects, and they aren’t going to be willing to use buttons/etc, they prefer the Google Sheets way. So I was hoping to show their ranking column only to each one, but haven’t found a way to do that.

Would also be useful to do a deep dive on sorting of columns based on user, as well

Don’t understand your use case. But you could always have multiple columns that are all hidden, and populate a single column (that would stay the same), with the data from one of the hidden columns with a formula, that could select the column based on a condition.

This works as long as the column does not need to be used for data entry (i.e. as long as the column is read-only).

1 Like

The point is to allow people to enter data into “their” column to vote.

So there is: “Chase Ranking” and “John Ranking” and “Kelly Ranking” columns. I send everyone to one URL, and according to username, it only shows my ranking columns, which I’m then able to look at the other data and enter my rankings

You can still do this as is.

Have a column called Vote (or whatever you want to call it) in your [Voting] table. That table will have a duplicate of each row of content for each person that needs to vote.

E.g. if the rows in your source table are
Revenue
100
200
300

then your full voting table will be:
Revenue | Person
100 John
200 John
300 John
100 Kelly
200 Kelly
300 Kelly
100 Chase
200 Chase
300 Chase

Use a button to generate this

Then in the [Voting] table itself you will filter it so that each voter will only see rows with their own name. E.g John will see:
Revenue | Vote
100
200
300

1 Like

Thanks for the suggestion! The actual table is a real table with 100s of rows of our most important company projects, with a huge number of buttons, actions, and views tied to it. Hard to duplicate each project 5x to get this view, wouldn’t be worth it. I’m considering using the reactions columns, but those are not great for what I’m trying to do either. The answer is definitely to allow me to show/hide columns by formula (user) for my need.

One solution would be to use Automations.

So you have a single “Ranking” column that all users will use to enter their ranking (can be any format – slider, scale, number, …). You then have an automation that is triggered whenever there is a change to any project row such that the “Ranking” column is no longer the default value (i.e. initialization value). You could then have this automation either

  1. populate the ranking column in the Projects table for the current logged in user (e.g. the “Chase Ranking” column if “Chase” is the logged-in user) with the ranking score, or

  2. create a new row in an associated “Project Rankings” table that has this shape: Ranking(Person, Project, Score) where “Person” is a username column, and “Project” references the Projects table, and Ranking is the same ranking format as the “Ranking” input column in the Projects table.

Then the automation would reset the input ranking column in the Projects table.

With the second approach, the data would be fully normalized, and automatically supports new people ranking projects. It would also be much easier to operate on the ranking data, for example to aggregate the average ranking for a project. With the first approach, it may be difficult to reference the column for the logged-in user in a formula if the number of users that can rank (i.e. number of ranking columns) is large. It would also be difficult to operate on the ranking data, for example aggregating the average ranking for a project would require extracting the ranking value from each column individually, which may be difficult or impossible depending on the number of users, and may require refactoring anytime a new user is added.

1 Like

I really don’t think this would be the best way to do it, @Chase_Schwalbach.

What happens if a new executive joins your team? Do you really want to have to create a new column just for them? Might it be better to use the User() function in a single column called something like My Votes, so that the doc can handle any number of voters?

I absolutely love the idea of columns driven by User() as well - So something where everyone sees the same My Votes column, it’s an input, and it is only attached to your name.

It would be similar to creating 2 columns, input and results, with automation on top, where as soon as they add their vote, it adds to audit table, and then deletes from the “My Votes” column. This would be too cumbersome for an Exec to deal with on my end, so it would need to be seamless/in one column/instantaneous

In my case, because my execs are sometimes fickle, I would just add another column for an exec so they have their own column that looks and acts just like Google Sheets

I think the input + row change automation + output column seems like a good idea.

That said, buttons are pretty easy and they probably click them all the time in other contexts. I encourage you to educate them on the usage of buttons (with perhaps some text in the document body). Trying to use Coda without buttons will leave you as a doc maker quite hamstrung.

Hi @Chase_Schwalbach,

I think you can have any general voting table that you’d like, then have a column where you just show that particular User() if they have voted. You can hide the other columns and only show the one column that has the single user avatar.

Here’s an example that you can play with to see if it does what you’re looking for it to do…

Buttons would work if we only had a couple projects, but we’ve got like 50, so I can’t have 1-50 reaction buttons. To the non-execs, I just have a button to add a row to an audit table and they just click and the pop up is a free text input. Trying to simplify for our exec group though, to a pure text input field on their end

Do they need to see all 50 projects? Is it possible that you could create a simple view of a table with only a select filtered # of projects?

I confess that I haven’t exactly figured out the problem, but I have a suspect I did.

@Chase_Schwalbach, would it be feasible to share a sample data structure and what you would like to have from a UX perspective?

Thank you!

I have a different use case for which I would like this feature.
We have a question form with >60 questions. Most of users need to answer only some of the questions, which depends on their answers. So, conditional logic in a survey.

If we could somehow listen to answers on submit, and then dynamically create a new view of the same table with dynamically hidden/shown questions/columns, we could implement this use case.