diff --git a/src/app/app.component.less b/src/app/app.component.less
index e69de29..d032bdf 100644
--- a/src/app/app.component.less
+++ b/src/app/app.component.less
@@ -0,0 +1,4 @@
+.main {
+ margin: 1rem auto;
+ width: 80%;
+}
\ No newline at end of file
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 4518124..2585081 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,5 +1,5 @@
import { Component } from '@angular/core';
-import { ApiService } from './api.service';
+import { ApiService } from './services/api.service';
@Component({
selector: 'app-root',
@@ -10,6 +10,4 @@ export class AppComponent {
title = 'Bridge';
message: any;
constructor(private apiService: ApiService) { };
- ngOnInit() {
- }
}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 0198ab3..8c19680 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -4,16 +4,41 @@ import { HttpClientModule } from "@angular/common/http";
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
-import { ReplayUploadComponent } from './replay-upload/replay-upload.component';
+import { ReplayUploadComponent } from './components/replay-upload/replay-upload.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatIconModule } from '@angular/material/icon';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
-import { MatButtonModule } from '@angular/material/button'
+import { MatButtonModule } from '@angular/material/button';
+import { MatToolbarModule } from '@angular/material/toolbar';
+import { TopBarComponent } from './components/top-bar/top-bar.component';
+import { WeeklyStandingsTableComponent } from './components/weekly-standings-table/weekly-standings-table.component';
+import { SeasonStandingsTableComponent } from './components/season-standings-table/season-standings-table.component';
+import { UploadReplayDialogComponent } from './components/upload-replay-dialog/upload-replay-dialog.component';
+import { SeasonListComponent } from './components/season-list/season-list.component';
+import { SeasonCardComponent } from './components/season-card/season-card.component';
+import { MatCardModule } from '@angular/material/card';
+import { SeasonsComponent } from './components/seasons/seasons.component';
+import { SeasonDetailsComponent } from './components/season-details/season-details.component';
+import { MatTableModule } from '@angular/material/table';
+import { MatDividerModule } from '@angular/material/divider';
+import { MatTabsModule } from '@angular/material/tabs';
+import { LoginComponent } from './components/login/login.component';
+import { ReactiveFormsModule } from '@angular/forms';
+import { ObserversModule } from '@angular/cdk/observers';
@NgModule({
declarations: [
AppComponent,
- ReplayUploadComponent
+ ReplayUploadComponent,
+ TopBarComponent,
+ WeeklyStandingsTableComponent,
+ SeasonStandingsTableComponent,
+ UploadReplayDialogComponent,
+ SeasonListComponent,
+ SeasonCardComponent,
+ SeasonsComponent,
+ SeasonDetailsComponent,
+ LoginComponent
],
imports: [
BrowserModule,
@@ -22,6 +47,13 @@ import { MatButtonModule } from '@angular/material/button'
MatIconModule,
MatSlideToggleModule,
MatButtonModule,
+ MatToolbarModule,
+ MatCardModule,
+ MatTableModule,
+ MatDividerModule,
+ MatTabsModule,
+ ReactiveFormsModule,
+ ObserversModule,
HttpClientModule
],
providers: [],
diff --git a/src/app/components/login/login.component.html b/src/app/components/login/login.component.html
new file mode 100644
index 0000000..bd6996c
--- /dev/null
+++ b/src/app/components/login/login.component.html
@@ -0,0 +1,18 @@
+
diff --git a/src/app/components/login/login.component.less b/src/app/components/login/login.component.less
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/components/login/login.component.spec.ts b/src/app/components/login/login.component.spec.ts
new file mode 100644
index 0000000..360f9f2
--- /dev/null
+++ b/src/app/components/login/login.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { LoginComponent } from './login.component';
+
+describe('LoginComponent', () => {
+ let component: LoginComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ declarations: [LoginComponent]
+ });
+ fixture = TestBed.createComponent(LoginComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/login/login.component.ts b/src/app/components/login/login.component.ts
new file mode 100644
index 0000000..a6ad9c8
--- /dev/null
+++ b/src/app/components/login/login.component.ts
@@ -0,0 +1,38 @@
+import { Component } from '@angular/core';
+import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+import { Router } from '@angular/router';
+import { AuthService } from '../../services/auth-service';
+
+@Component({
+ selector: 'app-login',
+ templateUrl: './login.component.html',
+ styleUrls: ['./login.component.less']
+})
+export class LoginComponent {
+ form:FormGroup;
+
+ constructor(private fb:FormBuilder,
+ private authService: AuthService,
+ private router: Router)
+ {
+
+ this.form = this.fb.group({
+ email: ['',Validators.required],
+ password: ['',Validators.required]
+ });
+ }
+
+ login() {
+ const val = this.form.value;
+
+ if (val.email && val.password) {
+ this.authService.login(val.email, val.password)
+ .subscribe(
+ () => {
+ console.log("User is logged in");
+ this.router.navigateByUrl('/');
+ }
+ );
+ }
+ }
+}
diff --git a/src/app/replay-upload/replay-upload.component.html b/src/app/components/replay-upload/replay-upload.component.html
similarity index 100%
rename from src/app/replay-upload/replay-upload.component.html
rename to src/app/components/replay-upload/replay-upload.component.html
diff --git a/src/app/replay-upload/replay-upload.component.less b/src/app/components/replay-upload/replay-upload.component.less
similarity index 100%
rename from src/app/replay-upload/replay-upload.component.less
rename to src/app/components/replay-upload/replay-upload.component.less
diff --git a/src/app/replay-upload/replay-upload.component.spec.ts b/src/app/components/replay-upload/replay-upload.component.spec.ts
similarity index 100%
rename from src/app/replay-upload/replay-upload.component.spec.ts
rename to src/app/components/replay-upload/replay-upload.component.spec.ts
diff --git a/src/app/replay-upload/replay-upload.component.ts b/src/app/components/replay-upload/replay-upload.component.ts
similarity index 92%
rename from src/app/replay-upload/replay-upload.component.ts
rename to src/app/components/replay-upload/replay-upload.component.ts
index 1ed2498..b6f7649 100644
--- a/src/app/replay-upload/replay-upload.component.ts
+++ b/src/app/components/replay-upload/replay-upload.component.ts
@@ -1,6 +1,6 @@
import { HttpClient } from '@angular/common/http';
import { Component } from '@angular/core';
-import { ApiService } from '../api.service';
+import { ApiService } from '../../services/api.service';
@Component({
selector: 'app-replay-upload',
diff --git a/src/app/components/season-card/season-card.component.html b/src/app/components/season-card/season-card.component.html
new file mode 100644
index 0000000..2e4d82d
--- /dev/null
+++ b/src/app/components/season-card/season-card.component.html
@@ -0,0 +1,15 @@
+
+
+
+ {{season?.seasonName}}
+ {{season?.seasonTag}}
+
+
+
+
+ The Shiba Inu is the smallest of the six original and distinct spitz breeds of dog from Japan.
+ A small, agile dog that copes very well with mountainous terrain, the Shiba Inu was originally
+ bred for hunting.
+
+
+
\ No newline at end of file
diff --git a/src/app/components/season-card/season-card.component.less b/src/app/components/season-card/season-card.component.less
new file mode 100644
index 0000000..594a05f
--- /dev/null
+++ b/src/app/components/season-card/season-card.component.less
@@ -0,0 +1,8 @@
+.example-card {
+ max-width: 400px;
+ }
+
+ .example-header-image {
+ background-image: url('https://material.angular.io/assets/img/examples/shiba1.jpg');
+ background-size: cover;
+ }
\ No newline at end of file
diff --git a/src/app/components/season-card/season-card.component.spec.ts b/src/app/components/season-card/season-card.component.spec.ts
new file mode 100644
index 0000000..4d56fee
--- /dev/null
+++ b/src/app/components/season-card/season-card.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SeasonCardComponent } from './season-card.component';
+
+describe('SeasonCardComponent', () => {
+ let component: SeasonCardComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ declarations: [SeasonCardComponent]
+ });
+ fixture = TestBed.createComponent(SeasonCardComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/season-card/season-card.component.ts b/src/app/components/season-card/season-card.component.ts
new file mode 100644
index 0000000..dd9f3f1
--- /dev/null
+++ b/src/app/components/season-card/season-card.component.ts
@@ -0,0 +1,11 @@
+import { Component, Input } from '@angular/core';
+import { Season } from '../../models/season';
+
+@Component({
+ selector: 'app-season-card',
+ templateUrl: './season-card.component.html',
+ styleUrls: ['./season-card.component.less']
+})
+export class SeasonCardComponent {
+ @Input() season?: Season;
+}
diff --git a/src/app/components/season-details/season-details.component.html b/src/app/components/season-details/season-details.component.html
new file mode 100644
index 0000000..4c37c96
--- /dev/null
+++ b/src/app/components/season-details/season-details.component.html
@@ -0,0 +1,16 @@
+
+
{{seasonInfo.seasonName}}
+
{{seasonInfo.seasonTag}}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/components/season-details/season-details.component.less b/src/app/components/season-details/season-details.component.less
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/components/season-details/season-details.component.spec.ts b/src/app/components/season-details/season-details.component.spec.ts
new file mode 100644
index 0000000..bca741b
--- /dev/null
+++ b/src/app/components/season-details/season-details.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SeasonDetailsComponent } from './season-details.component';
+
+describe('SeasonDetailsComponent', () => {
+ let component: SeasonDetailsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ declarations: [SeasonDetailsComponent]
+ });
+ fixture = TestBed.createComponent(SeasonDetailsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/season-details/season-details.component.ts b/src/app/components/season-details/season-details.component.ts
new file mode 100644
index 0000000..c156bc2
--- /dev/null
+++ b/src/app/components/season-details/season-details.component.ts
@@ -0,0 +1,35 @@
+import { Component } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { ApiService } from '../../services/api.service';
+import { Season, SeasonWeek, SeasonStandingsEntry } from '../../models/season';
+
+@Component({
+ selector: 'app-season-details',
+ templateUrl: './season-details.component.html',
+ styleUrls: ['./season-details.component.less']
+})
+export class SeasonDetailsComponent {
+ seasonInfo?: Season;
+ seasonStandings?: SeasonStandingsEntry[];
+ weeks?: SeasonWeek[];
+
+ constructor(
+ private route: ActivatedRoute,
+ private apiService: ApiService,
+ //private location: Location
+ )
+ {
+ }
+
+ ngOnInit(): void {
+ const id = Number(this.route.snapshot.paramMap.get('id'));
+ this.apiService.getSeasonDetails(id).subscribe(data => {
+ this.seasonInfo = (data as any).data.details;
+ this.weeks = (data as any).data.weeks;
+ this.seasonStandings = (data as any).data.standings;
+ console.log(this.seasonStandings);
+ console.log(this.weeks);
+ });
+ }
+
+}
diff --git a/src/app/components/season-list/season-list.component.html b/src/app/components/season-list/season-list.component.html
new file mode 100644
index 0000000..01789d6
--- /dev/null
+++ b/src/app/components/season-list/season-list.component.html
@@ -0,0 +1 @@
+