---
title: "Dashboards"
description: "Rapporter och diagram. Varje app är en modul i en gemensam datamodell."
canonical: "https://obop.dev/sv/apps/dashboards/"
lang: "sv"
---

# Dashboards

## Vad den är till för

Store dashboards and widgets as data (KPI, bar, line, pie and table definitions) for a client to render. The package never runs a query and does not check that the models it names exist.

## Vad paketet gör och inte gör

Dashboards and their widgets stored as data, for a UI to render. A dashboard has a title and an owner. A widget describes one tile with these fields: kind (kpi, bar, line, pie or table), model_name (the model to read, for example sale_order), measure_field (the field to aggregate; empty for count), aggregate (count or sum; sum needs a number or money measure_field), group_by (field to split by, for bar, line, pie and table; empty for a single kpi value), filter (a JSON object of field names to exact values, for example {"state":"paid"}; empty means all records) and position (order on the dashboard, lowest first). The package only stores the definition; it does not check that the model or fields exist and it computes nothing.

## Modeller

### `dashboards_dashboard`

A dashboard: a titled, ordered collection of widgets

Läsgrupp: `dashboards.user`. Skrivgrupp: `dashboards.manager`.

| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
| `title` | text | `none` | nej | `dashboards.user` | i klartext | Dashboard title, for example Sales overview |
| `owner` | text | `internal` | ja | `dashboards.user` | maskerad | Name of the person who owns the dashboard |
| `description` | longtext | `none` | nej | `dashboards.user` | i klartext | What the dashboard shows and for whom |
| `shared` | bool | `none` | nej | `dashboards.user` | i klartext | Whether everyone with access to the Dashboards app sees it, or only the owner |
| `position` | number | `none` | nej | `dashboards.user` | i klartext | Order among dashboards, lowest first |

### `dashboards_widget`

One tile on a dashboard, defined by what to read and how to aggregate it

Läsgrupp: `dashboards.user`. Skrivgrupp: `dashboards.manager`.

| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
| `dashboard_id` | ref → dashboards_dashboard | `none` | nej | `dashboards.user` | i klartext | The dashboard the widget is on |
| `title` | text | `none` | nej | `dashboards.user` | i klartext | Tile title, for example Paid orders |
| `kind` | select (kpi, bar, line, pie, table) | `none` | nej | `dashboards.user` | i klartext | How the tile is drawn: kpi, bar, line, pie, table |
| `model_name` | text | `none` | nej | `dashboards.user` | i klartext | Model the tile reads, for example sale_order |
| `measure_field` | text | `none` | nej | `dashboards.user` | i klartext | Field to aggregate: a number or money field of the model; empty when counting |
| `aggregate` | select (count, sum) | `none` | nej | `dashboards.user` | i klartext | How records are combined: count or sum |
| `group_by` | text | `none` | nej | `dashboards.user` | i klartext | Field to split the result by (a select, ref or date field); empty for one value |
| `filter` | longtext | `none` | nej | `dashboards.user` | i klartext | JSON object of field names to exact values that records must match, for example {"state":"paid"}; empty means all records |
| `position` | number | `none` | nej | `dashboards.user` | i klartext | Order of the tile on the dashboard, lowest first |

## Arbetsflöden

Den här appen har inga arbetsflödesåtgärder; poster skapas och redigeras direkt.

## Behörighetsgrupper

Grupper som den här appen använder:

- `dashboards.manager`
- `dashboards.user`

## Steg som kräver godkännande

Inget steg i den här appen kräver godkännande, förutom att ta bort poster.

## Vad agenter kan och inte kan göra

En agent kan läsa, söka, skapa och uppdatera poster i den här appen, och köra de åtgärder som inte kräver godkännande, inom behörighetsgrupperna för sin token.

Den kan bara föreslå de här stegen, och en person måste godkänna dem: `dashboards_dashboard.delete`, `dashboards_widget.delete`.

Personuppgifter maskeras som platshållare: `dashboards_dashboard.owner`.

## Beroenden

Inga.

## Installera

Installera den från appen Customize (Marknadsplats), eller från kommandoraden:

```bash
obop modules install-from dashboards
```

Kräver en databas och administratörsbehörighet.

## Bygg din egen

[Modulguiden visar hur appar som den här skrivs](/sv/docs/reference/module-manifest/)
