UNPKG

fabric8-planner

Version:
152 lines 8.59 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, ofType } from '@ngrx/effects'; import { from as ObservableFrom, Observable } from 'rxjs'; import { catchError, map, switchMap, withLatestFrom } from 'rxjs/operators'; import { SpaceQuery } from '../models/space'; import * as WorkItemLinkActions from './../actions/work-item-link.actions'; import * as WorkItemActions from './../actions/work-item.actions'; import { WorkItemLinkMapper } from './../models/link'; import { WorkItemQuery } from './../models/work-item'; import { WorkItemService } from './../services/work-item.service'; import { ErrorHandler } from './work-item-utils'; var WorkItemLinkEffects = /** @class */ (function () { function WorkItemLinkEffects(actions$, workItemService, workItemQuery, spaceQuery, errHandler) { var _this = this; this.actions$ = actions$; this.workItemService = workItemService; this.workItemQuery = workItemQuery; this.spaceQuery = spaceQuery; this.errHandler = errHandler; this.wilMapper = new WorkItemLinkMapper(); this.getLinks$ = this.actions$ .pipe(ofType(WorkItemLinkActions.GET), map(function (action) { return action.payload; }), switchMap(function (payload) { return _this.workItemService.resolveLinks(payload) .pipe(map(function (_a) { var links = _a[0], includes = _a[1]; return links.map(function (link) { link.relationships.link_type.data = includes.find(function (i) { return i.id === link.relationships.link_type.data.id; }); link.relationships.source.data = includes.find(function (i) { return i.id === link.relationships.source.data.id; }); link.relationships.target.data = includes.find(function (i) { return i.id === link.relationships.target.data.id; }); return link; }); }), map(function (links) { return new WorkItemLinkActions.GetSuccess(links.map(function (l) { return _this.wilMapper.toUIModel(l); })); }), catchError(function (err) { return _this.errHandler.handleError(err, "Problem in fetching links.", new WorkItemLinkActions.GetError()); })); })); this.createLink$ = this.actions$ .pipe(ofType(WorkItemLinkActions.ADD), withLatestFrom(this.workItemQuery.getWorkItemEntities), withLatestFrom(this.spaceQuery.getCurrentSpace), map(function (_a) { var _b = _a[0], action = _b[0], workItems = _b[1], space = _a[1]; return { payload: action.payload, workItems: workItems, space: space }; }), switchMap(function (p) { var createLinkPayload = { 'data': p.payload }; return _this.workItemService .createLink(p.space.links.self.split('space')[0] + 'workitemlinks', createLinkPayload) .pipe(switchMap(function (_a) { var link = _a[0], includes = _a[1]; link.relationships.link_type.data = includes.find(function (i) { return i.id === link.relationships.link_type.data.id; }); link.relationships.source.data = includes.find(function (i) { return i.id === link.relationships.source.data.id; }); link.relationships.target.data = includes.find(function (i) { return i.id === link.relationships.target.data.id; }); var sourceWorkItem; var targetWorkItem; var returnActions = []; // the tree will updated // only if it is parent-child relationship if (link.relationships['link_type'].data.id === '25c326a7-6d03-4f5a-b23b-86a9ee4171e9') { if (p.workItems[p.payload.relationships.source.data.id]) { sourceWorkItem = p.workItems[p.payload.relationships.source.data.id]; } if (p.workItems[p.payload.relationships.target.data.id]) { targetWorkItem = p.workItems[p.payload.relationships.target.data.id]; } if (p.workItems[p.payload.relationships.source.data.id] && p.workItems[p.payload.relationships.target.data.id]) { returnActions.push(new WorkItemActions.CreateLink({ source: sourceWorkItem, target: targetWorkItem, sourceTreeStatus: sourceWorkItem.treeStatus })); } } var linkUIValue = __assign({}, _this.wilMapper.toUIModel(link), { newlyAdded: true }); returnActions.push(new WorkItemLinkActions.AddSuccess(linkUIValue)); return ObservableFrom(returnActions); }), catchError(function (err) { return _this.errHandler.handleError(err, "Problem in creating link", new WorkItemLinkActions.AddError()); })); })); this.deleteLink$ = this.actions$ .pipe(ofType(WorkItemLinkActions.DELETE), withLatestFrom(this.workItemQuery.getWorkItemEntities), withLatestFrom(this.spaceQuery.getCurrentSpace), map(function (_a) { var _b = _a[0], action = _b[0], workItems = _b[1], space = _a[1]; return { payload: action.payload, workItems: workItems, space: space }; }), switchMap(function (p) { var wiLink = _this.wilMapper.toServiceModel(p.payload.wiLink); return _this.workItemService .deleteLink(p.space.links.self.split('space')[0] + "workitemlinks/" + wiLink.id) .pipe(switchMap(function (response) { var targetWorkItem; var sourceWorkItem; if (p.workItems[p.payload.wiLink.target.id]) { targetWorkItem = p.workItems[p.payload.wiLink.target.id]; } if (p.workItems[p.payload.wiLink.source.id]) { sourceWorkItem = p.workItems[p.payload.wiLink.source.id]; } return [new WorkItemLinkActions.DeleteSuccess(p.payload.wiLink), new WorkItemActions.DeleteLink({ source: sourceWorkItem, target: targetWorkItem, sourceTreeStatus: '' })]; }), catchError(function (err) { return _this.errHandler.handleError(err, "Problem in deleting work item Link", new WorkItemLinkActions.DeleteError()); })); })); } WorkItemLinkEffects.decorators = [ { type: Injectable }, ]; /** @nocollapse */ WorkItemLinkEffects.ctorParameters = function () { return [ { type: Actions, }, { type: WorkItemService, }, { type: WorkItemQuery, }, { type: SpaceQuery, }, { type: ErrorHandler, }, ]; }; __decorate([ Effect(), __metadata("design:type", Observable) ], WorkItemLinkEffects.prototype, "getLinks$", void 0); __decorate([ Effect(), __metadata("design:type", Observable) ], WorkItemLinkEffects.prototype, "createLink$", void 0); __decorate([ Effect(), __metadata("design:type", Observable) ], WorkItemLinkEffects.prototype, "deleteLink$", void 0); return WorkItemLinkEffects; }()); export { WorkItemLinkEffects }; //# sourceMappingURL=work-item-link.effects.js.map