A few advanced tips for canvas column type

We’ve seen so many makers experimenting with the new canvas column type over the past week—from tidying meeting docs by nesting notes in tables to providing more context in your roadmaps. And in the name of celebrating opportunity, we want to share a few tips and tricks we’ve been using to simplify Coda’s workflows.

Some of these tips are more technical than others, so if you have a question, don’t be shy with your comments.

Save yourself a click into the canvas cell.
If you want to see what’s inside of each canvas cell from your table view, you can replace the canvas icon with a preview of the content. Click Canvas options and toggle the Display preview to On.

Save time with a custom template inside the canvas.
If you find yourself repeating workflows, create a template to automatically populate your canvas. Navigate to Canvas options and use the Value for new rows drop down menu to select the page, subpage, or canvas cell you would like to repeat in each row.

Give yourself room to breath by presenting a row like a page.
Keep your meetings, presentations, and working sessions focused by making a row fullscreen. No need to zoom in!

Open the row modal and click on the expand button in the top right corner to enter full screen

Keep track of tasks with filtered table views.
One of the benefits of canvas column is you can add multiple views of other tables in your doc inside a column to keep track of tasks from your meetings or projects throughout your doc. If you want to filter a table view by the parent row of your original table, you can use the parentRow object or shortcut found under Filter options in the table view.

Example of a filter formula Owner = parentRow.Owner

Note: If you need to filter by the parentRow or thisRow objects in a default value setup, we recommend using a canvas cell to create your template instead of a page or subpage.

Be more efficient with multiple formulas in the same column.
Canvas cells are more flexible than other cells, so you can add different formulas to each one. When paired with Coda building blocks, a table becomes similar to a spreadsheet…but with more capabilities. Run budget calculations, filter for an incomplete task, and send a Slack reminder, all from the same column.

Canvas cell with a formula

Let us know what you think, and let us know your own tips and tricks for the canvas column type. In the meantime, we’ve created a few drag-and-drop templates to get you started—just type /canvas column anywhere in your doc.

33 Likes

How do I set up a Page as my value for new rows so that it already filters by parentRow?

  1. I create a view of a table in my Page (let’s call it my Template Page)
  2. I set my canvas column to use that Template Page
  3. But now the table in the Canvas of my new row will, by default, show all rows of my table.

I want it to show only the rows that match the filter parentRow = thisRow.Project

The problem seems to be that I can’t use the parentRow object inside of my Template Page.

2 Likes

@Luis_Curiel helped me with this yesterday…is it what you are looking for?
02.24.22 11.44.57

2 Likes

Great stuff! Thank you!

1 Like

Parentrow is amazing!

3 Likes

Hi, Connor! parentRow is not supported for objects on Pages, so the current recommendation is to use a canvas cell as a template instead if you need access to the parent row.

2 Likes

That’s what I’m referring to, but I don’t think that answers my question.

Here’s an example doc:

My question is this.
Given this Meeting Template page:

How can I create a new meeting:

Such that in the canvas of the new row, the New Tasks table view only shows tasks relevant to the current meeting:

Edit:
Just saw your response @Kelsey_Chan! Ok… is there an elegant way to do that you can share?

The hesitation I have with this approach is that it means I’ll have a row (maybe multiple if I have different versions) in my table that means something different from the other rows, it’s a template row, whereas all the other rows are meeting rows. I’ll have to remember to filter it out every time I do some lookup, “give me the average of all meeting feedbacks from the past 3 years… oh yeah, except the template rows.” I might know that, but will a user of a doc know? Likely, no.

One possible solution to this would be having Canvas Layouts (much like you can have Row Layouts
image
) associated with a table. I think this would be fine, but not quite as elegant as if the template can be its own page.

My guess is y’all already are thinking about this :slight_smile: super excited for canvas columns, if you can’t tell

2 Likes

@Connor_McCormick1 Thanks for the feedback! Yep, we understand your concerns about shoving both template data as well as real data into the main table.

We’re aware that neither of these solutions are ideal, but they will work until we get around to revamping our default value setup.

We’ll keep your Canvas Layout idea in mind! :raised_hands:

5 Likes

Also, @Connor_McCormick1, just because it’s a new feature doesn’t mean the previous way of doing things should be ignored. For the setup you posted, I still might recommend embedded tables for the Tasks and then just use the canvas column for the meeting notes. By embedded tables, I mean a showing a lookup column type as a table in a detail or modal view. Tables in canvas column type are usually better for one-off things, not repetitive things that can be accomplished with a column that returns row values instead.

8 Likes

There are some issues and annoyances with embedded tables that I want to avoid. For example, adding context or adding controls for a table is much more difficult in an embedded table than a canvas.

This is a minimum example of the problem I’m trying to solve, but not the actual problem I’m trying to solve. You could imagine other contexts where the canvas is the right tool.

1 Like

The first one is good! Love the checkboxes to make it easy to filter out template rows.

The second one is not ideal (I don’t think) because if I want to reference parentRow in my canvas, the Template table will have different columns than the All Meetings table. That will mean that parentRow.ColumnIWant might not be available.

1 Like

@Connor_McCormick1 Yep, makes sense. The second one won’t work if you rely on parentRow having a certain schema. I’ll add that caveat :ok_hand:

3 Likes

Thanks, @BenLee , that struck a chord with me! I’m so super excited about Canvas columns, that I tried to set them up in a use-case similar to what @Connor_McCormick1 described. Makes sense not to forget that they are not the only way to achieve results :wink:

5 Likes

Hi @Kelsey_Chan! Although the full screen view of the row is pretty usable, it still lacks of some page functionalities. Some small aesthetic things the team could take a look is this black bar up top when you add a cover for the row and the weird aligment of the “row from …” link on the top:

1 Like

@Guilherme_Salles Thanks for the feedback! I’ll pass it along to the team :raised_hands:

2 Likes

Hi Kelsey,

Is it possible to convert a row to pdf?

This is a great addition. There are currently two drawbacks which when properly resolved will make this feature much more flexible.

parentRow is not available from template pages. For which there are currently two workarounds:

  • To embed the template in the same (or a different) table as @Kelsey_Chan suggested.

  • or to create a formula on your template page

    RandomInteger(0, 1000000)
    

    and call that formula PageId, then for any data you need from the parent row inside of your template you do a formula like this

     TheParentTable.Filter(TheCanvasColumn.Find(PageId) > -1).First().TheColumnValueYouNeed
    

    What is happening here is that we are emulating the parentRow formula by creating a random id for each canvas and then searching for a row that contains a canvas with that id within itself.

The first approach is simpler and more future proof if you don’t mind having additional columns and filtering out template data. The second approach lets you have template pages and reference parentRow but might break at some point, and also you need to hide the various formulas on the page.

Referencing data from child canvases is difficult. There are some interesting use cases where for example the status of the parentRow depends on the state of tasks in a table within a canvas cell (basically a formula row that says that the parent row is done only when all tasks in the canvas cell are done). This is difficult to do correctly as canvas cells can all be different so there is no way to guarantee that a canvas cell will even contain a table. Here is an idea for the future, and a workaround:

  • Allow select lists to be displayed as as inline tables. This guarantees that all the cells are the same and can be easily referenced from the parent row. There are some hacks to do this but they are complicated and unreliable. For additional “freeform” data it can simply be added to another canvas column, the data doesn’t necessarily have to be in the same column. Although this still leaves the problem of referencing controls or formulas within a canvas cell.

  • A workaround: in your template add a formula like this

    "<1>" + TheTableInTheTemplate.TheColumnYouWantToExposeToTheParentRow.Sum() + "</1>"

    (of course you can expose any kind of data you like, Sum() is just an example). Then in the parent table to get the exposed data you do something like this (either within a formula column, or another formula)

     WithName(thisRow.TheCanvasColumn.ToText(), CC, CC.Slice(CC.Find("<1>") + 3, CC.Find("</1>")-1))
    

    <1></1> are just unique placeholders (inspired by HTML) that are easy to search for, you can use any identifier you like, for example: |-some value we're exposing-|, but keep in mind these identifiers need to be different for each value we’re exposing so :<1>value 1</1> <2>value 2</2> etc..

I hope someone finds these workarounds helpful.

7 Likes

Hi, @swavalambhi_enterprises! Unfortunately at this time, we only support printing pages, so there’s no way to export a single row to PDF. I will forward your feedback along to the team.

3 Likes

thanks @Kelsey_Chan , proper printing & permission management throughout the doc (including the canvas column) would boost business usage. Also have a look at the remarks of @joost_mineur regarding the bread crumb logic in which tables are shown living in locked pages.. The work around via a view of a source table is a kind of dirty fix for this serious issue, cheers, Christiaan

2 Likes

Agree with better printing. I like printed reports to scan over throughout the day since I don’t sit at a computer for my job. Better print would be so nice.

1 Like