Manipulate Pages/Sections like Rows

I want to be able to manipulate pages as though they are rows

Long story short: Let me make a column type called Page that is built out of the contents of a single Row, let me edit it with the flexibility of a regular Page, but the structure of Table Detail view, let me use thisPage to access columns in its row, and let it inherit its formats from the columns themselves.

Rows are great because I can:

  • Create new ones with buttons
  • Update them with buttons
  • Sort them with filters
  • Format them with conditions
  • Nest other tables inside them
  • Link other tables/rows to them
  • View them in various states (hiding columns, etc.)

I want to do all of these things with Pages as well.

There are a range of requests out there with a common thread related to this proposal. Here are some of them in a single list:

I think there’s a way in which all of these can be addressed by a single, simple interface. There are some things I would like to do that this would enable:

  • I could dynamically generate documents (press a button to populate a page with information)
  • I could dynamically generate presentations (someone fills out a survey, their information builds a presentation that determines which Coda sections I show to them, in what order, and with what information)
  • I could reuse the same structure of a document in multiple places (the much asked for “template” feature)
  • I could build a wiki that simultaneously merges table structure and page structure

The way I would want to interface with this is as a new column type called a Page (or Page Template or Page View or Dynamic Page or Larry Page, not too concerned with the name rn).

Rather than a Select List or a Lookup type column, a Page type column lets you build a Page out of the contents of your current Row. By selecting Page type you turn each cell in your column into something that looks a lot like a normal Text type column, however this one can be built much like the Customize layout feature of Detail view:

Unlike the current Customize layout feature, however, in the Page cell it looks like you are editing a normal Coda page, with the familiar formatting options, table views, etc. The only addition is that you can access the content of the current row with formulas like thisPage (because technically, your page is a row! #namespacesforfree)

You can’t create new tables in this view, only reference existing ones. This isn’t a true page, just a fancy way to view a row. Just like with the detail view of a table, you are able to edit the contents of the fields in the row. So if I have a field called, “How are you feeling today?” I should be able to see that and edit its contents and input my own, “I’m great!”.

You are able to show views of tables, too. Right now, duplicating multiple views of tables is quite an ugly experience. I now have a View of Sentiment Tracker 3 12 in one of my Weekly Meeting docs. That’s ugly. Instead, this would let me select a table to view, then apply a filter to the table. If I only wanted to show the sentiments related to this meeting date, it might be something like Filter: thisRow.[Meeting Date] == thisPage.[Meeting Date] where thisRow is talking about the row in the Sentiments table and thisPage is talking about the row related to this Page in the Table where this Page type column is held.

Calling Activate on the Page type Column opens it like a regular Coda Page, creating a temporary page associated with it in the sidebar, optionally it can be saved so that it remains after switching to another Page. There are options to automatically create a new page whenever a new row is added to the Page’s source table. These types of pages will be a bit different from standard pages. They will be somewhere between the Play and Edit type permissions, where source content can be changed (you can click buttons, edit text, and check boxes with permanent effects) but the structure cannot be changed (you can’t move a table below another table, because doing so changes the structure of the Page, which would affect all the pages in that column). If you want to edit the page you have to hit the Edit Page button under the three dots


or hit the edit page button under Page Options.

I believe this would be more flexible than the current Detail view too, so your Detail Layout options would also list any Page columns you might have:


so you can render them inside the bounds of the current Detail view.

Text formatting can be inherited from the column format itself. So if your page has, thisPage.[Customer Name] in it, you can edit the formatting on the Customer Name column and it will automatically update the Page formatting.

This is all fitting a bit too well. Was this the plan all along?

To try a Shishir / Matt eigenquestion (Right Click > Add to Dictionary): Is Coda only a tool to manipulate Tables inside Pages, or also Pages inside Tables?

To reveal my bias: the former is COBOL, the latter is lisp.

14 Likes

Let me know if images would help make this clearer

I agree this would be very useful feature! Right now Coda dosen’t seem work very well for generating lots and lots of meeting notes etc. as you can’t organize them like a database.

The ability to have pages nested in tables is really the only reason keeping me from switching from Notion to Coda.

4 Likes

Huge agreement from me. The challenges inherent in using Coda as a tool for note-taking have driven me all over the place in search of a good solution. I have tried, at this point:

  1. Using the rich text editor available in text fields (whole experience collapses if you need something from somewhere else in the doc while writing a note)
  2. A semi-integration with Dropbox Paper; basically you create a “Note” record in Coda (“New Note” button), then open Dropbox Paper, copy the URL, come back to your Note record, paste in URL in URL field, which actives a “View Note” button that opens the URL. This…actually works pretty well, although obviously hinders search.
  3. A Zapier integration with Evernote. Just too tricky to make work right.
  4. Using sub-pages with a “Note Template” sub-page favorited that has several tables on it that allow the note to be associated with a note record, as well as a meeting, or a project, or whatever. This works VERY well, except it’s impossible to keep organized, and it takes me about 30 seconds to set up the note.
  5. Constant flirtation with other systems that do a much better job of this (Notion, obviously; can’t ever stick with it because it is so limited otherwise), and other systems that do a slightly better job (Fibery, Zenkit) of simply displaying a rich text field in a table.

Please please please, this would make Coda the world destroyer. At least for me :D.

2 Likes

This particular post of yours I think highlights how useful this functionality could be in Coda, where I have found it challenging to distinguish how to structure the two main entities - sections and tables - into a comprehensive solution.

@GJ_Roelofs has some great posts about this in case you didn’t see (and I realize this is an old post now, but still very relevant:

Cheers!

1 Like

Yes please for the love of god add this. This is also the only thing keeping me from migrating from Notion to Coda. Just allow “layouts” to look like sub-pages instead of just the modal view we see now.

This will make Coda the ultimate tool when this is added, having everything in Notion and way more, making it a better tool. As it stands it has way more than Notion, but not this key feature that makes Notion wonderful.

4 Likes

100% this. I agree that this is the one area where Notion still outshines Coda.

3 Likes

Could not agree with you and @Daniel_Petty more. This is something that makes it hard for me to get comfortable creating in Coda, while in (I hesitate to mention it again…) Notion, it’s a breeze. This is nothing unique they’ve hit on, other tools also allow easier creation I think. But since you guys are both bringing up this point, I wanted to add for the benefit of the community and Coda Product Team that I also have this issue.

Thanks!

would use this to have a page for each project

1 Like