Angular upgrade
[osm/NG-UI.git] / src / app / roles / roles-create-edit / RolesCreateEditComponent.ts
index 87e1b86..ae85112 100644 (file)
@@ -18,7 +18,6 @@
 /**
  * @file Roles Create and Edit Component
  */
-import { isNullOrUndefined } from 'util';
 import { HttpClient, HttpHeaders } from '@angular/common/http';
 import { Component, Injector, Input, OnInit } from '@angular/core';
 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@@ -30,7 +29,7 @@ import { environment } from 'environment';
 import * as jsonpath from 'jsonpath';
 import { RestService } from 'RestService';
 import { Permission, PermissionGroup, RoleConfig, RoleData } from 'RolesModel';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
 
 /**
  * Creating component
@@ -70,6 +69,15 @@ export class RolesCreateEditComponent implements OnInit {
   /** Contains view selection value either text or preview @public */
   public viewMode: string = 'text';
 
+  /** Contains current permissions data @private */
+  private currentPermissions: string;
+
+  /** Contains current role name @private */
+  private currentRoleName: string;
+
+  /** Contains modified role name @private */
+  private modifiedRoleName: string;
+
   /** Contains role id value @private */
   private roleRef: string;
 
@@ -193,7 +201,7 @@ export class RolesCreateEditComponent implements OnInit {
       this.notifierService.notify('success', this.translateService.instant('PAGE.ROLES.CREATEDSUCCESSFULLY'));
       this.router.navigate(['/roles/details']).catch((): void => {
         // Catch Navigation Error
-    });
+      });
     }, (error: ERRORDATA) => {
       this.isLoadingResults = false;
       this.restService.handleError(error, 'post');
@@ -206,16 +214,15 @@ export class RolesCreateEditComponent implements OnInit {
       url: environment.ROLES_URL + '/' + this.roleRef,
       httpOptions: { headers: this.headers }
     };
+    this.modifiedRoleName = this.roleForm.value.roleName;
     let permissionData: Object = {};
     this.sharedService.cleanForm(this.roleForm);
     if (!this.roleForm.invalid) {
       if (this.viewMode === 'preview') {
-        this.isLoadingResults = true;
         permissionData = this.generatePermissions();
         this.roleEditAPI(apiURLHeader, permissionData);
       } else {
         if (this.checkPermission()) {
-          this.isLoadingResults = true;
           permissionData = this.roleForm.value.permissions !== '' ? JSON.parse(this.roleForm.value.permissions) : {};
           this.roleEditAPI(apiURLHeader, permissionData);
         }
@@ -225,6 +232,11 @@ export class RolesCreateEditComponent implements OnInit {
 
   /** Method to handle role edit API call */
   public roleEditAPI(apiURLHeader: APIURLHEADER, permissionData: {}): void {
+    if ((JSON.stringify(permissionData, null, '\t') === this.currentPermissions) && (this.modifiedRoleName === this.currentRoleName)) {
+      this.notifierService.notify('warning', this.translateService.instant('PAGE.TOPOLOGY.DATAEMPTY'));
+      return;
+    }
+    this.isLoadingResults = true;
     const postData: {} = {
       name: this.roleForm.value.roleName,
       permissions: !isNullOrUndefined(permissionData) ? permissionData : {}
@@ -233,7 +245,7 @@ export class RolesCreateEditComponent implements OnInit {
       this.notifierService.notify('success', this.translateService.instant('PAGE.ROLES.UPDATEDSUCCESSFULLY'));
       this.router.navigate(['/roles/details']).catch((): void => {
         // Catch Navigation Error
-    });
+      });
     }, (error: ERRORDATA) => {
       this.isLoadingResults = false;
       this.restService.handleError(error, 'patch');
@@ -304,10 +316,12 @@ export class RolesCreateEditComponent implements OnInit {
         this.roleForm.setValue({ roleName: data.name, permissions: JSON.stringify(data.permissions, null, '\t') });
         this.filterRoleData(data.permissions);
         this.isLoadingResults = false;
+        this.currentRoleName = data.name;
+        this.currentPermissions = JSON.stringify(data.permissions, null, '\t');
       }, (error: ERRORDATA) => {
         this.router.navigate(['/roles/details']).catch((): void => {
           // Catch Navigation Error
-      });
+        });
         this.restService.handleError(error, 'get');
       });
     }