From 82621f3f29ea0d4e1c1e8fd440fb1b25ef41eec6 Mon Sep 17 00:00:00 2001
From: chausman <chausman@nrao.edu>
Date: Fri, 12 May 2023 14:25:48 -0600
Subject: [PATCH] - make closed requests display visual feedback to user - make
 'close request' button disappear if request is already sealed

---
 .../capability-request.component.html                  |  2 +-
 .../request-header/request-header.component.html       |  1 +
 .../request-header/request-header.component.ts         | 10 ++++++----
 .../request-operations/request-operations.component.ts |  1 +
 .../status-badges/status-badge.component.html          |  7 +++++++
 .../components/status-badges/status-badge.component.ts |  2 ++
 6 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/apps/web/src/app/workspaces/components/capability-request/capability-request.component.html b/apps/web/src/app/workspaces/components/capability-request/capability-request.component.html
index 499e04eac..1781d9a84 100644
--- a/apps/web/src/app/workspaces/components/capability-request/capability-request.component.html
+++ b/apps/web/src/app/workspaces/components/capability-request/capability-request.component.html
@@ -1,6 +1,6 @@
 <div *ngIf="this.capabilityRequest">
   <header>
-    <app-request-header [capabilityRequest]="capabilityRequest" [latestVersion]="latestVersion"></app-request-header>
+    <app-request-header [capability]="capability" [capabilityRequest]="capabilityRequest" [latestVersion]="latestVersion"></app-request-header>
   </header>
   <div class="row" style="justify-content: center" id="sys-msg-container" *ngIf="this.capabilityRequest.system_messages">
     <div *ngFor="let msg of this.capabilityRequest.system_messages | keyvalue">
diff --git a/apps/web/src/app/workspaces/components/capability-request/components/request-header/request-header.component.html b/apps/web/src/app/workspaces/components/capability-request/components/request-header/request-header.component.html
index 32e970b92..c60da015e 100644
--- a/apps/web/src/app/workspaces/components/capability-request/components/request-header/request-header.component.html
+++ b/apps/web/src/app/workspaces/components/capability-request/components/request-header/request-header.component.html
@@ -5,6 +5,7 @@
       <app-status-badge
         id="request-status"
         class="d-flex p-2"
+        [capability]="capability"
         [capabilityRequest]="capabilityRequest"
       ></app-status-badge>
     </h5>
diff --git a/apps/web/src/app/workspaces/components/capability-request/components/request-header/request-header.component.ts b/apps/web/src/app/workspaces/components/capability-request/components/request-header/request-header.component.ts
index e2f620892..20f791b82 100644
--- a/apps/web/src/app/workspaces/components/capability-request/components/request-header/request-header.component.ts
+++ b/apps/web/src/app/workspaces/components/capability-request/components/request-header/request-header.component.ts
@@ -23,12 +23,14 @@ import { CapabilityVersion } from "../../../../model/capability-version";
 import * as dayjs from 'dayjs';
 import * as relativeTime from 'dayjs/plugin/relativeTime';
 import * as localizedFormat from 'dayjs/plugin/localizedFormat';
+import {Capability} from "../../../../model/capability";
 @Component({
   selector: "app-request-header",
   templateUrl: "./request-header.component.html",
   styleUrls: ["./request-header.component.scss"],
 })
 export class RequestHeaderComponent implements OnInit {
+  @Input() capability: Capability;
   @Input() capabilityRequest: CapabilityRequest;
   @Input() latestVersion: CapabilityVersion;
   createdAt;
@@ -74,10 +76,10 @@ export class RequestHeaderComponent implements OnInit {
   isCancellable(): boolean {
     return !(
       this.latestVersion && (
-          this.latestVersion.state != 'Cancelled' &&
-          this.latestVersion.state != 'Complete' &&
-          this.latestVersion.state != 'Failed' &&
-          this.latestVersion.state != 'Error'
+          this.latestVersion.state !== 'Cancelled' &&
+          this.latestVersion.state !== 'Complete' &&
+          this.latestVersion.state !== 'Failed' &&
+          this.latestVersion.state !== 'Error'
         )
       )
   }
diff --git a/apps/web/src/app/workspaces/components/capability-request/components/request-operations/request-operations.component.ts b/apps/web/src/app/workspaces/components/capability-request/components/request-operations/request-operations.component.ts
index 2f541bed3..77af92466 100644
--- a/apps/web/src/app/workspaces/components/capability-request/components/request-operations/request-operations.component.ts
+++ b/apps/web/src/app/workspaces/components/capability-request/components/request-operations/request-operations.component.ts
@@ -159,6 +159,7 @@ export class RequestOperationsComponent implements OnInit {
       this.selectedVersion &&
       (this.selectedVersion.state === 'Error' || this.selectedVersion.state === 'Failed') &&
       (this.selectedVersion.current_execution.state_name === 'Error' || this.selectedVersion.current_execution.state_name === 'Failed')
+      && !this.capabilityRequest.sealed
     );
   }
 
diff --git a/apps/web/src/app/workspaces/components/capability-request/components/status-badges/status-badge.component.html b/apps/web/src/app/workspaces/components/capability-request/components/status-badges/status-badge.component.html
index 42da97d45..639525f48 100644
--- a/apps/web/src/app/workspaces/components/capability-request/components/status-badges/status-badge.component.html
+++ b/apps/web/src/app/workspaces/components/capability-request/components/status-badges/status-badge.component.html
@@ -28,3 +28,10 @@
   *ngIf="capabilityRequest.state === 'Cancelled'"
   ><span id="request-status-badge-txt-cancelled">{{ capabilityRequest.state.toUpperCase() }}</span>
 </span>
+&nbsp;&nbsp;&nbsp;
+<span
+  id="request-sealed-badge"
+  class="badge badge-pill badge-danger py-2"
+  *ngIf="capabilityRequest.sealed === true && capabilityRequest.state !== 'Complete' && capability.state_machine !== 'simple'"
+  ><span id="request-sealed-badge-txt">SEALED</span>
+</span>
diff --git a/apps/web/src/app/workspaces/components/capability-request/components/status-badges/status-badge.component.ts b/apps/web/src/app/workspaces/components/capability-request/components/status-badges/status-badge.component.ts
index 5c1747ba1..ec4798fbb 100644
--- a/apps/web/src/app/workspaces/components/capability-request/components/status-badges/status-badge.component.ts
+++ b/apps/web/src/app/workspaces/components/capability-request/components/status-badges/status-badge.component.ts
@@ -18,6 +18,7 @@
  */
 import { Component, Input, OnInit } from "@angular/core";
 import { CapabilityRequest } from "../../../../model/capability-request";
+import {Capability} from "../../../../model/capability";
 
 @Component({
   selector: "app-status-badge",
@@ -25,6 +26,7 @@ import { CapabilityRequest } from "../../../../model/capability-request";
   styleUrls: ["./status-badge.component.scss"],
 })
 export class StatusBadgeComponent implements OnInit {
+  @Input() capability: Capability;
   @Input() capabilityRequest: CapabilityRequest;
 
   constructor() {}
-- 
GitLab