From 465e050c1907226889822c266407624563debfd2 Mon Sep 17 00:00:00 2001 From: yuliia_karas Date: Wed, 13 Nov 2024 10:54:48 +0200 Subject: [PATCH 1/3] add concrete message to popup --- ...ubs-admin-confirm-status-change-pop-up.component.html | 2 +- ...ubs-admin-confirm-status-change-pop-up.component.scss | 1 + ...-admin-confirm-status-change-pop-up.component.spec.ts | 7 +++++-- .../ubs-admin-confirm-status-change-pop-up.component.ts | 9 ++++++--- .../table-cell-select/table-cell-select.component.ts | 1 + src/assets/i18n/ubs-admin/en.json | 2 +- src/assets/i18n/ubs-admin/ua.json | 2 +- 7 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.html b/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.html index 721eb49112..47a53ac48a 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.html +++ b/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.html @@ -5,7 +5,7 @@
-

{{ 'order-status-confirm.confirm-message' | translate }}

+

{{ 'order-status-confirm.confirm-message' | translate }} {{ data.newOption }}?

diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.scss b/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.scss index bcd9c91e9f..a1cc1237fd 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.scss +++ b/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.scss @@ -8,6 +8,7 @@ .container { position: relative; + max-width: 500px; .close-container { position: absolute; diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.spec.ts b/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.spec.ts index 435faa9273..21f2aedd10 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.spec.ts +++ b/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; +import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { TranslateModule } from '@ngx-translate/core'; import { UbsAdminConfirmStatusChangePopUpComponent } from './ubs-admin-confirm-status-change-pop-up.component'; @@ -14,7 +14,10 @@ describe('UbsAdminConfirmStatusChangePopUpComponent', () => { TestBed.configureTestingModule({ declarations: [UbsAdminConfirmStatusChangePopUpComponent], imports: [MatDialogModule, TranslateModule.forRoot()], - providers: [{ provide: MatDialogRef, useValue: matDialogRefStub }] + providers: [ + { provide: MatDialogRef, useValue: matDialogRefStub }, + { provide: MAT_DIALOG_DATA, useValue: {} } + ] }); fixture = TestBed.createComponent(UbsAdminConfirmStatusChangePopUpComponent); component = fixture.componentInstance; diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.ts b/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.ts index 648e2dfc6a..ab77daeba1 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.ts +++ b/src/app/ubs/ubs-admin/components/ubs-admin-confirm-status-change-pop-up/ubs-admin-confirm-status-change-pop-up.component.ts @@ -1,5 +1,5 @@ -import { Component } from '@angular/core'; -import { MatDialogRef } from '@angular/material/dialog'; +import { Component, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; @Component({ selector: 'app-ubs-admin-confirm-status-change-pop-up', @@ -8,7 +8,10 @@ import { MatDialogRef } from '@angular/material/dialog'; }) export class UbsAdminConfirmStatusChangePopUpComponent { closeButton = './assets/img/profile/icons/cancel.svg'; - constructor(public dialogRef: MatDialogRef) {} + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: { newOption: string } + ) {} closeDialog(result: boolean): void { this.dialogRef.close(result); } diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-table/table-cell-select/table-cell-select.component.ts b/src/app/ubs/ubs-admin/components/ubs-admin-table/table-cell-select/table-cell-select.component.ts index fd714d2e42..bfaeff3e5f 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-table/table-cell-select/table-cell-select.component.ts +++ b/src/app/ubs/ubs-admin/components/ubs-admin-table/table-cell-select/table-cell-select.component.ts @@ -175,6 +175,7 @@ export class TableCellSelectComponent implements OnInit { } openConfirmPopUp(): void { + this.dialogConfig.data = { newOption: this.newOption }; this.dialog .open(UbsAdminConfirmStatusChangePopUpComponent, this.dialogConfig) .afterClosed() diff --git a/src/assets/i18n/ubs-admin/en.json b/src/assets/i18n/ubs-admin/en.json index b348b0c8d6..b0b413dacc 100644 --- a/src/assets/i18n/ubs-admin/en.json +++ b/src/assets/i18n/ubs-admin/en.json @@ -225,7 +225,7 @@ "added": "Added" }, "order-status-confirm": { - "confirm-message": "Do you realy want to change order status?", + "confirm-message": "Do you realy want to change order status to", "yes": "Yes", "no": "No" }, diff --git a/src/assets/i18n/ubs-admin/ua.json b/src/assets/i18n/ubs-admin/ua.json index efe01c10f3..257c17a1b4 100644 --- a/src/assets/i18n/ubs-admin/ua.json +++ b/src/assets/i18n/ubs-admin/ua.json @@ -224,7 +224,7 @@ "added": "Додано" }, "order-status-confirm": { - "confirm-message": "Ви справді хочете змінити статус замовлення?", + "confirm-message": "Ви справді хочете змінити статус замовлення на", "yes": "Так", "no": "Ні" }, From ade0ed5284fdb4bcdd6fa206d1b929bc4a3cdd87 Mon Sep 17 00:00:00 2001 From: yuliia_karas Date: Wed, 13 Nov 2024 14:22:03 +0200 Subject: [PATCH 2/3] fix infinite loading in the popup of change status to adjustment on several orders --- .../ubs-admin-several-orders-pop-up.component.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-several-orders-pop-up/ubs-admin-several-orders-pop-up.component.ts b/src/app/ubs/ubs-admin/components/ubs-admin-several-orders-pop-up/ubs-admin-several-orders-pop-up.component.ts index f78c2dd6a2..8853831940 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-several-orders-pop-up/ubs-admin-several-orders-pop-up.component.ts +++ b/src/app/ubs/ubs-admin/components/ubs-admin-several-orders-pop-up/ubs-admin-several-orders-pop-up.component.ts @@ -73,16 +73,16 @@ export class UbsAdminSeveralOrdersPopUpComponent implements OnInit { } initForm(): void { - const currentEmployees = this.responsiblePersonInfo.currentPositionEmployees; + const currentEmployees = this.responsiblePersonInfo?.currentPositionEmployees; this.ordersForm = this.fb.group({ exportDetailsDto: this.fb.group({ dateExport: [ - this.exportInfo.dateExport ? formatDate(this.exportInfo.dateExport, 'yyyy-MM-dd', this.currentLang) : '', + this.exportInfo?.dateExport ? formatDate(this.exportInfo.dateExport, 'yyyy-MM-dd', this.currentLang) : '', [Validators.required] ], - timeDeliveryFrom: [this.parseTimeToStr(this.exportInfo.timeDeliveryFrom), [Validators.required]], - timeDeliveryTo: [this.parseTimeToStr(this.exportInfo.timeDeliveryTo), [Validators.required]], - receivingStationId: [this.getReceivingStationById(this.exportInfo.receivingStationId), [Validators.required]] + timeDeliveryFrom: [this.parseTimeToStr(this.exportInfo?.timeDeliveryFrom), [Validators.required]], + timeDeliveryTo: [this.parseTimeToStr(this.exportInfo?.timeDeliveryTo), [Validators.required]], + receivingStationId: [this.getReceivingStationById(this.exportInfo?.receivingStationId), [Validators.required]] }), responsiblePersonsForm: this.fb.group({ @@ -143,7 +143,7 @@ export class UbsAdminSeveralOrdersPopUpComponent implements OnInit { } getReceivingStationById(receivingStationId: number): string { - return this.exportInfo.allReceivingStations.find((element) => receivingStationId === element.id)?.name || ''; + return this.exportInfo?.allReceivingStations.find((element) => receivingStationId === element.id)?.name || ''; } setEmployeesByPosition(): void { From 97bf131b1b425135ed240ed123d298796aeda22a Mon Sep 17 00:00:00 2001 From: yuliia_karas Date: Sat, 16 Nov 2024 16:59:09 +0200 Subject: [PATCH 3/3] provide optional fields to separate order page --- .../ubs-admin-order.component.ts | 2 +- ...s-admin-responsible-persons.component.html | 55 +++---------------- ...dmin-responsible-persons.component.spec.ts | 36 ++++++++++-- ...ubs-admin-responsible-persons.component.ts | 40 +++++++++++++- 4 files changed, 78 insertions(+), 55 deletions(-) diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-order/ubs-admin-order.component.ts b/src/app/ubs/ubs-admin/components/ubs-admin-order/ubs-admin-order.component.ts index b610f741d0..3fdb02945b 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-order/ubs-admin-order.component.ts +++ b/src/app/ubs/ubs-admin/components/ubs-admin-order/ubs-admin-order.component.ts @@ -694,7 +694,7 @@ export class UbsAdminOrderComponent implements OnInit, OnDestroy, AfterContentCh this.isFormResetted = true; } else { exportDetaisFields.forEach((el) => exportDetails.get(el).setValidators([Validators.required])); - responsiblePersonNames.forEach((el) => responsiblePersons.get(el).setValidators([Validators.required])); + responsiblePersons.get('responsibleCaller')?.setValidators([Validators.required]); } this.statusCanceledOrDone(); } diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.html b/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.html index c6afa62712..16ae04045a 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.html +++ b/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.html @@ -21,58 +21,17 @@

{{ 'responsible-persons.title' | translate }}

{{ 'responsible-persons.alert-message' | translate }}
-
+
- + -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.spec.ts b/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.spec.ts index 62904a21f9..53a94669f6 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.spec.ts +++ b/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { TranslateModule } from '@ngx-translate/core'; -import { ReactiveFormsModule, FormGroup } from '@angular/forms'; +import { ReactiveFormsModule, Validators, FormBuilder } from '@angular/forms'; import { UbsAdminResponsiblePersonsComponent } from './ubs-admin-responsible-persons.component'; @@ -21,13 +21,23 @@ describe('UbsAdminResponsiblePersonsComponent', () => { }).compileComponents(); })); - const FormGroupMock = new FormGroup({}); - beforeEach(() => { fixture = TestBed.createComponent(UbsAdminResponsiblePersonsComponent); component = fixture.componentInstance; + + const fb = new FormBuilder(); + const mockControlWithRequired = fb.control(''); + const mockControlWithoutRequired = fb.control(''); + + mockControlWithRequired.hasValidator = (validator) => validator === Validators.required; + mockControlWithoutRequired.hasValidator = () => false; + + component.responsiblePersonsForm = fb.group({ + responsibleCaller: mockControlWithRequired, + responsibleDriver: mockControlWithoutRequired + }); + component.responsiblePersonInfo = ResponsiblePersonInfoFake as any; - component.responsiblePersonsForm = FormGroupMock; fixture.detectChanges(); }); @@ -63,4 +73,22 @@ describe('UbsAdminResponsiblePersonsComponent', () => { component.isOrderStatusCancelOrDone = false; expect(component.isFormRequired()).toBeFalsy(); }); + + it('should return false if orderStatus is not ADJUSTMENT', () => { + component.orderStatus = 'CANCELED'; + const result = component.isFieldOptional('responsibleCaller'); + expect(result).toBeFalse(); + }); + + it('should return false if the control has Validators.required and status is ADJUSTMENT', () => { + component.orderStatus = 'ADJUSTMENT'; + const result = component.isFieldOptional('responsibleCaller'); + expect(result).toBeFalse(); + }); + + it('should return true if the control does not have Validators.required and status is ADJUSTMENT', () => { + component.orderStatus = 'ADJUSTMENT'; + const result = component.isFieldOptional('responsibleDriver'); + expect(result).toBeTrue(); + }); }); diff --git a/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.ts b/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.ts index 723c5ed175..e744dfd9a2 100644 --- a/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.ts +++ b/src/app/ubs/ubs-admin/components/ubs-admin-responsible-persons/ubs-admin-responsible-persons.component.ts @@ -1,7 +1,7 @@ import { Component, Input, OnDestroy, OnInit, OnChanges, SimpleChanges } from '@angular/core'; -import { FormGroup } from '@angular/forms'; +import { FormGroup, Validators } from '@angular/forms'; import { Subject } from 'rxjs'; -import { IEmployee, IResponsiblePersons } from '../../models/ubs-admin.interface'; +import { IEmployee, IResponsiblePersons, IResponsiblePersonsData } from 'src/app/ubs/ubs-admin/models/ubs-admin.interface'; import { OrderStatus } from 'src/app/ubs/ubs/order-status.enum'; @Component({ @@ -21,6 +21,7 @@ export class UbsAdminResponsiblePersonsComponent implements OnInit, OnDestroy, O allDrivers: string[]; isOrderStatusCancelOrDone = false; pageOpen: boolean; + responsiblePersonsData: IResponsiblePersonsData[]; private destroy$: Subject = new Subject(); ngOnChanges(changes: SimpleChanges): void { @@ -43,6 +44,7 @@ export class UbsAdminResponsiblePersonsComponent implements OnInit, OnDestroy, O this.allLogisticians = this.getEmployeesById(employees, 3); this.allNavigators = this.getEmployeesById(employees, 4); this.allDrivers = this.getEmployeesById(employees, 5); + this.getResponsiblePersonsData(); } isFormRequired(): boolean { @@ -66,8 +68,42 @@ export class UbsAdminResponsiblePersonsComponent implements OnInit, OnDestroy, O return []; } + isFieldOptional(controlName: string): boolean { + if (this.orderStatus !== 'ADJUSTMENT') { + return false; + } + + const control = this.responsiblePersonsForm.get(controlName); + return control && !control.hasValidator(Validators.required); + } + ngOnDestroy(): void { this.destroy$.next(true); this.destroy$.complete(); } + + getResponsiblePersonsData(): void { + this.responsiblePersonsData = [ + { + translate: 'responsible-persons.call-manager', + formControlName: 'responsibleCaller', + responsiblePersonsArray: this.allCallManagers + }, + { + translate: 'responsible-persons.logistician', + formControlName: 'responsibleLogicMan', + responsiblePersonsArray: this.allLogisticians + }, + { + translate: 'responsible-persons.navigator', + formControlName: 'responsibleNavigator', + responsiblePersonsArray: this.allNavigators + }, + { + translate: 'responsible-persons.driver', + formControlName: 'responsibleDriver', + responsiblePersonsArray: this.allDrivers + } + ]; + } }