|
@ -5,10 +5,13 @@ import { |
|
|
OnDestroy, |
|
|
OnDestroy, |
|
|
OnInit |
|
|
OnInit |
|
|
} from '@angular/core'; |
|
|
} from '@angular/core'; |
|
|
|
|
|
import { FormBuilder, FormGroup } from '@angular/forms'; |
|
|
import { AdminService } from '@ghostfolio/client/services/admin.service'; |
|
|
import { AdminService } from '@ghostfolio/client/services/admin.service'; |
|
|
import { UserService } from '@ghostfolio/client/services/user/user.service'; |
|
|
import { UserService } from '@ghostfolio/client/services/user/user.service'; |
|
|
|
|
|
import { QUEUE_JOB_STATUS_LIST } from '@ghostfolio/common/config'; |
|
|
import { getDateWithTimeFormatString } from '@ghostfolio/common/helper'; |
|
|
import { getDateWithTimeFormatString } from '@ghostfolio/common/helper'; |
|
|
import { AdminJobs, User } from '@ghostfolio/common/interfaces'; |
|
|
import { AdminJobs, User } from '@ghostfolio/common/interfaces'; |
|
|
|
|
|
import { JobStatus } from 'bull'; |
|
|
import { Subject } from 'rxjs'; |
|
|
import { Subject } from 'rxjs'; |
|
|
import { takeUntil } from 'rxjs/operators'; |
|
|
import { takeUntil } from 'rxjs/operators'; |
|
|
|
|
|
|
|
@ -20,7 +23,9 @@ import { takeUntil } from 'rxjs/operators'; |
|
|
}) |
|
|
}) |
|
|
export class AdminJobsComponent implements OnDestroy, OnInit { |
|
|
export class AdminJobsComponent implements OnDestroy, OnInit { |
|
|
public defaultDateTimeFormat: string; |
|
|
public defaultDateTimeFormat: string; |
|
|
|
|
|
public filterForm: FormGroup; |
|
|
public jobs: AdminJobs['jobs'] = []; |
|
|
public jobs: AdminJobs['jobs'] = []; |
|
|
|
|
|
public statusFilterOptions = QUEUE_JOB_STATUS_LIST; |
|
|
public user: User; |
|
|
public user: User; |
|
|
|
|
|
|
|
|
private unsubscribeSubject = new Subject<void>(); |
|
|
private unsubscribeSubject = new Subject<void>(); |
|
@ -31,6 +36,7 @@ export class AdminJobsComponent implements OnDestroy, OnInit { |
|
|
public constructor( |
|
|
public constructor( |
|
|
private adminService: AdminService, |
|
|
private adminService: AdminService, |
|
|
private changeDetectorRef: ChangeDetectorRef, |
|
|
private changeDetectorRef: ChangeDetectorRef, |
|
|
|
|
|
private formBuilder: FormBuilder, |
|
|
private userService: UserService |
|
|
private userService: UserService |
|
|
) { |
|
|
) { |
|
|
this.userService.stateChanged |
|
|
this.userService.stateChanged |
|
@ -50,6 +56,17 @@ export class AdminJobsComponent implements OnDestroy, OnInit { |
|
|
* Initializes the controller |
|
|
* Initializes the controller |
|
|
*/ |
|
|
*/ |
|
|
public ngOnInit() { |
|
|
public ngOnInit() { |
|
|
|
|
|
this.filterForm = this.formBuilder.group({ |
|
|
|
|
|
status: [] |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
this.filterForm.valueChanges |
|
|
|
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
|
|
|
.subscribe(() => { |
|
|
|
|
|
const currentFilter = this.filterForm.get('status').value; |
|
|
|
|
|
this.fetchJobs(currentFilter ? [currentFilter] : undefined); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
this.fetchJobs(); |
|
|
this.fetchJobs(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -62,6 +79,16 @@ export class AdminJobsComponent implements OnDestroy, OnInit { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public onDeleteJobs() { |
|
|
|
|
|
this.adminService |
|
|
|
|
|
.deleteJobs({}) |
|
|
|
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
|
|
|
.subscribe(() => { |
|
|
|
|
|
const currentFilter = this.filterForm.get('status').value; |
|
|
|
|
|
this.fetchJobs(currentFilter ? [currentFilter] : undefined); |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
public onViewStacktrace(aStacktrace: AdminJobs['jobs'][0]['stacktrace']) { |
|
|
public onViewStacktrace(aStacktrace: AdminJobs['jobs'][0]['stacktrace']) { |
|
|
alert(JSON.stringify(aStacktrace, null, ' ')); |
|
|
alert(JSON.stringify(aStacktrace, null, ' ')); |
|
|
} |
|
|
} |
|
@ -71,9 +98,9 @@ export class AdminJobsComponent implements OnDestroy, OnInit { |
|
|
this.unsubscribeSubject.complete(); |
|
|
this.unsubscribeSubject.complete(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private fetchJobs() { |
|
|
private fetchJobs(aStatus?: JobStatus[]) { |
|
|
this.adminService |
|
|
this.adminService |
|
|
.fetchJobs() |
|
|
.fetchJobs({ status: aStatus }) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.subscribe(({ jobs }) => { |
|
|
.subscribe(({ jobs }) => { |
|
|
this.jobs = jobs; |
|
|
this.jobs = jobs; |
|
|