From f402001c042bb9b91c179e6a81fa556f44116317 Mon Sep 17 00:00:00 2001
From: kbeyro <121854496+kbeyro@users.noreply.github.com>
Date: Thu, 29 Jun 2023 11:54:16 +0200
Subject: [PATCH] add support for Condition in app-access-method

---
 .../app-access-method-edit.component.html             | 10 ++++++++++
 .../app-access-method-edit.component.spec.ts          |  7 +++++--
 .../app-access-method-edit.component.ts               | 11 ++++++++++-
 src/app/model/app-access-method.ts                    |  7 +++++++
 4 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.html b/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.html
index 5d4827c4..8aad3424 100644
--- a/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.html
+++ b/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.html
@@ -20,6 +20,16 @@
         <label class="control-label" for="{{id}}-tag-{{accessMethod.type}}">{{'APP_ACCESS_METHOD_EDIT.TAG' | translate}}: </label>
         <input class="form-control" type="text" id="{{id}}-tag-{{accessMethod.type}}" ngDefaultControl [(ngModel)]="accessMethod.tag">
       </div>
+      <div class="form-group">
+        <label class="control-label" for="{{id}}-conditionType-{{accessMethod.conditionType}}">{{'APP_ACCESS_METHOD_EDIT.CONDITION_TYPE' | translate}}: </label>
+        <select class="form-control" id="{{id}}-conditionType-{{accessMethod.conditionType}}" [(ngModel)]="accessMethod.conditionType" (change)="onSelectConditionType($event)">
+          <option *ngFor="let s of conditionType; let i=index" value="{{s}}">{{s}}</option>
+        </select>
+      </div>
+      <div *ngIf="accessMethod.conditionType === 'DEPLOYMENT_PARAMETER'" class="form-group">
+        <label class="control-label" for="{{id}}-condition-{{accessMethod.type}}">{{'APP_ACCESS_METHOD_EDIT.CONDITION' | translate}}: </label>
+        <input class="form-control" type="text" id="{{id}}-condition-{{accessMethod.type}}" ngDefaultControl [(ngModel)]="accessMethod.condition">
+      </div>
     </div>
 
     <ul class="col-sm-7">
diff --git a/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.spec.ts b/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.spec.ts
index 2b8c8f2c..464e8a05 100644
--- a/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.spec.ts
+++ b/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.spec.ts
@@ -1,9 +1,10 @@
-import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
 
 import {AppAccessMethodEditComponent} from './app-access-method-edit.component';
 import {FormsModule} from '@angular/forms';
 import {ServiceAccessMethodType} from '../../../model/service-access-method';
 import {TranslateFakeLoader, TranslateLoader, TranslateModule} from '@ngx-translate/core';
+import {ConditionType} from '../../../model/app-access-method';
 
 describe('AppAccessMethodEditComponent', () => {
   let component: AppAccessMethodEditComponent;
@@ -35,7 +36,9 @@ describe('AppAccessMethodEditComponent', () => {
       type: ServiceAccessMethodType.INTERNAL,
       name: 'd',
       tag: 't',
-      deployParameters: {}
+      deployParameters: {},
+      conditionType: ConditionType.NONE,
+      condition: ''
     };
     fixture.detectChanges();
   });
diff --git a/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.ts b/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.ts
index cad91f7b..e9511e92 100644
--- a/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.ts
+++ b/src/app/appmarket/appmanagement/app-access-method-edit-component/app-access-method-edit.component.ts
@@ -1,5 +1,5 @@
 import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import {AppAccessMethod} from '../../../model/app-access-method';
+import {AppAccessMethod, ConditionType} from '../../../model/app-access-method';
 import {parseServiceAccessMethodType, ServiceAccessMethodType} from '../../../model/service-access-method';
 import {KeyValue} from '@angular/common';
 
@@ -40,6 +40,9 @@ export class AppAccessMethodEditComponent implements OnInit {
     'K8S_SERVICE_SUFFIX',
     'K8S_SERVICE_PORT']
 
+  public conditionType = ['NONE', 'DEPLOYMENT_PARAMETER']
+  public condition = '';
+
   constructor() { }
 
   ngOnInit() {
@@ -107,4 +110,10 @@ export class AppAccessMethodEditComponent implements OnInit {
     })
   }
 
+  public onSelectConditionType(conditionType: any) {
+    if (conditionType.target.value === 'NONE') {
+      this.accessMethod.condition = '';
+    }
+  }
+
 }
diff --git a/src/app/model/app-access-method.ts b/src/app/model/app-access-method.ts
index 781fd992..87b5d9b9 100644
--- a/src/app/model/app-access-method.ts
+++ b/src/app/model/app-access-method.ts
@@ -1,9 +1,16 @@
 import {ServiceAccessMethodType} from './service-access-method';
 
+export enum ConditionType {
+    NONE = 'NONE',
+    DEPLOYMENT_PARAMETER = 'DEPLOYMENT_PARAMETER'
+}
+
 export class AppAccessMethod {
     public id: number;
     public type: ServiceAccessMethodType;
     public name: string;
     public tag: string;
     public deployParameters: object = {}; // this should be Map<string, string> but JS cannot stringify object of this type
+    public conditionType: ConditionType = ConditionType.NONE;
+    public condition: string;
 }
-- 
GitLab