+
div {
width: fit-content;
display: flex;
flex-direction: column;
gap: 8px;
+
+ > div {
+ border-radius: 4px;
+ cursor: pointer;
+ padding: 3px 8px;
+
+ &:hover {
+ background-color: $grey-6;
+ }
+
+ &.active {
+ background-color: rgba($primary, 0.1);
+ }
+ }
}
}
diff --git a/apps/red-ui/src/app/components/simple-doughnut-chart/simple-doughnut-chart.component.ts b/apps/red-ui/src/app/components/simple-doughnut-chart/simple-doughnut-chart.component.ts
index dc761199b..fc07d2d20 100644
--- a/apps/red-ui/src/app/components/simple-doughnut-chart/simple-doughnut-chart.component.ts
+++ b/apps/red-ui/src/app/components/simple-doughnut-chart/simple-doughnut-chart.component.ts
@@ -1,10 +1,12 @@
-import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
+import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';
import { Color } from '../../utils/types';
+import { FilterModel } from '../../common/filter/model/filter.model';
export class DoughnutChartConfig {
value: number;
color: Color;
label: string;
+ active?: boolean;
}
@Component({
@@ -18,6 +20,8 @@ export class SimpleDoughnutChartComponent implements OnChanges {
@Input() radius = 85;
@Input() strokeWidth = 20;
@Input() direction: 'row' | 'column' = 'column';
+ @Input() filter: FilterModel[] = [];
+ @Output() public toggleFilter = new EventEmitter();
public chartData: any[] = [];
public perimeter: number;
@@ -70,6 +74,11 @@ export class SimpleDoughnutChartComponent implements OnChanges {
// Eliminate items with value = 0
public get parsedConfig() {
- return this.config.filter((el) => el.value);
+ return this.config
+ .filter((el) => el.value)
+ .map((el) => ({
+ ...el,
+ checked: this.filter.find((f) => f.key === el.label)?.checked
+ }));
}
}
diff --git a/apps/red-ui/src/app/screens/project-overview-screen/project-details/project-details.component.html b/apps/red-ui/src/app/screens/project-overview-screen/project-details/project-details.component.html
index ced83e692..1dadeee90 100644
--- a/apps/red-ui/src/app/screens/project-overview-screen/project-details/project-details.component.html
+++ b/apps/red-ui/src/app/screens/project-overview-screen/project-details/project-details.component.html
@@ -66,15 +66,16 @@
[strokeWidth]="15"
[subtitle]="'project-overview.project-details.charts.documents-in-project'"
direction="row"
+ [filter]="filters.statusFilters"
+ (toggleFilter)="toggleFilter('statusFilters', $event)"
>
f.key === key);
+ public toggleFilter(filterType: 'needsWorkFilters' | 'statusFilters', key: string): void {
+ const filter = this.filters[filterType].find((f) => f.key === key);
filter.checked = !filter.checked;
this.filtersChanged.emit(this.filters);
}
diff --git a/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts b/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts
index f756f895d..cd5a44331 100644
--- a/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts
+++ b/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts
@@ -43,7 +43,10 @@ export class ProjectOverviewScreenComponent implements OnInit, OnDestroy {
public displayedFiles: FileStatusWrapper[] = [];
- public detailsContainerFilters: { needsWorkFilters: FilterModel[] };
+ public detailsContainerFilters: {
+ needsWorkFilters: FilterModel[];
+ statusFilters: FilterModel[];
+ };
@ViewChild('projectDetailsComponent', { static: false })
private _projectDetailsComponent: ProjectDetailsComponent;
@@ -318,7 +321,6 @@ export class ProjectOverviewScreenComponent implements OnInit, OnDestroy {
filtersChanged(filters?: { [key: string]: FilterModel[] }): void {
if (filters) {
for (const key of Object.keys(filters)) {
- console.log(filters[key]);
for (let idx = 0; idx < this[key].length; ++idx) {
this[key][idx] = filters[key][idx];
}
@@ -338,7 +340,8 @@ export class ProjectOverviewScreenComponent implements OnInit, OnDestroy {
filters
);
this.detailsContainerFilters = {
- needsWorkFilters: this.needsWorkFilters.map((f) => ({ ...f }))
+ needsWorkFilters: this.needsWorkFilters.map((f) => ({ ...f })),
+ statusFilters: this.statusFilters.map((f) => ({ ...f }))
};
this._changeDetectorRef.detectChanges();
}