From ea2f273a73c02a3b7e9345605357ac4900c4d672 Mon Sep 17 00:00:00 2001 From: Ruben Bimberg <ruben.bimberg@mni.thm.de> Date: Mon, 12 Jul 2021 13:34:06 +0200 Subject: [PATCH] Fix redraw bug Sometimes the tag cloud did a redraw unnecessarily when joining the tag cloud via dialog. [Ticket: #186] --- .../topic-cloud-filter/topic-cloud-filter.component.ts | 2 +- .../components/shared/tag-cloud/tag-cloud.component.ts | 8 ++------ src/app/services/util/tag-cloud-data.service.ts | 5 +++++ src/app/services/util/topic-cloud-admin.service.ts | 9 ++++++--- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.ts b/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.ts index b3bf5ca68..9eb077c9e 100644 --- a/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.ts +++ b/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.ts @@ -68,7 +68,7 @@ export class TopicCloudFilterComponent implements OnInit { this.filteredComments = this.getCommentCounts(this.comments.filter(comment => this.tmpFilter.checkComment(comment))); this.commentsLoadedCallback(); this.hasNoKeywords = this.comments.length >= 3 && - this.allComments.keywords === 0 && + this.comments.every(comment => !comment.keywordsFromSpacy || comment.keywordsFromSpacy.length === 0) && !WorkerDialogComponent.isWorkingOnRoom(data.room.id); }); this.eventService.broadcast('pushCurrentRoomData'); diff --git a/src/app/components/shared/tag-cloud/tag-cloud.component.ts b/src/app/components/shared/tag-cloud/tag-cloud.component.ts index 65145b71b..122763e8f 100644 --- a/src/app/components/shared/tag-cloud/tag-cloud.component.ts +++ b/src/app/components/shared/tag-cloud/tag-cloud.component.ts @@ -156,7 +156,7 @@ const getDefaultCloudParameters = (): CloudParameters => { templateUrl: './tag-cloud.component.html', styleUrls: ['./tag-cloud.component.scss'] }) -export class TagCloudComponent implements OnInit, OnDestroy, AfterContentInit, AfterViewInit { +export class TagCloudComponent implements OnInit, OnDestroy, AfterContentInit { @ViewChild(TCloudComponent, { static: false }) child: TCloudComponent; @ViewChild(TagCloudPopUpComponent) popup: TagCloudPopUpComponent; @@ -303,15 +303,11 @@ export class TagCloudComponent implements OnInit, OnDestroy, AfterContentInit, A ngAfterContentInit() { document.getElementById('footer_rescale').style.display = 'none'; this._calcFont = window.getComputedStyle(document.getElementById('tagCloudComponent')).fontFamily; - this.dataManager.bindToRoom(this.roomId, this.userRole); + setTimeout(() => this.dataManager.bindToRoom(this.roomId, this.userRole)); this.dataManager.updateDemoData(this.translateService); this.setCloudParameters(TagCloudComponent.getCurrentCloudParameters(), false); } - ngAfterViewInit() { - setTimeout(() => this.rebuildData()); - } - ngOnDestroy() { document.getElementById('footer_rescale').style.display = 'block'; this.headerInterface.unsubscribe(); diff --git a/src/app/services/util/tag-cloud-data.service.ts b/src/app/services/util/tag-cloud-data.service.ts index d3762dcda..7d60e8387 100644 --- a/src/app/services/util/tag-cloud-data.service.ts +++ b/src/app/services/util/tag-cloud-data.service.ts @@ -154,8 +154,12 @@ export class TagCloudDataService { } bindToRoom(roomId: string, userRole: UserRole): void { + if (this._subscriptionAdminData) { + throw new Error('Room already bound.'); + } this._currentFilter = CommentFilter.currentFilter; this._roomId = roomId; + this._lastFetchedComments = null; this._subscriptionAdminData = this._tagCloudAdmin.getAdminData.subscribe(adminData => { this.onReceiveAdminData(adminData, true); }); @@ -181,6 +185,7 @@ export class TagCloudDataService { unbindRoom(): void { this._subscriptionAdminData.unsubscribe(); + this._subscriptionAdminData = null; if (this._commentSubscription !== null) { this._commentSubscription.unsubscribe(); this._commentSubscription = null; diff --git a/src/app/services/util/topic-cloud-admin.service.ts b/src/app/services/util/topic-cloud-admin.service.ts index 429b18536..6c88ce2f8 100644 --- a/src/app/services/util/topic-cloud-admin.service.ts +++ b/src/app/services/util/topic-cloud-admin.service.ts @@ -146,9 +146,12 @@ export class TopicCloudAdminService { this.roomService.getRoom(roomId).subscribe(room => { this.blacklistActive = room.blacklistIsActive; const adminData = TopicCloudAdminService.getDefaultAdminData; - adminData.blacklistIsActive = room.blacklistIsActive; - adminData.profanityFilter = room.profanityFilter; - this.setAdminData(adminData, false, userRole); + if (adminData.blacklistIsActive !== room.blacklistIsActive || + adminData.profanityFilter !== room.profanityFilter) { + adminData.blacklistIsActive = room.blacklistIsActive; + adminData.profanityFilter = room.profanityFilter; + this.setAdminData(adminData, false, userRole); + } }); } -- GitLab