Skip to content

Commit 00a846e

Browse files
Dashboard disease tabs (#299)
* Dashboard disease tabs * Fixes Co-authored-by: Sandor Ban <[email protected]>
1 parent ef5013c commit 00a846e

File tree

5 files changed

+66
-4
lines changed

5 files changed

+66
-4
lines changed

src/app/_services/api/dashboard.service.ts

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ export class DashboardService {
2323
const requestPayload: any = {};
2424

2525
if (filters.length) {
26-
requestPayload.disease = 'CORONAVIRUS'; // TODO: DELETE THIS WHEN DISEASE SELECTION IS IMPLEMENTED
2726
filters.forEach((filter: any) => {
2827
requestPayload[filter.field] = filter.value;
2928
});
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
<p>dashboard-disease-menu works!</p>
1+
<div class="dashboard-disease-menu">
2+
<mat-tab-group (selectedTabChange)="tabChange($event)">
3+
<mat-tab *ngFor="let disease of diseases" [label]="disease.value"></mat-tab>
4+
</mat-tab-group>
5+
</div>
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,45 @@
1-
import { Component } from '@angular/core';
1+
import { Component, OnDestroy, OnInit } from '@angular/core';
2+
import { Subscription } from 'rxjs';
3+
import { Disease } from '../../../_constants/enums';
4+
import { Filter } from '../../../_models/common';
5+
import { EnumToKeyValuePipe } from '../../../_pipes/enum-to-key-value/enum-to-key-value.pipe';
6+
import { FilterService } from '../../../_services/filter.service';
27

38
@Component({
49
selector: 'app-dashboard-disease-menu',
510
templateUrl: './dashboard-disease-menu.component.html',
611
styleUrls: ['./dashboard-disease-menu.component.scss'],
12+
providers: [EnumToKeyValuePipe],
713
})
8-
export class DashboardDiseaseMenuComponent {}
14+
export class DashboardDiseaseMenuComponent implements OnInit, OnDestroy {
15+
currentFilters: Filter[] = [];
16+
diseases: any[] = [];
17+
subscriptions: Subscription[] = [];
18+
constructor(public filterService: FilterService, public enumToKeyValuePipe: EnumToKeyValuePipe) {
19+
this.diseases = enumToKeyValuePipe.transform(Disease);
20+
}
21+
22+
removePrevDiseaseFilter(): void {
23+
const newFilters: Filter[] = this.currentFilters.filter((f) => f.field !== 'disease');
24+
this.currentFilters = newFilters;
25+
}
26+
27+
tabChange(event: any): void {
28+
const selectedFilter = { field: 'disease', value: this.diseases[event.index].key };
29+
this.removePrevDiseaseFilter();
30+
this.currentFilters.push(selectedFilter);
31+
this.filterService.setFilters(this.currentFilters);
32+
}
33+
34+
ngOnInit(): void {
35+
this.subscriptions.push(
36+
this.filterService.getFilters().subscribe((val) => {
37+
this.currentFilters = val.filters;
38+
})
39+
);
40+
}
41+
42+
ngOnDestroy(): void {
43+
this.subscriptions.forEach((subscription) => subscription.unsubscribe());
44+
}
45+
}

src/app/dashboard/components/dashboard-filters/dashboard-filters.component.ts

+2
Original file line numberDiff line numberDiff line change
@@ -335,13 +335,15 @@ export class DashboardFiltersComponent implements OnInit, OnDestroy, AfterViewIn
335335
previousDateTo,
336336
newCaseDateType,
337337
region,
338+
disease,
338339
}) => ({
339340
dateFrom,
340341
dateTo,
341342
previousDateFrom,
342343
previousDateTo,
343344
newCaseDateType,
344345
region,
346+
disease,
345347
}))(this.form.value);
346348
const filters: any[] = [];
347349
Object.entries(relevantValues).forEach(([field, value]) => {

src/theme/common.scss

+20
Original file line numberDiff line numberDiff line change
@@ -369,3 +369,23 @@ strong {
369369
margin-bottom: 10px;
370370
}
371371
}
372+
373+
// dashboard-disease-menu
374+
.dashboard-disease-menu {
375+
.mat-tab-label {
376+
min-width: 100px;
377+
padding: 15px;
378+
}
379+
380+
.mat-tab-header {
381+
border: none;
382+
}
383+
384+
.mat-tab-group {
385+
&.mat-primary {
386+
.mat-ink-bar {
387+
background-color: black;
388+
}
389+
}
390+
}
391+
}

0 commit comments

Comments
 (0)