();
@Input({ required: true }) filterName!: string;
+ @Input({ required: true }) filterTitle!: string;
@Input({ required: true }) filterOpened!: boolean;
@Input() hasSorting: boolean = true;
+ @Input() filtered: boolean = false;
@Input({ required: true }) activeFilter!: string;
@Input() sortActionDescription: string = '';
@Input({ required: true }) headerText!: string;
- openFilter(event: Event, filter: string, filterOpened: boolean): void {
+ openFilter(
+ event: Event,
+ filter: string,
+ title: string,
+ filterOpened: boolean
+ ): void {
this.emitOpenFilter.emit({
event,
filter,
+ title,
filterOpened,
});
}
diff --git a/modules/ui/src/app/pages/reports/reports.component.html b/modules/ui/src/app/pages/reports/reports.component.html
index 4ca8f68d0..7e07fc4a2 100644
--- a/modules/ui/src/app/pages/reports/reports.component.html
+++ b/modules/ui/src/app/pages/reports/reports.component.html
@@ -37,8 +37,10 @@ Reports
sortActionDescription="Sort by started date"
headerText="Started"
[filterName]="FilterName.Started"
+ [filterTitle]="FilterTitle.Started"
[filterOpened]="vm.filterOpened"
[activeFilter]="vm.activeFilter"
+ [filtered]="!!vm.filteredValues.dateRange"
(emitOpenFilter)="openFilter($event)">
@@ -67,8 +69,10 @@ Reports
sortActionDescription="Sort by device"
headerText="Device"
[filterName]="FilterName.DeviceInfo"
+ [filterTitle]="FilterTitle.DeviceInfo"
[filterOpened]="vm.filterOpened"
[activeFilter]="vm.activeFilter"
+ [filtered]="!!vm.filteredValues.deviceInfo"
(emitOpenFilter)="openFilter($event)">
| {{ data.deviceInfo }} |
@@ -81,8 +85,10 @@ Reports
sortActionDescription="Sort by firmware"
headerText="Firmware"
[filterName]="FilterName.DeviceFirmware"
+ [filterTitle]="FilterTitle.DeviceFirmware"
[filterOpened]="vm.filterOpened"
[activeFilter]="vm.activeFilter"
+ [filtered]="!!vm.filteredValues.deviceFirmware"
(emitOpenFilter)="openFilter($event)">
{{ data.deviceFirmware }} |
@@ -109,8 +115,10 @@ Reports
sortActionDescription="Sort by result"
headerText="Result"
[filterName]="FilterName.Results"
+ [filterTitle]="FilterTitle.Results"
[filterOpened]="vm.filterOpened"
[activeFilter]="vm.activeFilter"
+ [filtered]="!!vm.filteredValues.results.length"
(emitOpenFilter)="openFilter($event)">
diff --git a/modules/ui/src/app/pages/reports/reports.component.spec.ts b/modules/ui/src/app/pages/reports/reports.component.spec.ts
index b829e1cb3..a3d2f2b23 100644
--- a/modules/ui/src/app/pages/reports/reports.component.spec.ts
+++ b/modules/ui/src/app/pages/reports/reports.component.spec.ts
@@ -29,7 +29,7 @@ import { LiveAnnouncer } from '@angular/cdk/a11y';
import { MatDialogRef } from '@angular/material/dialog';
import { FilterDialogComponent } from './components/filter-dialog/filter-dialog.component';
import { ElementRef } from '@angular/core';
-import { FilterName } from '../../model/filters';
+import { FilterName, FilterTitle } from '../../model/filters';
import SpyObj = jasmine.SpyObj;
import { MatSort } from '@angular/material/sort';
import { DATA_SOURCE_INITIAL_VALUE, ReportsStore } from './reports.store';
@@ -184,6 +184,7 @@ describe('ReportsComponent', () => {
component.openFilter({
event,
filter: '',
+ title: '',
filterOpened: false,
});
@@ -192,6 +193,7 @@ describe('ReportsComponent', () => {
ariaLabel: 'Filters',
data: {
filter: '',
+ title: '',
trigger: new ElementRef(event.currentTarget),
},
autoFocus: true,
@@ -232,21 +234,25 @@ describe('ReportsComponent', () => {
component.openFilter({
event,
filter: FilterName.Started,
+ title: FilterTitle.Started,
filterOpened: false,
});
component.openFilter({
event,
filter: FilterName.Results,
+ title: FilterTitle.Results,
filterOpened: false,
});
component.openFilter({
event,
filter: FilterName.DeviceFirmware,
+ title: FilterTitle.DeviceFirmware,
filterOpened: false,
});
component.openFilter({
event,
filter: FilterName.DeviceInfo,
+ title: FilterTitle.DeviceInfo,
filterOpened: false,
});
expect(mockReportsStore.setFilteredValuesResults).toHaveBeenCalledWith(
diff --git a/modules/ui/src/app/pages/reports/reports.component.ts b/modules/ui/src/app/pages/reports/reports.component.ts
index a40c2f8f8..cb516b34c 100644
--- a/modules/ui/src/app/pages/reports/reports.component.ts
+++ b/modules/ui/src/app/pages/reports/reports.component.ts
@@ -33,7 +33,7 @@ import { MatRow } from '@angular/material/table';
import { FilterDialogComponent } from './components/filter-dialog/filter-dialog.component';
import { MatDialog } from '@angular/material/dialog';
import { tap } from 'rxjs/internal/operators/tap';
-import { FilterName, Filters } from '../../model/filters';
+import { FilterName, FilterTitle, Filters } from '../../model/filters';
import { ReportsStore } from './reports.store';
import { OpenFilterEvent } from './components/filter-header/filter-header.component';
@@ -46,6 +46,7 @@ import { OpenFilterEvent } from './components/filter-header/filter-header.compon
})
export class ReportsComponent implements OnInit, OnDestroy {
public readonly FilterName = FilterName;
+ public readonly FilterTitle = FilterTitle;
private destroy$: Subject = new Subject();
@ViewChild(MatSort, { static: false }) sort!: MatSort;
viewModel$ = this.store.viewModel$;
@@ -78,22 +79,27 @@ export class ReportsComponent implements OnInit, OnDestroy {
return this.testRunService.getResultClass(status);
}
- openFilter({ event, filter, filterOpened }: OpenFilterEvent) {
+ openFilter({ event, filter, title, filterOpened }: OpenFilterEvent) {
event.stopPropagation();
const target = new ElementRef(event.currentTarget);
if (!filterOpened) {
- this.openFilterDialog(target, filter);
+ this.openFilterDialog(target, filter, title);
}
}
- openFilterDialog(target: ElementRef, filter: string) {
+ openFilterDialog(
+ target: ElementRef,
+ filter: string,
+ title: string
+ ) {
this.store.setFilterOpened(true);
this.store.setActiveFiler(filter);
const dialogRef = this.dialog.open(FilterDialogComponent, {
ariaLabel: 'Filters',
data: {
filter,
+ title,
trigger: target,
},
autoFocus: true,
diff --git a/modules/ui/src/styles.scss b/modules/ui/src/styles.scss
index 0893b13e1..15c14716c 100644
--- a/modules/ui/src/styles.scss
+++ b/modules/ui/src/styles.scss
@@ -21,6 +21,18 @@
:root {
--mat-sidenav-container-width: auto;
--mat-sidenav-container-shape: 0;
+
+ @include mat.dialog-overrides(
+ (
+ container-color: colors.$surface-container-high,
+ )
+ );
+
+ @include mat.chips-overrides(
+ (
+ outline-color: transparent,
+ )
+ );
}
html,
|