# The report canvas

> Create a report, draw blocks on the page, arrange them, filter the whole report at once, and restore an earlier version.

The canvas is where you build and edit a report. It works like a design tool and prints like a page: a ruled sheet on a darker desk, blocks that snap to the sheet's grid, and cherry docked at the side when you want help.

![The canvas toolbar: back arrow, report name, block count, undo and redo, then block, header, filters, share and publish, re-run, report colours, history, more, zoom and the cherry button.](https://docs.sanda-os.com.au/media/canvas-toolbar.png "The toolbar of an empty canvas")

## Create a report

:::steps
1. **Open Reports.** In the console, go to **Activate · Reports**.
2. **Open the form.** Press **New canvas**.
3. **Name it and describe it.** Enter a **Name** and, under **What should it contain?**, write the brief in plain language, for example "P&L vs budget, cash position, top debtors by ageing, margin by product line". The description can be up to 1,000 characters.
4. **Choose how to start.** Press **Create and let cherry build it** to have cherry lay out the whole pack from your description (this one needs both the name and the description), or **Create blank canvas** to build it yourself.
:::

A new report opens straight away. If a blank report has a description, its empty canvas offers **let cherry build it from the description**.

## The page

The sheet is 24 cells wide. Each cell is a square that blocks snap to, so two blocks placed by different people, or by cherry, line up without nudging. The sheet grows downwards as the report does and always keeps a clear band at the foot for the next block.

Because the width is fixed, a report is the same report on every screen and prints the same way. The canvas opens zoomed to fit the page across your window, up to 150%, and a page narrower than the window sits centred on the desk.

Blocks cannot leave the sheet's width. Drawing, dragging and resizing all stop at its left and right edges, because a block half off the page is a block half out of the report.

## Add a block

Every block starts as a box you draw. You can draw as many boxes as you like before filling any of them.

:::steps
1. **Draw a box.** Press and drag on the empty page. The box snaps to the grid. The **block** button in the toolbar drops a box in the middle of your view if you would rather not draw.
2. **Choose a door.** The box asks **what goes here?** and offers two answers: **pick from the fluid** or **ask cherry**.
3. **Fill it.** The next two sections describe each door.
:::

### Pick from the fluid

This door builds a block from your semantic fluid with no AI involved. It opens a pane on the right, titled **build a block from the fluid**, and the box on the page becomes a live preview of the block at its real size. The preview re-runs every time you change a pick.

1. Press a **metric** in the catalogue for the number, then a **dimension** to break it down. You can also press a raw column, and the menu on its chip chooses how it is summarised. A date dimension arrives grouped by month, and the menu on its chip changes the grouping.
2. Add **conditions** to narrow the rows, using the same condition builder as the workbench. See [filters and conditions](https://docs.sanda-os.com.au/semantic-fluid/dimensions-and-filters).
3. Leave **show it as** alone, or choose **kpi**, **bar**, **line** or **table**. Until you choose, sanda suggests a mark from what you picked and says so: a measure alone is a kpi, a measure over dates is a line, a measure over anything else is a bar, and a selection with no measure is a table.
4. Edit the **title** if you want to. It starts as your selection said in words, such as "net revenue by month".
5. Set **rows** for a bar, line or table, up to 200. A kpi has no rows setting.
6. For a kpi, tick **compare with the previous period** to show the change against the period before. For a kpi or a line, enter a **target** and, if you like, what it is **called**. See [Blocks](https://docs.sanda-os.com.au/reports/blocks) for both.
7. Press **place block**.

To change a block that is already on the page, select it and press **edit** in its toolbar. The same pane opens seeded with what the block asks today, and the button reads **apply**. A block cherry placed is a starting point, not something to delete and re-ask for.

### Ask cherry

This door takes a sentence. Pick what cherry may place with the chips, then describe it.

| Chip | cherry may place |
|---|---|
| **cherry decides** | A visual, written analysis, or both (at most three blocks) |
| **a visual** | One kpi, chart or table |
| **written analysis** | One text block, with the numbers it rests on |

Type your request (for example "Net revenue by month, last 12 months") and press <kbd>Enter</kbd> or **build**. Blocks land on the page while cherry is still working. If your request is ambiguous, cherry asks **which do you mean?** and offers a few buttons. If cherry places nothing, it tells you why under **cherry says**, and **ask differently** opens the box again.

For building a whole pack in one go, use cherry's own pane instead. See [Build reports with cherry](https://docs.sanda-os.com.au/reports/build-with-cherry).

## Arrange blocks

Select a block by clicking it. Its border turns to the accent colour.

- **Move** it by dragging its header. A dashed outline shows where it will land.
- **Resize** it by dragging the corner handle at its bottom right. A block is never smaller than 3 cells wide and 2 high.
- **Rename** it by double-clicking its title. Titles are lowercase, like every other name in the semantic fluid.
- **Switch the mark** with the four icons in the small toolbar above a selected chart or table (kpi, bar, line and table). The question stays the same and only the drawing changes.
- **Change the time grouping** with the **by day**, **by week**, **by month**, **by quarter** or **by year** menu, which appears when the block breaks a date down.
- **Remove** it with the bin icon, or press <kbd>Delete</kbd>.

Click a bar in a bar block to filter the whole canvas to that category (this works when the breakdown is not a date). See [Filter the whole report](#filter-the-whole-report).

The numbers are read when the report opens. Press **re-run every block** in the toolbar to read them all again, or **run again** in one block's header.

A **header** block is the report's masthead: its logo, name and subtitle. Press **header** in the toolbar to add one. A report has at most one, and it goes at the top, with everything already on the page moving down to make room.

## Filter the whole report

Press **filters** in the toolbar. The pane titled **filters · every block** holds conditions that apply to every block on the canvas, so "the June pack" can be the same blocks with a different window.

You add a filter in two ways:

- **Say it.** Type "last 12 months", "only paid invoices" or "region is apac" into the **say it** box and send it. sanda turns the sentence into one condition and checks it against your fluid before adding it. If it cannot, it tells you what was missing.
- **Build it.** Use the condition builder under the box to pick a field, an operator and values, with the same date presets the workbench has.

A report filter on a field **replaces** any block's own condition on that field. A canvas filter of "last 12 months" therefore widens a block that said "last month". A filter on a named period such as "last 12 months" keeps moving with the calendar. A report takes up to 20 filters, and a filter's field has to reach every block's table, or the blocks it cannot reach refuse to run.

The **filters** button shows how many are active. Clicking a bar adds an **is** filter for that category and opens the pane, so you can see and remove it.

## Comments

Each block has a speech bubble in its header. Open it to leave a note for whoever reviews the report, such as a question for the board. Comments carry your name and time, stay with the block, and go when the block goes. Only the person who wrote a comment can remove it.

Comments are working notes. They are not included in a [shared link](https://docs.sanda-os.com.au/reports/sharing), on the [portal](https://docs.sanda-os.com.au/reports/portal) or in copies of the report.

## Zoom, pan and fit

| To | Do this |
|---|---|
| Pan | Scroll, or hold <kbd>Space</kbd> and drag, or drag with the middle button |
| Zoom about the pointer | <kbd>⌘</kbd> or <kbd>Ctrl</kbd> and scroll |
| Zoom in or out | The plus and minus buttons in the toolbar |
| Go back to 100% | Press the percentage between them |
| Fit all the blocks in view | The expand icon at the right of the zoom group |

Zoom runs from 25% to 200%. The page can never leave the window.

## Save, undo and history

The canvas saves as you work. The block count in the toolbar reads **saving…** while a change is on its way and **not saved** if one failed. Closing the tab with an unsaved change asks first.

- **Undo and redo** with <kbd>⌘</kbd> <kbd>Z</kbd> and <kbd>⌘</kbd> <kbd>⇧</kbd> <kbd>Z</kbd> (or <kbd>Ctrl</kbd> on Windows), or the arrows beside the report's name. Undo goes back up to 60 changes in the current visit.
- **History** (the clock icon) lists saved versions of the report, newest first, each with when it was saved, how many blocks and filters it had, and who saved it. Press **restore** on an older one to go back to it. Restoring is a save of its own, so the version you left is kept too. A version includes the report's colours.

A save within two minutes of the newest version updates it instead of adding another, and the last fifty versions are kept. Renaming a report does not make a version.

Changes cherry makes are saved like your own edits, so you can **restore** an earlier version.

## Templates and copies

Open the **more** menu (three dots) for the report-level verbs.

- **duplicate report** asks for a name (it suggests "name copy") and opens the copy. A copy keeps the blocks, filters and colours, and leaves behind the comments, cherry's conversation about the report and the history. Anyone who can create reports can duplicate one, including a report shared with them to read. A read-only member does not see it.
- **save as template** asks for a name and makes a template from the canvas as it is now. Your report stays as it is. The template appears under **Templates** on the Reports page, and its own canvas carries a **template** tag. A template is never delivered by email. On the Reports page, press **new report from this** to make a real report from it: it keeps the blocks, filters and colours, and the numbers are read fresh.
- **delete report** removes the report, its blocks and its history. It is offered to the report's author and to owners and admins, and asks you to confirm.

## Print or export to PDF

Choose **export pdf** in the **more** menu, or press <kbd>⌘</kbd> <kbd>P</kbd>. The canvas drops its toolbar and lays the page flat at a scale that fits a landscape sheet, then opens your browser's print dialog. Use its option to save as a PDF.

This is the console's own print. A report that arrives by email has its own PDF and PNG attachments, made when the email is sent. See [Schedules and delivery](https://docs.sanda-os.com.au/reports/delivery#what-arrives).

## Reports that are read-only

If a report was shared with you to read, or you are a read-only member, the report opens with a **read only** tag and the toolbar loses its editing verbs. A read-only member also loses **duplicate report**, since they cannot create reports. You can still pan, zoom, and sort and export any table, because those are ways of reading. See [Share a report](https://docs.sanda-os.com.au/reports/sharing).

## Keyboard shortcuts

| Shortcut | Does |
|---|---|
| <kbd>⌘</kbd> <kbd>Z</kbd> | Undo |
| <kbd>⌘</kbd> <kbd>⇧</kbd> <kbd>Z</kbd> | Redo |
| <kbd>⌘</kbd> <kbd>P</kbd> | Export to PDF |
| <kbd>Delete</kbd> or <kbd>Backspace</kbd> | Remove the selected block |
| <kbd>Space</kbd> and drag | Pan |
| <kbd>Esc</kbd> | Deselect, and close an open menu or the builder |
