|
1 |
| -import { Component, OnInit } from '@angular/core'; |
| 1 | +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; |
| 2 | +import { FormArray, FormGroup } from '@angular/forms'; |
| 3 | +import { IPizzaItem, PizzaSizeEnum } from '../../containers/pizza-form-container/pizza-form.interface'; |
2 | 4 |
|
3 | 5 | @Component({
|
4 | 6 | selector: 'app-pizza-list',
|
5 | 7 | templateUrl: './pizza-list.component.html',
|
6 | 8 | styleUrls: ['./pizza-list.component.scss']
|
7 | 9 | })
|
8 | 10 | export class PizzaListComponent implements OnInit {
|
| 11 | + @Input() group: FormGroup; |
| 12 | + |
| 13 | + @Output() deletePizza = new EventEmitter<number>(); |
| 14 | + @Output() addPizza = new EventEmitter(); |
| 15 | + @Output() pizzaSelected = new EventEmitter<number>(); |
| 16 | + |
| 17 | + get pizzasArray(): FormArray { |
| 18 | + return this.group.get('pizzas') as FormArray; |
| 19 | + } |
9 | 20 |
|
10 | 21 | constructor() { }
|
11 | 22 |
|
12 | 23 | ngOnInit() {
|
13 | 24 | }
|
14 | 25 |
|
| 26 | + getPizzaTitle(pizza: IPizzaItem): string { |
| 27 | + const selectedToppings = pizza.toppings.filter(i => i.selected).map(i => i.name); |
| 28 | + const toppingsString = this.getToppingsString(selectedToppings); |
| 29 | + const sizeString = this.getPizzaSizeTitle(pizza.size); |
| 30 | + |
| 31 | + return `${sizeString} pizza ${toppingsString}`; |
| 32 | + } |
| 33 | + |
| 34 | + private getToppingsString(toppings: string[]): string { |
| 35 | + if (!toppings || !toppings.length) return ''; |
| 36 | + |
| 37 | + return `- ${toppings.toString()}`; |
| 38 | + } |
| 39 | + |
| 40 | + private getPizzaSizeTitle(size: PizzaSizeEnum): string { |
| 41 | + let pizzaSize; |
| 42 | + switch (size) { |
| 43 | + case PizzaSizeEnum.SMALL: |
| 44 | + pizzaSize = 'S'; |
| 45 | + break; |
| 46 | + case PizzaSizeEnum.MEDIUM: |
| 47 | + pizzaSize = 'M'; |
| 48 | + break; |
| 49 | + case PizzaSizeEnum.LARGE: |
| 50 | + pizzaSize = 'L'; |
| 51 | + break; |
| 52 | + } |
| 53 | + |
| 54 | + return pizzaSize; |
| 55 | + } |
| 56 | + |
15 | 57 | }
|
0 commit comments