# Kassa avamine

> Meetod `book()` avab ühe sündmuse kassa ning võimaldab iga väljakutse jaoks määrata ülekirjutusi ja edastada kliendikonteksti oma süsteemidesse.

`book()` on meetod, mis avab kassa. Kõik muu kliendis seadistab seda või jälgib selle tegevust.

```js
entase.book(eventID);
entase.book(eventID, options);
```

`eventID` on müüdava toimuva sündmuse identifikaator. See on sama ID, mida kasutatakse teie sündmuse jagamis- ja manustamiskoodides.

Väljakutse tagastab tulemuse kohe – see avab paneeli või akna ega oota, kuni külastaja lõpetab. Järgmiste toimingute jälgimiseks kasutage [sündmusi](/developers/js-client/events.md).

## Valikud

| Nimi | Tüüp | Vaikeväärtus | Kirjeldus |
|---|---|---|---|
| `checkoutMode` | string | eksemplari väärtus | Ainult selle broneeringu jaoks `'pane'` või `'popup'`. |
| `clientContext` | object | `null` | Suvalised andmed, mis edastatakse kassale, kui see on valmis. Vt allpool. |
| `collectConsent` | boolean | eksemplari väärtus | Kas paluda külastajal tingimuste teade heaks kiita. |
| `backdrop` | boolean | eksemplari väärtus | Kas muuta kassa taga olev leht tumedamaks. |
| `backdropColor` | string | eksemplari väärtus | Tumedama ala värv. |
| `pane` | object | eksemplari väärtus | Siserea paneeli `{ width, height }`. |
| `popup` | object | eksemplari väärtus | Hüpikakna `{ width, height }`. |

Kõik määramata jäetud väärtused kasutavad eksemplari loomisel määratud väärtust, seega lisanduvad väljakutsepõhised valikud olemasolevatele, mitte ei asenda neid.

```js
entase.book('EVENT_ID', {
  pane: { width: '60vw' },
  backdrop: false,
  clientContext: { source: 'homepage-hero' }
});
```

## Kliendikontekst

`clientContext` on teie enda kujundatud objekt. Klient hoiab seda alles, kuni kassa annab märku, et on valmis, ja seejärel edastab selle kassale. Kasutage seda teabe edastamiseks, mida teab ainult teie leht – millist nuppu klikiti, millise kampaania kaudu külastaja saabus, kliendi sisemine viide – kuni kassaseansini.

Kontekst salvestatakse iga sündmuse ID kohta eraldi, seega jäävad samalt lehelt kahe erineva sündmuse broneerimisel nende kontekstid eraldi.

Ärge lisage sinna tundlikku teavet. See liigub brauseri kaudu kassasse ja on nähtav kõigile, kes lehte uurivad.

## Mitme sündmuse avamine ühelt lehelt

Üks eksemplar haldab suvalist arvu sündmusi. Looge see üks kord ja edastage iga kord erinev ID:

```js
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });

document.querySelectorAll('[data-event-id]').forEach(button => {
  button.addEventListener('click', () => {
    entase.book(button.dataset.eventId, {
      clientContext: { source: button.dataset.source }
    });
  });
});
```

## Pärast kliendi hävitamist

Juba hävitatud eksemplari meetodi `book()` väljakutsumine kirjutab konsooli vea ega ava midagi. See on tahtlik – hävitatud eksemplar ei kuula enam kassast tulevaid sõnumeid, mistõttu selle avatud akent ei saaks sulgeda ega jälgida. Looge selle asemel uus eksemplar.

## Kassa sulgemine

Külastaja sulgeb kassa ise: paneelirežiimis klahviga Escape või klõpsates tumedamal alal, hüpikrežiimis akna juhtelementidega. Kassa sulgub ka ise, kui broneering on lõpule viidud.

Selle sulgemiseks teie koodist puudub avalik meetod. Kui peate teadma, millal see suleti, kuulake sündmust `checkout.closed`.
