Files
quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts
2022-10-05 00:43:18 +02:00

86 lines
2.3 KiB
TypeScript

import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
import {TriggerService} from '../../services/trigger.service';
import {TriggerKey} from '../../model/triggerKey.model';
import {SimpleTrigger} from '../../model/simple-trigger.model';
import {MatDialog} from '@angular/material/dialog';
@Component({
template: 'Multiple jobs not supported yet - Coming Soon...',
})
// tslint:disable-next-line:component-class-suffix
export class UnsupportedMultipleJobsDialog {
}
@Component({
selector: 'qrzmng-trigger-list',
templateUrl: './trigger-list.component.html',
styleUrls: ['./trigger-list.component.scss']
})
export class TriggerListComponent implements OnInit {
newTriggers: Array<SimpleTrigger> = new Array<SimpleTrigger>();
loading = true;
triggerKeys: Array<TriggerKey> = new Array<TriggerKey>();
@Output() onNewTriggerClicked = new EventEmitter<void>();
triggerFormIsOpen = false;
selectedTrigger: TriggerKey;
@Output() onSelectedTrigger = new EventEmitter<TriggerKey>();
constructor(
private triggerService: TriggerService,
public dialog: MatDialog
) {
}
ngOnInit() {
this.loading = true;
this.fetchTriggers();
}
@Input()
set openedNewTriggerForm(triggerFormIsOpen: boolean) {
this.triggerFormIsOpen = triggerFormIsOpen;
}
getTriggerKeyList = () => {
const newTriggerKeys = this.newTriggers.map(simpleTrigger => simpleTrigger.triggerKeyDTO);
return newTriggerKeys.concat(this.triggerKeys);
}
private fetchTriggers() {
this.triggerService.fetchTriggers()
.subscribe((triggerKeys: Array<TriggerKey>) => {
this.triggerKeys = triggerKeys;
if (!triggerKeys || triggerKeys.length === 0) {
this.onNewTriggerBtnClicked();
} else {
this.selectTrigger(this.triggerKeys[0]);
}
})
}
selectTrigger(triggerKey: TriggerKey) {
this.selectedTrigger = triggerKey;
this.onSelectedTrigger.emit(triggerKey);
}
onNewTriggerBtnClicked() {
if (this.triggerKeys && this.triggerKeys.length > 0) {
this.dialog.open(UnsupportedMultipleJobsDialog)
} else {
this.onNewTriggerClicked.emit();
}
}
onNewTrigger(newTrigger: SimpleTrigger) {
this.newTriggers = [newTrigger, ...this.newTriggers];
this.selectedTrigger = newTrigger.triggerKeyDTO;
}
}