Alergenoen legenda sortzen du (#2)

* refactor: move to a new file

* refactor: move to new file

* refactor: extract custom hook

* refactor: naming

* refactor: naming

* feat: produktu bakoitzaren alergenoak azaltzen ditu

* feat: alergeno logoak margotzen ditu

* feat: alergeno zerrenda margotzen du

* fix: justifikazioa kentzen du

* fix: maketazioa

* fix: responsive

* fix: maketazioa

* fix: responsive

* fix: nabigazio menuaren kokapena
This commit is contained in:
Aitor Urrutia
2022-03-19 21:20:35 +01:00
committed by GitHub
parent 949a195768
commit 77e68988af
31 changed files with 1264 additions and 435 deletions

View File

@@ -0,0 +1,12 @@
import { AlergenoIdentifikadorea } from '../models/AlergenoIdentifikadorea';
export interface ProduktuaDTO {
id: string;
izena: string;
prezioa: number;
ekologikoa: boolean;
beganoa: boolean;
alergenoak: {
[alergenoa in AlergenoIdentifikadorea]: boolean;
};
}

View File

@@ -0,0 +1,29 @@
import { ProduktuaDTO } from '../dtos/ProduktuaDTO';
import { mapAlergenoIdentifikadoreaToIzena } from '../mappers/mapAlergenoIdentifikadoreaToIzena';
import { mapAlergenoIdentifikadoreaToZenbakia } from '../mappers/mapAlergenoIdentifikadoreaToZenbakia';
import { Alergenoa } from '../models/Alergenoa';
import { AlergenoIdentifikadorea } from '../models/AlergenoIdentifikadorea';
import { Produktua } from '../models/Produktua';
export function produktuaFactory(dto: ProduktuaDTO): Produktua {
return {
...dto,
alergenoak: mapAlergenoDTOToAlergenoZerrenda(dto.alergenoak),
};
}
function mapAlergenoDTOToAlergenoZerrenda(dto: {
[alergenoa in AlergenoIdentifikadorea]: boolean;
}): Alergenoa[] {
const alergenoIdentifikadoreak: AlergenoIdentifikadorea[] = Object.keys(
dto,
) as AlergenoIdentifikadorea[];
return alergenoIdentifikadoreak
.filter(identifikadorea => dto[identifikadorea])
.map<Alergenoa>(identifikadorea => ({
id: identifikadorea,
izena: mapAlergenoIdentifikadoreaToIzena(identifikadorea),
zenbakia: mapAlergenoIdentifikadoreaToZenbakia(identifikadorea),
}));
}

View File

@@ -0,0 +1,24 @@
import { AlergenoIdentifikadorea } from '../models/AlergenoIdentifikadorea';
export function mapAlergenoIdentifikadoreaToIzena(
identifikadorea: AlergenoIdentifikadorea,
): string {
const dictionary: { [key in AlergenoIdentifikadorea]: string } = {
apioa: 'Apioa',
arraina: 'Arraina',
arrautzak: 'Arrautzak',
esnekiak: 'Esnekiak',
fruituLehorrak: 'Fruitu Lehorrak',
glutena: 'Glutena',
kakahueteak: 'Kakahueteak',
krustazeoak: 'Krustazeoak',
lupinuak: 'Lupinuak',
moluskuak: 'Moluskuak',
sesamoa: 'Sesamoa',
soja: 'Soja',
ziapea: 'Ziapea',
sulfitoak: 'Sulfitoak',
};
return dictionary[identifikadorea];
}

View File

@@ -0,0 +1,24 @@
import { AlergenoIdentifikadorea } from '../models/AlergenoIdentifikadorea';
export function mapAlergenoIdentifikadoreaToZenbakia(
identifikadorea: AlergenoIdentifikadorea,
): string {
const dictionary: { [key in AlergenoIdentifikadorea]: string } = {
esnekiak: '1',
arrautzak: '2',
glutena: '3',
moluskuak: '4',
krustazeoak: '5',
arraina: '6',
lupinuak: '7',
fruituLehorrak: '8',
kakahueteak: '9',
sesamoa: '10',
soja: '11',
sulfitoak: '12',
apioa: '13',
ziapea: '14',
};
return dictionary[identifikadorea];
}

View File

@@ -0,0 +1,15 @@
export type AlergenoIdentifikadorea =
| 'apioa'
| 'arraina'
| 'arrautzak'
| 'esnekiak'
| 'fruituLehorrak'
| 'glutena'
| 'kakahueteak'
| 'krustazeoak'
| 'lupinuak'
| 'moluskuak'
| 'sesamoa'
| 'soja'
| 'sulfitoak'
| 'ziapea';

View File

@@ -0,0 +1,7 @@
import { AlergenoIdentifikadorea } from './AlergenoIdentifikadorea';
export interface Alergenoa {
id: AlergenoIdentifikadorea;
izena: string;
zenbakia: string;
}

View File

@@ -0,0 +1,10 @@
import { Alergenoa } from './Alergenoa';
export interface Produktua {
id: string;
izena: string;
prezioa: number;
ekologikoa: boolean;
beganoa: boolean;
alergenoak: Alergenoa[];
}