From 89b3e6404288088c18ce3c33c70710c7a9415a6d Mon Sep 17 00:00:00 2001 From: Kevin Lopez Date: Tue, 6 Jul 2021 17:08:09 -0500 Subject: [PATCH 1/3] fix: TT-283 added try catch to handle method rerenderDataTable --- .../time-entries-table.component.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts b/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts index cc58021e9..36f35de4b 100644 --- a/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts +++ b/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts @@ -2,6 +2,7 @@ import { formatDate } from '@angular/common'; import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core'; import { select, Store } from '@ngrx/store'; import { DataTableDirective } from 'angular-datatables'; +import * as console from 'console'; import * as moment from 'moment'; import { Observable, Subject } from 'rxjs'; import { Entry } from 'src/app/modules/shared/models'; @@ -82,11 +83,15 @@ export class TimeEntriesTableComponent implements OnInit, OnDestroy, AfterViewIn private rerenderDataTable(): void { if (this.dtElement && this.dtElement.dtInstance) { this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => { - dtInstance.destroy(); - this.dtTrigger.next(); + try { + dtInstance.destroy(); + this.dtTrigger.next(); + } catch (error) {} }); } else { - this.dtTrigger.next(); + try { + this.dtTrigger.next(); + } catch (error) {} } } From fe687d2ad56aeb626caecbd1257680923919f968 Mon Sep 17 00:00:00 2001 From: Kevin Lopez Date: Tue, 6 Jul 2021 17:35:48 -0500 Subject: [PATCH 2/3] fix: TT-283 removal code smell --- .../time-entries-table/time-entries-table.component.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts b/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts index 36f35de4b..ce2f8ee88 100644 --- a/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts +++ b/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts @@ -2,7 +2,6 @@ import { formatDate } from '@angular/common'; import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core'; import { select, Store } from '@ngrx/store'; import { DataTableDirective } from 'angular-datatables'; -import * as console from 'console'; import * as moment from 'moment'; import { Observable, Subject } from 'rxjs'; import { Entry } from 'src/app/modules/shared/models'; From 719f14be6f375f835da12e2ad18b792f148581d3 Mon Sep 17 00:00:00 2001 From: DrFreud1 Date: Fri, 9 Jul 2021 12:56:12 -0500 Subject: [PATCH 3/3] fix: TT-286 fixed error by adding an unsubscription routine --- .../time-entries-table/time-entries-table.component.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts b/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts index ce2f8ee88..af793a6b9 100644 --- a/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts +++ b/src/app/modules/reports/components/time-entries-table/time-entries-table.component.ts @@ -3,7 +3,7 @@ import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/ import { select, Store } from '@ngrx/store'; import { DataTableDirective } from 'angular-datatables'; import * as moment from 'moment'; -import { Observable, Subject } from 'rxjs'; +import { Observable, Subject, Subscription } from 'rxjs'; import { Entry } from 'src/app/modules/shared/models'; import { DataSource } from 'src/app/modules/shared/models/data-source.model'; import { EntryState } from '../../../time-clock/store/entry.reducer'; @@ -60,13 +60,14 @@ export class TimeEntriesTableComponent implements OnInit, OnDestroy, AfterViewIn dtElement: DataTableDirective; isLoading$: Observable; reportDataSource$: Observable>; + rerenderTableSubscription: Subscription; constructor(private store: Store) { this.reportDataSource$ = this.store.pipe(select(getReportDataSource)); } ngOnInit(): void { - this.reportDataSource$.subscribe((ds) => { + this.rerenderTableSubscription = this.reportDataSource$.subscribe((ds) => { this.rerenderDataTable(); }); } @@ -76,21 +77,18 @@ export class TimeEntriesTableComponent implements OnInit, OnDestroy, AfterViewIn } ngOnDestroy(): void { + this.rerenderTableSubscription.unsubscribe(); this.dtTrigger.unsubscribe(); } private rerenderDataTable(): void { if (this.dtElement && this.dtElement.dtInstance) { this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => { - try { dtInstance.destroy(); this.dtTrigger.next(); - } catch (error) {} }); } else { - try { this.dtTrigger.next(); - } catch (error) {} } }