From 8b9313da93c8aba2f14a554aa2eb86c903ecd1e1 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Fri, 12 Sep 2025 23:51:38 +0200 Subject: [PATCH] add navigation and fetching of sports --- kontor-angular/src/app/app.component.css | 2 +- kontor-angular/src/app/app.config.ts | 4 +- kontor-angular/src/app/app.routes.ts | 42 ++++++++---- .../comic/artist/artist-list.component.html | 1 - .../artist-list.component.css | 0 .../artist-list/artist-list.component.html | 1 + .../artist-list/artist-list.component.spec.ts | 23 +++++++ .../artist-list.component.ts | 2 +- .../comic-overview.component.html | 12 +++- .../comic-overview.component.ts | 4 +- .../comic-list/comic-list.component.css} | 0 .../comic-list/comic-list.component.html | 1 + .../comic-list/comic-list.component.spec.ts} | 12 ++-- .../comic/comic-list/comic-list.component.ts | 11 +++ .../comic/comics/comics-list.component.html | 1 - .../app/comic/comics/comics-list.component.ts | 11 --- .../publisher/publisher-list.component.html | 1 - .../publisher-list.component.css | 0 .../publisher-list.component.html | 1 + .../publisher-list.component.spec.ts | 23 +++++++ .../publisher-list.component.ts | 2 +- .../app/kontor/footer/footer.component.css | 7 ++ .../app/kontor/footer/footer.component.html | 6 +- .../app/kontor/header/header.component.css | 11 +++ .../app/kontor/header/header.component.html | 12 +++- .../src/app/kontor/header/header.component.ts | 4 +- .../media-actor-list.component.css} | 0 .../media-actor-list.component.html | 1 + .../media-actor-list.component.spec.ts} | 12 ++-- .../media-actor-list.component.ts | 11 +++ .../media-actors-list.component.html | 1 - .../media-actors-list.component.ts | 11 --- .../media-file-list.component.css} | 0 .../media-file-list.component.html | 1 + .../media-file-list.component.spec.ts | 23 +++++++ .../media-file-list.component.ts | 11 +++ .../media-files-list.component.html | 1 - .../media-files-list.component.ts | 11 --- .../media-overview.component.html | 8 ++- .../media-overview.component.ts | 4 +- .../media-video-list.component.css} | 0 .../media-video-list.component.html | 1 + .../media-video-list.component.spec.ts} | 12 ++-- .../media-video-list.component.ts | 11 +++ .../media-videos-list.component.html | 1 - .../media-videos-list.component.spec.ts | 23 ------- .../media-videos-list.component.ts | 11 --- .../src/app/shared/error.service.ts | 19 ++++++ .../cardset-list/cardset-list.component.css | 0 .../cardset-list/cardset-list.component.html | 1 + .../cardset-list.component.spec.ts | 23 +++++++ .../cardset-list/cardset-list.component.ts | 11 +++ .../player-list/player-list.component.css | 0 .../player-list/player-list.component.html | 1 + .../player-list/player-list.component.spec.ts | 23 +++++++ .../player-list/player-list.component.ts | 11 +++ .../position-list/position-list.component.css | 0 .../position-list.component.html | 1 + .../position-list.component.spec.ts | 23 +++++++ .../position-list/position-list.component.ts | 11 +++ .../sport/sport-list/sport-list.component.css | 0 .../sport-list/sport-list.component.html | 8 +++ .../sport-list/sport-list.component.spec.ts | 23 +++++++ .../sport/sport-list/sport-list.component.ts | 38 +++++++++++ .../sport-selector.component.css | 0 .../sport-selector.component.html | 1 + .../sport-selector.component.spec.ts | 23 +++++++ .../sport-selector.component.ts | 11 +++ .../src/app/tysc/sport/sport.model.ts | 4 ++ .../src/app/tysc/sport/sport.service.ts | 30 ++++++++ .../team/team-list/team-list.component.css | 0 .../team/team-list/team-list.component.html | 1 + .../team-list/team-list.component.spec.ts} | 12 ++-- .../team/team-list/team-list.component.ts | 11 +++ .../tysc/tysc-menu/tysc-menu.component.css | 0 .../tysc/tysc-menu/tysc-menu.component.html | 8 +++ .../tysc-menu/tysc-menu.component.spec.ts} | 12 ++-- .../app/tysc/tysc-menu/tysc-menu.component.ts | 12 ++++ .../vendor-list/vendor-list.component.css | 0 .../vendor-list/vendor-list.component.html | 1 + .../vendor-list/vendor-list.component.spec.ts | 23 +++++++ .../vendor-list/vendor-list.component.ts | 11 +++ kontor-angular/src/index.html | 2 +- kontor-angular/src/styles.css | 68 +++++++++++++++++++ kontor-api/src/main.py | 11 +++ 85 files changed, 646 insertions(+), 136 deletions(-) delete mode 100644 kontor-angular/src/app/comic/artist/artist-list.component.html rename kontor-angular/src/app/comic/artist/{ => artist-list}/artist-list.component.css (100%) create mode 100644 kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html create mode 100644 kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts rename kontor-angular/src/app/comic/artist/{ => artist-list}/artist-list.component.ts (85%) rename kontor-angular/src/app/comic/{comics/comics-list.component.css => comic/comic-list/comic-list.component.css} (100%) create mode 100644 kontor-angular/src/app/comic/comic/comic-list/comic-list.component.html rename kontor-angular/src/app/comic/{comics/comics-list.component.spec.ts => comic/comic-list/comic-list.component.spec.ts} (53%) create mode 100644 kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts delete mode 100644 kontor-angular/src/app/comic/comics/comics-list.component.html delete mode 100644 kontor-angular/src/app/comic/comics/comics-list.component.ts delete mode 100644 kontor-angular/src/app/comic/publisher/publisher-list.component.html rename kontor-angular/src/app/comic/publisher/{ => publisher-list}/publisher-list.component.css (100%) create mode 100644 kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html create mode 100644 kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts rename kontor-angular/src/app/comic/publisher/{ => publisher-list}/publisher-list.component.ts (85%) rename kontor-angular/src/app/media/{media-actors-list/media-actors-list.component.css => media-actor/media-actor-list/media-actor-list.component.css} (100%) create mode 100644 kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.html rename kontor-angular/src/app/media/{media-files-list/media-files-list.component.spec.ts => media-actor/media-actor-list/media-actor-list.component.spec.ts} (51%) create mode 100644 kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.ts delete mode 100644 kontor-angular/src/app/media/media-actors-list/media-actors-list.component.html delete mode 100644 kontor-angular/src/app/media/media-actors-list/media-actors-list.component.ts rename kontor-angular/src/app/media/{media-files-list/media-files-list.component.css => media-file/media-file-list/media-file-list.component.css} (100%) create mode 100644 kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.html create mode 100644 kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.spec.ts create mode 100644 kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.ts delete mode 100644 kontor-angular/src/app/media/media-files-list/media-files-list.component.html delete mode 100644 kontor-angular/src/app/media/media-files-list/media-files-list.component.ts rename kontor-angular/src/app/media/{media-videos-list/media-videos-list.component.css => media-video/media-video-list/media-video-list.component.css} (100%) create mode 100644 kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.html rename kontor-angular/src/app/media/{media-actors-list/media-actors-list.component.spec.ts => media-video/media-video-list/media-video-list.component.spec.ts} (50%) create mode 100644 kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts delete mode 100644 kontor-angular/src/app/media/media-videos-list/media-videos-list.component.html delete mode 100644 kontor-angular/src/app/media/media-videos-list/media-videos-list.component.spec.ts delete mode 100644 kontor-angular/src/app/media/media-videos-list/media-videos-list.component.ts create mode 100644 kontor-angular/src/app/shared/error.service.ts create mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css create mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html create mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts create mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts create mode 100644 kontor-angular/src/app/tysc/player/player-list/player-list.component.css create mode 100644 kontor-angular/src/app/tysc/player/player-list/player-list.component.html create mode 100644 kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts create mode 100644 kontor-angular/src/app/tysc/player/player-list/player-list.component.ts create mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.css create mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.html create mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts create mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.ts create mode 100644 kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css create mode 100644 kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html create mode 100644 kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts create mode 100644 kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts create mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css create mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html create mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts create mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.ts create mode 100644 kontor-angular/src/app/tysc/sport/sport.model.ts create mode 100644 kontor-angular/src/app/tysc/sport/sport.service.ts create mode 100644 kontor-angular/src/app/tysc/team/team-list/team-list.component.css create mode 100644 kontor-angular/src/app/tysc/team/team-list/team-list.component.html rename kontor-angular/src/app/{comic/publisher/publisher-list.component.spec.ts => tysc/team/team-list/team-list.component.spec.ts} (54%) create mode 100644 kontor-angular/src/app/tysc/team/team-list/team-list.component.ts create mode 100644 kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css create mode 100644 kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html rename kontor-angular/src/app/{comic/artist/artist-list.component.spec.ts => tysc/tysc-menu/tysc-menu.component.spec.ts} (54%) create mode 100644 kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.ts create mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css create mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html create mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.spec.ts create mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.ts diff --git a/kontor-angular/src/app/app.component.css b/kontor-angular/src/app/app.component.css index 6349723..6e5ac82 100644 --- a/kontor-angular/src/app/app.component.css +++ b/kontor-angular/src/app/app.component.css @@ -4,6 +4,6 @@ h1 { .app { font-family: Arial, Helvetica, sans-serif; - max-width: 500px; + /* max-width: 500px; */ margin: auto; } diff --git a/kontor-angular/src/app/app.config.ts b/kontor-angular/src/app/app.config.ts index d953f4c..ae06e63 100644 --- a/kontor-angular/src/app/app.config.ts +++ b/kontor-angular/src/app/app.config.ts @@ -2,11 +2,13 @@ import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChang import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; +import { provideHttpClient } from '@angular/common/http'; export const appConfig: ApplicationConfig = { providers: [ provideBrowserGlobalErrorListeners(), provideZoneChangeDetection({ eventCoalescing: true }), - provideRouter(routes) + provideRouter(routes), + provideHttpClient(), ] }; diff --git a/kontor-angular/src/app/app.routes.ts b/kontor-angular/src/app/app.routes.ts index 7763476..7740668 100644 --- a/kontor-angular/src/app/app.routes.ts +++ b/kontor-angular/src/app/app.routes.ts @@ -1,14 +1,21 @@ import { Routes } from '@angular/router'; import { KontorComponent } from './kontor/kontor.component'; import { Login } from './common/login/login'; -import { ComicsListComponent } from './comic/comics/comics-list.component'; -import { PublisherListComponent } from './comic/publisher/publisher-list.component'; -import { ArtistListComponent } from './comic/artist/artist-list.component'; import { ComicOverviewComponent } from './comic/comic-overview/comic-overview.component'; import { MediaOverviewComponent } from './media/media-overview/media-overview.component'; -import { MediaFilesListComponent } from './media/media-files-list/media-files-list.component'; -import { MediaActorsListComponent } from './media/media-actors-list/media-actors-list.component'; -import { MediaVideosListComponent } from './media/media-videos-list/media-videos-list.component'; +import { ArtistListComponent } from './comic/artist/artist-list/artist-list.component'; +import { ComicListComponent } from './comic/comic/comic-list/comic-list.component'; +import { MediaFileListComponent } from './media/media-file/media-file-list/media-file-list.component'; +import { MediaActorListComponent } from './media/media-actor/media-actor-list/media-actor-list.component'; +import { MediaVideoListComponent } from './media/media-video/media-video-list/media-video-list.component'; +import { PublisherListComponent } from './comic/publisher/publisher-list/publisher-list.component'; +import { TyscMenuComponent } from './tysc/tysc-menu/tysc-menu.component'; +import { TeamListComponent } from './tysc/team/team-list/team-list.component'; +import { VendorListComponent } from './tysc/vendor/vendor-list/vendor-list.component'; +import { CardsetListComponent } from './tysc/cardset/cardset-list/cardset-list.component'; +import { PositionListComponent } from './tysc/position/position-list/position-list.component'; +import { PlayerListComponent } from './tysc/player/player-list/player-list.component'; +import { SportListComponent } from './tysc/sport/sport-list/sport-list.component'; export const routes: Routes = [ { path: '', component: KontorComponent, }, @@ -16,19 +23,30 @@ export const routes: Routes = [ { path: 'comic', component: ComicOverviewComponent, children: [ - { path: '', component: ComicsListComponent}, - { path: 'comics', component: ComicsListComponent}, + { path: '', component: ComicListComponent}, + { path: 'comics', component: ComicListComponent}, { path: 'publisher', component: PublisherListComponent}, { path: 'artist', component: ArtistListComponent}, ], }, + { + path: 'tysc', component: TyscMenuComponent, + children: [ + { path: '', component: SportListComponent}, + { path: 'team', component: TeamListComponent}, + { path: 'player', component: PlayerListComponent}, + { path: 'position', component: PositionListComponent}, + { path: 'cardset', component: CardsetListComponent}, + { path: 'vendor', component: VendorListComponent}, + ], + }, { path: 'media', component: MediaOverviewComponent, children: [ - { path: '', component: MediaFilesListComponent}, - { path: 'mediafiles', component: MediaFilesListComponent}, - { path: 'mediaactors', component: MediaActorsListComponent}, - { path: 'mediavideos', component: MediaVideosListComponent}, + { path: '', component: MediaFileListComponent}, + { path: 'mediafiles', component: MediaFileListComponent}, + { path: 'mediaactors', component: MediaActorListComponent}, + { path: 'mediavideos', component: MediaVideoListComponent}, ], }, ]; diff --git a/kontor-angular/src/app/comic/artist/artist-list.component.html b/kontor-angular/src/app/comic/artist/artist-list.component.html deleted file mode 100644 index 5f88b01..0000000 --- a/kontor-angular/src/app/comic/artist/artist-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

artist works!

diff --git a/kontor-angular/src/app/comic/artist/artist-list.component.css b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.css similarity index 100% rename from kontor-angular/src/app/comic/artist/artist-list.component.css rename to kontor-angular/src/app/comic/artist/artist-list/artist-list.component.css diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html new file mode 100644 index 0000000..42c5108 --- /dev/null +++ b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html @@ -0,0 +1 @@ +

artist-list works!

diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts new file mode 100644 index 0000000..4a58cbb --- /dev/null +++ b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ArtistListComponent } from './artist-list.component'; + +describe('ArtistListComponent', () => { + let component: ArtistListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ArtistListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ArtistListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/comic/artist/artist-list.component.ts b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts similarity index 85% rename from kontor-angular/src/app/comic/artist/artist-list.component.ts rename to kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts index 29318a9..ca510ad 100644 --- a/kontor-angular/src/app/comic/artist/artist-list.component.ts +++ b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; @Component({ - selector: 'kontor-artist-list', + selector: 'app-artist-list', imports: [], templateUrl: './artist-list.component.html', styleUrl: './artist-list.component.css' diff --git a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.html b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.html index ee8e75f..54c8b3c 100644 --- a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.html +++ b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.html @@ -1,10 +1,16 @@ -

comic-overview works!

-
+ + + diff --git a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts index dbb049a..32c15f4 100644 --- a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts +++ b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts @@ -1,9 +1,9 @@ import { Component } from '@angular/core'; -import { RouterLink, RouterOutlet } from '@angular/router'; +import { RouterLink, RouterOutlet, RouterLinkActive } from '@angular/router'; @Component({ selector: 'app-comic-overview', - imports: [RouterLink, RouterOutlet], + imports: [RouterLink, RouterOutlet, RouterLinkActive], templateUrl: './comic-overview.component.html', styleUrl: './comic-overview.component.css' }) diff --git a/kontor-angular/src/app/comic/comics/comics-list.component.css b/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.css similarity index 100% rename from kontor-angular/src/app/comic/comics/comics-list.component.css rename to kontor-angular/src/app/comic/comic/comic-list/comic-list.component.css diff --git a/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.html b/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.html new file mode 100644 index 0000000..5beb054 --- /dev/null +++ b/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.html @@ -0,0 +1 @@ +

comic-list works!

diff --git a/kontor-angular/src/app/comic/comics/comics-list.component.spec.ts b/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.spec.ts similarity index 53% rename from kontor-angular/src/app/comic/comics/comics-list.component.spec.ts rename to kontor-angular/src/app/comic/comic/comic-list/comic-list.component.spec.ts index 89f8178..6a5109e 100644 --- a/kontor-angular/src/app/comic/comics/comics-list.component.spec.ts +++ b/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ComicsListComponent } from './comics-list.component'; +import { ComicListComponent } from './comic-list.component'; -describe('Comics', () => { - let component: ComicsListComponent; - let fixture: ComponentFixture; +describe('ComicListComponent', () => { + let component: ComicListComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ComicsListComponent] + imports: [ComicListComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ComicsListComponent); + fixture = TestBed.createComponent(ComicListComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts b/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts new file mode 100644 index 0000000..a09eb12 --- /dev/null +++ b/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-comic-list', + imports: [], + templateUrl: './comic-list.component.html', + styleUrl: './comic-list.component.css' +}) +export class ComicListComponent { + +} diff --git a/kontor-angular/src/app/comic/comics/comics-list.component.html b/kontor-angular/src/app/comic/comics/comics-list.component.html deleted file mode 100644 index 1d67025..0000000 --- a/kontor-angular/src/app/comic/comics/comics-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

comics works!

diff --git a/kontor-angular/src/app/comic/comics/comics-list.component.ts b/kontor-angular/src/app/comic/comics/comics-list.component.ts deleted file mode 100644 index 3c6f981..0000000 --- a/kontor-angular/src/app/comic/comics/comics-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'kontor-comics-list', - imports: [], - templateUrl: './comics-list.component.html', - styleUrl: './comics-list.component.css' -}) -export class ComicsListComponent { - -} diff --git a/kontor-angular/src/app/comic/publisher/publisher-list.component.html b/kontor-angular/src/app/comic/publisher/publisher-list.component.html deleted file mode 100644 index c44a6d3..0000000 --- a/kontor-angular/src/app/comic/publisher/publisher-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

publisher works!

diff --git a/kontor-angular/src/app/comic/publisher/publisher-list.component.css b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.css similarity index 100% rename from kontor-angular/src/app/comic/publisher/publisher-list.component.css rename to kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.css diff --git a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html new file mode 100644 index 0000000..d533325 --- /dev/null +++ b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html @@ -0,0 +1 @@ +

publisher-list works!

diff --git a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts new file mode 100644 index 0000000..00f7266 --- /dev/null +++ b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PublisherListComponent } from './publisher-list.component'; + +describe('PublisherListComponent', () => { + let component: PublisherListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PublisherListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PublisherListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/comic/publisher/publisher-list.component.ts b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts similarity index 85% rename from kontor-angular/src/app/comic/publisher/publisher-list.component.ts rename to kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts index a74ff7b..43daa01 100644 --- a/kontor-angular/src/app/comic/publisher/publisher-list.component.ts +++ b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; @Component({ - selector: 'kontor-publisher-list', + selector: 'app-publisher-list', imports: [], templateUrl: './publisher-list.component.html', styleUrl: './publisher-list.component.css' diff --git a/kontor-angular/src/app/kontor/footer/footer.component.css b/kontor-angular/src/app/kontor/footer/footer.component.css index e69de29..1d66ed7 100644 --- a/kontor-angular/src/app/kontor/footer/footer.component.css +++ b/kontor-angular/src/app/kontor/footer/footer.component.css @@ -0,0 +1,7 @@ +/* Footer */ +a { + padding: 20px; + text-align: center; + background: #ddd; + margin-top: 20px; +} diff --git a/kontor-angular/src/app/kontor/footer/footer.component.html b/kontor-angular/src/app/kontor/footer/footer.component.html index e286f81..1f376c3 100644 --- a/kontor-angular/src/app/kontor/footer/footer.component.html +++ b/kontor-angular/src/app/kontor/footer/footer.component.html @@ -1,3 +1,3 @@ - + diff --git a/kontor-angular/src/app/kontor/header/header.component.css b/kontor-angular/src/app/kontor/header/header.component.css index e69de29..b3b2fe7 100644 --- a/kontor-angular/src/app/kontor/header/header.component.css +++ b/kontor-angular/src/app/kontor/header/header.component.css @@ -0,0 +1,11 @@ +/* Header/Blog Title */ +.header { + padding: 30px; + text-align: center; + background-color: lightblue; +} + +.header h1 { + font-size: 50px; +} + diff --git a/kontor-angular/src/app/kontor/header/header.component.html b/kontor-angular/src/app/kontor/header/header.component.html index ff00120..9c1f7a2 100644 --- a/kontor-angular/src/app/kontor/header/header.component.html +++ b/kontor-angular/src/app/kontor/header/header.component.html @@ -1,13 +1,19 @@ -
+

{{ title() }}

-
+ diff --git a/kontor-angular/src/app/kontor/header/header.component.ts b/kontor-angular/src/app/kontor/header/header.component.ts index a0357fb..8808cc8 100644 --- a/kontor-angular/src/app/kontor/header/header.component.ts +++ b/kontor-angular/src/app/kontor/header/header.component.ts @@ -1,9 +1,9 @@ import { Component, signal } from '@angular/core'; -import { RouterLink } from '@angular/router'; +import { RouterLink, RouterLinkActive } from '@angular/router'; @Component({ selector: 'kontor-header', - imports: [RouterLink], + imports: [RouterLink, RouterLinkActive], templateUrl: './header.component.html', styleUrl: './header.component.css' }) diff --git a/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.css b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.css similarity index 100% rename from kontor-angular/src/app/media/media-actors-list/media-actors-list.component.css rename to kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.css diff --git a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.html b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.html new file mode 100644 index 0000000..43702b0 --- /dev/null +++ b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.html @@ -0,0 +1 @@ +

media-actor-list works!

diff --git a/kontor-angular/src/app/media/media-files-list/media-files-list.component.spec.ts b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts similarity index 51% rename from kontor-angular/src/app/media/media-files-list/media-files-list.component.spec.ts rename to kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts index 15de5c1..1eae192 100644 --- a/kontor-angular/src/app/media/media-files-list/media-files-list.component.spec.ts +++ b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MediaFilesListComponent } from './media-files-list.component'; +import { MediaActorListComponent } from './media-actor-list.component'; -describe('MediaFilesList', () => { - let component: MediaFilesListComponent; - let fixture: ComponentFixture; +describe('MediaActorListComponent', () => { + let component: MediaActorListComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MediaFilesListComponent] + imports: [MediaActorListComponent] }) .compileComponents(); - fixture = TestBed.createComponent(MediaFilesListComponent); + fixture = TestBed.createComponent(MediaActorListComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.ts b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.ts new file mode 100644 index 0000000..f765de4 --- /dev/null +++ b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-actor-list', + imports: [], + templateUrl: './media-actor-list.component.html', + styleUrl: './media-actor-list.component.css' +}) +export class MediaActorListComponent { + +} diff --git a/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.html b/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.html deleted file mode 100644 index 633f6b1..0000000 --- a/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-actors-list works!

diff --git a/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.ts b/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.ts deleted file mode 100644 index 99e2ed3..0000000 --- a/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-media-actors-list', - imports: [], - templateUrl: './media-actors-list.component.html', - styleUrl: './media-actors-list.component.css' -}) -export class MediaActorsListComponent { - -} diff --git a/kontor-angular/src/app/media/media-files-list/media-files-list.component.css b/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.css similarity index 100% rename from kontor-angular/src/app/media/media-files-list/media-files-list.component.css rename to kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.css diff --git a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.html b/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.html new file mode 100644 index 0000000..0c46e27 --- /dev/null +++ b/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.html @@ -0,0 +1 @@ +

media-file-list works!

diff --git a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.spec.ts b/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.spec.ts new file mode 100644 index 0000000..331bea0 --- /dev/null +++ b/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaFileListComponent } from './media-file-list.component'; + +describe('MediaFileListComponent', () => { + let component: MediaFileListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaFileListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaFileListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.ts b/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.ts new file mode 100644 index 0000000..f64918a --- /dev/null +++ b/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-file-list', + imports: [], + templateUrl: './media-file-list.component.html', + styleUrl: './media-file-list.component.css' +}) +export class MediaFileListComponent { + +} diff --git a/kontor-angular/src/app/media/media-files-list/media-files-list.component.html b/kontor-angular/src/app/media/media-files-list/media-files-list.component.html deleted file mode 100644 index 4eba07e..0000000 --- a/kontor-angular/src/app/media/media-files-list/media-files-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-files-list works!

diff --git a/kontor-angular/src/app/media/media-files-list/media-files-list.component.ts b/kontor-angular/src/app/media/media-files-list/media-files-list.component.ts deleted file mode 100644 index 4abc354..0000000 --- a/kontor-angular/src/app/media/media-files-list/media-files-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-media-files-list', - imports: [], - templateUrl: './media-files-list.component.html', - styleUrl: './media-files-list.component.css' -}) -export class MediaFilesListComponent { - -} diff --git a/kontor-angular/src/app/media/media-overview/media-overview.component.html b/kontor-angular/src/app/media/media-overview/media-overview.component.html index cf87835..4a72d42 100644 --- a/kontor-angular/src/app/media/media-overview/media-overview.component.html +++ b/kontor-angular/src/app/media/media-overview/media-overview.component.html @@ -1,4 +1,4 @@ -

media-overview works!

+ + + diff --git a/kontor-angular/src/app/media/media-overview/media-overview.component.ts b/kontor-angular/src/app/media/media-overview/media-overview.component.ts index b5584a0..ea7711b 100644 --- a/kontor-angular/src/app/media/media-overview/media-overview.component.ts +++ b/kontor-angular/src/app/media/media-overview/media-overview.component.ts @@ -1,9 +1,9 @@ import { Component } from '@angular/core'; -import { RouterLink, RouterOutlet } from '@angular/router'; +import { RouterLink, RouterOutlet, RouterLinkActive } from '@angular/router'; @Component({ selector: 'kontor-media-overview', - imports: [RouterOutlet, RouterLink], + imports: [RouterOutlet, RouterLink, RouterLinkActive], templateUrl: './media-overview.component.html', styleUrl: './media-overview.component.css' }) diff --git a/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.css b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.css similarity index 100% rename from kontor-angular/src/app/media/media-videos-list/media-videos-list.component.css rename to kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.css diff --git a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.html b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.html new file mode 100644 index 0000000..ae42ba1 --- /dev/null +++ b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.html @@ -0,0 +1 @@ +

media-video-list works!

diff --git a/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.spec.ts b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts similarity index 50% rename from kontor-angular/src/app/media/media-actors-list/media-actors-list.component.spec.ts rename to kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts index 6fcb447..e18eb84 100644 --- a/kontor-angular/src/app/media/media-actors-list/media-actors-list.component.spec.ts +++ b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MediaActorsListComponent } from './media-actors-list.component'; +import { MediaVideoListComponent } from './media-video-list.component'; -describe('MediaActorsList', () => { - let component: MediaActorsListComponent; - let fixture: ComponentFixture; +describe('MediaVideoListComponent', () => { + let component: MediaVideoListComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MediaActorsListComponent] + imports: [MediaVideoListComponent] }) .compileComponents(); - fixture = TestBed.createComponent(MediaActorsListComponent); + fixture = TestBed.createComponent(MediaVideoListComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts new file mode 100644 index 0000000..bae8344 --- /dev/null +++ b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-video-list', + imports: [], + templateUrl: './media-video-list.component.html', + styleUrl: './media-video-list.component.css' +}) +export class MediaVideoListComponent { + +} diff --git a/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.html b/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.html deleted file mode 100644 index 3802b3f..0000000 --- a/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-videos-list works!

diff --git a/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.spec.ts b/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.spec.ts deleted file mode 100644 index c8f4bc0..0000000 --- a/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MediaVideosListComponent } from './media-videos-list.component'; - -describe('MediaVideosList', () => { - let component: MediaVideosListComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MediaVideosListComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MediaVideosListComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.ts b/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.ts deleted file mode 100644 index 7c4fc7e..0000000 --- a/kontor-angular/src/app/media/media-videos-list/media-videos-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-media-videos-list', - imports: [], - templateUrl: './media-videos-list.component.html', - styleUrl: './media-videos-list.component.css' -}) -export class MediaVideosListComponent { - -} diff --git a/kontor-angular/src/app/shared/error.service.ts b/kontor-angular/src/app/shared/error.service.ts new file mode 100644 index 0000000..7befc28 --- /dev/null +++ b/kontor-angular/src/app/shared/error.service.ts @@ -0,0 +1,19 @@ +import { Injectable, signal } from "@angular/core"; + +@Injectable({ + providedIn: 'root' +}) +export class ErrorService { + private _error = signal(''); + + error = this._error.asReadonly(); + + showError(message: string) { + console.log(message); + this._error.set(message); + } + + clearError() { + this._error.set(''); + } +} diff --git a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html new file mode 100644 index 0000000..45f5e7b --- /dev/null +++ b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html @@ -0,0 +1 @@ +

cardset-list works!

diff --git a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts new file mode 100644 index 0000000..c957e68 --- /dev/null +++ b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CardsetListComponent } from './cardset-list.component'; + +describe('CardsetListComponent', () => { + let component: CardsetListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [CardsetListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CardsetListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts new file mode 100644 index 0000000..67d92e0 --- /dev/null +++ b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-cardset-list', + imports: [], + templateUrl: './cardset-list.component.html', + styleUrl: './cardset-list.component.css' +}) +export class CardsetListComponent { + +} diff --git a/kontor-angular/src/app/tysc/player/player-list/player-list.component.css b/kontor-angular/src/app/tysc/player/player-list/player-list.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/tysc/player/player-list/player-list.component.html b/kontor-angular/src/app/tysc/player/player-list/player-list.component.html new file mode 100644 index 0000000..66a8ec9 --- /dev/null +++ b/kontor-angular/src/app/tysc/player/player-list/player-list.component.html @@ -0,0 +1 @@ +

player-list works!

diff --git a/kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts b/kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts new file mode 100644 index 0000000..0d08ee9 --- /dev/null +++ b/kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PlayerListComponent } from './player-list.component'; + +describe('PlayerListComponent', () => { + let component: PlayerListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PlayerListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PlayerListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/tysc/player/player-list/player-list.component.ts b/kontor-angular/src/app/tysc/player/player-list/player-list.component.ts new file mode 100644 index 0000000..72646c0 --- /dev/null +++ b/kontor-angular/src/app/tysc/player/player-list/player-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-player-list', + imports: [], + templateUrl: './player-list.component.html', + styleUrl: './player-list.component.css' +}) +export class PlayerListComponent { + +} diff --git a/kontor-angular/src/app/tysc/position/position-list/position-list.component.css b/kontor-angular/src/app/tysc/position/position-list/position-list.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/tysc/position/position-list/position-list.component.html b/kontor-angular/src/app/tysc/position/position-list/position-list.component.html new file mode 100644 index 0000000..652033e --- /dev/null +++ b/kontor-angular/src/app/tysc/position/position-list/position-list.component.html @@ -0,0 +1 @@ +

position-list works!

diff --git a/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts b/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts new file mode 100644 index 0000000..9034de6 --- /dev/null +++ b/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PositionListComponent } from './position-list.component'; + +describe('PositionListComponent', () => { + let component: PositionListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PositionListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PositionListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/tysc/position/position-list/position-list.component.ts b/kontor-angular/src/app/tysc/position/position-list/position-list.component.ts new file mode 100644 index 0000000..f76b808 --- /dev/null +++ b/kontor-angular/src/app/tysc/position/position-list/position-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-position-list', + imports: [], + templateUrl: './position-list.component.html', + styleUrl: './position-list.component.css' +}) +export class PositionListComponent { + +} diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html new file mode 100644 index 0000000..36f5c85 --- /dev/null +++ b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html @@ -0,0 +1,8 @@ +

sport-list works!

+
    + @for (sport of sports(); track sport.id) { +
  • +

    {{ sport.name }}

    +
  • + } +
diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts new file mode 100644 index 0000000..7a1c646 --- /dev/null +++ b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SportListComponent } from './sport-list.component'; + +describe('SportListComponent', () => { + let component: SportListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SportListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(SportListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts new file mode 100644 index 0000000..a22dd75 --- /dev/null +++ b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts @@ -0,0 +1,38 @@ +import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; +import { Sport } from '../sport.model'; +import { SportService } from '../sport.service'; + +@Component({ + selector: 'app-sport-list', + imports: [], + templateUrl: './sport-list.component.html', + styleUrl: './sport-list.component.css' +}) +export class SportListComponent implements OnInit { + sports = signal(undefined); + isFetching = signal(false); + error = signal(''); + private sportService = inject(SportService); + private destroyRef = inject(DestroyRef); + + + ngOnInit() { + this.isFetching.set(true); + const subscription = this.sportService.loadSports().subscribe({ + next: (sports) => { + this.sports.set(sports); + }, + error: (error: Error) => { + this.error.set(error.message); + }, + complete: () => { + this.isFetching.set(false); + }, + }); + + this.destroyRef.onDestroy(() => { + subscription.unsubscribe(); + }); + } + +} diff --git a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html new file mode 100644 index 0000000..8339199 --- /dev/null +++ b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html @@ -0,0 +1 @@ +

sport-selector works!

diff --git a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts new file mode 100644 index 0000000..1bc65be --- /dev/null +++ b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SportSelectorComponent } from './sport-selector.component'; + +describe('SportSelectorComponent', () => { + let component: SportSelectorComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SportSelectorComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(SportSelectorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.ts b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.ts new file mode 100644 index 0000000..896f350 --- /dev/null +++ b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-sport-selector', + imports: [], + templateUrl: './sport-selector.component.html', + styleUrl: './sport-selector.component.css' +}) +export class SportSelectorComponent { + +} diff --git a/kontor-angular/src/app/tysc/sport/sport.model.ts b/kontor-angular/src/app/tysc/sport/sport.model.ts new file mode 100644 index 0000000..a9bc9a2 --- /dev/null +++ b/kontor-angular/src/app/tysc/sport/sport.model.ts @@ -0,0 +1,4 @@ +export interface Sport { + id: string; + name: string; +} diff --git a/kontor-angular/src/app/tysc/sport/sport.service.ts b/kontor-angular/src/app/tysc/sport/sport.service.ts new file mode 100644 index 0000000..31945dd --- /dev/null +++ b/kontor-angular/src/app/tysc/sport/sport.service.ts @@ -0,0 +1,30 @@ +import { HttpClient } from "@angular/common/http"; +import { inject, Injectable, signal } from "@angular/core"; +import { Sport } from "./sport.model"; +import { catchError, map, throwError } from "rxjs"; +import { ErrorService } from "../../shared/error.service"; + +@Injectable({ + providedIn: 'root', +}) +export class SportService { + private errorService = inject(ErrorService); + private httpClient = inject(HttpClient); + private sports = signal([]); + + loadedSports = this.sports.asReadonly(); + + loadSports() { + return this.fetchSports('http://127.0.0.1:8800/api/tysc/sports', 'Someting went wrong fetching sports. Please try again later-'); + } + + private fetchSports(url: string, errorMessage: string) { + return this.httpClient.get(url).pipe( + map((resData) => resData), + catchError((error) => { + console.log(error); + return throwError(() => new Error(errorMessage)); + }) + ); + } +} diff --git a/kontor-angular/src/app/tysc/team/team-list/team-list.component.css b/kontor-angular/src/app/tysc/team/team-list/team-list.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/tysc/team/team-list/team-list.component.html b/kontor-angular/src/app/tysc/team/team-list/team-list.component.html new file mode 100644 index 0000000..5f0a00a --- /dev/null +++ b/kontor-angular/src/app/tysc/team/team-list/team-list.component.html @@ -0,0 +1 @@ +

team-list works!

diff --git a/kontor-angular/src/app/comic/publisher/publisher-list.component.spec.ts b/kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts similarity index 54% rename from kontor-angular/src/app/comic/publisher/publisher-list.component.spec.ts rename to kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts index 27bd34d..b8a8711 100644 --- a/kontor-angular/src/app/comic/publisher/publisher-list.component.spec.ts +++ b/kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { Publisher } from './publisher-list.component'; +import { TeamListComponent } from './team-list.component'; -describe('Publisher', () => { - let component: Publisher; - let fixture: ComponentFixture; +describe('TeamListComponent', () => { + let component: TeamListComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [Publisher] + imports: [TeamListComponent] }) .compileComponents(); - fixture = TestBed.createComponent(Publisher); + fixture = TestBed.createComponent(TeamListComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/tysc/team/team-list/team-list.component.ts b/kontor-angular/src/app/tysc/team/team-list/team-list.component.ts new file mode 100644 index 0000000..f3b7766 --- /dev/null +++ b/kontor-angular/src/app/tysc/team/team-list/team-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-team-list', + imports: [], + templateUrl: './team-list.component.html', + styleUrl: './team-list.component.css' +}) +export class TeamListComponent { + +} diff --git a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html new file mode 100644 index 0000000..7f5e8d2 --- /dev/null +++ b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html @@ -0,0 +1,8 @@ + + diff --git a/kontor-angular/src/app/comic/artist/artist-list.component.spec.ts b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts similarity index 54% rename from kontor-angular/src/app/comic/artist/artist-list.component.spec.ts rename to kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts index 977b2ac..61baa16 100644 --- a/kontor-angular/src/app/comic/artist/artist-list.component.spec.ts +++ b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { Artist } from './artist-list.component'; +import { TyscMenuComponent } from './tysc-menu.component'; -describe('Artist', () => { - let component: Artist; - let fixture: ComponentFixture; +describe('TyscMenuComponent', () => { + let component: TyscMenuComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [Artist] + imports: [TyscMenuComponent] }) .compileComponents(); - fixture = TestBed.createComponent(Artist); + fixture = TestBed.createComponent(TyscMenuComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.ts b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.ts new file mode 100644 index 0000000..12710f8 --- /dev/null +++ b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-tysc-menu', + imports: [RouterLink, RouterLinkActive, RouterOutlet], + templateUrl: './tysc-menu.component.html', + styleUrl: './tysc-menu.component.css' +}) +export class TyscMenuComponent { + +} diff --git a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html new file mode 100644 index 0000000..aedf60d --- /dev/null +++ b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html @@ -0,0 +1 @@ +

vendor-list works!

diff --git a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.spec.ts b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.spec.ts new file mode 100644 index 0000000..fc3ed2c --- /dev/null +++ b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { VendorListComponent } from './vendor-list.component'; + +describe('VendorListComponent', () => { + let component: VendorListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [VendorListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(VendorListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.ts b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.ts new file mode 100644 index 0000000..073a098 --- /dev/null +++ b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-vendor-list', + imports: [], + templateUrl: './vendor-list.component.html', + styleUrl: './vendor-list.component.css' +}) +export class VendorListComponent { + +} diff --git a/kontor-angular/src/index.html b/kontor-angular/src/index.html index 84e0b4c..5bd5d34 100644 --- a/kontor-angular/src/index.html +++ b/kontor-angular/src/index.html @@ -2,7 +2,7 @@ - KontorAngular + Kontor diff --git a/kontor-angular/src/styles.css b/kontor-angular/src/styles.css index 90d4ee0..1d3192c 100644 --- a/kontor-angular/src/styles.css +++ b/kontor-angular/src/styles.css @@ -1 +1,69 @@ /* You can add global styles to this file, and also import other style files */ +* { + box-sizing: border-box; +} + +body { + font-family: Arial; + padding: 0px; + background: lightgrey; +} + +/* Style the top navigation bar */ +.topnav { + overflow: hidden; + background-color: darkgrey; +} + +/* Style the topnav links */ +.topnav a { + float: left; + display: block; + color: #f2f2f2; + text-align: center; + padding: 14px 16px; + text-decoration: none; +} + +/* Change color on hover */ +.topnav a:hover { + background-color: #ddd; + color: black; +} + +.subnav { + overflow: hidden; + background-color: grey; +} + +.subnav a { + float: left; + display: block; + color: #f2f2f2; + text-align: center; + padding: 14px 16px; + text-decoration: none; +} + +a { + display: inline-block; + color: white; + background-color: dodgerblue; + text-align: center; + padding: 10px; + text-decoration: none; + border-radius: 10px; + margin-left: 20px; +} + +/* Change the color of links on mouse-over */ +a:hover { + background-color: royalblue; + color: white; +} + +/* Add a color to the active/current link */ +a.active { + background-color: royalblue; + color: white; +} diff --git a/kontor-api/src/main.py b/kontor-api/src/main.py index 7650618..738b0a4 100644 --- a/kontor-api/src/main.py +++ b/kontor-api/src/main.py @@ -4,6 +4,7 @@ from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.staticfiles import StaticFiles +from fastapi.middleware.cors import CORSMiddleware from src.apis.base import api_router from src.core.log_conf import LOGGING_CONFIG, logger @@ -27,6 +28,15 @@ def include_router(app: FastAPI): def configure_static(app: FastAPI): app.mount("/static", StaticFiles(directory="src/static"), name="static") +def add_middle_ware(app: FastAPI): + app.add_middleware( + CORSMiddleware, + allow_origins=['*'], + allow_credentials=True, + allow_methods=['*'], + allow_headers=['*'], + ) + def create_tables(): Base.metadata.create_all(bind=engine) @@ -35,6 +45,7 @@ def start_application(log): app = FastAPI(title=settings.PROJECT_NAME, version=settings.PROJECT_VERSION, lifespan=lifespan) include_router(app) configure_static(app) + add_middle_ware(app) create_tables() return app