Filter Panel
Tue Jun 22 2021 14:58:33 GMT+0000 (Coordinated Universal Time)
Saved by @alexUnnamed #angular
ngAfterViewInit(): void {
const vendor = this.activatedRoute.snapshot.params.vendor_id;
combineLatest([
this.filterChanged$.asObservable().pipe(
startWith({}),
tap(() => this.pagination.reset())
),
this.sort.sortChange.pipe(
startWith({}),
tap(() => this.pagination.reset())
),
this.pagination.pageChanged.pipe(startWith({})),
])
.pipe(
tap(() => (this.isLoading = true)),
map(([filterData]) => {
let orderFilter: OrderFilterInput = {
vendor,
};
if ('dateFrom' in filterData && 'dateTo' in filterData && 'city' in filterData) {
const { dateFrom, dateTo, city } = filterData;
orderFilter = {
...orderFilter,
...(
dateFrom && dateTo && {
createdRange: {
gte: dateFrom,
lte: dateTo,
}
}
),
city
};
}
return orderFilter;
}),
switchMap((orderFilter) =>
merge(
this.updateOrders$
.asObservable()
.pipe(map(() => ({ callCount: 1, orderFilter }))),
timer(0, 30 * 1000).pipe(
map((callCount) => ({ callCount, orderFilter }))
)
)
),
switchMap(({ callCount, orderFilter }) => {
this.newOrderCheckerService.makeFetch();
const fetchOrders$ = this.orderService.findAll(
this.getSortData(),
callCount === 0
? this.pagination.getPaginationData()
: this.pagination.getCachedPaginationData(),
orderFilter
);
return PaginationComponent.paginationSetter$(this.pagination)(
() => fetchOrders$
);
}),
tap(({ orders }) => {
this.orders = orders;
this.data = this.getGroupedOrders(orders);
this.isLoading = false;
}),
filter(() => this.isAdmin()),
tap(({ orders }) => {
if (
!orders.some((order) => order.cancellationReason?.blinkForAdmin)
) {
return;
}
this.audioService.play(AvailableAudio.NOTIFICATION);
}),
untilDestroyed(this)
)
.subscribe();
}



Comments