From 50d5adba66a919bf0b19919060447a8a7b89de60 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Mon, 30 Apr 2018 22:04:30 -0400 Subject: [PATCH] fix(CreateWorkItemOverlayComponent): allows overlay to display without errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The https://api.openshift.io/api/spaces//workitemtypes API is no longer valid, but there is an alternative API we can use. This also fixes an “Expression has changed” error when the overlay is opened. Fixes: https://github.com/fabric8-ui/fabric8-planner/issues/2571 --- .../create-work-item-overlay.component.ts | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/app/dashboard-widgets/create-work-item-widget/create-work-item-overlay/create-work-item-overlay.component.ts b/src/app/dashboard-widgets/create-work-item-widget/create-work-item-overlay/create-work-item-overlay.component.ts index 724decc1b..d284a541d 100644 --- a/src/app/dashboard-widgets/create-work-item-widget/create-work-item-overlay/create-work-item-overlay.component.ts +++ b/src/app/dashboard-widgets/create-work-item-widget/create-work-item-overlay/create-work-item-overlay.component.ts @@ -1,7 +1,7 @@ -import { AfterViewInit, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; +import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; import { Router } from '@angular/router'; -import { Observable } from 'rxjs'; +import { Observable, Subscription } from 'rxjs'; import { Broadcaster } from 'ngx-base'; import { Space, Spaces } from 'ngx-fabric8-wit'; @@ -19,27 +19,36 @@ import { WorkItemService } from 'fabric8-planner/app/services/work-item.service' selector: 'fabric8-create-work-item-overlay', templateUrl: './create-work-item-overlay.component.html' }) -export class CreateWorkItemOverlayComponent implements OnInit, AfterViewInit { - +export class CreateWorkItemOverlayComponent implements OnDestroy, OnInit, AfterViewInit { + workItemSubscription: Subscription; workItemTypes: Observable; space: Space; @ViewChild('detailAddTypeSelector') overlay: WorkItemDetailAddTypeSelectorWidgetComponent; - constructor( - private router: Router, - private spaces: Spaces, - private broadcaster: Broadcaster, - private workItemService: WorkItemService - ) { } + constructor(private router: Router, + private spaces: Spaces, + private broadcaster: Broadcaster, + private workItemService: WorkItemService) { + this.workItemSubscription = this.spaces.current.subscribe(space => { + this.space = space; + this.workItemTypes = this.workItemService.getWorkItemTypes2(this.space.relationships.workitemtypes.links.related); + }); + } ngOnInit() { - this.spaces.current.subscribe(space => this.space = space); - this.workItemTypes = this.workItemService.getWorkItemTypes(); + } + + ngOnDestroy(): void { + if (this.workItemSubscription !== undefined) { + this.workItemSubscription.unsubscribe(); + } } ngAfterViewInit() { - this.overlay.open(); + setTimeout(() => { + this.overlay.open(); + }, 10); } onClose() {