UNPKG

fabric8-planner

Version:
98 lines 5 kB
var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Injectable } from '@angular/core'; import { Actions, Effect } from '@ngrx/effects'; import { select, Store } from '@ngrx/store'; import { Observable, of as ObservableOf } from 'rxjs'; import { catchError, map, switchMap } from 'rxjs/operators'; import * as DetailWorkItemActions from './../actions/detail-work-item.actions'; import { WorkItemMapper } from './../models/work-item'; import { WorkItemService as WIService } from './../services/work-item.service'; import { ErrorHandler, filterTypeWithSpace } from './work-item-utils'; var DetailWorkItemEffects = /** @class */ (function () { function DetailWorkItemEffects(actions$, workItemService, store, errHandler) { var _this = this; this.actions$ = actions$; this.workItemService = workItemService; this.store = store; this.errHandler = errHandler; this.workItemMapper = new WorkItemMapper(); this.getWorkItem$ = this.actions$ .pipe(filterTypeWithSpace(DetailWorkItemActions.GET_WORKITEM, this.store.pipe(select('planner'))), map(function (_a) { var action = _a[0], state = _a[1]; return { payload: action.payload, state: state }; }), switchMap(function (wp) { var state = wp.state; var payload = wp.payload; var workItem = Object.keys(state.workItems.entities) .map(function (id) { return state.workItems.entities[id]; }) .find(function (w) { return w.number === payload.number; }); // If work item found in the existing list if (workItem) { return ObservableOf(new DetailWorkItemActions.GetWorkItemSuccess(workItem)); } // Else fetch it from the server var spaceName = state.space.attributes.name; var spaceOwner = state.space.relationalData.creator.attributes.username; return _this.workItemService .getWorkItemByNumber(payload.number, spaceOwner, spaceName) .pipe(map(function (data) { var wi = _this.resolveWorkItems([data], state); return new DetailWorkItemActions.GetWorkItemSuccess(wi[0]); }), catchError(function (err) { return _this.errHandler.handleError(err, 'Problem in getting work item.', new DetailWorkItemActions.GetWorkItemError()); })); })); } DetailWorkItemEffects.prototype.resolveWorkItems = function (workItems, state, matchingQuery, ancestors) { var _this = this; if (matchingQuery === void 0) { matchingQuery = false; } if (ancestors === void 0) { ancestors = []; } var hasAncestors = !!ancestors.length; return workItems.map(function (wi) { var workItemUI = _this.workItemMapper.toUIModel(wi); workItemUI.bold = matchingQuery; if (hasAncestors) { workItemUI.treeStatus = ancestors.findIndex(function (a) { return a === workItemUI.id; }) > -1 ? 'expanded' : workItemUI.treeStatus; if (workItemUI.treeStatus === 'expanded') { workItemUI.childrenLoaded = true; } } var wid = _this.workItemMapper.toDynamicUIModel(wi, state.workItemTypes.entities[workItemUI.type].dynamicfields); return __assign({}, workItemUI, wid); }); }; DetailWorkItemEffects.decorators = [ { type: Injectable }, ]; /** @nocollapse */ DetailWorkItemEffects.ctorParameters = function () { return [ { type: Actions, }, { type: WIService, }, { type: Store, }, { type: ErrorHandler, }, ]; }; __decorate([ Effect(), __metadata("design:type", Observable) ], DetailWorkItemEffects.prototype, "getWorkItem$", void 0); return DetailWorkItemEffects; }()); export { DetailWorkItemEffects }; //# sourceMappingURL=detail-work-item.effects.js.map