3. Zarządzanie danymi (Directus)
Projekt opiera się na dwóch osobnych instancjach Directusa:
A. Panel kolorów gotowych (Palette) – color-selector-backend
Kolekcje główne
- Category – kategorie kolorów
- Color – kolory (z polami:
name,number,hex,status,sort, relacje) - Product – produkty
- Shop – sklepy
- Category_Color, Category_Product – relacje many-to-many
Relacje
- Produkt ma przypisane kolory przez
products/Category_Color - Każdy produkt (
product-id) musi mieć powiązaną listę dostępnych kolorów - Filtrowanie:
Product_id,Category_id,name,number
API Palette
Zapytania używają endpointów Directus: items/Color, items/Category, items/Product itd., z filtrami np.:
products.Product_id._eqCategory.Category_id._eqnumber._contains,name._icontains
B. Panel mieszalnika (Tinting) – color-tinting-backend
Kolekcje główne
- Color – kolory (m.in.
name,number,hex,base,colorFamily) - Product – produkty
- Sample – próbki / kolekcje
- Shop – sklepy
- Product_Color, Color_Sample, Sample_Product – relacje
Import plików CSV
Dane są importowane przez rozszerzenie importcsv (endpoint /upload-csv).
Format CSV (separator ;):
| Kolumna | Opis |
|---|---|
| Nazwa | Nazwa koloru |
| Produkt | Nazwa produktu |
| Kolekcja | Nazwa próbki/kolekcji (Sample) |
| HEX | Kod koloru HEX |
| Baza | Baza (np. Base A) |
Przykład:
Nazwa;Produkt;Kolekcja;HEX;Baza
RAL 7016;Farba X;RAL;#383E42;Base A
Import automatycznie:
- tworzy / aktualizuje
Product,Sample,Color - dopasowuje
colorFamilyna podstawie HEX (chroma-js, delta-e) - wypełnia relacje
Product_Color,Color_Sample,Sample_Product
Alternatywny format (JSON)
Struktura odpowiadająca koncepcji importu:
{
"color_code": "RAL 7016",
"hex": "#383E42",
"base": "Base A",
"collection": "RAL"
}
W praktyce rozszerzenie importcsv oczekuje CSV z kolumnami: Nazwa, Produkt, Kolekcja, HEX, Baza.