# Core concepts

> Projects, templates, tables, fields, filters, constants and charts in Calc.

Calc has a small set of concepts. Once these click, the whole add-in makes
sense, because every button is just acting on one of them.

## Project

A **project** is the site or investigation you are working on. You pick a
project first, and everything after that - templates, data, filters - is scoped
to it. A project also carries metadata such as client, contractor and status,
which Calc can stamp onto a template as [constants](#constant).

## Configuration

A project belongs to a **configuration**: a profile that defines the tables,
fields, units and lists available to its templates. You rarely interact with it
directly - it is chosen for you when you pick a project, and shown on the ribbon
as **Configuration**. Administrators manage configurations in the GIMLabs web
app.

## Template

A **template** is a reusable Excel workbook blueprint. It defines which data to
pull and how to lay it out. The same template can be opened two ways:

<Cards>
  <Card title="Use mode" href="/calc/collecting-data">
    Open a template to **collect data** against it. You cannot change the
    template - you just Collect.
  </Card>
  <Card title="Design mode" href="/calc/building-templates">
    Open a template to **edit** it - tables, charts, constants and more.
  </Card>
</Cards>

## Table

A **table** is a named block of data in a template - for example *Location
Details* or *Sample Information*. Each table maps to a data table in the
configuration, has a **start cell** where its data begins, and carries its
own columns, filters, sorting and grouping. When you Collect, each table fills
in from the project data.

## Field (column)

A **field** is a single column within a table - *Depth*, *Sample reference*,
*SPT N value*, and so on. In Design mode you choose which of a table's fields to
include; the included fields become the columns of collected data. Fields can
carry a unit and can act as location references for filtering.

## Filter

A **filter** controls which rows are collected. There are three kinds:

| Filter | Behaviour |
| --- | --- |
| **Fixed** | Always applied, silently (e.g. only this project's data). |
| **Prefilled** | Has a default you can change each time you Collect. |
| **Prompted** | Asks you for a value at Collect time. |

Filters can match on text, a list value, a unit, or a location. See
[Filters at collection](/calc/collecting-data/filters).

## Constant

A **constant** is a project value - Project Name, Client, Contractor, Status,
dates - placed onto a template cell. When you Collect, the cell fills in
automatically from the project. See [Constants](/calc/building-templates/constants).

## Chart

A **chart** is a normal Excel chart you place on the template, then **map** to
data: each series gets an X and Y column. When you Collect, Calc binds the chart
to the collected data so it draws itself. See
[Charts](/calc/building-templates/charts).

## Modes and permissions

Which buttons you see depends on three things:

- **Mode** - Use mode shows Collect; Design mode shows the build and save tools.
- **Role** - creating, editing and deleting templates each need permission.
- **Plan** - on the **Go** tier, template authoring (the Build, Macros, Sheets
  and Save tools) is unavailable, so Calc is collect-only.

If a button is missing, it is almost always one of these three - not a fault.
