From f71fd022774a4ccd0d89bb2cf2847a3327153461 Mon Sep 17 00:00:00 2001 From: Quildra Date: Tue, 21 Nov 2023 21:53:56 +0000 Subject: [PATCH] WIP - new race dialog --- package-lock.json | 1 + .../new-race-dialog.component.html | 28 ++++++++ .../new-race-dialog.component.scss | 0 .../new-race-dialog.component.spec.ts | 23 ++++++ .../new-race-dialog.component.ts | 70 +++++++++++++++++++ .../season-details.component.html | 6 ++ .../season-details.component.ts | 14 ++++ 7 files changed, 142 insertions(+) create mode 100644 packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.html create mode 100644 packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.scss create mode 100644 packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.spec.ts create mode 100644 packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.ts diff --git a/package-lock.json b/package-lock.json index 7c6d903..cd3f72f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25876,6 +25876,7 @@ } }, "packages/bridge-shared/trackmania.io-f": { + "name": "trackmania.io", "version": "3.2.2", "license": "GPL-3.0", "dependencies": { diff --git a/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.html b/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.html new file mode 100644 index 0000000..f075ebd --- /dev/null +++ b/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.html @@ -0,0 +1,28 @@ +
+

Login

+
+ + Map UID + + +
+ + Start Date + + MM/DD/YYYY + + + + + End Date + + MM/DD/YYYY + + + +
+ + + + +
\ No newline at end of file diff --git a/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.scss b/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.spec.ts b/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.spec.ts new file mode 100644 index 0000000..2cf359a --- /dev/null +++ b/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NewRaceDialogComponent } from './new-race-dialog.component'; + +describe('NewRaceDialogComponent', () => { + let component: NewRaceDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [NewRaceDialogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(NewRaceDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.ts b/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.ts new file mode 100644 index 0000000..5e087a5 --- /dev/null +++ b/packages/bridge-ui/src/app/components/new-race-dialog/new-race-dialog.component.ts @@ -0,0 +1,70 @@ +import { Component, Inject } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule, FormControl } from '@angular/forms'; +import { FormsModule } from '@angular/forms'; + +import { MatButtonModule } from '@angular/material/button'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatInputModule } from '@angular/material/input'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatNativeDateModule } from '@angular/material/core'; + +import { MatDialog, MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog'; + +import * as TMIO from 'trackmania.io'; + +@Component({ + selector: 'app-new-race-dialog', + standalone: true, + imports: [ + CommonModule, + ReactiveFormsModule, + MatButtonModule, + MatDialogModule, + MatInputModule, + MatFormFieldModule, + FormsModule, + MatDialogTitle, + MatDialogContent, + MatDialogActions, + MatDialogClose, + MatDatepickerModule, + MatNativeDateModule + ], + providers: [ + MatDatepickerModule, MatNativeDateModule + ], + templateUrl: './new-race-dialog.component.html', + styleUrl: './new-race-dialog.component.scss' +}) +export class NewRaceDialogComponent { + mapUID = new FormControl(''); + startDate = new FormControl(''); + endDate = new FormControl(''); + + minDate: Date; + maxDate: Date; + + seasonId: string; + + tmio: any; + + constructor( + @Inject(MAT_DIALOG_DATA) additionalData: any, + ) + { + this.seasonId = additionalData.seasonId; + const currentYear = new Date().getFullYear(); + this.minDate = new Date(Date.now()); + this.maxDate = new Date(currentYear + 1, 11, 31); + //this.tmio = new TMIO.Client(); + + //this.mapUID.registerOnChange() + } + + submit() { + + } + +} diff --git a/packages/bridge-ui/src/app/pages/season-details/season-details.component.html b/packages/bridge-ui/src/app/pages/season-details/season-details.component.html index 4dc0d03..6d876ad 100644 --- a/packages/bridge-ui/src/app/pages/season-details/season-details.component.html +++ b/packages/bridge-ui/src/app/pages/season-details/season-details.component.html @@ -3,6 +3,12 @@

{{season.title}}

{{season.subTitle}}

+ @if(isAuthed()) { + + +
+ } +
diff --git a/packages/bridge-ui/src/app/pages/season-details/season-details.component.ts b/packages/bridge-ui/src/app/pages/season-details/season-details.component.ts index ead2782..45da351 100644 --- a/packages/bridge-ui/src/app/pages/season-details/season-details.component.ts +++ b/packages/bridge-ui/src/app/pages/season-details/season-details.component.ts @@ -13,8 +13,10 @@ import { UploadReplayDialogComponent } from '../../components/upload-replay-dial import { SeasonsService } from '../../services/seasons.service'; import { RacesService } from '../../services/races.service'; +import { AuthService } from '../../services/auth.service'; import { Season } from '../../models/season.model'; import { Race } from '../../models/race.model'; +import { NewRaceDialogComponent } from '../../components/new-race-dialog/new-race-dialog.component'; @Component({ selector: 'app-season-details', @@ -40,6 +42,7 @@ export class SeasonDetailsComponent { private seasonsService: SeasonsService, private racesService: RacesService, private dialog: MatDialog, + private authService: AuthService, ) {} ngOnInit() { @@ -61,10 +64,21 @@ export class SeasonDetailsComponent { }); } + isAuthed() { + return this.authService.isAuthenticated(); + } + openUploadReplayDialog(id: string) { this.dialog.open(UploadReplayDialogComponent, { data: { seasonId: id } }); } + + openNewRaceDialog(id: string) { + this.dialog.open(NewRaceDialogComponent, + { + data: { seasonId: id } + }); + } }