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:
12
front/src/domain/dtos/ProduktuaDTO.ts
Normal file
12
front/src/domain/dtos/ProduktuaDTO.ts
Normal 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;
|
||||
};
|
||||
}
|
||||
29
front/src/domain/factories/produktuaFactory.ts
Normal file
29
front/src/domain/factories/produktuaFactory.ts
Normal 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),
|
||||
}));
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
15
front/src/domain/models/AlergenoIdentifikadorea.ts
Normal file
15
front/src/domain/models/AlergenoIdentifikadorea.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
export type AlergenoIdentifikadorea =
|
||||
| 'apioa'
|
||||
| 'arraina'
|
||||
| 'arrautzak'
|
||||
| 'esnekiak'
|
||||
| 'fruituLehorrak'
|
||||
| 'glutena'
|
||||
| 'kakahueteak'
|
||||
| 'krustazeoak'
|
||||
| 'lupinuak'
|
||||
| 'moluskuak'
|
||||
| 'sesamoa'
|
||||
| 'soja'
|
||||
| 'sulfitoak'
|
||||
| 'ziapea';
|
||||
7
front/src/domain/models/Alergenoa.ts
Normal file
7
front/src/domain/models/Alergenoa.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { AlergenoIdentifikadorea } from './AlergenoIdentifikadorea';
|
||||
|
||||
export interface Alergenoa {
|
||||
id: AlergenoIdentifikadorea;
|
||||
izena: string;
|
||||
zenbakia: string;
|
||||
}
|
||||
10
front/src/domain/models/Produktua.ts
Normal file
10
front/src/domain/models/Produktua.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Alergenoa } from './Alergenoa';
|
||||
|
||||
export interface Produktua {
|
||||
id: string;
|
||||
izena: string;
|
||||
prezioa: number;
|
||||
ekologikoa: boolean;
|
||||
beganoa: boolean;
|
||||
alergenoak: Alergenoa[];
|
||||
}
|
||||
Reference in New Issue
Block a user