You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by dg...@apache.org on 2020/12/16 12:26:39 UTC

[incubator-datalab] 02/06: Changed compare filters

This is an automated email from the ASF dual-hosted git repository.

dgnatyshyn pushed a commit to branch DATALAB-2182
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit 3b3722c50f3f7b97724a5c7fed14b05fd45cc75b
Author: Dmytro_Gnatyshyn <di...@ukr.net>
AuthorDate: Fri Dec 11 11:43:39 2020 +0200

    Changed compare filters
---
 .../management-grid/management-grid.component.html |  2 +-
 .../management-grid/management-grid.component.ts   |  7 ++--
 .../webapp/src/app/core/util/checkUtils.ts         | 18 ++++----
 .../webapp/src/app/core/util/compareUtils.ts       | 38 +++++++++++++++++
 .../audit/audit-grid/audit-grid.component.html     |  2 +-
 .../audit/audit-grid/audit-grid.component.ts       |  5 ++-
 .../reporting-grid/reporting-grid.component.ts     | 48 ++--------------------
 .../install-libraries.component.html               |  2 +-
 .../install-libraries.component.ts                 |  5 ++-
 .../resources-grid/resources-grid.component.html   |  2 +-
 .../resources-grid/resources-grid.component.ts     |  5 ++-
 11 files changed, 68 insertions(+), 66 deletions(-)

diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.html
index 1838e8a..58554fd 100644
--- a/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.html
@@ -286,7 +286,7 @@
             </button>
 
             <button mat-icon-button class="btn apply" (click)="applyFilter(filterForm)"
-              [disabled]="!isFilterChanged">
+              [disabled]="isFilterChanged">
               <i class="material-icons"
                 [ngClass]="{'not-allowed': allFilteredEnvironmentData?.length == 0 && !filtering}">done</i>
             </button>
diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.ts
index b97ddf8..fee16e1 100644
--- a/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.ts
@@ -41,6 +41,7 @@ import {ProgressBarService} from '../../../core/services/progress-bar.service';
 import {DetailDialogComponent} from '../../../resources/exploratory/detail-dialog';
 import {BehaviorSubject, Subject, timer} from 'rxjs';
 import { ChangeDetectorRef } from '@angular/core';
+import {CompareUtils} from '../../../core/util/compareUtils';
 
 export interface ManageAction {
   action: string;
@@ -66,6 +67,7 @@ export class ManagementGridComponent implements OnInit, AfterViewInit, AfterView
   filtering: boolean = false;
   collapsedFilterRow: boolean = false;
   isMaxRight: Subject<boolean> = new BehaviorSubject(false);
+  private tableWrapperWidth: number;
   tableEl = {};
 
   @Input() environmentsHealthStatuses: Array<any>;
@@ -80,7 +82,6 @@ export class ManagementGridComponent implements OnInit, AfterViewInit, AfterView
   @ViewChild('wrapper') wrapper;
   @ViewChild('pageWrapper') pageWrapper;
   @ViewChild('table') table;
-  private tableWrapperWidth: number;
 
   @HostListener('window:resize', ['$event'])
   onResize(event) {
@@ -155,8 +156,8 @@ export class ManagementGridComponent implements OnInit, AfterViewInit, AfterView
   }
 
   private checkFilters() {
-    this.isFilterChanged = JSON.stringify(this.cashedFilterForm) !== JSON.stringify(this.filterForm);
-    this.isFilterSelected = Object.keys(this.filterForm).filter(v => this.filterForm[v].length > 0).length > 0;
+    this.isFilterChanged = CompareUtils.compareFilters(this.filterForm, this.cashedFilterForm);
+    this.isFilterSelected = Object.keys(this.filterForm).some(v => this.filterForm[v].length > 0);
   }
 
   public toggleFilterRow(): void {
diff --git a/services/self-service/src/main/resources/webapp/src/app/core/util/checkUtils.ts b/services/self-service/src/main/resources/webapp/src/app/core/util/checkUtils.ts
index 4cd39c3..941fbb1 100644
--- a/services/self-service/src/main/resources/webapp/src/app/core/util/checkUtils.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/core/util/checkUtils.ts
@@ -20,6 +20,14 @@
 import { PATTERNS } from './patterns';
 
 export class CheckUtils {
+
+  public static endpointStatus = {
+    CREATING: 'CONNECTING',
+    STARTING: 'CONNECTING',
+    RUNNING: 'CONNECTED',
+    STOPPING: 'DISCONNECTING',
+    STOPPED: 'DISCONNECTED'
+  };
   public static isJSON(str) {
     try {
       JSON.parse(str);
@@ -53,15 +61,7 @@ export class CheckUtils {
   }
 
   public static decodeUnicode(str) {
-    str = str.replace(/\\/g, "%");
+    str = str.replace(/\\/g, '%');
     return unescape(str);
   }
-
-  public static endpointStatus = {
-    CREATING: 'CONNECTING',
-    STARTING: 'CONNECTING',
-    RUNNING: 'CONNECTED',
-    STOPPING: 'DISCONNECTING',
-    STOPPED: 'DISCONNECTED'
-  }
 }
diff --git a/services/self-service/src/main/resources/webapp/src/app/core/util/compareUtils.ts b/services/self-service/src/main/resources/webapp/src/app/core/util/compareUtils.ts
new file mode 100644
index 0000000..919aa26
--- /dev/null
+++ b/services/self-service/src/main/resources/webapp/src/app/core/util/compareUtils.ts
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+export class CompareUtils {
+  public static compareFilters(currentData, previousData) {
+    return Object.keys(currentData).every(el => {
+      if (Array.isArray(previousData[el])) {
+        // console.log('arr', el, previousData[el], currentData[el]);
+        if (previousData[el].length === 0 && currentData[el].length === 0) return true;
+        if (previousData[el].length === currentData[el].length) {
+          return currentData[el].every(element => previousData[el].includes(element));
+        } else {
+          return false;
+        }
+      } else {
+        // console.log(el, previousData[el] === currentData[el]);
+        return previousData[el] === currentData[el];
+      }
+    });
+  }
+
+}
diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.html
index ea38b85..c857d7d 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.html
@@ -241,7 +241,7 @@
             <i class="material-icons">close</i>
           </button>
 
-          <button mat-icon-button class="btn apply" (click)="buildAuditGrid(true)" [disabled]="!isNavigationDisabled">
+          <button mat-icon-button class="btn apply" (click)="buildAuditGrid(true)" [disabled]="isNavigationDisabled">
             <i class="material-icons">done</i>
           </button>
         </div>
diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts
index ce294c4..8e081b1 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts
@@ -23,6 +23,7 @@ import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog
 import {AuditService} from '../../../core/services/audit.service';
 import {SortUtils} from '../../../core/util';
 import {LocalizationService} from '../../../core/services/localization.service';
+import {CompareUtils} from '../../../core/util/compareUtils';
 
 
 export interface AuditItem {
@@ -124,8 +125,8 @@ export class AuditGridComponent implements OnInit {
   }
 
   private checkFilters() {
-    this.isNavigationDisabled = JSON.stringify(this.copiedFilterAuditData) !== JSON.stringify(this.filterAuditData);
-    this.isFilterSelected = Object.keys(this.filterAuditData).filter(v => this.filterAuditData[v].length > 0).length > 0;
+    this.isNavigationDisabled = CompareUtils.compareFilters(this.filterAuditData, this.copiedFilterAuditData);
+    this.isFilterSelected = Object.keys(this.filterAuditData).some(v => this.filterAuditData[v].length > 0);
   }
 
   public openActionInfo(element: AuditItem): void {
diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.ts
index d11c9aa..17cccd6 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.ts
@@ -33,6 +33,7 @@ import { ReportingConfigModel } from '../../../../dictionary/global.dictionary';
 import {BehaviorSubject, fromEvent, Observable, of, Subject, timer} from 'rxjs';
 import {logger} from 'codelyzer/util/logger';
 import {take} from 'rxjs/operators';
+import {CompareUtils} from '../../../core/util/compareUtils';
 
 @Component({
   selector: 'datalab-reporting-grid',
@@ -93,7 +94,6 @@ export class ReportingGridComponent implements OnInit {
       this.tableEl = this.table._elementRef.nativeElement;
     }, 1000);
     this.checkFilters();
-    // this.compareFilters();
   }
 
   onUpdate($event): void {
@@ -102,50 +102,10 @@ export class ReportingGridComponent implements OnInit {
   }
 
   private checkFilters() {
-    this.isFilterChanged = JSON.stringify(this.filteredReportData) === JSON.stringify(this.previousFilterData);
+    this.isFilterChanged = CompareUtils.compareFilters(this.filteredReportData, this.previousFilterData);
     this.isFilterSelected = Object.keys(this.filteredReportData)
-      .filter(v => this.filteredReportData[v] && this.filteredReportData[v].length > 0).length > 0;
-  }
-
-  // compareFilters() {
-  //   const previousData = {
-  //     datalabId: '',
-  //     date_end: '',
-  //     date_start: '',
-  //     locale: undefined,
-  //     products: [],
-  //     projects: [],
-  //     resource_type: [1],
-  //     shapes: [],
-  //     statuses: [],
-  //     users: [],
-  //   };
-  //
-  //   const currentData = {
-  //     datalabId: '',
-  //     date_end: '',
-  //     date_start: '',
-  //     locale: undefined,
-  //     products: [],
-  //     projects: [],
-  //     resource_type: [],
-  //     shapes: [],
-  //     statuses: [],
-  //     users: [],
-  //   };
-  //
-  //   console.log(Object.keys(currentData).every(el => {
-  //     if (Array.isArray(el)) {
-  //       if (previousData[el].length !== currentData[el].length) {
-  //         return true;
-  //       } else {
-  //         return false;
-  //       }
-  //     } else {
-  //       return previousData[el] !== currentData[el];
-  //     }
-  //   }));
-  // }
+      .some(v => this.filteredReportData[v] && this.filteredReportData[v].length > 0);
+  }
 
   refreshData(fullReport, report) {
     this.reportData = [...report];
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.html
index 41f9246..df880f3 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.html
@@ -298,7 +298,7 @@
                    <i class="material-icons">close</i>
                  </button>
 
-                 <button mat-icon-button class="btn apply" (click)="filterLibs(true)" [disabled]="!isFilterChanged">
+                 <button mat-icon-button class="btn apply" (click)="filterLibs(true)" [disabled]="isFilterChanged">
                    <i class="material-icons"  [ngClass]="{'not-allowed': filterModel['length'] === 0}">done</i>
                  </button>
                </div>
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.ts
index 72d6563..554d9da 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.ts
@@ -29,6 +29,7 @@ import { LibrariesInstallationService } from '../../../core/services';
 import {SortUtils, HTTP_STATUS_CODES, PATTERNS} from '../../../core/util';
 import {FilterLibsModel} from './filter-libs.model';
 import {Subject, timer} from 'rxjs';
+import {CompareUtils} from '../../../core/util/compareUtils';
 
 interface Library {
   name: string;
@@ -205,8 +206,8 @@ export class InstallLibrariesComponent implements OnInit, OnDestroy {
   }
 
   private checkFilters() {
-    this.isFilterChanged = JSON.stringify(this.cashedFilterForm) !== JSON.stringify(this.filterModel);
-    this.isFilterSelected = Object.keys(this.filterModel).filter(v => this.filterModel[v].length > 0).length > 0;
+    this.isFilterChanged = CompareUtils.compareFilters(this.filterModel, this.cashedFilterForm);
+    this.isFilterSelected = Object.keys(this.filterModel).some(v => this.filterModel[v].length > 0);
   }
 
   public isDuplicated(item) {
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
index 2124f24..2293ee6 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
@@ -296,7 +296,7 @@
     <ng-container matColumnDef="shape-filter">
       <th mat-header-cell *matHeaderCellDef class="shape-col filter-row-item">
         <multi-select-dropdown (selectionChange)="onUpdate($event)"
-          [type]="'sizes'" [items]="filterConfiguration.shapes"
+          [type]="'shapes'" [items]="filterConfiguration.shapes"
           [model]="filterForm.shapes"></multi-select-dropdown>
       </th>
     </ng-container>
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
index cdb4407..397b2bd 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
@@ -43,6 +43,7 @@ import {NotebookModel} from '../exploratory/notebook.model';
 import {AuditService} from '../../core/services/audit.service';
 import {JAN} from '@angular/material/core';
 import {ReconfirmationDialogComponent} from '../../administration/management/management-grid/management-grid.component';
+import {CompareUtils} from '../../core/util/compareUtils';
 
 export interface SharedEndpoint {
   edge_node_ip: string;
@@ -172,8 +173,8 @@ export class ResourcesGridComponent implements OnInit {
   }
 
   private checkFilters() {
-    this.isFilterChanged = JSON.stringify(this.cashedFilterForm) !== JSON.stringify(this.filterForm);
-    this.isFilterSelected = Object.keys(this.filterForm).filter(v => this.filterForm[v].length > 0).length > 0;
+    this.isFilterChanged = !CompareUtils.compareFilters(this.filterForm, this.cashedFilterForm);
+    this.isFilterSelected = Object.keys(this.filterForm).some(v => this.filterForm[v].length > 0);
   }
 
   public selectActiveProject(project = ''): void {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org