81 lines
2.3 KiB
TypeScript
81 lines
2.3 KiB
TypeScript
import { SelectionModel } from '@angular/cdk/collections';
|
|
import {
|
|
Component, EventEmitter, Inject, OnInit, Output, QueryList,
|
|
ViewChildren
|
|
} from '@angular/core';
|
|
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
import { SystemService } from 'app/system/system.service';
|
|
import { RunSelectedJobsTableComponent } from './run-selected-jobs-table/run-selected-jobs-table.component';
|
|
|
|
interface SelectedJobsDataType {
|
|
selectedJobs: SelectionModel<JobDataType>;
|
|
}
|
|
|
|
export interface JobDataType {
|
|
active: boolean;
|
|
cronExpression: string;
|
|
currentlyRunning: boolean;
|
|
displayName: string;
|
|
jobId: number;
|
|
lastRunHistory: {
|
|
jobRunEndTime: string;
|
|
jobRunStartTime: string;
|
|
status: string;
|
|
triggerType: string;
|
|
version: number;
|
|
};
|
|
nextRunTime: string;
|
|
}
|
|
|
|
@Component({
|
|
selector: 'mifosx-run-selected-jobs-popover',
|
|
templateUrl: './run-selected-jobs-popover.component.html',
|
|
styleUrls: ['./run-selected-jobs-popover.component.scss']
|
|
})
|
|
export class RunSelectedJobsPopoverComponent implements OnInit {
|
|
|
|
/** Confirmed jobs event emitter */
|
|
@Output() confirmedJobs = new EventEmitter<JobDataType[]>();
|
|
|
|
/** Job table children */
|
|
@ViewChildren(RunSelectedJobsTableComponent) tableComponents:
|
|
QueryList<RunSelectedJobsTableComponent>;
|
|
|
|
/** Initialize Selected Jobs */
|
|
selectedJobs: JobDataType[] = [];
|
|
|
|
/** Show modal or not */
|
|
show: number;
|
|
|
|
/** API call response message */
|
|
messages: { message: string; status: number }[] = [];
|
|
|
|
constructor(private systemService: SystemService, @Inject(MAT_DIALOG_DATA)
|
|
public data: SelectedJobsDataType) { }
|
|
ngOnInit(): void {
|
|
this.selectedJobs = this.data.selectedJobs.selected.sort((a, b) => a.jobId - b.jobId);
|
|
}
|
|
|
|
/**
|
|
* Run all confirmed jobs from table
|
|
*/
|
|
runSelectedJobs(): void {
|
|
this.messages = [];
|
|
let tableData: JobDataType[] = [];
|
|
this.tableComponents.forEach((tableComponent) => {
|
|
tableData = (tableComponent.getTableData());
|
|
});
|
|
|
|
tableData.forEach((job) => {
|
|
this.systemService.runSelectedJob(job.jobId.toString())
|
|
.then((response) => {
|
|
this.messages.push({
|
|
message: `${job.displayName}: ${response.statusText} (${response.status})`,
|
|
status: response.ok
|
|
});
|
|
});
|
|
});
|
|
|
|
this.confirmedJobs.emit(tableData);
|
|
}
|
|
} |