From 11b1e6793b5c0de8e91237574ba27fc120f18dab Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Sun, 23 Oct 2022 20:21:08 -0500 Subject: [PATCH] Allow add new Job step to Workflow Jobs --- .../manage-scheduler-jobs.component.ts | 6 ++- .../workflow-jobs.component.html | 2 +- .../workflow-jobs/workflow-jobs.component.ts | 54 +++++++++++++++++++ src/app/system/system.service.ts | 9 +++- 4 files changed, 67 insertions(+), 4 deletions(-) diff --git a/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.ts b/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.ts index 6bca856e3..925532d6b 100644 --- a/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.ts +++ b/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.ts @@ -72,8 +72,10 @@ export class ManageSchedulerJobsComponent implements OnInit, AfterViewInit { private configurationWizardService: ConfigurationWizardService, private popoverService: PopoverService) { this.route.data.subscribe((data: { jobsScheduler: any }) => { - this.jobData = data.jobsScheduler[0]; - this.schedulerData = data.jobsScheduler[1]; + if (data.jobsScheduler) { + this.jobData = data.jobsScheduler[0]; + this.schedulerData = data.jobsScheduler[1]; + } }); } diff --git a/src/app/system/manage-jobs/workflow-jobs/workflow-jobs.component.html b/src/app/system/manage-jobs/workflow-jobs/workflow-jobs.component.html index 1cef23d26..d1e23bacd 100644 --- a/src/app/system/manage-jobs/workflow-jobs/workflow-jobs.component.html +++ b/src/app/system/manage-jobs/workflow-jobs/workflow-jobs.component.html @@ -10,7 +10,7 @@
-
diff --git a/src/app/system/manage-jobs/workflow-jobs/workflow-jobs.component.ts b/src/app/system/manage-jobs/workflow-jobs/workflow-jobs.component.ts index 3e2c13412..d1baa57a1 100644 --- a/src/app/system/manage-jobs/workflow-jobs/workflow-jobs.component.ts +++ b/src/app/system/manage-jobs/workflow-jobs/workflow-jobs.component.ts @@ -4,6 +4,9 @@ import { FormControl, Validators } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { MatTable } from '@angular/material/table'; import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.component'; +import { FormDialogComponent } from 'app/shared/form-dialog/form-dialog.component'; +import { FormfieldBase } from 'app/shared/form-dialog/formfield/model/formfield-base'; +import { SelectBase } from 'app/shared/form-dialog/formfield/model/select-base'; import { SystemService } from 'app/system/system.service'; import { JobStep } from './workflow-diagram/workflow-diagram.component'; @@ -17,6 +20,7 @@ export class WorkflowJobsComponent implements OnInit { jobNameOptions: any = []; jobStepsData: any = []; + jobAvailableStepsData: any = []; jobStepsDataBase: any = []; jobStepName: String = null; @@ -77,6 +81,56 @@ export class WorkflowJobsComponent implements OnInit { }); } + /** + * Add Job Step to Workflow + */ + addJobStep() { + if (this.jobStepName != null) { + const jobDatas = this.jobStepName.split('_'); + this.jobAvailableStepsData = []; + this.systemService.getAvailablesJobSteps(jobDatas[0]).toPromise() + .then(jobData => { + this.jobAvailableStepsData = jobData.availableBusinessSteps.sort(function (a: any, b: any) { + return a.stepName - b.stepName; + }); + + const tmpStepsNames: any = []; + this.jobStepsData.forEach((step: any) => { + return tmpStepsNames.push(step.stepName); + }); + + if (this.jobAvailableStepsData.length > 0) { + this.jobAvailableStepsData = this.jobAvailableStepsData.filter((item: any) => { + return (tmpStepsNames.indexOf(item.stepName) < 0); + }); + } + + if (this.jobAvailableStepsData.length > 0) { + const frmFields: FormfieldBase[] = [ + new SelectBase({ + controlName: 'stepName', + label: 'Step', + options: { label: 'stepDescription', value: 'stepName', data: this.jobAvailableStepsData }, + order: 1 + }) + ]; + const data = { + title: 'Add Job Step to Workflow', + layout: { addButtonText: 'Add' }, + formfields: frmFields + }; + const stepDialogRef = this.dialog.open(FormDialogComponent, { data }); + stepDialogRef.afterClosed().subscribe((response: any) => { + if (response.data) { + this.jobStepsData = this.jobStepsData.concat(response.data.value); + this.stepOrderHasChanged = true; + } + }); + } + }); + } + } + saveChanges() { // Set the new Order let stepOrder = 1; diff --git a/src/app/system/system.service.ts b/src/app/system/system.service.ts index 4282f9852..cf0e5f58f 100644 --- a/src/app/system/system.service.ts +++ b/src/app/system/system.service.ts @@ -262,12 +262,19 @@ export class SystemService { } /** - * @returns {Observable} Fetches Jobs. + * @returns {Observable} Updates Jobs. */ putWorkflowJobSteps(jobName: String, payload: any): Observable { return this.http.put(`/jobs/${jobName}/steps`, payload); } + /** + * @returns {Observable} Fetches Steps. + */ + getAvailablesJobSteps(jobCategory: String): Observable { + return this.http.get(`/jobs/${jobCategory}/available-steps`); + } + /** * @returns {Observable} Fetches Scheduler. */