Skip to content

Commit 6f38ca8

Browse files
Patricio AlbizuPatricio Albizu
authored andcommitted
fix: Fixing Time picker comparison time in dropdown
1 parent 27be34d commit 6f38ca8

File tree

5 files changed

+16
-4
lines changed

5 files changed

+16
-4
lines changed

projects/common/src/time/time.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,9 @@ describe('Time', () => {
1414
test('can get ISO String from time', () => {
1515
expect(mockedTime.toISOString()).toBe('08:30:00.000Z');
1616
});
17+
18+
test('can compare two times', () => {
19+
expect(mockedTime.equals(new Time(8, 30))).toBeTruthy();
20+
expect(mockedTime.equals(new Time(9, 30))).toBeFalsy();
21+
});
1722
});

projects/common/src/time/time.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,8 @@ export class Time {
3535
public toISOString(): string {
3636
return this.date.toISOString().substring(11);
3737
}
38+
39+
public equals(other?: Time): boolean {
40+
return this.toISOString() === other?.toISOString();
41+
}
3842
}

projects/components/src/time-picker/time-picker.component.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { fakeAsync } from '@angular/core/testing';
2-
import { NavigationService, Time } from '@hypertrace/common';
2+
import { MemoizeModule, NavigationService, Time } from '@hypertrace/common';
33
import { createHostFactory, mockProvider, SpectatorHost } from '@ngneat/spectator/jest';
44
import { MockComponent } from 'ng-mocks';
55
import { of } from 'rxjs';
@@ -14,7 +14,7 @@ describe('Time Picker Component', () => {
1414
const createHost = createHostFactory({
1515
component: TimePickerComponent,
1616
shallow: true,
17-
imports: [PopoverModule],
17+
imports: [PopoverModule, MemoizeModule],
1818
providers: [
1919
mockProvider(PredefinedTimeService, {
2020
getPredefinedTimes: jest

projects/components/src/time-picker/time-picker.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { PredefinedTimeService } from '../time-range/predefined-time.service';
3636
*ngFor="let predefinedTime of this.predefinedTimes"
3737
(click)="this.onTimeChange(predefinedTime)"
3838
[ngClass]="{
39-
selected: predefinedTime.hours === this.time?.hours && predefinedTime.minutes === this.time?.minutes
39+
selected: this.time && (this.areEqualTimes | htMemoize: this.time:predefinedTime)
4040
}"
4141
>
4242
<span>{{ predefinedTime.label }}</span>
@@ -81,6 +81,8 @@ export class TimePickerComponent {
8181
this.time = time;
8282
this.timeChange.emit(time);
8383
}
84+
85+
public areEqualTimes = (time: Time, predefinedTime: Time) => time.equals(predefinedTime);
8486
}
8587

8688
export const enum TimePickerDisplayMode {

projects/components/src/time-picker/time-picker.module.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { CommonModule } from '@angular/common';
22
import { NgModule } from '@angular/core';
33
import { FormsModule } from '@angular/forms';
4+
import { MemoizeModule } from '@hypertrace/common';
45
import { IconModule } from '../icon/icon.module';
56
import { InputModule } from '../input/input.module';
67
import { LabelModule } from '../label/label.module';
78
import { PopoverModule } from '../popover/popover.module';
89
import { TimePickerComponent } from './time-picker.component';
910

1011
@NgModule({
11-
imports: [CommonModule, FormsModule, IconModule, LabelModule, InputModule, PopoverModule],
12+
imports: [CommonModule, FormsModule, IconModule, LabelModule, MemoizeModule, InputModule, PopoverModule],
1213
declarations: [TimePickerComponent],
1314
exports: [TimePickerComponent]
1415
})

0 commit comments

Comments
 (0)