From 967874c4175e12747a390f0f1de09d17d3b7f040 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 26 Nov 2023 08:21:07 -0800 Subject: [PATCH] auto-refresh file tasks --- .../admin/tasks/tasks.component.html | 15 +++++---------- .../admin/tasks/tasks.component.spec.ts | 18 ++++++++++++++++-- .../components/admin/tasks/tasks.component.ts | 14 ++++++++++++++ 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.html b/src-ui/src/app/components/admin/tasks/tasks.component.html index 62799c9f6..7e0ac4cae 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.html +++ b/src-ui/src/app/components/admin/tasks/tasks.component.html @@ -1,5 +1,5 @@ -
+
- +
+ + +
diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts index c981dac6f..b86a170b7 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts @@ -112,6 +112,7 @@ describe('TasksComponent', () => { let modalService: NgbModal let router: Router let httpTestingController: HttpTestingController + let reloadSpy beforeEach(async () => { TestBed.configureTestingModule({ @@ -141,11 +142,13 @@ describe('TasksComponent', () => { }).compileComponents() tasksService = TestBed.inject(TasksService) + reloadSpy = jest.spyOn(tasksService, 'reload') httpTestingController = TestBed.inject(HttpTestingController) modalService = TestBed.inject(NgbModal) router = TestBed.inject(Router) fixture = TestBed.createComponent(TasksComponent) component = fixture.componentInstance + jest.useFakeTimers() fixture.detectChanges() httpTestingController .expectOne(`${environment.apiBaseUrl}tasks/`) @@ -164,7 +167,7 @@ describe('TasksComponent', () => { `Failed${currentTasksLength}` ) expect( - fixture.debugElement.queryAll(By.css('input[type="checkbox"]')) + fixture.debugElement.queryAll(By.css('table input[type="checkbox"]')) ).toHaveLength(currentTasksLength + 1) currentTasksLength = tasks.filter( @@ -245,7 +248,7 @@ describe('TasksComponent', () => { it('should support toggle all tasks', () => { const toggleCheck = fixture.debugElement.query( - By.css('input[type=checkbox]') + By.css('table input[type=checkbox]') ) toggleCheck.nativeElement.dispatchEvent(new MouseEvent('click')) fixture.detectChanges() @@ -269,4 +272,15 @@ describe('TasksComponent', () => { tasks[3].related_document, ]) }) + + it('should auto refresh, allow toggle', () => { + expect(reloadSpy).toHaveBeenCalledTimes(1) + jest.advanceTimersByTime(5000) + expect(reloadSpy).toHaveBeenCalledTimes(2) + + component.toggleAutoRefresh() + expect(component.autoRefreshInterval).toBeNull() + jest.advanceTimersByTime(6000) + expect(reloadSpy).toHaveBeenCalledTimes(2) + }) }) diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.ts b/src-ui/src/app/components/admin/tasks/tasks.component.ts index 32cf6800f..5a1949e77 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.ts @@ -23,6 +23,8 @@ export class TasksComponent public pageSize: number = 25 public page: number = 1 + public autoRefreshInterval: any + get dismissButtonText(): string { return this.selectedTasks.size > 0 ? $localize`Dismiss selected` @@ -39,6 +41,7 @@ export class TasksComponent ngOnInit() { this.tasksService.reload() + this.toggleAutoRefresh() } ngOnDestroy() { @@ -135,4 +138,15 @@ export class TasksComponent return $localize`failed` } } + + toggleAutoRefresh(): void { + if (this.autoRefreshInterval) { + clearInterval(this.autoRefreshInterval) + this.autoRefreshInterval = null + } else { + this.autoRefreshInterval = setInterval(() => { + this.tasksService.reload() + }, 5000) + } + } }