From 53cec1d29ffff0876cf76a08f16f215cffe2131e Mon Sep 17 00:00:00 2001 From: Benura Abeywardena <43112139+BLasan@users.noreply.github.com> Date: Wed, 13 May 2020 01:51:26 +0530 Subject: [PATCH] feat: add view scheduler job component (#674) (#674) Fixes: #673 --- .../manage-scheduler-jobs.component.html | 2 +- .../view-scheduler-job.component.html | 57 +++++++++++++++++++ .../view-scheduler-job.component.scss | 14 +++++ .../view-scheduler-job.component.spec.ts | 25 ++++++++ .../view-scheduler-job.component.ts | 28 +++++++++ .../view-scheduler-job.resolver.ts | 31 ++++++++++ src/app/system/system-routing.module.ts | 26 +++++++-- src/app/system/system.module.ts | 4 +- src/app/system/system.service.ts | 8 +++ 9 files changed, 188 insertions(+), 7 deletions(-) create mode 100644 src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.html create mode 100644 src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.scss create mode 100644 src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.spec.ts create mode 100644 src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.ts create mode 100644 src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.resolver.ts diff --git a/src/app/system/manage-scheduler-jobs/manage-scheduler-jobs.component.html b/src/app/system/manage-scheduler-jobs/manage-scheduler-jobs.component.html index 097527996..907ee82e4 100644 --- a/src/app/system/manage-scheduler-jobs/manage-scheduler-jobs.component.html +++ b/src/app/system/manage-scheduler-jobs/manage-scheduler-jobs.component.html @@ -76,7 +76,7 @@ - + diff --git a/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.html b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.html new file mode 100644 index 000000000..d8bcd1bdb --- /dev/null +++ b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.html @@ -0,0 +1,57 @@ +
+ + +
+ +
+ + + + + +
+ +
+ Job Name +
+ +
+ {{ jobData.displayName }} +
+ +
+ Cron Expression +
+ +
+ {{ jobData.cronExpression }} +
+ +
+ Is Active Job? +
+ +
+ {{ jobData.active }} +
+ +
+ Follow +
+ +
+ Click Here To Generate Cron Expression +
+ +
+ +
+ +
+ +
diff --git a/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.scss b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.scss new file mode 100644 index 000000000..1274158b6 --- /dev/null +++ b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.scss @@ -0,0 +1,14 @@ +a{ + color: blue; +} + +.container { + max-width: 37rem; + + .content { + div { + margin: 1rem 0; + word-wrap: break-word; + } + } +} diff --git a/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.spec.ts b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.spec.ts new file mode 100644 index 000000000..fde16593a --- /dev/null +++ b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ViewSchedulerJobComponent } from './view-scheduler-job.component'; + +describe('ViewSchedulerJobComponent', () => { + let component: ViewSchedulerJobComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ViewSchedulerJobComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ViewSchedulerJobComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.ts b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.ts new file mode 100644 index 000000000..9688415e3 --- /dev/null +++ b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component.ts @@ -0,0 +1,28 @@ +/** Angular Imports */ +import { Component} from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +/** + * View Scheduler Job component. + */ +@Component({ + selector: 'mifosx-view-scheduler-job', + templateUrl: './view-scheduler-job.component.html', + styleUrls: ['./view-scheduler-job.component.scss'] +}) +export class ViewSchedulerJobComponent { + + /** Job Data. */ + jobData: any; + + /** + * Retrieves the selected job data from `resolve`. + * @param {ActivatedRoute} route Activated Route. + */ + constructor(private route: ActivatedRoute) { + this.route.data.subscribe((data: { selectedJob: any }) => { + this.jobData = data.selectedJob; + }); + } + +} diff --git a/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.resolver.ts b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.resolver.ts new file mode 100644 index 000000000..288d7105c --- /dev/null +++ b/src/app/system/manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.resolver.ts @@ -0,0 +1,31 @@ +/** Angular Imports */ +import { Injectable } from '@angular/core'; +import { Resolve, ActivatedRouteSnapshot } from '@angular/router'; + +/** rxjs Imports */ +import { Observable, forkJoin } from 'rxjs'; + +/** Custom Services */ +import { SystemService } from '../../system.service'; + +/** + * Selected Scheduler Jobs data resolver. + */ +@Injectable() +export class ViewSchedulerJobResolver implements Resolve { + + /** + * @param {SystemService} systemService System service. + */ + constructor(private systemService: SystemService) {} + + /** + * Returns the selected scheduler job data. + * @returns {Observable} + */ + resolve(route: ActivatedRouteSnapshot): Observable { + const jobId = route.paramMap.get('id'); + return this.systemService.getSelectedJob(jobId); + } + +} diff --git a/src/app/system/system-routing.module.ts b/src/app/system/system-routing.module.ts index f04a6e04b..41c68aaf2 100644 --- a/src/app/system/system-routing.module.ts +++ b/src/app/system/system-routing.module.ts @@ -71,6 +71,8 @@ import { AuditTrailResolver } from './audit-trails/view-audit/audit-trail.resolv import { ReportsResolver } from './manage-reports/reports.resolver'; import { ReportResolver } from './manage-reports/report.resolver'; import { ReportTemplateResolver } from './manage-reports/report-template.resolver'; +import { ViewSchedulerJobComponent } from './manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component'; +import { ViewSchedulerJobResolver } from './manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.resolver'; const routes: Routes = [ Route.withShell([ @@ -331,11 +333,24 @@ const routes: Routes = [ }, { path: 'scheduler-jobs', - component: ManageSchedulerJobsComponent, - resolve: { - jobsScheduler: ManageSchedulerJobsResolver - }, data: { title: extract('Manage Scheduler Jobs'), breadcrumb: 'Manage Scheduler Jobs' }, + children: [ + { + path: '', + component: ManageSchedulerJobsComponent, + resolve: { + jobsScheduler: ManageSchedulerJobsResolver + }, + }, + { + path: ':id', + data: { title: extract('View Scheduler Job'), routeParamBreadcrumb: 'id' }, + component: ViewSchedulerJobComponent, + resolve: { + selectedJob: ViewSchedulerJobResolver + } + } + ], }, { path: 'global-configurations', @@ -498,7 +513,8 @@ const routes: Routes = [ ReportResolver, ReportTemplateResolver, AuditTrailSearchTemplateResolver, - AuditTrailResolver + AuditTrailResolver, + ViewSchedulerJobResolver ] }) export class SystemRoutingModule { } diff --git a/src/app/system/system.module.ts b/src/app/system/system.module.ts index 007851fcd..e89da3dbb 100644 --- a/src/app/system/system.module.ts +++ b/src/app/system/system.module.ts @@ -49,6 +49,7 @@ import { ColumnDialogComponent } from './manage-data-tables/column-dialog/column /** Dialog Component Imports */ import { ReportParameterDialogComponent } from './manage-reports/report-parameter-dialog/report-parameter-dialog.component'; import { AddEventDialogComponent } from './manage-hooks/add-event-dialog/add-event-dialog.component'; +import { ViewSchedulerJobComponent } from './manage-scheduler-jobs/view-scheduler-job/view-scheduler-job.component'; @NgModule({ imports: [ @@ -96,7 +97,8 @@ import { AddEventDialogComponent } from './manage-hooks/add-event-dialog/add-eve AddEventDialogComponent, ColumnDialogComponent, AuditTrailsComponent, - ViewAuditComponent + ViewAuditComponent, + ViewSchedulerJobComponent ], entryComponents: [ ReportParameterDialogComponent, diff --git a/src/app/system/system.service.ts b/src/app/system/system.service.ts index 064c052a9..57b84fd8c 100644 --- a/src/app/system/system.service.ts +++ b/src/app/system/system.service.ts @@ -176,6 +176,14 @@ export class SystemService { return this.http.get('/scheduler'); } + /** + * @param jobId Selected Job Id + * @returns {Observable} + */ + getSelectedJob(jobId: string) { + return this.http.get(`/jobs/${jobId}`); + } + /** * @param {any} code Code to be created. * @returns {Observable}