From 07049852b6d6f24fab65acfa27ad81de8c34ad1e Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 21 Nov 2023 15:22:48 +0000 Subject: [PATCH] WIP - New season dialog --- .../src/seasons/seasons.controller.ts | 5 +- packages/bridge-ui/src/app/app.config.ts | 9 +-- .../new-season-dialog.component.html | 25 +++++++ .../new-season-dialog.component.scss | 12 ++++ .../new-season-dialog.component.spec.ts | 23 ++++++ .../new-season-dialog.component.ts | 72 +++++++++++++++++++ .../season-card-new.component.ts | 9 ++- 7 files changed, 148 insertions(+), 7 deletions(-) create mode 100644 packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.html create mode 100644 packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.scss create mode 100644 packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.spec.ts create mode 100644 packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.ts diff --git a/packages/bridge-server/src/seasons/seasons.controller.ts b/packages/bridge-server/src/seasons/seasons.controller.ts index 75cdc58..9e9e9c9 100644 --- a/packages/bridge-server/src/seasons/seasons.controller.ts +++ b/packages/bridge-server/src/seasons/seasons.controller.ts @@ -1,6 +1,6 @@ -import { Body, Controller, Get, Param, Post } from '@nestjs/common'; +import { Body, Controller, Get, Param, Post, UseGuards } from '@nestjs/common'; import { SeasonsService } from './seasons.service'; -import { get } from 'http'; +import { AuthGuard } from 'src/auth/auth.guard'; @Controller('seasons') export class SeasonsController { @@ -18,6 +18,7 @@ export class SeasonsController { return this.seasonsService.findOne(params.id); } + @UseGuards(AuthGuard) @Post() create(@Body() body: any) { return this.seasonsService.create(body.title, body.subTitle, body.startingDate); diff --git a/packages/bridge-ui/src/app/app.config.ts b/packages/bridge-ui/src/app/app.config.ts index fd2e6ab..632dae6 100644 --- a/packages/bridge-ui/src/app/app.config.ts +++ b/packages/bridge-ui/src/app/app.config.ts @@ -1,10 +1,10 @@ -import { ApplicationConfig } from '@angular/core'; +import { ApplicationConfig,importProvidersFrom } from '@angular/core'; import { provideRouter } from '@angular/router'; - -import { routes } from './app.routes'; +import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { MatNativeDateModule } from '@angular/material/core'; import { provideAnimations } from '@angular/platform-browser/animations'; -import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import { routes } from './app.routes'; import { AuthInterceptor } from './interceptors/auth.interceptor'; export const appConfig: ApplicationConfig = { @@ -14,6 +14,7 @@ export const appConfig: ApplicationConfig = { provideHttpClient( withInterceptorsFromDi() ), + importProvidersFrom(MatNativeDateModule), {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true}, ] }; diff --git a/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.html b/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.html new file mode 100644 index 0000000..eec2d9e --- /dev/null +++ b/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.html @@ -0,0 +1,25 @@ +
+

Login

+
+ + Title + + +
+ + Subtitle + + + + Starting Date + + MM/DD/YYYY + + + +
+ + + + +
diff --git a/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.scss b/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.scss new file mode 100644 index 0000000..b13d97b --- /dev/null +++ b/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.scss @@ -0,0 +1,12 @@ +.signInForm { + width: 400px; + padding: 12px 24px 24px; + + igx-input-group + igx-input-group { + margin-top: 24px; + } + } + + .full-width { + width: 100%; + } \ No newline at end of file diff --git a/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.spec.ts b/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.spec.ts new file mode 100644 index 0000000..36f676c --- /dev/null +++ b/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NewSeasonDialogComponent } from './new-season-dialog.component'; + +describe('NewSeasonDialogComponent', () => { + let component: NewSeasonDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [NewSeasonDialogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(NewSeasonDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.ts b/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.ts new file mode 100644 index 0000000..e0f89cc --- /dev/null +++ b/packages/bridge-ui/src/app/components/new-season-dialog/new-season-dialog.component.ts @@ -0,0 +1,72 @@ +import { Component } 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 { SeasonsService } from '../../services/seasons.service'; + +@Component({ + selector: 'app-new-season-dialog', + standalone: true, + imports: [ + CommonModule, + ReactiveFormsModule, + MatButtonModule, + MatDialogModule, + MatInputModule, + MatFormFieldModule, + FormsModule, + MatDialogTitle, + MatDialogContent, + MatDialogActions, + MatDialogClose, + MatDatepickerModule, + MatNativeDateModule + ], + providers: [ + MatDatepickerModule, MatNativeDateModule + ], + templateUrl: './new-season-dialog.component.html', + styleUrl: './new-season-dialog.component.scss' +}) +export class NewSeasonDialogComponent { + title = new FormControl(''); + subTitle = new FormControl(''); + startingDate = new FormControl(''); + + minDate: Date; + maxDate: Date; + + constructor( + private seasonsService: SeasonsService + ) + { + const currentYear = new Date().getFullYear(); + this.minDate = new Date(Date.now()); + this.maxDate = new Date(currentYear + 1, 11, 31); + } + + submit(): void { + let title = this.title.value != undefined ? this.title.value : ""; + let subTitle = this.subTitle.value != undefined ? this.subTitle.value : ""; + let startingDate = this.startingDate.value != undefined ? this.startingDate.value : new Date(Date.now()); + + //this.seasonsService.create(); + } +} diff --git a/packages/bridge-ui/src/app/components/season-card-new/season-card-new.component.ts b/packages/bridge-ui/src/app/components/season-card-new/season-card-new.component.ts index 06e025b..71b36d7 100644 --- a/packages/bridge-ui/src/app/components/season-card-new/season-card-new.component.ts +++ b/packages/bridge-ui/src/app/components/season-card-new/season-card-new.component.ts @@ -3,6 +3,9 @@ import { CommonModule } from '@angular/common'; import { MatCardModule } from '@angular/material/card'; import { MatIconModule } from '@angular/material/icon'; +import { MatDialog } from '@angular/material/dialog'; + +import { NewSeasonDialogComponent } from '../new-season-dialog/new-season-dialog.component'; @Component({ selector: 'app-season-card-new', @@ -17,7 +20,11 @@ import { MatIconModule } from '@angular/material/icon'; }) export class SeasonCardNewComponent { - openNewSeasonDialog() { + constructor( + public dialog: MatDialog + ) {} + openNewSeasonDialog() { + this.dialog.open(NewSeasonDialogComponent); } }