# Tickets, mappen, statussen en labels in Todomator

> Het datamodel van Todomator: wat een ticket bevat, de zes statussen, wie een ticket kan zien, mappen voor klanten en projecten, labels, opmerkingen, koppelingen en bijlagen.

Framework: todomator
Product: Todomator (todomator@1.7)
Language: nl
Content-SHA256: c759040f06a3558b64c13d0fb71222c282461a9fd1adfcc081305abd35564a33
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Het hart van Todomator is het **ticket** (tabel `tbl_ticket`, schema `Tickets` in `schemas/tickets.js`). Al het andere organiseert tickets of hangt eraan.

## Wat een ticket bevat

| Veld | Betekenis |
|---|---|
| `name` | de titel (verplicht) |
| `statusid` | de status; een nieuw ticket is `pending` tenzij je iets anders opgeeft |
| `folderid` | de map (klant of project) waartoe het behoort |
| `ownerid`, `userid`, `watcherid` | de auteur, de toegewezen personen en de personen die het alleen volgen |
| `ispublic` | zichtbaar voor iedereen; een openbaar ticket heeft geen toegewezen personen |
| `ispriority`, `isbillable` | een prioriteitsmarkering en een factureerbaar-vlag |
| `markdown`, `html` | de inhoud (de interface gebruikt Markdown) |
| `tags` | een lijst met labels |
| `date`, `deadline` | de dag van het ticket (standaard vandaag) en een optionele deadline |
| `estimate`, `worked` | de schatting en de al gewerkte minuten ([tijdregistratie](/en/todomator/time-tracking/)) |
| `reference`, `source` | vrije tekst om het ticket met iets daarbuiten te verbinden |
| `parentid` | het bovenliggende ticket, voor subtaken |
| `attachments` | de bestanden van het ticket |
| `attrs` | vrije JSON-gegevens |
| `callback` | een adres dat het ticket ontvangt wanneer het verandert ([API](/en/todomator/create-tickets-with-the-api/)) |

## De zes statussen

De tabel `cl_status` wordt aangemaakt met: `pending` (Pending), `open` (In progress), `review` (Review), `postponed` (Postponed), `note` (Note) en `closed` (Closed). De namen worden vertaald naar de taal van de gebruiker.

## Wie een ticket kan zien

Een ticket is zichtbaar voor zijn eigenaar, voor de personen in `userid`, voor de personen in `watcherid` en voor iedereen wanneer `ispublic` is ingesteld. De lijst met mappen die een gebruiker ziet, wordt op dezelfde manier beperkt: een map verschijnt alleen als de gebruiker er een ticket in kan zien (gebruikers met `sa` zien alle). De ticketlijst neemt `type` (bijvoorbeeld `pending`, `postponed`, `review`, `assigned`, `note`, `unread` of `all`), `q` (zoeken), `folderid`, `date`, `skip` en `limit` (standaard 10).

## Mappen en labels

Een **map** heeft een naam, een icoon, een kleur, een klant, een e-mail en een telefoon, en vlaggen: `isbillable` (nieuwe tickets erven het), `isprivate`, `ispinned`, `isarchived` en `isdisabled`. Alleen personen met het recht `admin` (of beheerders) beheren mappen. Een **label** heeft een naam, een kleur en een icoon en kan bij een map horen.

## Rond het ticket

- **Opmerkingen** (`Comments|create`, `Comments|update`, `Comments|remove`): Markdown-tekst die aan een ticket hangt.
- **Ongelezen-markeringen en bladwijzers**: elke gebruiker heeft zijn eigen ongelezen-status en bladwijzers voor een ticket.
- **Koppelingen** tussen tickets en het **klonen** van een ticket.
- **Geschiedenis en logs** van de wijzigingen van een ticket.
- **Bijlagen**: `POST /upload/` accepteert tot 5 MB per verzoek. Het adres van een bestand is ondertekend (`/download/<id>-<signature>.<ext>`): afbeeldingen, video en PDF openen in de browser en de andere typen worden gedownload.
- **Live updates**: de WebSocket stuurt een `refresh`-gebeurtenis alleen naar de personen die het ticket kunnen zien, en laat de anderen weten wie op dit moment naar een ticket kijkt.
