UNPKG

@crnk/angular-ngrx

Version:

Angular helper library for ngrx-json-api and crnk:

53 lines 2.3 kB
import { Subject } from "rxjs/Subject"; import { Observable } from "rxjs/Observable"; import * as _ from "lodash"; import "rxjs/add/operator/zip"; import "rxjs/add/operator/do"; import "rxjs/add/operator/debounceTime"; import "rxjs/add/operator/distinct"; import "rxjs/add/operator/switch"; import { FilteringParam, ManyQueryResult, NGRX_JSON_API_DEFAULT_ZONE, NgrxJsonApiService, NgrxJsonApiZoneService, Query, ResourceIdentifier } from "ngrx-json-api"; import { CrnkBindingUtils } from "./crnk.binding.utils"; var SelectorBinding = /** @class */ (function () { function SelectorBinding(ngrxJsonApiService, config, utils) { var _this = this; this.config = config; this.utils = utils; this.ngrxJsonApiZone = ngrxJsonApiService.getZone(config.zoneId || NGRX_JSON_API_DEFAULT_ZONE); var termToQuery = function (queryTerm) { var query = _.cloneDeep(_this.config.query); if (queryTerm !== null) { if (!query.params) { query.params = {}; } if (!query.params.filtering) { query.params.filtering = []; } var filterParam = _this.config.filterFactory(queryTerm); query.params.filtering.push(filterParam); } return query; }; var executeQuery = function (query) { _this.ngrxJsonApiZone.putQuery({ query: query, fromServer: true }); return _this.ngrxJsonApiZone.selectManyResults(query.queryId); }; var isNotLoading = function (result) { return !result.loading; }; var toIdentifiers = function (result) { return _this.utils.toResourceIdentifiers(result.data); }; this.querySubject = new Subject(); this.values = this.querySubject.asObservable() .map(termToQuery) .switchMap(executeQuery) .filter(isNotLoading) .map(toIdentifiers); } SelectorBinding.prototype.complete = function (event) { this.querySubject.next(event.query); }; return SelectorBinding; }()); export { SelectorBinding }; //# sourceMappingURL=crnk.binding.selector.js.map