Abholfach Details Selected Item and Filter Back Navigation to Details

This commit is contained in:
Nino
2023-10-06 11:21:09 +02:00
parent 66991684d2
commit 560ef57915
6 changed files with 33 additions and 21 deletions

View File

@@ -8,7 +8,7 @@
<page-pickup-shelf-details-item
*ngIf="selectedItem$ | async; let item"
class="mb-px-2"
[orderItem]="(orderItems$ | async)[0]"
[orderItem]="item"
[selected]="true"
(historyClick)="navigateToHistoryPage($event)"
[order]="order$ | async"

View File

@@ -9,8 +9,8 @@ import { PickupShelfAddToPreviousCompartmentCodeLabelPipe } from '../../shared/p
import { UiSpinnerModule } from '@ui/spinner';
import { OnInitDirective } from '@shared/directives/element-lifecycle';
import { PickupShelfInNavigationService } from '@shared/services';
import { BehaviorSubject, combineLatest } from 'rxjs';
import { map, take } from 'rxjs/operators';
import { BehaviorSubject } from 'rxjs';
import { map, withLatestFrom } from 'rxjs/operators';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { DBHOrderItemListItemDTO, KeyValueDTOOfStringAndString } from '@swagger/oms';
import { UiErrorModalComponent, UiModalService } from '@ui/modal';
@@ -60,22 +60,21 @@ export class PickupShelfInDetailsComponent extends PickupShelfDetailsBaseCompone
mainActions$ = this.store.mainActions$;
get selectedOrderItemSubsetId() {
return +this._activatedRoute.snapshot.params?.orderItemSubsetId;
}
selectedItem$ = combineLatest([this.orderItems$, this.store.selectedOrderItemSubsetId$]).pipe(
map(([items, orderItemSubsetId]) => items?.find((item) => item?.orderItemSubsetId === orderItemSubsetId))
);
selectedItem$ = this.store.selectedOrderItem$;
constructor(private _uiModal: UiModalService, private _activatedRoute: ActivatedRoute) {
super();
}
async ngOnInit() {
// const orderItems = await this.orderItems$.pipe(take(1)).toPromise();
// const selectedItem = orderItems.find((item) => item?.orderItemSubsetId === this.selectedOrderItemSubsetId);
// this.store.selectOrderItem(selectedItem, true);
ngOnInit() {
this._activatedRoute.params.pipe(takeUntilDestroyed(this.destroyRef), withLatestFrom(this.orderItems$)).subscribe(([params, items]) => {
const orderItemSubsetId = +params?.orderItemSubsetId;
const selectedItem: DBHOrderItemListItemDTO = items?.find(
(item: DBHOrderItemListItemDTO) => item?.orderItemSubsetId === orderItemSubsetId
);
this.store.setPreviousSelectedOrderItemSubsetId(orderItemSubsetId); // Wichtig das die ID im Store vorhanden bleibt um z.B. für die Filter eine zurücknavigation zu ermöglichen
this.store.selectOrderItem(selectedItem, true); // Wird automatisch unselected wenn die Details Seite verlassen wird
});
// this.loadCoverItems();
}

View File

@@ -83,7 +83,7 @@ export class PickupShelfFilterComponent {
orderNumber: this.order?.orderNumber,
compartmentCode: this.detailsStore?.compartmentCode,
processingStatus: this.detailsStore?.processingStatus,
orderItemSubsetId: this.detailsStore?.selectedOrderItemSubsetId,
orderItemSubsetId: this.detailsStore?.selectPreviousSelectedOrderItemSubsetId,
},
}).path;
}

View File

@@ -90,6 +90,8 @@ export const selectFetchReceipts = (s: PickupShelfDetailsState) => !!s.fetchingR
export const selectSelectedOrderItemIds = (s: PickupShelfDetailsState) => s.selectedOrderItemIds ?? [];
export const selectPreviousSelectedOrderItemSubsetId = (s: PickupShelfDetailsState) => s.previousSelectedOrderItemSubsetId;
export const selectedOrderItems = (s: PickupShelfDetailsState) => {
const selectedOrderItemIds = selectSelectedOrderItemIds(s);
const orderItems = selectOrderItems(s);
@@ -97,11 +99,11 @@ export const selectedOrderItems = (s: PickupShelfDetailsState) => {
return orderItems?.filter((oi) => selectedOrderItemIds.includes(oi.orderItemSubsetId));
};
export const selectedOrderItemSubsetId = (s: PickupShelfDetailsState) => {
const selectedOrderItemIds = selectSelectedOrderItemIds(s);
export const selectedOrderItem = (s: PickupShelfDetailsState) => {
const orderItems = selectOrderItems(s);
const selectedOrderItemId = selectPreviousSelectedOrderItemSubsetId(s);
return orderItems?.filter((oi) => selectedOrderItemIds.includes(oi.orderItemSubsetId))?.find((_) => true)?.orderItemSubsetId;
return orderItems?.find((oi) => oi?.orderItemSubsetId === selectedOrderItemId);
};
export const selectSelectedOrderItemQuantity = (s: PickupShelfDetailsState) => {

View File

@@ -24,6 +24,7 @@ export interface PickupShelfDetailsState {
customer?: CustomerInfoDTO;
fetchPartial?: boolean;
previousSelectedOrderItemSubsetId?: number;
selectedOrderItemIds?: number[];
selectedOrderItemQuantity?: Record<number, number>;
selectedCompartmentInfo?: string;

View File

@@ -161,10 +161,16 @@ export class PickupShelfDetailsStore extends ComponentStore<PickupShelfDetailsSt
return this.get(Selectors.selectedOrderItems);
}
selectedOrderItemSubsetId$ = this.select(Selectors.selectedOrderItemSubsetId);
selectedOrderItem$ = this.select(Selectors.selectedOrderItem);
get selectedOrderItemSubsetId() {
return this.get(Selectors.selectedOrderItemSubsetId);
get selectedOrderItem() {
return this.get(Selectors.selectedOrderItem);
}
selectPreviousSelectedOrderItemSubsetId$ = this.select(Selectors.selectPreviousSelectedOrderItemSubsetId);
get selectPreviousSelectedOrderItemSubsetId() {
return this.get(Selectors.selectPreviousSelectedOrderItemSubsetId);
}
canSelectAction$ = this.select(Selectors.selectCanSelectAction);
@@ -232,6 +238,10 @@ export class PickupShelfDetailsStore extends ComponentStore<PickupShelfDetailsSt
this.patchState({ selectedOrderItemProcessingStatus: status });
}
setPreviousSelectedOrderItemSubsetId(previousSelectedOrderItemSubsetId: number) {
this.patchState({ previousSelectedOrderItemSubsetId });
}
selectOrderItem(item: DBHOrderItemListItemDTO, selected: boolean) {
const included = this.selectedOrderItemIds.includes(item?.orderItemSubsetId);