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