|
|
@ -20,12 +20,13 @@ import { |
|
|
ChangeDetectorRef, |
|
|
ChangeDetectorRef, |
|
|
Component, |
|
|
Component, |
|
|
DestroyRef, |
|
|
DestroyRef, |
|
|
|
|
|
inject, |
|
|
OnInit, |
|
|
OnInit, |
|
|
ViewChild |
|
|
viewChild |
|
|
} from '@angular/core'; |
|
|
} from '@angular/core'; |
|
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; |
|
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; |
|
|
import { |
|
|
import { |
|
|
FormBuilder, |
|
|
FormControl, |
|
|
FormGroup, |
|
|
FormGroup, |
|
|
FormsModule, |
|
|
FormsModule, |
|
|
ReactiveFormsModule |
|
|
ReactiveFormsModule |
|
|
@ -74,19 +75,25 @@ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; |
|
|
templateUrl: './admin-jobs.html' |
|
|
templateUrl: './admin-jobs.html' |
|
|
}) |
|
|
}) |
|
|
export class GfAdminJobsComponent implements OnInit { |
|
|
export class GfAdminJobsComponent implements OnInit { |
|
|
@ViewChild(MatSort) sort: MatSort; |
|
|
protected readonly sort = viewChild.required(MatSort); |
|
|
|
|
|
|
|
|
public DATA_GATHERING_QUEUE_PRIORITY_LOW = DATA_GATHERING_QUEUE_PRIORITY_LOW; |
|
|
protected readonly DATA_GATHERING_QUEUE_PRIORITY_HIGH = |
|
|
public DATA_GATHERING_QUEUE_PRIORITY_HIGH = |
|
|
|
|
|
DATA_GATHERING_QUEUE_PRIORITY_HIGH; |
|
|
DATA_GATHERING_QUEUE_PRIORITY_HIGH; |
|
|
public DATA_GATHERING_QUEUE_PRIORITY_MEDIUM = |
|
|
|
|
|
|
|
|
protected readonly DATA_GATHERING_QUEUE_PRIORITY_LOW = |
|
|
|
|
|
DATA_GATHERING_QUEUE_PRIORITY_LOW; |
|
|
|
|
|
|
|
|
|
|
|
protected readonly DATA_GATHERING_QUEUE_PRIORITY_MEDIUM = |
|
|
DATA_GATHERING_QUEUE_PRIORITY_MEDIUM; |
|
|
DATA_GATHERING_QUEUE_PRIORITY_MEDIUM; |
|
|
|
|
|
|
|
|
public dataSource = new MatTableDataSource<AdminJobs['jobs'][0]>(); |
|
|
protected dataSource = new MatTableDataSource<AdminJobs['jobs'][0]>(); |
|
|
public defaultDateTimeFormat: string; |
|
|
protected defaultDateTimeFormat: string; |
|
|
public filterForm: FormGroup; |
|
|
|
|
|
|
|
|
protected readonly filterForm = new FormGroup({ |
|
|
|
|
|
status: new FormControl<JobStatus | null>(null) |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
public displayedColumns = [ |
|
|
protected readonly displayedColumns = [ |
|
|
'index', |
|
|
'index', |
|
|
'type', |
|
|
'type', |
|
|
'symbol', |
|
|
'symbol', |
|
|
@ -99,21 +106,20 @@ export class GfAdminJobsComponent implements OnInit { |
|
|
'actions' |
|
|
'actions' |
|
|
]; |
|
|
]; |
|
|
|
|
|
|
|
|
public hasPermissionToAccessBullBoard = false; |
|
|
protected hasPermissionToAccessBullBoard = false; |
|
|
public isLoading = false; |
|
|
protected isLoading = false; |
|
|
public statusFilterOptions = QUEUE_JOB_STATUS_LIST; |
|
|
protected readonly statusFilterOptions = QUEUE_JOB_STATUS_LIST; |
|
|
|
|
|
|
|
|
private user: User; |
|
|
private user: User; |
|
|
|
|
|
|
|
|
public constructor( |
|
|
private readonly adminService = inject(AdminService); |
|
|
private adminService: AdminService, |
|
|
private readonly changeDetectorRef = inject(ChangeDetectorRef); |
|
|
private changeDetectorRef: ChangeDetectorRef, |
|
|
private readonly destroyRef = inject(DestroyRef); |
|
|
private destroyRef: DestroyRef, |
|
|
private readonly notificationService = inject(NotificationService); |
|
|
private formBuilder: FormBuilder, |
|
|
private readonly tokenStorageService = inject(TokenStorageService); |
|
|
private notificationService: NotificationService, |
|
|
private readonly userService = inject(UserService); |
|
|
private tokenStorageService: TokenStorageService, |
|
|
|
|
|
private userService: UserService |
|
|
public constructor() { |
|
|
) { |
|
|
|
|
|
this.userService.stateChanged |
|
|
this.userService.stateChanged |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((state) => { |
|
|
.subscribe((state) => { |
|
|
@ -148,21 +154,17 @@ export class GfAdminJobsComponent implements OnInit { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ngOnInit() { |
|
|
public ngOnInit() { |
|
|
this.filterForm = this.formBuilder.group({ |
|
|
|
|
|
status: [] |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
this.filterForm.valueChanges |
|
|
this.filterForm.valueChanges |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(() => { |
|
|
.subscribe(() => { |
|
|
const currentFilter = this.filterForm.get('status').value; |
|
|
const currentFilter = this.filterForm.controls.status.value; |
|
|
this.fetchJobs(currentFilter ? [currentFilter] : undefined); |
|
|
this.fetchJobs(currentFilter ? [currentFilter] : undefined); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
this.fetchJobs(); |
|
|
this.fetchJobs(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public onDeleteJob(aId: string) { |
|
|
protected onDeleteJob(aId: string) { |
|
|
this.adminService |
|
|
this.adminService |
|
|
.deleteJob(aId) |
|
|
.deleteJob(aId) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
@ -171,18 +173,18 @@ export class GfAdminJobsComponent implements OnInit { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public onDeleteJobs() { |
|
|
protected onDeleteJobs() { |
|
|
const currentFilter = this.filterForm.get('status').value; |
|
|
const currentFilter = this.filterForm.controls.status.value; |
|
|
|
|
|
|
|
|
this.adminService |
|
|
this.adminService |
|
|
.deleteJobs({ status: currentFilter ? [currentFilter] : undefined }) |
|
|
.deleteJobs({ status: currentFilter ? [currentFilter] : [] }) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(() => { |
|
|
.subscribe(() => { |
|
|
this.fetchJobs(currentFilter ? [currentFilter] : undefined); |
|
|
this.fetchJobs(currentFilter ? [currentFilter] : undefined); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public onExecuteJob(aId: string) { |
|
|
protected onExecuteJob(aId: string) { |
|
|
this.adminService |
|
|
this.adminService |
|
|
.executeJob(aId) |
|
|
.executeJob(aId) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
@ -191,7 +193,7 @@ export class GfAdminJobsComponent implements OnInit { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public onOpenBullBoard() { |
|
|
protected onOpenBullBoard() { |
|
|
const token = this.tokenStorageService.getToken(); |
|
|
const token = this.tokenStorageService.getToken(); |
|
|
|
|
|
|
|
|
document.cookie = [ |
|
|
document.cookie = [ |
|
|
@ -203,13 +205,13 @@ export class GfAdminJobsComponent implements OnInit { |
|
|
window.open(BULL_BOARD_ROUTE, '_blank'); |
|
|
window.open(BULL_BOARD_ROUTE, '_blank'); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public onViewData(aData: AdminJobs['jobs'][0]['data']) { |
|
|
protected onViewData(aData: AdminJobs['jobs'][0]['data']) { |
|
|
this.notificationService.alert({ |
|
|
this.notificationService.alert({ |
|
|
title: JSON.stringify(aData, null, ' ') |
|
|
title: JSON.stringify(aData, null, ' ') |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public onViewStacktrace(aStacktrace: AdminJobs['jobs'][0]['stacktrace']) { |
|
|
protected onViewStacktrace(aStacktrace: AdminJobs['jobs'][0]['stacktrace']) { |
|
|
this.notificationService.alert({ |
|
|
this.notificationService.alert({ |
|
|
title: JSON.stringify(aStacktrace, null, ' ') |
|
|
title: JSON.stringify(aStacktrace, null, ' ') |
|
|
}); |
|
|
}); |
|
|
@ -223,7 +225,7 @@ export class GfAdminJobsComponent implements OnInit { |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(({ jobs }) => { |
|
|
.subscribe(({ jobs }) => { |
|
|
this.dataSource = new MatTableDataSource(jobs); |
|
|
this.dataSource = new MatTableDataSource(jobs); |
|
|
this.dataSource.sort = this.sort; |
|
|
this.dataSource.sort = this.sort(); |
|
|
this.dataSource.sortingDataAccessor = get; |
|
|
this.dataSource.sortingDataAccessor = get; |
|
|
|
|
|
|
|
|
this.isLoading = false; |
|
|
this.isLoading = false; |
|
|
|