From 7b00d08b9797b7065f1508600413d89a15c9be36 Mon Sep 17 00:00:00 2001 From: chausman <chausman@nrao.edu> Date: Mon, 1 Mar 2021 16:49:08 -0700 Subject: [PATCH] WS-113: created form for collecting user input for download capability --- .../services/capability-launcher.service.ts | 20 ++++---- .../app/workspaces/workspaces.component.html | 19 ++++++- .../app/workspaces/workspaces.component.ts | 51 ++++++++++++++----- .../src/app/workspaces/workspaces.module.ts | 5 +- 4 files changed, 70 insertions(+), 25 deletions(-) diff --git a/apps/web/src/app/workspaces/services/capability-launcher.service.ts b/apps/web/src/app/workspaces/services/capability-launcher.service.ts index 8b72b099a..a50ef7c38 100644 --- a/apps/web/src/app/workspaces/services/capability-launcher.service.ts +++ b/apps/web/src/app/workspaces/services/capability-launcher.service.ts @@ -1,15 +1,15 @@ -import { Injectable } from "@angular/core"; -import { HttpClient } from "@angular/common/http"; -import { environment } from "../../../environments/environment"; -import { Observable } from "rxjs"; -import { CapabilityRequest } from "../model/capability-request"; -import { CapabilityExecution } from "../model/capability-execution"; +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { environment } from '../../../environments/environment'; +import { Observable } from 'rxjs'; +import { CapabilityRequest } from '../model/capability-request'; +import { CapabilityExecution } from '../model/capability-execution'; @Injectable({ - providedIn: "root", + providedIn: 'root', }) export class CapabilityLauncherService { - private endpoint = "capability/"; + private endpoint = 'capability/'; constructor(private httpClient: HttpClient) {} @@ -26,9 +26,9 @@ export class CapabilityLauncherService { environment.workspacesUrl + this.endpoint + capabilityName + - "/request/create"; + '/request/create'; const requestParams = JSON.stringify({ - parameters: parameters, + parameters, }); return this.httpClient.post<CapabilityRequest>(url, requestParams); } diff --git a/apps/web/src/app/workspaces/workspaces.component.html b/apps/web/src/app/workspaces/workspaces.component.html index 0e23d8064..2179fa900 100644 --- a/apps/web/src/app/workspaces/workspaces.component.html +++ b/apps/web/src/app/workspaces/workspaces.component.html @@ -4,13 +4,30 @@ <button type="button" class="btn btn-secondary" (click)="nullButtonOnClick()">Launch null capability</button> </div> </div> + + <br/> + <br/> + + <div class="md-form"> + <label for="splInput" class="">Science Product</label> + <input type="text" id="splInput" [value]="splInput" (change)="setSPLInput($event.target.value)" class="form-control"> + </div> + + <br/> + + <div class="md-form"> + <label for="userEmail" class="">Email Address</label> + <input type="text" id="userEmail" [value]="userEmail" (change)="setUserEmail($event.target.value)" class="form-control"> + </div> + <div class="row py-2"> <div class="col"> <button type="button" class="btn btn-warning" (click)="downloadButtonOnClick()">Launch download capability</button> </div> </div> + </div> <div class="p-2" *ngFor="let request of capabilityRequests; index as i"> <code>Capability request created: {{request | json}}</code><br> - <code *ngIf="capabilityExecutions[i]">Capability execution created: {{capabilityExecutions[i] | json}}</code> + <code *ngIf="capabilityExecutions[i]">Capability execution created: {{capabilityExecutions[i] | json}}</code><br/> </div> diff --git a/apps/web/src/app/workspaces/workspaces.component.ts b/apps/web/src/app/workspaces/workspaces.component.ts index ece8a7caf..f7be9e399 100644 --- a/apps/web/src/app/workspaces/workspaces.component.ts +++ b/apps/web/src/app/workspaces/workspaces.component.ts @@ -1,18 +1,25 @@ -import { Component, OnInit } from "@angular/core"; -import { CapabilityLauncherService } from "./services/capability-launcher.service"; -import { CapabilityRequest } from "./model/capability-request"; -import { CapabilityExecution } from "./model/capability-execution"; +import { Component, OnInit } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { CapabilityLauncherService } from './services/capability-launcher.service'; +import { CapabilityRequest } from './model/capability-request'; +import { CapabilityExecution } from './model/capability-execution'; @Component({ - selector: "app-workspaces", - templateUrl: "./workspaces.component.html", - styleUrls: ["./workspaces.component.scss"], + selector: 'app-workspaces', + templateUrl: './workspaces.component.html', + styleUrls: ['./workspaces.component.scss'], }) export class WorkspacesComponent implements OnInit { public capabilityRequests: Array<CapabilityRequest> = []; public capabilityExecutions: Array<CapabilityExecution> = []; - constructor(private capabilityLauncher: CapabilityLauncherService) {} + public splInput: string; + public userEmail: string; + + constructor(private capabilityLauncher: CapabilityLauncherService) { + this.splInput = null; + this.userEmail = null; + } ngOnInit(): void {} @@ -20,7 +27,7 @@ export class WorkspacesComponent implements OnInit { * OnClick method that creates a capability request for the null capability and submits it */ nullButtonOnClick(): void { - this.launchCapability("null", "-g"); + this.launchCapability('null', '-g'); } /** @@ -28,17 +35,35 @@ export class WorkspacesComponent implements OnInit { */ downloadButtonOnClick(): void { this.launchCapability( - "test_download", - "shared/workspaces/test/test_data/spool/724126739/17A-109.sb33151331.eb33786546.57892.65940042824" + 'test_download', + this.splInput, + this.userEmail ); } + /** + * method that sets the user input Science Product Locator for the download capability + * @param spl the Science Product Locator to download + */ + setSPLInput(spl: string){ + this.splInput = spl; + } + + /** + * method to set the user email for notifications + * @param email user specified email + */ + setUserEmail(email: string){ + this.userEmail = email; + } + /** * Method that uses the capabilityLauncher service to launch a capability * @param capabilityName Name of capability - * @param parameters Parameters of capability request + * @param parameters Parameters of capability request + * @param email User email for notifications (Optional) */ - launchCapability(capabilityName: string, parameters: string): void { + launchCapability(capabilityName: string, parameters: string, email?: string): void { // Create capability request this.capabilityLauncher.createRequest(capabilityName, parameters).subscribe( (requestResponse) => { diff --git a/apps/web/src/app/workspaces/workspaces.module.ts b/apps/web/src/app/workspaces/workspaces.module.ts index 2dd61cee1..786f89970 100644 --- a/apps/web/src/app/workspaces/workspaces.module.ts +++ b/apps/web/src/app/workspaces/workspaces.module.ts @@ -2,13 +2,16 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { WorkspacesRoutingModule } from './workspaces-routing.module'; import { WorkspacesComponent } from './workspaces.component'; +import {FormsModule, ReactiveFormsModule} from "@angular/forms"; @NgModule({ declarations: [WorkspacesComponent], imports: [ CommonModule, - WorkspacesRoutingModule + WorkspacesRoutingModule, + ReactiveFormsModule, + FormsModule ] }) export class WorkspacesModule {} -- GitLab