#52 added the trigger name to the trigger form

This commit is contained in:
Fabio Formosa
2022-09-03 15:50:34 +02:00
parent 21f3f7dca2
commit 9638667368
12 changed files with 26 additions and 175 deletions

View File

@@ -39,7 +39,6 @@ import {
HeaderComponent,
FooterComponent,
GithubComponent,
SchedulerConfigComponent,
SchedulerControlComponent,
LogsPanelComponent,
ProgressPanelComponent,
@@ -111,7 +110,6 @@ export function jwtOptionsFactory(apiService: ApiService) {
LoginComponent,
NotFoundComponent,
AccountMenuComponent,
SchedulerConfigComponent,
SimpleTriggerConfigComponent,
SchedulerControlComponent,
LogsPanelComponent,

View File

@@ -2,7 +2,6 @@ export * from './header';
export * from './github';
export * from './footer';
export * from './logs-panel';
export * from './scheduler-config';
export * from './scheduler-control';
export * from './progress-panel';
export * from './trigger-list';

View File

@@ -1 +0,0 @@
export * from './scheduler-config.component';

View File

@@ -1,68 +0,0 @@
<mat-card>
<mat-card-header>
<mat-card-title><b>SCHEDULER CONFIG</b></mat-card-title>
</mat-card-header>
<!-- ADD BUTTON -->
<mat-card-content *ngIf="!existsATriggerInProgress() && !enabledTriggerForm">
<button mat-fab color="primary">
<mat-icon (click)="enableTriggerForm()">add</mat-icon>
</button>
</mat-card-content>
<!-- TRIGGER DETAILS -->
<mat-card-content *ngIf="existsATriggerInProgress() || enabledTriggerForm">
<div fxLayout="column">
<form name="configForm" fxFlex="1 1 100%" #configForm="ngForm">
<div>
<mat-form-field [appearance]="enabledTriggerForm ? 'standard': 'none'">
<mat-label>Freq [Num per day]</mat-label>
<input [readonly]="!enabledTriggerForm"
matInput placeholder="Freq [Num per day]" name="triggerPerDay" type="number"
[(ngModel)]="config.triggerPerDay"
>
</mat-form-field>
</div>
<div>
<mat-form-field [appearance]="enabledTriggerForm ? 'standard': 'none'">
<mat-label>Max Occurrences</mat-label>
<input [readonly]="!enabledTriggerForm"
matInput placeholder="Max Occurrences" name="maxCount" type="number"
[(ngModel)]="config.maxCount"
>
</mat-form-field>
</div>
<br>
<div>
<h5>Misfire Policy</h5>
<div>RESCHEDULE NEXT WITH REMAINING COUNT</div>
<div class="small">
In case of misfire event, the trigger is re-scheduled to the next scheduled time after 'now' with the repeat count set to what it would be, if it had not missed any firings.
<br/>
<strong>Warning:</strong> This policy could cause the Trigger to go directly to the 'COMPLETE' state if all fire-times where missed.
</div>
</div>
<br>
<button mat-raised-button
type="button"
*ngIf="enabledTriggerForm"
(click)="cancelConfigForm()">
Cancel
</button>
<button mat-raised-button
type="button" color="primary"
*ngIf="enabledTriggerForm"
(click)="submitConfig()">
Submit
</button>
<button mat-raised-button type="button"
*ngIf="!enabledTriggerForm"
(click)="enabledTriggerForm = true">
Reschedule
</button>
</form>
</div>
</mat-card-content>
</mat-card>

View File

@@ -1,72 +0,0 @@
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { SchedulerService } from '../../services';
import { SchedulerConfig } from '../../model/schedulerConfig.model'
import {Scheduler} from '../../model/scheduler.model';
/**
* DEPRECATED! Not more used
*/
@Component({
selector: 'qrzmng-scheduler-config',
templateUrl: './scheduler-config.component.html',
styleUrls: ['./scheduler-config.component.scss']
})
export class SchedulerConfigComponent implements OnInit {
config: SchedulerConfig = new SchedulerConfig()
configBackup: SchedulerConfig = new SchedulerConfig()
scheduler: Scheduler;
triggerLoading = true;
enabledTriggerForm = false;
private fetchedTriggers = false;
private triggerInProgress = false;
constructor(
private schedulerService: SchedulerService
) { }
ngOnInit() {
this.triggerLoading = true;
this._getScheduler();
this.retrieveConfig();
}
retrieveConfig = () => {
this.schedulerService.getConfig()
.subscribe(res => {
this.config = new SchedulerConfig(res.triggerPerDay, res.maxCount, res.timesTriggered)
this.configBackup = res
this.triggerLoading = false;
this.triggerInProgress = res.timesTriggered < res.maxCount;
})
}
private _getScheduler() {
this.schedulerService.getScheduler()
.subscribe( res => {
this.scheduler = <Scheduler>res;
this.fetchedTriggers = this.scheduler.triggerKeys.length > 0
})
}
existsATriggerInProgress = (): boolean => this.fetchedTriggers && this.triggerInProgress;
cancelConfigForm = () => this.enabledTriggerForm = false;
submitConfig = () => {
const schedulerServiceCall = this.existsATriggerInProgress() ? this.schedulerService.updateConfig : this.schedulerService.saveConfig;
schedulerServiceCall(this.config)
.subscribe(res => {
this.configBackup = this.config;
this.enabledTriggerForm = false;
this.fetchedTriggers = true;
this.triggerInProgress = true;
}, error => {
this.config = this.configBackup;
});
};
enableTriggerForm = () => this.enabledTriggerForm = true;
}

View File

@@ -7,6 +7,16 @@
<div fxLayout="column">
<form name="configForm" fxFlex="1 1 100%" #configForm="ngForm">
<div>
<mat-form-field [appearance]="enabledTriggerForm ? 'standard': 'none'">
<mat-label>Trigger Name</mat-label>
<input [readonly]="!enabledTriggerForm"
matInput placeholder="Repeat Interval [in mills]" name="triggerName"
[(ngModel)]="simpleTriggerForm.triggerName">
</mat-form-field>
</div>
<div>
<mat-form-field [appearance]="enabledTriggerForm ? 'standard': 'none'">
<mat-label>Start Date (optional)</mat-label>

View File

@@ -94,6 +94,7 @@ export class SimpleTriggerConfigComponent implements OnInit {
private _fromTriggerToForm = (simpleTrigger: SimpleTrigger): SimpleTriggerForm => {
const command = new SimpleTriggerForm();
command.triggerName = simpleTrigger.triggerKeyDTO.name;
command.repeatCount = simpleTrigger.repeatCount;
command.repeatInterval = simpleTrigger.repeatInterval;
command.startDate = moment(simpleTrigger.startTime);
@@ -103,6 +104,7 @@ export class SimpleTriggerConfigComponent implements OnInit {
private _fromFormToCommand = (simpleTriggerForm: SimpleTriggerForm): SimpleTriggerCommand => {
const simpleTriggerCommand = new SimpleTriggerCommand();
simpleTriggerCommand.triggerName = simpleTriggerForm.triggerName;
simpleTriggerCommand.repeatCount = simpleTriggerForm.repeatCount;
simpleTriggerCommand.repeatInterval = simpleTriggerForm.repeatInterval;
simpleTriggerCommand.startDate = simpleTriggerForm.startDate.toDate();

View File

@@ -10,11 +10,7 @@
<mat-nav-list style="overflow-y: auto; position: absolute; left: 0; right: 0; top: 0; bottom: 0; overflow: auto; height: calc(100% - 3em)">
<mat-list-item *ngFor="let triggerKey of getTriggerKeyList()" class="triggerItemList"
[ngClass]="{'selectedTrigger': triggerKey.name == selectedTrigger.name}">
<!-- <a matLine href="...">{{ triggerKey.name }}</a>-->
<a matLine>{{ triggerKey.name }}</a>
<!-- <button mat-icon-button (click)="showInfo(link)">-->
<!-- <mat-icon>info</mat-icon>-->
<!-- </button>-->
</mat-list-item>
</mat-nav-list>
</mat-card-content>

View File

@@ -1,4 +1,5 @@
export class SimpleTriggerCommand {
triggerName: string;
startDate: Date;
endDate: Date;
repeatCount: number;

View File

@@ -1,6 +1,7 @@
import {Moment} from 'moment/moment';
export class SimpleTriggerForm {
triggerName: string;
startDate: Moment;
endDate: Moment;
repeatCount: number;

View File

@@ -7,62 +7,50 @@ import {SimpleTriggerCommand} from '../model/simple-trigger.command';
import {SchedulerConfig} from '../model/schedulerConfig.model';
import {Scheduler} from '../model/scheduler.model';
const CONTEXT_PATH = '/quartz-manager';
@Injectable()
export class SchedulerService {
constructor(
private apiService: ApiService
) { }
startScheduler = (): Observable<void> => {
return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler/run')
return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/run`);
}
stopScheduler = (): Observable<void> => {
return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler/stop')
return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/stop`);
}
pauseScheduler = (): Observable<void> => {
return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler/pause')
return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/pause`);
}
resumeScheduler = (): Observable<void> => {
return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler/resume')
return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/resume`);
}
getStatus = () => {
return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler/status')
return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/status`);
}
getScheduler = (): Observable<Scheduler> => {
return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler')
}
// deprecated
getConfig = () => {
return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler/config')
return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler`);
}
getSimpleTriggerConfig = (triggerName: string): Observable<Trigger> => {
return this.apiService.get(getBaseUrl() + `/quartz-manager/simple-triggers/${triggerName}`);
}
// deprecated
saveConfig = (config: Object) => {
return this.apiService.post(getBaseUrl() + '/quartz-manager/triggers/mytrigger', config)
return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/simple-triggers/${triggerName}`);
}
saveSimpleTriggerConfig = (config: SimpleTriggerCommand) => {
return this.apiService.post(getBaseUrl() + '/quartz-manager/simple-triggers/my-simple-trigger', config)
}
// deprecated
updateConfig = (config: SchedulerConfig) => {
return this.apiService.put(getBaseUrl() + '/quartz-manager/triggers/mytrigger', config)
return this.apiService.post(getBaseUrl() + `${CONTEXT_PATH}/simple-triggers/${config.triggerName}`, config)
}
updateSimpleTriggerConfig = (config: SimpleTriggerCommand) => {
return this.apiService.put(getBaseUrl() + '/quartz-manager/simple-triggers/my-simple-trigger', config)
return this.apiService.put(getBaseUrl() + `${CONTEXT_PATH}/simple-triggers/${config.triggerName}`, config)
}