From 0faf678956b0af50855193634cee313d2cddbf9e Mon Sep 17 00:00:00 2001
From: nhertz <nhertz@nrao.edu>
Date: Wed, 10 Feb 2021 09:19:50 -0700
Subject: [PATCH] Created two buttons; one that launches the null capability,
 one that launches the download capability; moved the capability launching
 functionality from the on-click methods to a new method that gets called by
 the on click methods

---
 .../services/capability-launcher.service.ts   | 23 ++++---
 .../app/workspaces/workspaces.component.html  |  7 +-
 .../app/workspaces/workspaces.component.ts    | 64 +++++++++++--------
 3 files changed, 58 insertions(+), 36 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 56a3e85b7..dbf9f0927 100644
--- a/apps/web/src/app/workspaces/services/capability-launcher.service.ts
+++ b/apps/web/src/app/workspaces/services/capability-launcher.service.ts
@@ -1,9 +1,9 @@
-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",
@@ -16,15 +16,18 @@ export class CapabilityLauncherService {
   /**
    * Create capability request and send it to capability service
    * @param: capabilityName  Name of capability to create request for
-   * @param: args  Arguments for capability execution
+   * @param: parameters  Parameters for capability request
    */
   createRequest(
     capabilityName: string,
-    args: string
+    parameters: string
   ): Observable<CapabilityRequest> {
     const url = environment.workspacesUrl + this.endpoint;
-    const params = JSON.stringify({ capability: capabilityName, args: args });
-    return this.httpClient.post<CapabilityRequest>(url, params);
+    const requestParams = JSON.stringify({
+      capability: capabilityName,
+      args: 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 83247bb52..0e23d8064 100644
--- a/apps/web/src/app/workspaces/workspaces.component.html
+++ b/apps/web/src/app/workspaces/workspaces.component.html
@@ -1,7 +1,12 @@
 <div class="container-fluid">
   <div class="row py-2">
     <div class="col">
-      <button type="button" class="btn btn-primary" (click)="downloadButtonOnClick()">Launch null capability [null -g]</button>
+      <button type="button" class="btn btn-secondary" (click)="nullButtonOnClick()">Launch null capability</button>
+    </div>
+  </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>
diff --git a/apps/web/src/app/workspaces/workspaces.component.ts b/apps/web/src/app/workspaces/workspaces.component.ts
index c7ef91ffc..90fd13877 100644
--- a/apps/web/src/app/workspaces/workspaces.component.ts
+++ b/apps/web/src/app/workspaces/workspaces.component.ts
@@ -19,33 +19,47 @@ 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");
+  }
+
+  /**
+   * OnClick method that creates a capability request for the test_download capability and submits it
+   */
   downloadButtonOnClick(): void {
+    this.launchCapability(
+      "test_download",
+      "shared/workspaces/test/test_data/spool/724126739/17A-109.sb33151331.eb33786546.57892.65940042824"
+    );
+  }
+
+  /**
+   * Method that uses the capabilityLauncher service to launch a capability
+   * @param capabilityName  Name of capability
+   * @param parameters  Parameters of capability request
+   */
+  launchCapability(capabilityName: string, parameters: string): void {
     // Create capability request
-    this.capabilityLauncher
-      .createRequest(
-        "test_download",
-        "shared/workspaces/test/test_data/spool/724126739/17A-109.sb33151331.eb33786546.57892.65940042824"
-      )
-      .subscribe(
-        (requestResponse) => {
-          this.capabilityRequests.push(requestResponse);
-          if (requestResponse.id) {
-            // Capability request created; ID found
-            const requestId = requestResponse.id;
-            // Submit capability request
-            this.capabilityLauncher.submit(requestId).subscribe(
-              (submitResponse) => {
-                this.capabilityExecutions.push(submitResponse);
-              },
-              (error) => {
-                console.log(error);
-              }
-            );
-          }
-        },
-        (error) => {
-          console.log(error);
+    this.capabilityLauncher.createRequest(capabilityName, parameters).subscribe(
+      (requestResponse) => {
+        this.capabilityRequests.push(requestResponse);
+        if (requestResponse.id) {
+          // Capability request created; ID found
+          const requestId = requestResponse.id;
+          // Submit capability request
+          this.capabilityLauncher.submit(requestId).subscribe(
+            (submitResponse) => {
+              this.capabilityExecutions.push(submitResponse);
+            },
+            (error) => {
+              console.log(error);
+            }
+          );
         }
-      );
+      },
+      (error) => {
+        console.log(error);
+      }
+    );
   }
 }
-- 
GitLab