improve dashboard UI
[portal/ric-dashboard.git] / webapp-frontend / src / app / services / ac-xapp / ac-xapp.service.ts
index d25e9db..dbe4cd6 100644 (file)
  * ========================LICENSE_END===================================
  */
 
- import { Injectable } from '@angular/core';
- import { HttpClient } from '@angular/common/http';
- import { Observable } from 'rxjs';
- import { map } from 'rxjs/operators';
+import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
 import { ACAdmissionIntervalControl, ACAdmissionIntervalControlAck } from '../../interfaces/ac-xapp.types';
 import { DashboardSuccessTransport } from '../../interfaces/dashboard.types';
+import { DashboardService } from '../dashboard/dashboard.service';
 
 /**
  * Services for calling the Dashboard's A1 endpoints to get/put AC policies.
@@ -33,29 +34,24 @@ import { DashboardSuccessTransport } from '../../interfaces/dashboard.types';
 })
 export class ACXappService {
 
-  private basePath = 'api/a1-p';
-  private policyPath = 'policies';
-  private acPolicyName = 'admission_control_policy';
+  private component = 'a1-p';
+  private policyTypePath = 'poltype';
+  private policyInstPath = 'polinst';
+  private acPolicyType = '21000';
+  private acPolicyInst = 'admission_control_policy';
 
-  private buildPath(...args: any[]) {
-    let result = this.basePath;
-    args.forEach(part => {
-      result = result + '/' + part;
-    });
-    return result;
-  }
-
-  constructor(private httpClient: HttpClient) {
-    // injects to variable httpClient
+  constructor(
+    private dashboardSvc: DashboardService,
+    private httpClient: HttpClient) {
   }
 
   /**
-   * Gets version details
-   * @returns Observable that should yield a String
+   * Gets AC client version details
+   * @returns Observable that yields a String
    */
-  getVersion(): Observable<string> {
-    const url = this.buildPath('version');
-    return this.httpClient.get<DashboardSuccessTransport>(url).pipe(
+  getVersion(instanceKey: string): Observable<string> {
+    const path = this.dashboardSvc.buildPath(this.component, null, 'version');
+    return this.httpClient.get<DashboardSuccessTransport>(path).pipe(
       // Extract the string here
       map(res => res['data'])
     );
@@ -63,21 +59,23 @@ export class ACXappService {
 
   /**
    * Gets admission control policy.
-   * @returns Observable that should yield an ACAdmissionIntervalControl
+   * @returns Observable that yields an ACAdmissionIntervalControl
    */
-  getPolicy(): Observable<ACAdmissionIntervalControl> {
-    const url = this.buildPath(this.policyPath, this.acPolicyName);
-    return this.httpClient.get<ACAdmissionIntervalControl>(url);
+  getPolicy(instanceKey: string): Observable<ACAdmissionIntervalControl> {
+    const path = this.dashboardSvc.buildPath(this.component, instanceKey, this.policyTypePath, this.acPolicyType,
+      this.policyInstPath, this.acPolicyInst);
+    return this.httpClient.get<ACAdmissionIntervalControl>(path);
   }
 
   /**
    * Puts admission control policy.
    * @param policy an instance of ACAdmissionIntervalControl
-   * @returns Observable that should yield a response code, no data
+   * @returns Observable that yields a response code, no data
    */
-  putPolicy(policy: ACAdmissionIntervalControl): Observable<any> {
-    const url = this.buildPath(this.policyPath, this.acPolicyName);
-    return this.httpClient.put<ACAdmissionIntervalControlAck>(url, policy, { observe: 'response' });
+  putPolicy(instanceKey: string, policy: ACAdmissionIntervalControl): Observable<any> {
+    const path = this.dashboardSvc.buildPath(this.component, instanceKey, this.policyTypePath, this.acPolicyType,
+      this.policyInstPath, this.acPolicyInst);
+    return this.httpClient.put<ACAdmissionIntervalControlAck>(path, policy, { observe: 'response' });
   }
 
 }