mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 22:42:11 +01:00
Abholfach Details Selected Item and Filter Back Navigation to Details
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
@@ -24,6 +24,7 @@ export interface PickupShelfDetailsState {
|
||||
customer?: CustomerInfoDTO;
|
||||
|
||||
fetchPartial?: boolean;
|
||||
previousSelectedOrderItemSubsetId?: number;
|
||||
selectedOrderItemIds?: number[];
|
||||
selectedOrderItemQuantity?: Record<number, number>;
|
||||
selectedCompartmentInfo?: string;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user