---
title: "Dashboards"
description: "Rapports et graphiques. Chaque application est un module sur un même modèle de données."
canonical: "https://obop-platform.sliplane.app/fr/apps/dashboards/"
lang: "fr"
---

# Dashboards

## À quoi elle sert

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.

## Ce que fait et ne fait pas le paquet

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.

## Modèles

### `dashboards_dashboard`

A dashboard: a titled, ordered collection of widgets

Groupe de lecture: `dashboards.user`. Groupe d'écriture: `dashboards.manager`.

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `title` | text | `none` | non | `dashboards.user` | en clair | Dashboard title, for example Sales overview |
| `owner` | text | `internal` | oui | `dashboards.user` | masqué | Name of the person who owns the dashboard |
| `description` | longtext | `none` | non | `dashboards.user` | en clair | What the dashboard shows and for whom |
| `shared` | bool | `none` | non | `dashboards.user` | en clair | Whether everyone with access to the Dashboards app sees it, or only the owner |
| `position` | number | `none` | non | `dashboards.user` | en clair | Order among dashboards, lowest first |

### `dashboards_widget`

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

Groupe de lecture: `dashboards.user`. Groupe d'écriture: `dashboards.manager`.

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `dashboard_id` | ref → dashboards_dashboard | `none` | non | `dashboards.user` | en clair | The dashboard the widget is on |
| `title` | text | `none` | non | `dashboards.user` | en clair | Tile title, for example Paid orders |
| `kind` | select (kpi, bar, line, pie, table) | `none` | non | `dashboards.user` | en clair | How the tile is drawn: kpi, bar, line, pie, table |
| `model_name` | text | `none` | non | `dashboards.user` | en clair | Model the tile reads, for example sale_order |
| `measure_field` | text | `none` | non | `dashboards.user` | en clair | Field to aggregate: a number or money field of the model; empty when counting |
| `aggregate` | select (count, sum) | `none` | non | `dashboards.user` | en clair | How records are combined: count or sum |
| `group_by` | text | `none` | non | `dashboards.user` | en clair | Field to split the result by (a select, ref or date field); empty for one value |
| `filter` | longtext | `none` | non | `dashboards.user` | en clair | JSON object of field names to exact values that records must match, for example {"state":"paid"}; empty means all records |
| `position` | number | `none` | non | `dashboards.user` | en clair | Order of the tile on the dashboard, lowest first |

## Flux de travail

Cette application n'a aucune action de flux de travail ; les enregistrements sont créés et modifiés directement.

## Groupes de permissions

Groupes utilisés par cette application :

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

## Étapes d'approbation

Aucune étape de cette application ne requiert d'approbation, hormis la suppression d'enregistrements.

## Ce que les agents peuvent et ne peuvent pas faire

Un agent peut lire, rechercher, créer et modifier les enregistrements de cette application, et exécuter les actions qui ne requièrent pas d'approbation, dans les limites des groupes de permissions de son jeton.

Il ne peut que proposer ces étapes, qu'une personne doit approuver : `dashboards_dashboard.delete`, `dashboards_widget.delete`.

Les données personnelles sont masquées sous forme de jetons de substitution : `dashboards_dashboard.owner`.

## Dépendances

Aucune.

## Installation

Installez-la depuis l'application Customize (Place de marché), ou en ligne de commande :

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

Nécessite une base de données et des droits d'administrateur.

## Créer la vôtre

[Le guide des modules montre comment sont écrites les applications de ce type](/fr/docs/reference/module-manifest/)
