From 7b327b4fda5fe274859b70e2a5445f7522e2c2cb Mon Sep 17 00:00:00 2001 From: tanshu Date: Thu, 24 Dec 2020 09:26:05 +0530 Subject: [PATCH] Feature: Discount will only update the sale types which have been updated in the form. --- .../app/sales/discount/discount.component.ts | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/bookie/src/app/sales/discount/discount.component.ts b/bookie/src/app/sales/discount/discount.component.ts index 8ac41b0..5b6b157 100644 --- a/bookie/src/app/sales/discount/discount.component.ts +++ b/bookie/src/app/sales/discount/discount.component.ts @@ -1,5 +1,5 @@ import { Component, Inject } from '@angular/core'; -import { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import {FormArray, FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { round } from 'mathjs'; import { Observable } from 'rxjs'; @@ -46,12 +46,19 @@ export class DiscountComponent { accept(): void { const array = this.form.get('discounts') as FormArray; - this.list.forEach((item, index) => { - item.discount = Math.max( - Math.min(round(array.controls[index].value.discount / 100, 5), item.discountLimit), - 0, - ); - }); + for (let i = this.list.length - 1; i >=0 ; i--) { + const item = this.list[i]; + const control = (array.controls[i] as FormGroup).controls.discount as FormControl; + if (control.pristine || control.value === null) { + this.list.splice(i, 1); + } + else { + item.discount = Math.max( + Math.min(round(array.controls[i].value.discount / 100, 5), item.discountLimit), + 0, + ); + } + } this.dialogRef.close(this.list); } }