Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
pagination$,
schema
);
const allEntitiesObservable$ = this.store.select(getAPIRequestDataState);
const entities$ = pagination$.pipe(
distinctUntilChanged(),
// Improve efficiency
observeOn(asapScheduler),
combineLatestOperator(entityObservable$),
withLatestFrom(allEntitiesObservable$),
map(([[pagination], allEntities]) => {
return this.getLocalEntities(pagination, allEntities, schema).filter(ent => !!ent);
}),
tag('de-norming-local ' + schema.key),
);
const isMultiAction$ = combineLatest(
pagination$,
fetching$
).pipe(
filter(([pagination, fetching]) => !fetching),
map(([pagination]) => {
return Object.values(pagination.pageRequests).reduce((entityKeys, pageRequest) => {
const { entityConfig } = pageRequest;
const key = entityCatalogue.getEntityKey(entityConfig);
if (key && !entityKeys.includes(key)) {
entityKeys.push(key);
}
return entityKeys;
}, []).length > 1;
filter(pag => !!pag),
map(pag => {
const pageSize = (dataSource.isLocal ? pag.clientPagination.pageSize : pag.params['results-per-page'])
|| defaultClientPaginationPageSize;
const pageIndex = (dataSource.isLocal ? pag.clientPagination.currentPage : pag.currentPage) || 1;
// const totalResults = (dataSource.isLocal ? pag.clientPagination.totalResults : pag.totalResults) || 0;
return {
totalResults: pag.totalResults,
pageSize,
pageIndex
};
}),
distinctUntilChanged((x, y) => {
return x.pageIndex === y.pageIndex && x.pageSize === y.pageSize && x.totalResults === y.totalResults;
}),
tag('list-pagination')
);
}
const entityObservable$ = this.store
.select(selectEntities(schema.key))
.pipe(distinctUntilChanged());
const allEntitiesObservable$ = this.store.select(getAPIRequestDataState);
return pagination$.pipe(
// Improve efficiency
observeOn(asapScheduler),
filter(pagination => this.hasPage(pagination) && !LocalPaginationHelpers.isPaginationMaxed(pagination)),
distinctUntilChanged(this.isPageSameIsh),
combineLatestOperator(entityObservable$),
withLatestFrom(allEntitiesObservable$),
map(([[pagination], allEntities]) => {
const { page, pageSchema } = this.getPageInfo(pagination, pagination.currentPage, schema);
return this.denormalizePage(page, pageSchema, allEntities);
}),
tag('de-norming ' + schema.key),
publishReplay(1),
refCount(),
);
}
.pipe(distinctUntilChanged());
const allEntitiesObservable$ = this.store.select(getAPIRequestDataState);
return pagination$.pipe(
// Improve efficiency
observeOn(asapScheduler),
filter(pagination => this.hasPage(pagination)),
distinctUntilChanged(this.isPageSameIsh),
combineLatestOperator(entityObservable$),
withLatestFrom(allEntitiesObservable$),
map(([[pagination], allEntities]) => {
const page = pagination.ids[pagination.currentPage] || [];
return page.length
? denormalize(page, [schema], allEntities).filter(ent => !!ent)
: [];
}),
tag('de-norming ' + schema.key),
publishReplay(1),
refCount(),
);
}
filter(pag => !!pag),
map(pag => {
const pageSize = (dataSource.isLocal ? pag.clientPagination.pageSize : pag.params['results-per-page'])
|| defaultClientPaginationPageSize;
const pageIndex = (dataSource.isLocal ? pag.clientPagination.currentPage : pag.currentPage) || 1;
// const totalResults = (dataSource.isLocal ? pag.clientPagination.totalResults : pag.totalResults) || 0;
return {
totalResults: pag.totalResults,
pageSize,
pageIndex
};
}),
distinctUntilChanged((x, y) => {
return x.pageIndex === y.pageIndex && x.pageSize === y.pageSize && x.totalResults === y.totalResults;
}),
tag('list-pagination')
);
}
private createSortObservable(): Observable {
return this.pagination$.pipe(
map(pag => ({
direction: pag.params['order-direction'] as SortDirection,
field: pag.params['order-direction-field']
})),
filter(x => !!x),
distinctUntilChanged((x: ListSort, y: ListSort) => x.direction === y.direction && x.field === y.field),
tag('list-sort')
);
}
private createSortObservable(dataSource: IListDataSource): Observable {
return dataSource.pagination$.pipe(
map(pag => ({
direction: pag.params['order-direction'] as SortDirection,
field: pag.params['order-direction-field']
})),
filter(x => !!x),
distinctUntilChanged((x, y) => {
return x.direction === y.direction && x.field === y.field;
}),
tag('list-sort')
);
}
private createFilterObservable(dataSource: IListDataSource): Observable {
return dataSource.pagination$.pipe(
map(pag => ({
string: dataSource.isLocal ? pag.clientPagination.filter.string : dataSource.getFilterFromParams(pag),
items: { ...pag.clientPagination.filter.items }
})),
tag('list-filter')
);
}
private createFilterObservable(): Observable {
return this.pagination$.pipe(
map(pag => ({
string: this.isLocal ? pag.clientPagination.filter.string : this.getFilterFromParams(pag),
items: { ...pag.clientPagination.filter.items },
filterKey: pag.clientPagination.filter.filterKey,
})),
tag('list-filter')
);
}
}