Ladowanie specyfikacji...
{{ section.label }}
{{ field.label }}
{{ value }}
```
## `dictionariesStore`
Plik:
```txt
frontend/src/stores/dictionariesStore.js
```
### Odpowiedzialność
Ten store przechowuje słowniki.
Słownik to lista wartości używana w filtrach, formularzach albo wyborach. Przykłady:
- modele produktów,
- klienci,
- typy wykończenia,
- listy produkcyjne,
- operacje produkcyjne,
- kolory.
Takich danych nie trzeba pobierać przy każdym wejściu na ekran. Zwykle pobiera się je raz i trzyma w pamięci.
### Spodziewana struktura stanu
```js
{
models: [
{
id: 1,
name: 'Regius Core 6',
},
],
clients: [
{
id: 4,
name: 'HIENDGUITAR.COM / INDONESIA',
country: 'INDONESIA',
},
],
finishes: [
{
value: 'GLOSS',
label: 'Gloss',
},
{
value: 'SATIN',
label: 'Satin',
},
],
productionLists: [
{
id: 8,
name: 'CZE-00',
},
],
operations: [
{
id: 7,
code: 'B',
name: 'Bejca',
},
],
colors: [
{
id: 12,
name: 'Trans Natural Satine',
},
],
loadedAt: 1777460000000,
isLoading: false,
error: null,
}
```
### Spodziewana odpowiedź endpointu
Endpoint:
```http
GET /mayo-api/dictionaries
```
Odpowiedź:
```json
{
"models": [],
"clients": [],
"finishes": [],
"productionLists": [],
"operations": [],
"colors": []
}
```
### Najważniejsze funkcje
```js
await dictionariesStore.fetchDictionaries()
```
Pobiera słowniki, jeśli nie są jeszcze załadowane.
```js
await dictionariesStore.fetchDictionaries({ force: true })
```
Wymusza ponowne pobranie słowników.
### Przykład użycia w filtrach
```vue
```
## `uiStore`
Plik:
```txt
frontend/src/stores/uiStore.js
```
### Odpowiedzialność
Ten store przechowuje stan interfejsu użytkownika.
Nie przechowuje danych biznesowych. To znaczy, że nie powinien trzymać specyfikacji, timeline ani produktów.
Przechowuje tylko informacje typu:
- czy drawer jest otwarty,
- jaki panel jest otwarty,
- dla jakiego produktu otwarty jest panel,
- dodatkowe parametry panelu.
### Spodziewana struktura stanu
```js
{
isDrawerOpen: true,
activePanel: 'productSpecification',
activeProductId: 123,
drawerPayload: {
productId: 123,
mode: 'view',
},
drawerInstanceKey: 4,
}
```
### Najważniejsze funkcje
```js
uiStore.openDrawer(UI_PANELS.PRODUCT_SPECIFICATION, {
productId: 123,
mode: 'view',
})
```
Otwiera drawer i ustawia aktywny panel.
```js
uiStore.closeDrawer()
```
Zamyka drawer.
```js
uiStore.replaceDrawer(UI_PANELS.PRODUCT_TIMELINE, {
productId: 123,
})
```
Zamienia aktualny panel na inny.
### Przykład użycia
```vue