diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000..cd5ea69 --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { TimezoneClosestComponent } from './timezone/components/timezone-closest/timezone-closest.component'; +import { TimezoneListComponent } from './timezone/components/timezone-list/timezone-list.component'; + +const routes: Routes = [ + { path: '', component: TimezoneListComponent }, + { path: 'closest', component: TimezoneClosestComponent }, +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/src/app/app.component.html b/src/app/app.component.html index 5b4cdcf..90c6b64 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,4 +1 @@ -
-

{{fiveOclock.name}}

-

{{fiveOclock.time?.toFormat('tt')}}

-
\ No newline at end of file + \ No newline at end of file diff --git a/src/app/app.component.scss b/src/app/app.component.scss index e19a8e0..e69de29 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -1,52 +0,0 @@ -.container { - display:flex; - align-items: center; - flex-direction: column; - justify-content: center; - width: 100%; - margin: 0; - padding: 0; -} - -.single-container { - display:flex; - align-items: center; - flex-direction: column; - justify-content: center; - height: 100%; - width: 100%; - margin: 0; - padding: 0; -} - -@media (max-width: 350px) { - .timezone { - font-size: 1.0em; - } - - .time { - font-size: 0.5em - } -} - -@media (min-width:350px) and (max-width: 500px) { - .timezone { - font-size: 1.5em; - } - - .time { - font-size: 1.0em - } -} - -.timezone { - font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; - color: whitesmoke; - margin-bottom: 0; -} - -.time { - font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; - color: whitesmoke; - margin-top: 0; -} \ No newline at end of file diff --git a/src/app/app.module.ts b/src/app/app.module.ts index e2a353d..bce10b6 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -3,13 +3,19 @@ import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; import { TimezoneService } from './timezone/services/timezone.service'; +import { AppRoutingModule } from './app-routing.module'; +import { TimezoneListComponent } from './timezone/components/timezone-list/timezone-list.component'; +import { TimezoneClosestComponent } from './timezone/components/timezone-closest/timezone-closest.component'; @NgModule({ declarations: [ - AppComponent + AppComponent, + TimezoneListComponent, + TimezoneClosestComponent ], imports: [ BrowserModule, + AppRoutingModule, ], providers: [TimezoneService], bootstrap: [AppComponent] diff --git a/src/app/timezone/components/timezone-closest/timezone-closest.component.html b/src/app/timezone/components/timezone-closest/timezone-closest.component.html new file mode 100644 index 0000000..7b35d03 --- /dev/null +++ b/src/app/timezone/components/timezone-closest/timezone-closest.component.html @@ -0,0 +1,8 @@ +
+ +
+

{{fiveOclock.name}}

+

{{fiveOclock.time?.toFormat('tt')}}

+
+
+
\ No newline at end of file diff --git a/src/app/timezone/components/timezone-closest/timezone-closest.component.scss b/src/app/timezone/components/timezone-closest/timezone-closest.component.scss new file mode 100644 index 0000000..7cba226 --- /dev/null +++ b/src/app/timezone/components/timezone-closest/timezone-closest.component.scss @@ -0,0 +1,46 @@ +.container { + display:flex; + align-items: center; + flex-direction: column; + justify-content: center; + height: 100%; + width: 100%; + margin: 0; + padding: 0; +} + +@media (max-width: 350px) { + .timezone { + font-size: 1.0em; + } + + .time { + font-size: 0.5em + } +} + +@media (min-width:350px) and (max-width: 500px) { + .timezone { + font-size: 1.5em; + } + + .time { + font-size: 1.0em + } +} + +.timezone { + font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: whitesmoke; + margin-bottom: 0; +} + +.time { + font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: whitesmoke; + margin-top: 0; +} + +.background { + height: 100% +} \ No newline at end of file diff --git a/src/app/timezone/components/timezone-closest/timezone-closest.component.spec.ts b/src/app/timezone/components/timezone-closest/timezone-closest.component.spec.ts new file mode 100644 index 0000000..79ecd54 --- /dev/null +++ b/src/app/timezone/components/timezone-closest/timezone-closest.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TimezoneClosestComponent } from './timezone-closest.component'; + +describe('TimezoneClosestComponent', () => { + let component: TimezoneClosestComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ TimezoneClosestComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TimezoneClosestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/timezone/components/timezone-closest/timezone-closest.component.ts b/src/app/timezone/components/timezone-closest/timezone-closest.component.ts new file mode 100644 index 0000000..74cc834 --- /dev/null +++ b/src/app/timezone/components/timezone-closest/timezone-closest.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; +import { interval } from 'rxjs'; +import { GetClosestTimezoneFrom, Timezone } from '../../models/timezone.model'; +import { TimezoneService } from '../../services/timezone.service'; + +@Component({ + selector: 'app-timezone-closest', + templateUrl: './timezone-closest.component.html', + styleUrls: ['./timezone-closest.component.scss'] +}) +export class TimezoneClosestComponent implements OnInit { + + fiveOclock: Timezone | undefined; + + constructor(private timezoneService: TimezoneService){ + var second = interval(1000) + + second.subscribe(()=>{ + var fiveOclocks: Timezone[] = []; + this.timezoneService.getCurrentTimeInTimezones(this.timezoneService.getTimezones()).forEach((timezoneObj)=>{ + if(timezoneObj.time?.hour === 17){ + fiveOclocks.push(timezoneObj); + } + }) + this.fiveOclock = GetClosestTimezoneFrom(this.timezoneService.getCurrentTimezone(), fiveOclocks) + }) + + } + + ngOnInit(): void { + } + +} diff --git a/src/app/timezone/components/timezone-list/timezone-list.component.html b/src/app/timezone/components/timezone-list/timezone-list.component.html new file mode 100644 index 0000000..b48a8a7 --- /dev/null +++ b/src/app/timezone/components/timezone-list/timezone-list.component.html @@ -0,0 +1,8 @@ +
+ +
+

{{timezone.name}}

+

{{timezone.time?.toFormat('tt')}}

+
+
+
\ No newline at end of file diff --git a/src/app/timezone/components/timezone-list/timezone-list.component.scss b/src/app/timezone/components/timezone-list/timezone-list.component.scss new file mode 100644 index 0000000..97e7fa3 --- /dev/null +++ b/src/app/timezone/components/timezone-list/timezone-list.component.scss @@ -0,0 +1,57 @@ +.container { + display:flex; + align-items: center; + flex-direction: column; + justify-content: center; + width: 100%; + margin: 0; + padding: 0; +} + +.single-container { + display:flex; + align-items: center; + flex-direction: column; + justify-content: center; + height: 100%; + width: 100%; + margin: 0; + padding: 0; +} + +@media (max-width: 350px) { + .timezone { + font-size: 1.0em; + } + + .time { + font-size: 0.5em + } +} + +@media (min-width:350px) and (max-width: 500px) { + .timezone { + font-size: 1.5em; + } + + .time { + font-size: 1.0em + } +} + +.timezone { + font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: whitesmoke; + margin-bottom: 0; +} + +.time { + font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: whitesmoke; + margin-top: 0; +} + +.background { + background: #2e2e2e; + height: 100%; +} \ No newline at end of file diff --git a/src/app/timezone/components/timezone-list/timezone-list.component.spec.ts b/src/app/timezone/components/timezone-list/timezone-list.component.spec.ts new file mode 100644 index 0000000..e02259e --- /dev/null +++ b/src/app/timezone/components/timezone-list/timezone-list.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TimezoneListComponent } from './timezone-list.component'; + +describe('TimezoneListComponent', () => { + let component: TimezoneListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ TimezoneListComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TimezoneListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/timezone/components/timezone-list/timezone-list.component.ts b/src/app/timezone/components/timezone-list/timezone-list.component.ts new file mode 100644 index 0000000..1f96f28 --- /dev/null +++ b/src/app/timezone/components/timezone-list/timezone-list.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit } from '@angular/core'; +import { interval, Observable } from 'rxjs'; +import { Timezone } from '../../models/timezone.model'; +import { TimezoneService } from '../../services/timezone.service'; + +@Component({ + selector: 'app-timezone-list', + templateUrl: './timezone-list.component.html', + styleUrls: ['./timezone-list.component.scss'] +}) +export class TimezoneListComponent implements OnInit { + + fiveOclocks: Timezone[] = []; + + constructor(private timezoneService: TimezoneService){ + var second = interval(1000) + + second.subscribe(()=>{ + this.fiveOclocks = []; + this.timezoneService.getCurrentTimeInTimezones(this.timezoneService.getTimezones()).forEach((timezoneObj)=>{ + if(timezoneObj.time?.hour === 17){ + this.fiveOclocks.push(timezoneObj); + } + }) + }) + + } + + ngOnInit(): void { + } + +} diff --git a/src/styles.scss b/src/styles.scss index e54e037..368036f 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1,8 +1,10 @@ /* You can add global styles to this file, and also import other style files */ body { - height: 100vh; + height: 100%; margin:0; padding:0; background: #2e2e2e; - +} +html { + height: 100%; } \ No newline at end of file