Skip to content

Commit 08a5060

Browse files
more dara avaialiability changes
1 parent f4eda01 commit 08a5060

File tree

11 files changed

+67
-22
lines changed

11 files changed

+67
-22
lines changed

front-end/pwa/src/app/data-ingestion/form-entry/form-entry.component.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ export class FormEntryComponent implements OnInit, OnDestroy {
8787
this.cachedMetadataSearchService.allMetadataLoaded.pipe(
8888
takeUntil(this.destroy$),
8989
).subscribe(allMetadataLoaded => {
90-
console.log('metadata loaded: ', allMetadataLoaded);
91-
9290
if (!allMetadataLoaded) return;
9391

9492
this.station = this.cachedMetadataSearchService.getStation(stationId);

front-end/pwa/src/app/data-monitoring/data-availability/data-availability-query-selection/data-availability-filter-selection-details/data-availability-filter-selection-details.component.html renamed to front-end/pwa/src/app/data-monitoring/data-availability/data-availability-details/data-availability-filter-selection-details/data-availability-filter-selection-details.component.html

File renamed without changes.

front-end/pwa/src/app/data-monitoring/data-availability/data-availability-query-selection/data-availability-filter-selection-details/data-availability-filter-selection-details.component.scss renamed to front-end/pwa/src/app/data-monitoring/data-availability/data-availability-details/data-availability-filter-selection-details/data-availability-filter-selection-details.component.scss

File renamed without changes.

front-end/pwa/src/app/data-monitoring/data-availability/data-availability-query-selection/data-availability-filter-selection-details/data-availability-filter-selection-details.component.ts renamed to front-end/pwa/src/app/data-monitoring/data-availability/data-availability-details/data-availability-filter-selection-details/data-availability-filter-selection-details.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleCha
22
import { Subject, takeUntil } from 'rxjs';
33
import { DataAvailabilitySummaryQueryModel } from '../../models/data-availability-summary-query.model';
44
import { CachedMetadataService } from 'src/app/metadata/metadata-updates/cached-metadata.service';
5-
import { DataAvailabilityFilterModel, DataAvailabilityFilterSelectionGeneralComponent } from '../data-availability-filter-selection-general/data-availability-filter-selection-general.component';
5+
import { DataAvailabilityFilterModel, DataAvailabilityFilterSelectionGeneralComponent } from '../../data-availability-query-selection/data-availability-filter-selection-general/data-availability-filter-selection-general.component';
66
import { DateUtils } from 'src/app/shared/utils/date.utils';
77
import { PagesDataService, ToastEventTypeEnum } from 'src/app/core/services/pages-data.service';
88
import { StringUtils } from 'src/app/shared/utils/string.utils';

front-end/pwa/src/app/data-monitoring/data-availability/data-availability-query-selection/data-availability-filter-selection-general/data-availability-filter-selection-general.component.ts

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@ import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleCha
22
import { Subject, takeUntil } from 'rxjs';
33
import { AppAuthService } from 'src/app/app-auth.service';
44
import { UserPermissionModel } from 'src/app/admin/users/models/user-permission.model';
5-
import { PagesDataService, ToastEventTypeEnum } from 'src/app/core/services/pages-data.service';
5+
import { PagesDataService, ToastEventTypeEnum } from 'src/app/core/services/pages-data.service';
66
import { DateUtils } from 'src/app/shared/utils/date.utils';
77
import { CachedMetadataService } from 'src/app/metadata/metadata-updates/cached-metadata.service';
88
import { StringUtils } from 'src/app/shared/utils/string.utils';
99
import { DurationTypeEnum } from '../../models/duration-type.enum';
1010

1111
export interface DataAvailabilityFilterModel {
12-
stationIds?: string[];
13-
elementIds?: number[];
14-
interval?: number;
15-
level?: number;
16-
durationType: DurationTypeEnum;
17-
fromDate: string;
18-
toDate: string;
12+
stationIds?: string[];
13+
elementIds?: number[];
14+
interval?: number;
15+
level?: number;
16+
durationType: DurationTypeEnum;
17+
fromDate: string;
18+
toDate: string;
1919
}
2020

2121
@Component({
@@ -52,7 +52,7 @@ export class DataAvailabilityFilterSelectionGeneralComponent implements OnChange
5252

5353
constructor(
5454
private pagesDataService: PagesDataService,
55-
private appAuthService: AppAuthService,
55+
private appAuthService: AppAuthService,
5656
private cachedMetadataService: CachedMetadataService,
5757
) {
5858

@@ -70,6 +70,14 @@ export class DataAvailabilityFilterSelectionGeneralComponent implements OnChange
7070

7171
ngOnChanges(changes: SimpleChanges): void {
7272
if (changes['inputFilter'] && this.inputFilter && this.inputFilter !== this.outputFilter) {
73+
if (this.outputFilter) {
74+
if (this.areFiltersEqual(this.inputFilter, this.outputFilter)) {
75+
console.log('inputFilter are equal');
76+
return;
77+
}
78+
}
79+
80+
console.log('setting outputFilter');
7381
this.outputFilter = { ...this.inputFilter };
7482
this.setSelectionsFromQuery();
7583
}
@@ -80,12 +88,45 @@ export class DataAvailabilityFilterSelectionGeneralComponent implements OnChange
8088
this.destroy$.complete();
8189
}
8290

91+
private areFiltersEqual(
92+
filter1: DataAvailabilityFilterModel,
93+
filter2: DataAvailabilityFilterModel
94+
): boolean {
95+
// Compare primitive values
96+
if (
97+
filter1.interval !== filter2.interval ||
98+
filter1.level !== filter2.level ||
99+
filter1.durationType !== filter2.durationType ||
100+
filter1.fromDate !== filter2.fromDate ||
101+
filter1.toDate !== filter2.toDate
102+
) {
103+
return false;
104+
}
105+
106+
// Compare arrays
107+
return (
108+
this.areArraysEqualUnordered(filter1.stationIds, filter2.stationIds) &&
109+
this.areArraysEqualUnordered(filter1.elementIds, filter2.elementIds)
110+
);
111+
}
112+
113+
private areArraysEqualUnordered<T>(arr1?: T[], arr2?: T[]): boolean {
114+
if (arr1 === arr2) return true;
115+
if (!arr1 || !arr2) return false;
116+
if (arr1.length !== arr2.length) return false;
117+
118+
const sorted1 = [...arr1].sort();
119+
const sorted2 = [...arr2].sort();
120+
121+
return sorted1.every((val, index) => val === sorted2[index]);
122+
}
123+
83124
private setSelectionsFromQuery() {
84125
if (this.outputFilter.stationIds) this.stationIds = this.outputFilter.stationIds;
85126
if (this.outputFilter.elementIds) this.elementIds = this.outputFilter.elementIds;
86127
if (this.outputFilter.level) this.level = this.outputFilter.level;
87128
if (this.outputFilter.interval) this.interval = this.outputFilter.interval;
88-
129+
89130
this.durationType = this.outputFilter.durationType;
90131
const fromDate = DateUtils.getDatetimesBasedOnUTCOffset(this.outputFilter.fromDate, this.cachedMetadataService.utcOffSet, 'add').split('T')[0];
91132
const toDate = DateUtils.getDatetimesBasedOnUTCOffset(this.outputFilter.toDate, this.cachedMetadataService.utcOffSet, 'add').split('T')[0];
@@ -102,7 +143,7 @@ export class DataAvailabilityFilterSelectionGeneralComponent implements OnChange
102143
this.durationYear = Number(fromYear);
103144
break;
104145
case DurationTypeEnum.YEARS:
105-
this.durationYears = [Number(fromYear), Number(toDate[0])];
146+
this.durationYears = [Number(fromYear), Number(toDate.split('-')[0])];
106147
break;
107148
default:
108149
throw new Error('Developer error. Duration type not supported');
@@ -203,7 +244,7 @@ export class DataAvailabilityFilterSelectionGeneralComponent implements OnChange
203244
this.outputFilter = {
204245
durationType: this.durationType,
205246
fromDate: fromDate,
206-
toDate: toDate,
247+
toDate: toDate,
207248
};
208249

209250
if (this.stationIds.length > 0) this.outputFilter.stationIds = this.stationIds;

front-end/pwa/src/app/data-monitoring/data-availability/data-availability-query-selection/data-availability-filter-selection-summary/data-availability-filter-selection-summary.component.html renamed to front-end/pwa/src/app/data-monitoring/data-availability/data-availability-summary/data-availability-filter-selection-summary/data-availability-filter-selection-summary.component.html

File renamed without changes.

front-end/pwa/src/app/data-monitoring/data-availability/data-availability-query-selection/data-availability-filter-selection-summary/data-availability-filter-selection-summary.component.scss renamed to front-end/pwa/src/app/data-monitoring/data-availability/data-availability-summary/data-availability-filter-selection-summary/data-availability-filter-selection-summary.component.scss

File renamed without changes.

front-end/pwa/src/app/data-monitoring/data-availability/data-availability-query-selection/data-availability-filter-selection-summary/data-availability-filter-selection-summary.component.ts renamed to front-end/pwa/src/app/data-monitoring/data-availability/data-availability-summary/data-availability-filter-selection-summary/data-availability-filter-selection-summary.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';
22
import { DataAvailabilitySummaryQueryModel } from '../../models/data-availability-summary-query.model';
3-
import { DataAvailabilityFilterModel, DataAvailabilityFilterSelectionGeneralComponent } from '../data-availability-filter-selection-general/data-availability-filter-selection-general.component';
3+
import { DataAvailabilityFilterModel, DataAvailabilityFilterSelectionGeneralComponent } from '../../data-availability-query-selection/data-availability-filter-selection-general/data-availability-filter-selection-general.component';
44

55
@Component({
66
selector: 'app-data-availability-filter-selection-summary',

front-end/pwa/src/app/data-monitoring/data-availability/data-availability-summary/data-availability-summary.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class DataAvailabilitySummaryComponent implements OnChanges, OnDestroy {
2323
@Input()
2424
public filter!: DataAvailabilitySummaryQueryModel;
2525

26-
26+
2727
public enableQueryButton: boolean = true;
2828

2929
@Output()
@@ -75,7 +75,7 @@ export class DataAvailabilitySummaryComponent implements OnChanges, OnDestroy {
7575
take(1)
7676
).subscribe({
7777
next: data => {
78-
console.log('summary data: ', data);
78+
console.log('summary data: ', data);
7979
this.enableQueryButton = true;
8080
this.stationsRendered = [];
8181
if (this.filter.stationIds && this.filter.stationIds.length > 0) {

front-end/pwa/src/app/data-monitoring/data-availability/data-availability.component.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { DataAvailabilityFilterModel } from './data-availability-query-selection
1515
styleUrls: ['./data-availability.component.scss']
1616
})
1717
export class DataAvailabilityComponent implements OnInit, OnDestroy {
18-
protected activeTab: 'summary' | 'details' = 'summary';
18+
protected activeTab: 'summary' | 'details' = 'summary';
1919
protected summaryFilter!: DataAvailabilitySummaryQueryModel;
2020
protected detailsFilter!: DataAvailabilityFilterModel;
2121

@@ -109,13 +109,16 @@ export class DataAvailabilityComponent implements OnInit, OnDestroy {
109109

110110
// When choosing tabs. Change the filters of those tabs with contents of the previous tab.
111111
if (this.activeTab === 'summary') {
112+
112113
this.summaryFilter = {
113114
...this.detailsFilter,
114115
fromDate: this.summaryFilter.fromDate, // Important. Don't use details from date as it changes the starting hour
115116
durationType: this.summaryFilter.durationType,
116117
excludeConfirmedMissing: this.summaryFilter.excludeConfirmedMissing,
117118
}
118119

120+
121+
119122
} else if (this.activeTab === 'details') {
120123
this.detailsFilter = {
121124
...this.summaryFilter,
@@ -124,6 +127,9 @@ export class DataAvailabilityComponent implements OnInit, OnDestroy {
124127

125128
}
126129

130+
console.log('summaryFilter: ', this.summaryFilter);
131+
console.log('detailsFilter: ', this.detailsFilter);
132+
127133
}
128134

129135
}

0 commit comments

Comments
 (0)