mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 22:42:11 +01:00
Refactor customer number handling and add combined observable for customer number and selected order item changes
This commit is contained in:
@@ -10,7 +10,7 @@ import { UiSpinnerModule } from '@ui/spinner';
|
||||
import { OnInitDirective } from '@shared/directives/element-lifecycle';
|
||||
import { PickupShelfInNavigationService } from '@shared/services/navigation';
|
||||
import { BehaviorSubject, asapScheduler, combineLatest } from 'rxjs';
|
||||
import { distinctUntilChanged, map, shareReplay } from 'rxjs/operators';
|
||||
import { distinctUntilChanged, filter, map, shareReplay, tap, throttleTime } from 'rxjs/operators';
|
||||
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
||||
import { DBHOrderItemListItemDTO, KeyValueDTOOfStringAndString } from '@swagger/oms';
|
||||
import { UiErrorModalComponent, UiModalService } from '@ui/modal';
|
||||
@@ -52,7 +52,7 @@ export class PickupShelfInDetailsComponent extends PickupShelfDetailsBaseCompone
|
||||
|
||||
order$ = this.store.order$;
|
||||
|
||||
$customerNumber = toSignal(this.store.customerNumber$);
|
||||
$customerNumber = toSignal(this.store.customerNumber$.pipe(distinctUntilChanged()));
|
||||
|
||||
orderItems$ = this.store.orderItems$.pipe(shareReplay(1));
|
||||
|
||||
@@ -89,8 +89,6 @@ export class PickupShelfInDetailsComponent extends PickupShelfDetailsBaseCompone
|
||||
|
||||
displayedCompartmentInfo$ = this.store.compartmentInfo$;
|
||||
|
||||
$selectedOrderItem = toSignal(this.selectedItem$);
|
||||
|
||||
latestCompartmentInfos$ = this.store.latestCompartmentCodeAndInfoForOrder$;
|
||||
|
||||
latestDisplayedCompartmentInfos$ = this.latestCompartmentInfos$.pipe(
|
||||
@@ -106,6 +104,14 @@ export class PickupShelfInDetailsComponent extends PickupShelfDetailsBaseCompone
|
||||
map(([compartmentInfo, changeActionDisabled]) => !!compartmentInfo || changeActionDisabled),
|
||||
);
|
||||
|
||||
customerNumberAndSelevtedOrderItemIdsChanges$ = combineLatest([this.store.customerNumber$, this.store.selectedOrderItem$]).pipe(
|
||||
filter(([_, selectedOrderItem]) => !!selectedOrderItem),
|
||||
distinctUntilChanged((a, b) => isEqual(a, b)),
|
||||
map(([customerNumber, selectedOrderItem]) => ({ customerNumber, selectedOrderItem })),
|
||||
);
|
||||
|
||||
$customerNumberAndSelevtedOrderItemIdsChanges = toSignal(this.customerNumberAndSelevtedOrderItemIdsChanges$);
|
||||
|
||||
constructor(
|
||||
private _uiModal: UiModalService,
|
||||
private _activatedRoute: ActivatedRoute,
|
||||
@@ -113,8 +119,7 @@ export class PickupShelfInDetailsComponent extends PickupShelfDetailsBaseCompone
|
||||
super();
|
||||
|
||||
effect(() => {
|
||||
const customerNumber = this.$customerNumber();
|
||||
this.$selectedOrderItem();
|
||||
const { customerNumber } = this.$customerNumberAndSelevtedOrderItemIdsChanges();
|
||||
|
||||
if (customerNumber) {
|
||||
untracked(() => {
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
} from '@swagger/oms';
|
||||
import { PickupShelfIOService, PickupShelfService } from '@domain/pickup-shelf';
|
||||
import { Injectable, inject } from '@angular/core';
|
||||
import { delayWhen, distinctUntilChanged, filter, map, mergeMap, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';
|
||||
import { distinctUntilChanged, filter, map, mergeMap, switchMap, tap, withLatestFrom } from 'rxjs/operators';
|
||||
import { UiModalService } from '@ui/modal';
|
||||
import { CrmCustomerService } from '@domain/crm';
|
||||
import * as Selectors from './pickup-shelf-details.selectors';
|
||||
|
||||
Reference in New Issue
Block a user