diff --git a/back/database/migrations/development.db b/back/database/migrations/development.db index eb966c9..4c4349c 100644 Binary files a/back/database/migrations/development.db and b/back/database/migrations/development.db differ diff --git a/back/src/api/kafetegia/content-types/kafetegia/schema.json b/back/src/api/kafetegia/content-types/kafetegia/schema.json index 7a0c1b1..252767f 100644 --- a/back/src/api/kafetegia/content-types/kafetegia/schema.json +++ b/back/src/api/kafetegia/content-types/kafetegia/schema.json @@ -20,46 +20,12 @@ "type": "text", "required": true }, - "edariBeroak": { - "displayName": "edaria", - "type": "component", - "repeatable": true, - "component": "kafetegia.edaria" - }, - "infusioEkologikoak": { - "type": "component", - "repeatable": true, - "component": "kafetegia.edaria" - }, - "edariHotzak": { - "type": "component", - "repeatable": true, - "component": "kafetegia.edaria" - }, - "pikatzekoak": { - "type": "component", - "repeatable": true, - "component": "kafetegia.edaria" - }, - "gozoak": { - "type": "component", - "repeatable": true, - "component": "kafetegia.edaria" - }, - "anizkoJogurta": { - "type": "component", - "repeatable": false, - "component": "kafetegia.edaria" - }, - "tostadak": { - "type": "component", - "repeatable": true, - "component": "kafetegia.edaria" - }, - "konboak": { - "type": "component", - "repeatable": true, - "component": "kafetegia.edaria" + "menua": { + "type": "dynamiczone", + "components": [ + "kafetegia.produktu-taldea", + "kafetegia.izenburua" + ] } } } diff --git a/back/src/components/kafetegia/izenburua.json b/back/src/components/kafetegia/izenburua.json new file mode 100644 index 0000000..f297fda --- /dev/null +++ b/back/src/components/kafetegia/izenburua.json @@ -0,0 +1,15 @@ +{ + "collectionName": "components_kafetegia_izenburuas", + "info": { + "displayName": "Izenburua", + "icon": "strikeThrough", + "description": "" + }, + "options": {}, + "attributes": { + "izenburuBalioa": { + "type": "string", + "required": true + } + } +} diff --git a/back/src/components/kafetegia/produktu-taldea.json b/back/src/components/kafetegia/produktu-taldea.json new file mode 100644 index 0000000..e27fc93 --- /dev/null +++ b/back/src/components/kafetegia/produktu-taldea.json @@ -0,0 +1,19 @@ +{ + "collectionName": "components_kafetegia_produktu_taldeas", + "info": { + "displayName": "Produktu taldea" + }, + "options": {}, + "attributes": { + "izenburua": { + "type": "string" + }, + "produktuak": { + "displayName": "produktuak", + "type": "component", + "repeatable": true, + "component": "kafetegia.edaria", + "required": true + } + } +} diff --git a/back/types/generated/components.d.ts b/back/types/generated/components.d.ts index f84fa6d..fa67cd5 100644 --- a/back/types/generated/components.d.ts +++ b/back/types/generated/components.d.ts @@ -67,6 +67,30 @@ export interface KafetegiaEdaria extends Schema.Component { }; } +export interface KafetegiaIzenburua extends Schema.Component { + collectionName: 'components_kafetegia_izenburuas'; + info: { + displayName: 'Izenburua'; + icon: 'strikeThrough'; + description: ''; + }; + attributes: { + izenburuBalioa: Attribute.String & Attribute.Required; + }; +} + +export interface KafetegiaProduktuTaldea extends Schema.Component { + collectionName: 'components_kafetegia_produktu_taldeas'; + info: { + displayName: 'Produktu taldea'; + }; + attributes: { + izenburua: Attribute.String; + produktuak: Attribute.Component<'kafetegia.edaria', true> & + Attribute.Required; + }; +} + export interface OrokorraDatuOrokorrak extends Schema.Component { collectionName: 'components_orokorra_datu_orokorraks'; info: { @@ -97,6 +121,8 @@ declare module '@strapi/types' { export interface Components { 'kafetegia.alergenoa': KafetegiaAlergenoa; 'kafetegia.edaria': KafetegiaEdaria; + 'kafetegia.izenburua': KafetegiaIzenburua; + 'kafetegia.produktu-taldea': KafetegiaProduktuTaldea; 'orokorra.datu-orokorrak': OrokorraDatuOrokorrak; 'orokorra.helbidea': OrokorraHelbidea; } diff --git a/back/types/generated/contentTypes.d.ts b/back/types/generated/contentTypes.d.ts index b12b29c..8578712 100644 --- a/back/types/generated/contentTypes.d.ts +++ b/back/types/generated/contentTypes.d.ts @@ -724,14 +724,9 @@ export interface ApiKafetegiaKafetegia extends Schema.SingleType { attributes: { izenburua: Attribute.String & Attribute.Required; deskribapena: Attribute.Text & Attribute.Required; - edariBeroak: Attribute.Component<'kafetegia.edaria', true>; - infusioEkologikoak: Attribute.Component<'kafetegia.edaria', true>; - edariHotzak: Attribute.Component<'kafetegia.edaria', true>; - pikatzekoak: Attribute.Component<'kafetegia.edaria', true>; - gozoak: Attribute.Component<'kafetegia.edaria', true>; - anizkoJogurta: Attribute.Component<'kafetegia.edaria'>; - tostadak: Attribute.Component<'kafetegia.edaria', true>; - konboak: Attribute.Component<'kafetegia.edaria', true>; + menua: Attribute.DynamicZone< + ['kafetegia.produktu-taldea', 'kafetegia.izenburua'] + >; createdAt: Attribute.DateTime; updatedAt: Attribute.DateTime; publishedAt: Attribute.DateTime; diff --git a/front/.env.production b/front/.env.production index 33e60f9..1be2388 100644 --- a/front/.env.production +++ b/front/.env.production @@ -1,2 +1,3 @@ GATSBY_ROOT_URL=https://laba-webgunea.netlify.app API_URL=https://vervet-big-dassie.ngrok-free.app +STRAPI_GRAPHQL_TOKEN=307442ef6911b9692d6946bf6aac5d910795b56d92063e8a58ace14e31c8ac6ad7b64480ba591689abbad02758da9562e423e1ef1af8b9f303612ffb63f94f567060ea9f690d9d14bce676bdcf985a2a8c95643963ffd6f593490bb4b4ccae51572cbf315e7c823d0f368de2fe113b113986e9943df1a81e6e4228b82cc7cead \ No newline at end of file diff --git a/front/src/pages/kafetegia.tsx b/front/src/pages/kafetegia.tsx index 5aecb6f..35d3cdf 100644 --- a/front/src/pages/kafetegia.tsx +++ b/front/src/pages/kafetegia.tsx @@ -15,20 +15,14 @@ import { useKafetegiaData } from '../viewQueries/useKafetegiaData'; import { AlergenoLegenda } from '../components/AlergenoLegenda'; import { Oina } from '../components/Oina'; import { SEO } from '../components/SEO'; +import { produktuaFactory } from '../domain/factories/produktuaFactory'; const Kafetegia: React.VFC = ({ location }) => { - const { - izenburua, - deskribapena, - anizkoJogurta, - edariBeroak, - edariHotzak, - infusioEkologikoak, - pikatzekoak, - gozoak, - tostadak, - konboak, - } = useKafetegiaData(); + const { izenburua, deskribapena, menua } = useKafetegiaData(); + + // oraingoz menuak alergenorik ez duenez, ezkutatuko dugu + // TODO modu dinamikoan aldatu balio hau + const hasAlergenoak = false; return ( <> @@ -47,80 +41,47 @@ const Kafetegia: React.VFC = ({ location }) => { - - - - Edariak - - - - - - - - - - - + {menua.map(konponentea => { + if ( + konponentea.konponentea === + 'StrapiComponentKafetegiaProduktuTaldea' + ) { + return ( + <> + + + + + ); + } - - - - Jakiak - - - - - - - - - - - - - - - + if ( + konponentea.konponentea === 'StrapiComponentKafetegiaIzenburua' + ) { + return ( + + + {konponentea.izenburuBalioa} + + ); + } + })} - - - - - GOSARI KONBOAK - - - 11:00ak arte. Gehitu hauetako bat zure tostada, pintxo edo - bizkotxoari. - - - - + {hasAlergenoak && ( + + + + Alergenoak + - - - - - Alergenoak - - - - + + + )}

On egin!

@@ -133,18 +94,6 @@ const Kafetegia: React.VFC = ({ location }) => { ); }; -const KonboAzalpena = styled.p` - margin-bottom: ${size.base}px; - text-align: right; -`; - -const KonboWrapper = styled.div` - background-color: ${colors.horia}; - padding-top: ${size.base}px; - padding-bottom: ${size.base}px; - margin-bottom: ${size.large}px; -`; - const OnEgin = styled.div` text-align: center; ${font.gargantuan()}; diff --git a/front/src/viewQueries/KafetegiaData.ts b/front/src/viewQueries/KafetegiaData.ts index 3a19872..a62c3bc 100644 --- a/front/src/viewQueries/KafetegiaData.ts +++ b/front/src/viewQueries/KafetegiaData.ts @@ -1,14 +1,7 @@ -import { Produktua } from '../domain/models/Produktua'; +import { MenuKonponentea } from './useKafetegiaData'; export interface KafetegiaData { deskribapena: string; izenburua: string; - edariBeroak: Produktua[]; - infusioEkologikoak: Produktua[]; - edariHotzak: Produktua[]; - pikatzekoak: Produktua[]; - gozoak: Produktua[]; - anizkoJogurta: Produktua; - tostadak: Produktua[]; - konboak: Produktua[]; + menua: MenuKonponentea[]; } diff --git a/front/src/viewQueries/useKafetegiaData.ts b/front/src/viewQueries/useKafetegiaData.ts index fb34ce7..fa7268f 100644 --- a/front/src/viewQueries/useKafetegiaData.ts +++ b/front/src/viewQueries/useKafetegiaData.ts @@ -1,223 +1,64 @@ import { graphql, useStaticQuery } from 'gatsby'; import { ProduktuaDTO } from '../domain/dtos/ProduktuaDTO'; -import { produktuaFactory } from '../domain/factories/produktuaFactory'; import { KafetegiaData } from './KafetegiaData'; +export type MenuKonponentea = + | { + konponentea: 'StrapiComponentKafetegiaIzenburua'; + izenburuBalioa: string; + } + | { + konponentea: 'StrapiComponentKafetegiaProduktuTaldea'; + izenburua: string; + produktuak: ProduktuaDTO[]; + }; + interface DataProps { strapiKafetegia: { deskribapena: string; izenburua: string; - edariBeroak: ProduktuaDTO[]; - infusioEkologikoak: ProduktuaDTO[]; - edariHotzak: ProduktuaDTO[]; - pikatzekoak: ProduktuaDTO[]; - gozoak: ProduktuaDTO[]; - anizkoJogurta: ProduktuaDTO; - tostadak: ProduktuaDTO[]; - konboak: ProduktuaDTO[]; + menua: MenuKonponentea[]; }; } export function useKafetegiaData(): KafetegiaData { const { - strapiKafetegia: { - izenburua, - deskribapena, - anizkoJogurta, - edariBeroak, - edariHotzak, - infusioEkologikoak, - pikatzekoak, - gozoak, - tostadak, - konboak, - }, + strapiKafetegia: { izenburua, deskribapena, menua }, } = useStaticQuery(graphql` { strapiKafetegia { izenburua deskribapena - anizkoJogurta { - alergenoak { - apioa - arraina - arrautzak - esnekiak - fruituLehorrak - glutena - kakahueteak - krustazeoak - lupinuak - moluskuak - sesamoa - soja - sulfitoak - ziapea + menua { + konponentea: __typename + ... on StrapiComponentKafetegiaIzenburua { + izenburuBalioa + id } - beganoa - ekologikoa - izena - prezioa - } - edariBeroak { - id - ekologikoa - beganoa - izena - prezioa - alergenoak { - apioa - arraina - arrautzak - esnekiak - fruituLehorrak - glutena - kakahueteak - krustazeoak - lupinuak - moluskuak - sesamoa - soja - sulfitoak - ziapea - } - } - edariHotzak { - id - ekologikoa - beganoa - izena - prezioa - alergenoak { - apioa - arraina - arrautzak - esnekiak - fruituLehorrak - glutena - kakahueteak - krustazeoak - lupinuak - moluskuak - sesamoa - soja - sulfitoak - ziapea - } - } - infusioEkologikoak { - id - ekologikoa - beganoa - izena - prezioa - alergenoak { - apioa - arraina - arrautzak - esnekiak - fruituLehorrak - glutena - kakahueteak - krustazeoak - lupinuak - moluskuak - sesamoa - soja - sulfitoak - ziapea - } - } - pikatzekoak { - id - ekologikoa - beganoa - izena - prezioa - alergenoak { - apioa - arraina - arrautzak - esnekiak - fruituLehorrak - glutena - kakahueteak - krustazeoak - lupinuak - moluskuak - sesamoa - soja - sulfitoak - ziapea - } - } - gozoak { - id - ekologikoa - beganoa - izena - prezioa - alergenoak { - apioa - arraina - arrautzak - esnekiak - fruituLehorrak - glutena - kakahueteak - krustazeoak - lupinuak - moluskuak - sesamoa - soja - sulfitoak - ziapea - } - } - tostadak { - id - ekologikoa - beganoa - izena - prezioa - alergenoak { - apioa - arraina - arrautzak - esnekiak - fruituLehorrak - glutena - kakahueteak - krustazeoak - lupinuak - moluskuak - sesamoa - soja - sulfitoak - ziapea - } - } - konboak { - id - ekologikoa - beganoa - izena - prezioa - alergenoak { - apioa - arraina - arrautzak - esnekiak - fruituLehorrak - glutena - kakahueteak - krustazeoak - lupinuak - moluskuak - sesamoa - soja - sulfitoak - ziapea + ... on StrapiComponentKafetegiaProduktuTaldea { + izenburua + produktuak { + izena + prezioa + beganoa + ekologikoa + alergenoak { + apioa + arraina + arrautzak + esnekiak + fruituLehorrak + glutena + kakahueteak + krustazeoak + lupinuak + moluskuak + sesamoa + soja + sulfitoak + ziapea + } + } } } } @@ -227,13 +68,6 @@ export function useKafetegiaData(): KafetegiaData { return { izenburua, deskribapena, - anizkoJogurta: produktuaFactory(anizkoJogurta), - edariBeroak: edariBeroak.map(produktuaFactory), - edariHotzak: edariHotzak.map(produktuaFactory), - infusioEkologikoak: infusioEkologikoak.map(produktuaFactory), - pikatzekoak: pikatzekoak.map(produktuaFactory), - gozoak: gozoak.map(produktuaFactory), - tostadak: tostadak.map(produktuaFactory), - konboak: konboak.map(produktuaFactory), + menua, }; }