UNPKG

my-test123

Version:
109 lines 5.22 kB
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 { Store } from '@ngrx/store'; import { Actions, Effect } from '@ngrx/effects'; import { Injectable } from '@angular/core'; import * as DetailWorkItemActions from './../actions/detail-work-item.actions'; import { Observable } from 'rxjs'; import { WorkItemService as WIService } from './../services/work-item.service'; import { WorkItemMapper, WorkItemResolver } from './../models/work-item'; import { Notifications, NotificationType } from "ngx-base"; var DetailWorkItemEffects = /** @class */ (function () { function DetailWorkItemEffects(actions$, workItemService, store, notifications) { var _this = this; this.actions$ = actions$; this.workItemService = workItemService; this.store = store; this.notifications = notifications; this.workItemMapper = new WorkItemMapper(); this.getWorkItem$ = this.actions$ .ofType(DetailWorkItemActions.GET_WORKITEM) .withLatestFrom(this.store.select('listPage')) .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 = state.workItems.find(function (w) { return w.number === payload.number; }); // If work item found in the existing list if (workItem) { return Observable .of(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) .map(function (data) { var wi = _this.resolveWorkItems([data], state); return new DetailWorkItemActions.GetWorkItemSuccess(wi[0]); }) .catch(function (e) { try { _this.notifications.message({ message: "Problem in get worktem.", type: NotificationType.DANGER }); } catch (e) { console.log('Problem in get workitem.'); } return Observable.of(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 workItemResolver = new WorkItemResolver(workItemUI); workItemResolver.resolveArea(state.areas); workItemResolver.resolveIteration(state.iterations); workItemResolver.resolveCreator(state.collaborators); workItemResolver.resolveType(state.workItemTypes); workItemResolver.resolveAssignees(state.collaborators); workItemResolver.resolveWiLabels(state.labels); return workItemResolver.getWorkItem(); }); }; DetailWorkItemEffects.decorators = [ { type: Injectable }, ]; /** @nocollapse */ DetailWorkItemEffects.ctorParameters = function () { return [ { type: Actions, }, { type: WIService, }, { type: Store, }, { type: Notifications, }, ]; }; __decorate([ Effect(), __metadata("design:type", Observable) ], DetailWorkItemEffects.prototype, "getWorkItem$", void 0); return DetailWorkItemEffects; }()); export { DetailWorkItemEffects }; //# sourceMappingURL=detail-work-item.effects.js.map